CINXE.COM
APL (Programmiersprache) – Wikipedia
<!DOCTYPE html> <html class="client-nojs" lang="de" dir="ltr"> <head> <meta charset="UTF-8"> <title>APL (Programmiersprache) – Wikipedia</title> <script>(function(){var className="client-js";var cookie=document.cookie.match(/(?:^|; )dewikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t.",".\t,"],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"wgRequestId":"4962ada8-8e51-470f-8b28-550e0bf88795","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"APL_(Programmiersprache)","wgTitle":"APL (Programmiersprache)","wgCurRevisionId":236647000,"wgRevisionId":236647000,"wgArticleId":49827,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":[ "*"],"wgCategories":["Programmiersprache","Funktionale Programmiersprache","Programmiersprache mit einem ISO-Standard"],"wgPageViewLanguage":"de","wgPageContentLanguage":"de","wgPageContentModel":"wikitext","wgRelevantPageName":"APL_(Programmiersprache)","wgRelevantArticleId":49827,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":1}}},"wgStableRevisionId":236647000,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"de","pageLanguageDir":"ltr","pageVariantFallbacks":"de"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true, "wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q296187","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.citeRef":"ready","ext.gadget.defaultPlainlinks":"ready","ext.gadget.dewikiCommonHide":"ready","ext.gadget.dewikiCommonLayout":"ready","ext.gadget.dewikiCommonStyle":"ready","ext.gadget.NavFrame":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.styles.legacy":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready", "ext.visualEditor.desktopArticleTarget.noscript":"ready","codex-search-styles":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.gadget.createNewSection","ext.gadget.WikiMiniAtlas","ext.gadget.OpenStreetMap","ext.gadget.CommonsDirekt","ext.gadget.donateLink","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=de&modules=codex-search-styles%7Cext.cite.styles%7Cext.flaggedRevs.basic%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"> <script async="" src="/w/load.php?lang=de&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=de&modules=ext.gadget.NavFrame%2CciteRef%2CdefaultPlainlinks%2CdewikiCommonHide%2CdewikiCommonLayout%2CdewikiCommonStyle&only=styles&skin=vector"> <link rel="stylesheet" href="/w/load.php?lang=de&modules=site.styles&only=styles&skin=vector"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/1200px-APL_%28programming_language%29_logo.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/800px-APL_%28programming_language%29_logo.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="800"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/640px-APL_%28programming_language%29_logo.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="640"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="APL (Programmiersprache) – Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//de.m.wikipedia.org/wiki/APL_(Programmiersprache)"> <link rel="alternate" type="application/x-wiki" title="Seite bearbeiten" href="/w/index.php?title=APL_(Programmiersprache)&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (de)"> <link rel="EditURI" type="application/rsd+xml" href="//de.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://de.wikipedia.org/wiki/APL_(Programmiersprache)"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de"> <link rel="alternate" type="application/atom+xml" title="Atom-Feed für „Wikipedia“" href="/w/index.php?title=Spezial:Letzte_%C3%84nderungen&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-APL_Programmiersprache rootpage-APL_Programmiersprache skin-vector action-view"><div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice"><!-- CentralNotice --></div> <div class="mw-indicators"> </div> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">APL (Programmiersprache)</span></h1> <div id="bodyContent" class="vector-body"> <div id="siteSub" class="noprint">aus Wikipedia, der freien Enzyklopädie</div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Zur Navigation springen</a> <a class="mw-jump-link" href="#searchInput">Zur Suche springen</a> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><table class="float-right infobox toccolours toptextcells" style="font-size:90%; margin-top:0; width:21em;"> <tbody><tr> <th colspan="2" class="hintergrundfarbe6" style="font-size:larger;">APL </th></tr> <tr> <td colspan="2" class="center"><span typeof="mw:File"><a href="/wiki/Datei:APL_(programming_language)_logo.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/120px-APL_%28programming_language%29_logo.svg.png" decoding="async" width="120" height="120" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/180px-APL_%28programming_language%29_logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b6/APL_%28programming_language%29_logo.svg/240px-APL_%28programming_language%29_logo.svg.png 2x" data-file-width="1890" data-file-height="1890" /></a></span> </td></tr> <tr> <th colspan="2" class="hintergrundfarbe5">Basisdaten </th></tr> <tr> <td><b><a href="/wiki/Programmierparadigma" title="Programmierparadigma">Paradigmen</a>:</b> </td> <td><a href="/wiki/Funktionale_Programmierung" title="Funktionale Programmierung">funktional</a>, <a href="/wiki/Strukturierte_Programmierung" title="Strukturierte Programmierung">strukturiert</a>, <a href="/wiki/Modul_(Software)" title="Modul (Software)">modular</a> </td></tr> <tr> <td><b>Erscheinungsjahr:</b> </td> <td>1964 </td></tr> <tr> <td><b>Designer:</b> </td> <td><a href="/wiki/Kenneth_E._Iverson" title="Kenneth E. Iverson">Kenneth E. Iverson</a> </td></tr> <tr> <td><b>Entwickler:</b> </td> <td><a href="/wiki/Kenneth_E._Iverson" title="Kenneth E. Iverson">Kenneth E. Iverson</a> </td></tr> <tr> <td><b><a href="/wiki/Typisierung_(Informatik)" title="Typisierung (Informatik)">Typisierung</a>:</b> </td> <td>dynamisch </td></tr> <tr> <td><b>Wichtige <a href="/wiki/Implementierung" title="Implementierung">Implementierungen</a>:</b> </td> <td>Dyalog APL, IBM APL2, APL2000, Sharp APL, APLX, NARS2000, GNU APL </td></tr> <tr> <td><b>Dialekte:</b> </td> <td>A+, Dyalog APL, APLNext, ELI, <a href="/wiki/J_(Programmiersprache)" title="J (Programmiersprache)">J</a> </td></tr> <tr> <td><b>Standardisierungen:</b> </td> <td>ISO8485 (1989), ISO/IEC13751 (2001) </td></tr> <tr> <td><b>Beeinflusst von:</b> </td> <td><a href="/wiki/Mathematische_Notation" title="Mathematische Notation">Mathematische Notation</a> </td></tr> <tr> <td><b>Beeinflusste:</b> </td> <td>A+, <a href="/wiki/J_(Programmiersprache)" title="J (Programmiersprache)">J</a>, K, <a href="/wiki/Mathematica" title="Mathematica">Mathematica</a>, <a href="/wiki/Matlab" title="Matlab">Matlab</a>, Nial, <a href="/w/index.php?title=Polymorphic_Programming_Language&action=edit&redlink=1" class="new" title="Polymorphic Programming Language (Seite nicht vorhanden)">PPL</a>, Q, <a href="/wiki/R_(Programmiersprache)" title="R (Programmiersprache)">R</a>, <a href="/wiki/S_(Statistiksprache)" class="mw-redirect" title="S (Statistiksprache)">S</a> </td></tr> </tbody></table> <p><b>APL</b> (<i><b>A P</b>rogramming <b>L</b>anguage</i>) ist eine üblicherweise <a href="/wiki/Interpreter" title="Interpreter">interpretierte</a> <a href="/wiki/Programmiersprache" title="Programmiersprache">Programmiersprache</a>, deren <a href="/wiki/Syntax" title="Syntax">Syntax</a> überwiegend aus <a href="/wiki/Symbol" title="Symbol">Symbolen</a> besteht. Sie wurde von <a href="/wiki/Kenneth_E._Iverson" title="Kenneth E. Iverson">Kenneth E. Iverson</a> und seinen Kollegen<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> bei <a href="/wiki/IBM" title="IBM">IBM</a> in den <a href="/wiki/1960er" title="1960er">1960er</a> Jahren als algorithmische Notation (u. a. für den Mathematikunterricht)<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> und als Entwurfssprache für Großrechner entwickelt. </p> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="de" dir="ltr"><h2 id="mw-toc-heading">Inhaltsverzeichnis</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Geschichte"><span class="tocnumber">1</span> <span class="toctext">Geschichte</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Besonderheiten"><span class="tocnumber">2</span> <span class="toctext">Besonderheiten</span></a> <ul> <li class="toclevel-2 tocsection-3"><a href="#Operatoren_und_spezielle_Zeichen"><span class="tocnumber">2.1</span> <span class="toctext">Operatoren und spezielle Zeichen</span></a></li> <li class="toclevel-2 tocsection-4"><a href="#Interaktivität"><span class="tocnumber">2.2</span> <span class="toctext">Interaktivität</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#Programmcode"><span class="tocnumber">2.3</span> <span class="toctext">Programmcode</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#Datentypen"><span class="tocnumber">2.4</span> <span class="toctext">Datentypen</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#Speicherverwaltung"><span class="tocnumber">2.5</span> <span class="toctext">Speicherverwaltung</span></a></li> <li class="toclevel-2 tocsection-8"><a href="#Array-Verarbeitung"><span class="tocnumber">2.6</span> <span class="toctext">Array-Verarbeitung</span></a></li> <li class="toclevel-2 tocsection-9"><a href="#Ausführung_und_Rangfolge"><span class="tocnumber">2.7</span> <span class="toctext">Ausführung und Rangfolge</span></a></li> <li class="toclevel-2 tocsection-10"><a href="#Variablen"><span class="tocnumber">2.8</span> <span class="toctext">Variablen</span></a> <ul> <li class="toclevel-3 tocsection-11"><a href="#Geltungsbereich"><span class="tocnumber">2.8.1</span> <span class="toctext">Geltungsbereich</span></a></li> <li class="toclevel-3 tocsection-12"><a href="#Arrays"><span class="tocnumber">2.8.2</span> <span class="toctext">Arrays</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-13"><a href="#Funktionen_und_Operatoren"><span class="tocnumber">2.9</span> <span class="toctext">Funktionen und Operatoren</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-14"><a href="#Selbstdefinierte_Funktionen"><span class="tocnumber">3</span> <span class="toctext">Selbstdefinierte Funktionen</span></a> <ul> <li class="toclevel-2 tocsection-15"><a href="#Programmbeispiel_zur_Illustration_der_Wirkungsweise_von_APL"><span class="tocnumber">3.1</span> <span class="toctext">Programmbeispiel zur Illustration der Wirkungsweise von APL</span></a> <ul> <li class="toclevel-3 tocsection-16"><a href="#Erläuterung_des_Programmbeispiels"><span class="tocnumber">3.1.1</span> <span class="toctext">Erläuterung des Programmbeispiels</span></a></li> <li class="toclevel-3 tocsection-17"><a href="#Wirkungsweise_bzw._Anwendung"><span class="tocnumber">3.1.2</span> <span class="toctext">Wirkungsweise bzw. Anwendung</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-18"><a href="#„Moderne“_Sprachkonzepte:_Rekursion_und_Kontrollstrukturen"><span class="tocnumber">3.2</span> <span class="toctext">„Moderne“ Sprachkonzepte: Rekursion und Kontrollstrukturen</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-19"><a href="#Mächtigkeit_und_Lesbarkeit"><span class="tocnumber">4</span> <span class="toctext">Mächtigkeit und Lesbarkeit</span></a></li> <li class="toclevel-1 tocsection-20"><a href="#Ausführungsgeschwindigkeit"><span class="tocnumber">5</span> <span class="toctext">Ausführungsgeschwindigkeit</span></a></li> <li class="toclevel-1 tocsection-21"><a href="#Entwicklung_und_aktuelle_Situation"><span class="tocnumber">6</span> <span class="toctext">Entwicklung und aktuelle Situation</span></a></li> <li class="toclevel-1 tocsection-22"><a href="#J_und_APL"><span class="tocnumber">7</span> <span class="toctext">J und APL</span></a></li> <li class="toclevel-1 tocsection-23"><a href="#Einzelnachweise"><span class="tocnumber">8</span> <span class="toctext">Einzelnachweise</span></a></li> <li class="toclevel-1 tocsection-24"><a href="#Literatur"><span class="tocnumber">9</span> <span class="toctext">Literatur</span></a></li> <li class="toclevel-1 tocsection-25"><a href="#Weblinks"><span class="tocnumber">10</span> <span class="toctext">Weblinks</span></a> <ul> <li class="toclevel-2 tocsection-26"><a href="#Implementierungen"><span class="tocnumber">10.1</span> <span class="toctext">Implementierungen</span></a></li> <li class="toclevel-2 tocsection-27"><a href="#Periodika"><span class="tocnumber">10.2</span> <span class="toctext">Periodika</span></a></li> <li class="toclevel-2 tocsection-28"><a href="#Über_APL"><span class="tocnumber">10.3</span> <span class="toctext">Über APL</span></a></li> <li class="toclevel-2 tocsection-29"><a href="#Syntax"><span class="tocnumber">10.4</span> <span class="toctext">Syntax</span></a></li> </ul> </li> </ul> </div> <div class="mw-heading mw-heading2"><h2 id="Geschichte">Geschichte</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=1" title="Abschnitt bearbeiten: Geschichte" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=1" title="Quellcode des Abschnitts bearbeiten: Geschichte"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/Datei:Ibm5100_(2297950254).jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/a/af/Ibm5100_%282297950254%29.jpg/220px-Ibm5100_%282297950254%29.jpg" decoding="async" width="220" height="165" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/af/Ibm5100_%282297950254%29.jpg/330px-Ibm5100_%282297950254%29.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/af/Ibm5100_%282297950254%29.jpg/440px-Ibm5100_%282297950254%29.jpg 2x" data-file-width="2272" data-file-height="1704" /></a><figcaption>IBM 5100 Mikrocomputer mit APL-Tastatur</figcaption></figure> <p>Mit dem Buch <i>A Programming Language</i> aus dem Jahr 1962 gab Kenneth Iverson den Anstoß zur Verwendung eines neuen Konzepts in der Programmierung. Bevor der erste <a href="/wiki/Interpreter" title="Interpreter">Interpreter</a> verfügbar war, diente APL bereits als Metasprache für die Beschreibung der Architektur des damals neu entwickelten Computersystems IBM <a href="/wiki/System/360" title="System/360">System/360</a> aus der Sicht des Programmierers.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> Ab 1965 wurde APL als Programmiersprache auf Großrechnern (z. B. IBM System/360) implementiert und den Kunden als <a href="/wiki/Time-Sharing_(Informatik)" title="Time-Sharing (Informatik)">Timesharing</a>-Option angeboten. Zu jener Zeit wurden IBM-<a href="/wiki/Schreibmaschinen-Kugelkopf" title="Schreibmaschinen-Kugelkopf">Kugelkopf</a>-Schreibmaschinen als „Terminal“ verwendet. Daher hatte der ursprüngliche Zeichensatz nur (kursive) Großbuchstaben.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p><p>Ab 1975 gab es eine Implementierung auf der <a href="/wiki/IBM_5100" title="IBM 5100">IBM 5100</a>, einem Vorläufer des PC, der bereits ein <a href="/wiki/Mikrocomputer" title="Mikrocomputer">Mikrocomputer</a> war. Obwohl die Maschine nach damaligen Maßstäben als durchaus leistungsfähig galt, lief APL auf ihr verhältnismäßig langsam, da es sich um eine Emulation des Mainframe-APL-Interpreters handelte. </p><p>Die ersten Implementierungen auf PCs benötigten ein Spezial-<a href="/wiki/EPROM" class="mw-redirect" title="EPROM">EPROM</a>, damit der APL-<a href="/wiki/Zeichensatz" title="Zeichensatz">Zeichensatz</a> angezeigt werden konnte. Der APL-Zeichensatz wurde ursprünglich so gewählt, dass die Symbole möglichst <a href="/wiki/Mnemotechnik" title="Mnemotechnik">selbsterklärend</a> sind, dass sich also die <a href="/wiki/Funktion_(Programmierung)" title="Funktion (Programmierung)">Funktionen</a> aus den Symbolen <a href="/wiki/Intuition" title="Intuition">intuitiv</a> herleiten lassen. Seit einigen Jahren wird der Begriff APL auch als <b>A</b><i>rray</i> <b>P</b><i>rocessing</i> <b>L</b><i>anguage</i> interpretiert. </p> <div class="mw-heading mw-heading2"><h2 id="Besonderheiten">Besonderheiten</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=2" title="Abschnitt bearbeiten: Besonderheiten" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=2" title="Quellcode des Abschnitts bearbeiten: Besonderheiten"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Operatoren_und_spezielle_Zeichen">Operatoren und spezielle Zeichen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=3" title="Abschnitt bearbeiten: Operatoren und spezielle Zeichen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=3" title="Quellcode des Abschnitts bearbeiten: Operatoren und spezielle Zeichen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>APL verwendet spezielle <i>Operatoren</i>, bzw. Befehle, die jeweils die Funktion haben, nicht nur einzelne Zahlen-Werte zu bearbeiten, sondern bei Bedarf ganze Vektoren und Matrizen, z. B. 2 Matrizen zu addieren oder das Skalar-Produkt von 2 Vektoren zu berechnen. Für jeden dieser Operatoren gab es ein spezielles Zeichen, wodurch insgesamt ein erweiterter Zeichensatz benötigt wurde und zwar sowohl auf der Tastatur, im Speicher und auf dem Bildschirm – seitdem es solche gab – wie auch auf dem Drucker. Es gab damals noch keine Laser- oder Inkjet-Drucker, die man programmieren kann, quasi jedes beliebige Zeichen zu generieren. Die Verwendung solcher Zeichen mit der Funktion von Operatoren ermöglichte zwar einen extrem knappen, aber für Außenstehende auch kryptischen Code, der viele Leute abschreckte und nicht zwingend war. Man hätte auch reservierte Worte als Operatoren verwenden können. Inzwischen findet man solche Zeichen im <a href="/wiki/Unicodeblock_Verschiedene_technische_Zeichen" title="Unicodeblock Verschiedene technische Zeichen">Unicodeblock Verschiedene technische Zeichen</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Interaktivität"><span id="Interaktivit.C3.A4t"></span>Interaktivität</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=4" title="Abschnitt bearbeiten: Interaktivität" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=4" title="Quellcode des Abschnitts bearbeiten: Interaktivität"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>APL war von Anfang an interaktiv: Nach der Eingabe eines Befehls (z. B. einer Rechenanweisung <i>1234 − 777</i>) drückt man die <i>Enter</i>taste, der Befehl wird vom Interpreter ausgeführt und das Ergebnis angezeigt. Eine spezielle Anweisung für die Ausgabe des Ergebnisses, wie z. B. der PRINT-Befehl in <a href="/wiki/BASIC" title="BASIC">BASIC</a>, ist nicht nötig, existiert aber für den Fall, dass ein Ergebnis angezeigt werden soll, das normalerweise nicht angezeigt würde (z. B., wenn einer Variablen ein Wert zugewiesen wird). </p><p>Tritt ein Fehler auf, erhält man eine entsprechende Meldung. Man kann seine Eingabe modifizieren und erneut ausführen. Die dadurch mögliche direkte Interaktion mit dem Computer ist bis heute einer der großen Vorteile von APL als Entwicklungswerkzeug. </p><p>Aus heutiger Sicht klingt dies trivial, aber APL war eine der ersten Programmiersprachen, die diesen Luxus bot: Konkurrierende Sprachen waren noch nicht interaktiv, sondern mussten vor der Ausführung eines Programms jeweils kompiliert werden. </p> <div class="mw-heading mw-heading3"><h3 id="Programmcode">Programmcode</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=5" title="Abschnitt bearbeiten: Programmcode" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=5" title="Quellcode des Abschnitts bearbeiten: Programmcode"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Folgen von Befehlen lassen sich zu Funktionen zusammenfassen. Funktionen können wiederum andere Funktionen aufrufen. In der Tat ist APL eine der ersten <a href="/wiki/Funktionale_Programmiersprache" class="mw-redirect" title="Funktionale Programmiersprache">funktionalen Programmiersprachen</a>. Näheres und ein Beispiel siehe <a href="#Selbstdefinierte_Funktionen">unten</a>. </p><p>Bis in die 1990er Jahre fehlten APL die <a href="/wiki/Kontrollstruktur" title="Kontrollstruktur">Kontrollstrukturen</a> der <a href="/wiki/Strukturierte_Programmierung" title="Strukturierte Programmierung">„Strukturierten Programmierung“</a>. Logik musste durch <a href="/wiki/Sprunganweisung" title="Sprunganweisung">Sprunganweisungen</a> realisiert werden. In APL werden Kontrollstrukturen seltener als in anderen imperativen Programmiersprachen verwendet, einerseits weil APL-Funktionen nicht nur Skalare, sondern Datenstrukturen beliebiger Dimension verarbeiten, andererseits, weil es den Operator <i>Each</i> bietet. </p> <div class="mw-heading mw-heading3"><h3 id="Datentypen">Datentypen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=6" title="Abschnitt bearbeiten: Datentypen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=6" title="Quellcode des Abschnitts bearbeiten: Datentypen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>APL kennt mindestens die Datentypen <i>Char, Bool, Int</i> und <i>Float</i>, allerdings muss der Programmierer dies nicht berücksichtigen, denn der Interpreter wandelt die Datentypen automatisch um, wann immer dies notwendig ist. Dies bedeutet auch, dass APL keine Typprüfung kennt. </p><p>Der Datentyp von Variablen muss nicht eigens deklariert werden, man kann einer Variablen eine <a href="/wiki/Gleitkommazahl" title="Gleitkommazahl">Gleitkommazahl</a> zuweisen (oder einen Vektor oder eine Matrix von Gleitkommazahlen) und danach einen Text, ohne dass es zuvor einer besonderen Anweisung bedarf. </p> <div class="mw-heading mw-heading3"><h3 id="Speicherverwaltung">Speicherverwaltung</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=7" title="Abschnitt bearbeiten: Speicherverwaltung" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=7" title="Quellcode des Abschnitts bearbeiten: Speicherverwaltung"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Auch die Speicherverwaltung wird vom Interpreter übernommen. Ein APL-Programmierer muss sich während des Programmablaufs weder um das Reservieren noch um das Freigeben von Speicher kümmern. Der Arbeitsspeicher wird im sogenannten <i>Workspace</i> für Variablen und Programme insgesamt zur Verfügung gestellt, er kann beim Programmstart festgelegt und in manchen APL-Produkten auch dynamisch erweitert werden. </p> <div class="mw-heading mw-heading3"><h3 id="Array-Verarbeitung">Array-Verarbeitung</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=8" title="Abschnitt bearbeiten: Array-Verarbeitung" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=8" title="Quellcode des Abschnitts bearbeiten: Array-Verarbeitung"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Fast alle Funktionen in APL sind auch nicht-skalar ausgelegt. Dies bedeutet, dass Funktionen nicht nur auf einzelne Skalare (Zahlen oder Characters), sondern auch auf Vektoren (Zahlenreihen), Matrizen (Tabellen) und mehrdimensional angeordnete Daten (Arrays) sowie auf <a href="/wiki/Liste_(Datenstruktur)" title="Liste (Datenstruktur)">Listen</a> angewendet werden können. </p><p><b>Beispiele</b> (die eingerückte erste Zeile ist die Benutzereingabe, die zweite Zeile die Antwort des APL-Interpreters) </p><p>Viele Programmiersprachen erlauben die Addition zweier Skalare: </p> <pre> 2 + 3 5 </pre> <p>APL gestattet aber auch die Addition Vektor und Skalar: </p> <pre> 2 3 4 + 3 5 6 7 </pre> <p>und die Addition zweier Vektoren: </p> <pre> 2 3 4 + 5 6 7 7 9 11 </pre> <div class="mw-heading mw-heading3"><h3 id="Ausführung_und_Rangfolge"><span id="Ausf.C3.BChrung_und_Rangfolge"></span>Ausführung und Rangfolge</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=9" title="Abschnitt bearbeiten: Ausführung und Rangfolge" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=9" title="Quellcode des Abschnitts bearbeiten: Ausführung und Rangfolge"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Es gibt in APL nur eine einzige Rangfolgenregel: Alles wird von rechts nach links abgearbeitet. Ausnahme: Ausdrücke in Klammern werden zuerst abgearbeitet. Daher gilt: </p> <pre> 10×2+3 50 </pre> <p>aber: </p> <pre> (10×2)+3 23 </pre> <div class="mw-heading mw-heading3"><h3 id="Variablen">Variablen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=10" title="Abschnitt bearbeiten: Variablen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=10" title="Quellcode des Abschnitts bearbeiten: Variablen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In APL müssen Variablen nicht <a href="/wiki/Deklaration_(Programmierung)" title="Deklaration (Programmierung)">deklariert</a> oder <a href="/wiki/Typisierung_(Informatik)" title="Typisierung (Informatik)">typisiert</a> werden (siehe Datentypen). Eine Variable wird erzeugt, indem man einen Namen, gefolgt von einem Zuweisungspfeil (←), gefolgt vom Wert bzw. den Werten der Variablen eingibt: </p> <pre> XWERT←456.78 YVECT←56 23 81.8 796 0.014 8.9 20 1 TEXT1←'Dies ist ein Text' MATRIX←2 4ρYVECT </pre> <p>(der Operator ρ, genannt <i>rho</i>, verwandelt den 8-gliedrigen Vektor YVECT in eine Matrix mit 2 Zeilen und 4 Spalten. So lassen sich auch Arrays mit mehr Dimensionen bilden.) </p><p>Das Konzept der Konstanten, also unveränderbar deklarierter Werte, gibt es in APL nicht, es kann aber simuliert werden durch eine Funktion, die keine Argumente benötigt und ein explizites Ergebnis zurückliefert. </p> <div class="mw-heading mw-heading4"><h4 id="Geltungsbereich">Geltungsbereich</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=11" title="Abschnitt bearbeiten: Geltungsbereich" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=11" title="Quellcode des Abschnitts bearbeiten: Geltungsbereich"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Jede Zuweisung erzeugt eine globale Variable, d. h. die Variable ist im gesamten Programm sicht- und änderbar. Man kann den Geltungsbereich von Variablen aber einschränken, indem man den Namen der Variablen in die Kopfzeile einer Funktion aufnimmt. Eine solche Variable wird als <a href="/wiki/Lokale_Variable" class="mw-redirect" title="Lokale Variable">lokal</a> bezeichnet, da sie nur zur Laufzeit der Funktion sichtbar ist. </p><p>Wenn allerdings eine Funktion F1 eine lokale Variable A definiert und anschließend eine Funktion F2 aufruft, dann ist A innerhalb von F2 sicht- und änderbar, was heute als Designmakel gilt. Die <i>Direct Functions</i> in <a href="/w/index.php?title=Dyalog_APL&action=edit&redlink=1" class="new" title="Dyalog APL (Seite nicht vorhanden)">Dyalog APL</a> verhalten sich allerdings anders: Dort sind lokale Variablen tatsächlich im engeren Sinne lokal und auch in aufgerufenen Funktionen unsichtbar. </p> <div class="mw-heading mw-heading4"><h4 id="Arrays">Arrays</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=12" title="Abschnitt bearbeiten: Arrays" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=12" title="Quellcode des Abschnitts bearbeiten: Arrays"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Daten jeder Art werden in APL Arrays genannt. Arrays können unterschiedliche Dimensionen haben. Ein einzelner Wert wird <a href="/wiki/Skalare_Variable" title="Skalare Variable">Skalar</a> genannt. Mehrere Werte nebeneinander bilden einen <a href="/wiki/Vektor" title="Vektor">Vektor</a>. Der Operator zur Verkettung (<a href="/wiki/Konkatenation_(Listen)" title="Konkatenation (Listen)">Konkatenieren</a>) mehrerer Skalare ist das Komma. Dabei ist es auch möglich, einen einzelnen Wert mit einer <a href="/wiki/Leere_Menge" title="Leere Menge">Leeren Menge</a> zu verketten und so einen Vektor zu erhalten, der aus einem einzigen Element besteht. Auch leere Vektoren sind erlaubt: Das sind Vektoren, die überhaupt kein Datenelement enthalten, sondern nur die Strukturinformation. </p><p>Werte, die in Zeilen und Spalten angeordnet sind, bilden <a href="/wiki/Tabelle" title="Tabelle">Tabellen</a>, auch <a href="/wiki/Matrix_(Mathematik)" title="Matrix (Mathematik)">Matrizen</a> oder zweidimensionale <a href="/wiki/Feld_(Datentyp)" class="mw-redirect" title="Feld (Datentyp)">Arrays</a> genannt. </p><p>Die Dimension eines Arrays wird in APL mit dem griechischen Buchstaben ρ (<a href="/wiki/Rho" title="Rho">Rho</a>) angegeben. Wenn von dem „Rank“ eines Arrays die Rede ist, meint man die Anzahl der Dimensionen des Arrays, also Rho von Rho. Demzufolge ist der Rank eines Skalars 0, der eines Vektors 1, der einer Tabelle 2, und so weiter. </p><p>Die Ebenen eines dreidimensional angeordneten Arrays heißen <a href="/w/index.php?title=Plane_(geometry)&action=edit&redlink=1" class="new" title="Plane (geometry) (Seite nicht vorhanden)">Planes</a>. Es sind Arrays mit n Dimensionen möglich, die Anzahl ist nur begrenzt durch die maximale Größe der Integer-Indizierung (2<sup>31</sup>-1) und den zur Verfügung stehenden Speicherplatz. </p> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/Datei:APL2NestedArray.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/3/3d/APL2NestedArray.png/220px-APL2NestedArray.png" decoding="async" width="220" height="188" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/3/3d/APL2NestedArray.png 1.5x" data-file-width="229" data-file-height="196" /></a><figcaption>Ein „Nested Array“ in APL2</figcaption></figure> <p>Im Jahre 1986 brachte IBM ein erheblich erweitertes APL mit dem Namen <i>APL2</i> auf den Markt. Die Erweiterung bestand hauptsächlich darin, dass jedes Element eines Arrays aus beliebigen anderen Datenstrukturen bestehen kann (<i>Nested Array</i>). Damit ergeben sich verschachtelte Strukturen. Zur Veranschaulichung befindet sich rechts ein Beispiel. Es handelt sich dabei um eine bereits behandelte, numerische Matrix mit 4 Zeilen und 5 Spalten. Jedoch besteht das 2. Element der 2. Zeile aus einem Textvektor und das 4. Element der 3. Zeile aus einer 2x2-Matrix. Es lassen sich somit auch die <a href="/wiki/Label_(Programmierung)" title="Label (Programmierung)">Textlabels</a> mit den numerischen Werten zu einer Tabelle verknüpfen. APL2 eröffnete die Möglichkeit, auch <i>mixed arrays</i> sowie einfache und komplexe <a href="/wiki/Liste_(Datenstruktur)" title="Liste (Datenstruktur)">Listen</a> zu erzeugen. </p><p>Im Zuge dieser Erweiterung wurden auch neue sogenannte „primitive Funktionen“ (<i>primitive funktions</i>) zur Bearbeitung der neuen Datenstrukturen eingeführt sowie die alten Funktionen angepasst und in ihrem Geltungsbereich erweitert. Andere APL-Hersteller brachten ähnliche Erweiterungen ihrer Implementierungen heraus, wobei feine Unterschiede die Portierung eines Programms zu einer anderen Implementierung erschweren. Heute gilt die APL2-Implementation als Referenz für alle Hersteller, man bemüht sich um größtmögliche Kompatibilität. </p> <div class="mw-heading mw-heading3"><h3 id="Funktionen_und_Operatoren">Funktionen und Operatoren</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=13" title="Abschnitt bearbeiten: Funktionen und Operatoren" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=13" title="Quellcode des Abschnitts bearbeiten: Funktionen und Operatoren"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>APL kennt sowohl Funktionen als auch Operatoren, aber die Bedeutung der Begriffe ist anders als in der Mathematik: Funktionen werden auf Daten angewendet, Operatoren auf Funktionen und Daten. Funktionen liefern Daten zurück, Operatoren sogenannte „abgeleitete Funktionen“ (engl.: <i><span lang="en">derived function</span></i>). </p><p><b>Beispiel</b> </p><p>Das Zeichen <i>slash</i> (/) steht für den Operator <i>reduce</i>. Operatoren erwarten einen oder zwei Operanden. Wird nur ein Operand verwendet, dann muss er <i>links</i> neben dem Operator stehen: </p> <pre> +/ </pre> <p>In diesem Beispiel ist der Operand die Funktion „Plus“. Zusammen mit dem Operator wird die abgeleitete Funktion <i>Summiere</i> gebildet. </p><p>Angewendet auf einen Vektor: </p> <pre> +/ 3 4 5 </pre> <p>bewirkt der Operator <i>Reduce</i>, dass der Operand zwischen die einzelnen Bestandteile des Vektors eingefügt wird. Abstrakt ausgedrückt: </p> <pre> f/ n1 n2 n3 == n1 f n2 f n3 </pre> <p>und im konkreten Beispiel (das Ergebnis steht darunter): </p> <pre> +/ 3 4 5 == 3 + 4 + 5 12 </pre> <p>Wie mächtig dieses Konzept ist, wird aber erst bei Betrachtung eines anderen Operators klar: <i>Expand</i> (<i>backslash</i>, \) verwendet den Operanden in der gleichen Weise wie <i>Reduce</i>, erzeugt aber Zwischenergebnisse und reduziert den Rang des Ergebnisses <b>nicht</b> (<i>Reduce</i> verwandelt einen Vektor in ein Skalar, eine Matrix in einen Vektor und so weiter – dies verringert die Notwendigkeit von Programmschleifen): </p> <pre> +\ 3 4 5 3 7 12 </pre> <p><b>Weitere Beispiele</b> </p> <pre> ×/ 3 4 5 60 ×\3 4 5 3 12 60 -/3 4 5 4 -\3 4 5 3 -1 4 </pre> <p>Es gibt auch Operatoren, die zwei Operanden verlangen. Der Operator <i>Outer Product</i> (.) ist ein solcher Operator. Verwendet man als Operanden die Funktionen Plus (+) und Mal (×), dann entsteht in APL die <a href="/wiki/Matrizenmultiplikation" title="Matrizenmultiplikation">Matrizenmultiplikation</a>: </p> <pre> 1 2 3 +.× 40 50 60 320 </pre> <figure class="mw-halign-right" typeof="mw:File/Frame"><a href="/wiki/Datei:Aplsample_01.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/1/11/Aplsample_01.png" decoding="async" width="197" height="207" class="mw-file-element" data-file-width="197" data-file-height="207" /></a><figcaption>APL-Statement</figcaption></figure> <p>Das funktioniert genauso mit Matrizen. Um dies zu demonstrieren, sind in dem Bild einige Zeilen aus einer APL-<a href="/wiki/Integrierte_Entwicklungsumgebung" title="Integrierte Entwicklungsumgebung">IDE</a> (hier Dyalog APL/W) dargestellt. Es werden neben + und × drei APL-Funktionen verwendet: </p> <ul><li>Der nach links weisende Pfeil symbolisiert in APL die Zuweisung eines Wertes auf einen Variablennamen.</li> <li>Das einem i ähnelnde Zeichen ι (<a href="/wiki/Iota" title="Iota">Iota</a>) steht für die Funktion <i>Indexvektor bilden</i>. Im ersten Anwendungsfall wird eine Zahlenkette von 1 bis 6 erzeugt.</li> <li>Das dem Buchstaben p ähnelnde Zeichen ρ (<a href="/wiki/Rho" title="Rho">rho</a>) steht für die APL-Funktion <i>shape</i> und formatiert die rechts angegebenen Daten. Die Anzahl der Achsen wird links von dem Zeichen angegeben. Im ersten Anwendungsfall wird eine Matrix mit zwei Zeilen und drei Spalten erzeugt.</li> <li>Die Formel „+.ד symbolisiert das Matrizenprodukt.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Selbstdefinierte_Funktionen">Selbstdefinierte Funktionen</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=14" title="Abschnitt bearbeiten: Selbstdefinierte Funktionen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=14" title="Quellcode des Abschnitts bearbeiten: Selbstdefinierte Funktionen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Zusätzlich zu den eingebauten Funktionen (primitive functions) kann man seine eigenen Funktionen schreiben, die dann selbstdefinierte Funktion (user-defined function) genannt werden. Eine solche Funktion kann null, ein oder zwei Argumente verlangen und heißt entsprechend „niladische“, „monadische“ oder „dyadische“ Funktion. Gemäß ihrer Abstammung von der mathematischen Notation erwarten monadische APL-Funktionen ihr Argument rechts und dyadische Funktionen rechts und links. </p><p>Die Funktion kann einen Wert zurückliefern. </p><p>Beispiel für eine dyadische Funktion: </p> <pre>R ← S Runde Z </pre> <p>Dabei sei „S“ die Zahl der Dezimalstellen, auf die das Argument „Z“ (eine reelle Zahl) zu runden ist; das Ergebnis steht in R. Anwendung: </p> <pre> 2 Runde 3.14159265 3.14 </pre> <p>Funktionen können sich über mehrere Zeilen erstrecken. In Funktionen können andere Funktionen aufgerufen werden. Verzweigungen erfolgten ursprünglich mittels (evtl. bedingten) <a href="/wiki/Sprunganweisung" title="Sprunganweisung">Sprungbefehlen</a> und Zielmarken (<a href="/wiki/Label_(Programmierung)" title="Label (Programmierung)"><i>labels</i></a>). Heute wird diese Technik kaum noch verwendet: Außer APL2 bieten alle modernen Implementationen Kontrollstrukturen. </p> <div class="mw-heading mw-heading3"><h3 id="Programmbeispiel_zur_Illustration_der_Wirkungsweise_von_APL">Programmbeispiel zur Illustration der Wirkungsweise von APL</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=15" title="Abschnitt bearbeiten: Programmbeispiel zur Illustration der Wirkungsweise von APL" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=15" title="Quellcode des Abschnitts bearbeiten: Programmbeispiel zur Illustration der Wirkungsweise von APL"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <pre> R ← {S} Runde Z [1] ⍝ Runde eine reelle Zahl Z auf S Stellen [2] ⍝ Standardwert für S ist 2, wenn der Wert beim Aufruf nicht spezifiziert wurde [3] →(0≠⎕NC'S')/RN [4] S←2 [5] RN: R←(10*-S)×⌊0.5+Z×10*S </pre> <p>Diese Funktion und ihre Anwendung sollen die Eigenschaften von APL erläutern: </p> <div class="mw-heading mw-heading4"><h4 id="Erläuterung_des_Programmbeispiels"><span id="Erl.C3.A4uterung_des_Programmbeispiels"></span>Erläuterung des Programmbeispiels</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=16" title="Abschnitt bearbeiten: Erläuterung des Programmbeispiels" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=16" title="Quellcode des Abschnitts bearbeiten: Erläuterung des Programmbeispiels"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Zeile 0: Definition der Funktion mit zwei Argumenten S („Stellen“) und Z („Zahl“) und einem expliziten Ergebnis R. Die geschweiften Klammern um das Argument S machen dieses zu einem optionalen Argument.</li> <li>Zeilen 1 und 2: Kommentarzeilen (erkennbar an der „Lampe“ ⍝ als erstem Zeichen).</li> <li>Zeile 3: Mit einer Bedingung wird geprüft, ob die NameClass („eingebaute Funktion“ ⎕NC) des Namens S ungleich 0 ist. 0 bedeutet „nicht definiert“. Die Verzweigung zur Marke RN gilt, wenn die Bedingung in Klammern = 1 ist, andernfalls wird RN (das einfach nur die Zeilennummer 5 ist), durch die normale APL-Anweisung 0/RN auf den „leeren Vektor“ reduziert („/“ ist der Operator <i>reduce</i>) und es erfolgt keine Verzweigung.</li> <li>Zeile 4: Wenn die Bedingung in Zeile 3 nicht erfüllt ist (= Wert ist unbekannt), wird S auf 2 gesetzt.</li> <li>Zeile 5: Hier findet die eigentliche Rundung statt. Kennzeichnend ist das „Weiterreichen“ errechneter Werte <b>von rechts nach links</b>, z. B. die Multiplikation des Parameters Z mit den Rundungsstellen S (Z×10*S). Der dadurch erzeugte um S Zehnerpotenzen größere Wert wird anschließend (also links davon) kaufmännisch (Addition von 0.5) gerundet (⌊-Funktion, genannt „floor“) und somit von weiteren Dezimalstellen befreit, so dass er nun ein ganzzahliger Wert ist. Das Ergebnis wird in die links stehende Multiplikation mit (10*-S) weitergereicht, die den Wert wieder um S Zehnerpotenzen verringert. Dies ist das Ergebnis <i>R</i> der Funktion.</li></ul> <div class="mw-heading mw-heading4"><h4 id="Wirkungsweise_bzw._Anwendung">Wirkungsweise bzw. Anwendung</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=17" title="Abschnitt bearbeiten: Wirkungsweise bzw. Anwendung" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=17" title="Quellcode des Abschnitts bearbeiten: Wirkungsweise bzw. Anwendung"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Beispiele: </p> <pre> 1 Runde 3.14159265 3.1 Runde 3.14159265 3.14 3 Runde 3.14159265 77.123 99.9 3.142 77.123 99.900 Runde 2 2 ρ(ι4)÷7 0.14 0.29 0.43 0.57 </pre> <ul><li>Erstes Beispiel: Anwendung der Funktion auf Pi, Rundung auf 1 Stelle (siehe auch weiter oben).</li> <li>Zweites Beispiel: Rundung von Pi auf zwei Stellen, Test des Default-Wertes (linkes Argument fehlt).</li> <li>Drittes Beispiel: Rundung eines Vektors auf drei Stellen (rechts fehlende Nullen werden ergänzt).</li> <li>Viertes Beispiel: Rundung einer Matrix (Tabelle) auf zwei Stellen (Default) – zwei Zeilen und zwei Spalten erzeugt durch die Funktion ρ aus der Division der ersten vier natürlichen Zahlen (ι4, Funktion <i>iota</i>) durch 7.</li></ul> <p>Die Funktion <i>Runde</i> kann nicht nur wie oben gezeigt interaktiv ausgeführt werden, sie kann auch in anderen Programmen verwendet werden: </p> <pre>X ← 4 Runde +/MAT </pre> <p>Dabei sei MAT eine Tabelle mit beliebigen Zahlen, die durch die „Summenreduktion“ (<b>+/</b>) spaltenweise summiert wird. Die entstehenden n-stelligen Zahlen (ein Vektor) werden auf 4 Dezimalen gerundet der Variablen X zugewiesen. Stattdessen könnte man auch damit weiterrechnen, sie beispielsweise mit 2 multiplizieren: </p> <pre>2 × 4 Runde +/MAT </pre> <div class="mw-heading mw-heading3"><h3 id="„Moderne“_Sprachkonzepte:_Rekursion_und_Kontrollstrukturen"><span id=".E2.80.9EModerne.E2.80.9C_Sprachkonzepte:_Rekursion_und_Kontrollstrukturen"></span>„Moderne“ Sprachkonzepte: Rekursion und Kontrollstrukturen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=18" title="Abschnitt bearbeiten: „Moderne“ Sprachkonzepte: Rekursion und Kontrollstrukturen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=18" title="Quellcode des Abschnitts bearbeiten: „Moderne“ Sprachkonzepte: Rekursion und Kontrollstrukturen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Eine Stärke von APL ist die <a href="/wiki/Rekursion" title="Rekursion">Rekursion</a>, der Aufruf einer Funktion innerhalb ihrer selbst. Dies war in der ursprünglichen Implementierung von APL bereits enthalten (im Gegensatz zu den meisten damaligen Programmiersprachen wie <a href="/wiki/COBOL" title="COBOL">COBOL</a> oder <a href="/wiki/FORTRAN" class="mw-redirect" title="FORTRAN">FORTRAN</a>). </p><p>Beispiel (ohne Zeilennummern) unter Verwendung „moderner“ (in anderen APL-„Dialekten“ später eingefügte Kontrollstrukturen): </p> <pre> Z ← FAKULTÄT N ⍝ Da n! = n × (n-1)!, muss (am Anfang) die Rekursion ⍝ bei n=1 "gestoppt" werden (1! = 1) :If N <= 1 Z←1 :Else Z←N×FAKULTÄT N-1 :EndIf </pre> <p>Anm.: Wegen der Verarbeitungsreihenfolge muss „n-1“ nicht in Klammern stehen (kann aber). </p> <div class="mw-heading mw-heading2"><h2 id="Mächtigkeit_und_Lesbarkeit"><span id="M.C3.A4chtigkeit_und_Lesbarkeit"></span>Mächtigkeit und Lesbarkeit</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=19" title="Abschnitt bearbeiten: Mächtigkeit und Lesbarkeit" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=19" title="Quellcode des Abschnitts bearbeiten: Mächtigkeit und Lesbarkeit"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><b>APL ist mächtig:</b> Es gibt (abhängig von der Version) rund 70 primitive, das heißt im Interpreter verankerte (im Gegensatz zu selbst definierten) Funktionen. Diese werden durch etwa 50 Symbole dargestellt, von denen rund 20 Symbole zwei verschiedene Funktionen repräsentieren, in Abhängigkeit davon, ob sie mit einem oder zwei Argumenten aufgerufen werden. </p><p>Beispiel: </p> <ul><li>In 8 ÷ 4 wird die Funktion „÷“ dyadisch als Division verwendet. Das Ergebnis ist 2.</li> <li>In ÷.25 wird die Funktion „÷“ monadisch verwendet; sie liefert den Kehrwert des rechten Arguments. Das Ergebnis ist 4.</li></ul> <p>Die meisten der in APL „eingebauten“ Funktionen wirken sowohl auf Skalare als auch auf Vektoren, Matrizen und Arrays. Wo in anderen Programmiersprachen Schleifen verwendet werden müssen, um eine Menge von Werten zu verarbeiten, genügt in der Regel bei APL der Einsatz einer primitiven Funktion. Darüber hinaus können viele dieser Funktionen mittels Operatoren erweitert werden. </p><p>Neben den primitiven Funktionen, die immer aus einem einzelnen Zeichen bestehen, gibt es eine große Anzahl von System-Funktionen und -Variablen. Datum und Uhrzeit sind z. B. in einer Systemvariablen ⎕TS (für <b>T</b>ime<b>S</b>tamp) abfragbar. Systemvariablen gehören nicht zum „primitiven“ Sprachumfang, sondern sind abhängig von der Implementation. Auch Systemfunktionen sind teilweise implementationsabhängig. Sie stellen beispielsweise Schnittstellen zu anderen Programmiersprachen und zum Betriebssystem bereit. </p><p>Definierte Funktionen passen sich nahtlos in dieses Konzept ein. Sie können monadisch oder dyadisch sein und ohne spezielle Syntax mit den primitiven Funktionen zusammen in einem Statement verwendet werden. Es können sogar selbst programmierte Funktionen als Argumente eines Operators verwendet werden oder Operatoren selbst programmiert werden. </p><p>Da die primitiven Funktionen von APL nur aus einem einzigen Zeichen bestehen und diese Funktionen zudem sehr mächtig sind, kann keine andere Sprache mit vergleichbarer Kürze und Stringenz aufwarten. Wo in anderen Programmiersprachen viele Zeilen vonnöten sind, reicht bei APL häufig schon eine Anweisung mit einigen Symbolen aus.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> </p><p>Dies sind die berühmt-berüchtigten „one-liners“, an denen viele APL-Programmierer ihr „Denkzeug“ („APL as a tool of thought“) geschärft haben. Ken Iverson selbst hat einen <i>one-liner</i> geschaffen, der eine Liste der ersten <a href="/wiki/Primzahl" title="Primzahl">Primzahlen</a> bis höchstens N erstellt:<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <pre> (2 = 0 +.= T ∘.| T) / T ← ιN </pre> <p>Es existieren noch extremere Beispiele. So gibt es eine APL-Lösung des <a href="/wiki/Damenproblem" title="Damenproblem">n-Damen-Problems</a> ebenfalls in einer (!) Zeile. Kritiker sprechen von APL gelegentlich als von einer „Write-once-read-never“-Sprache. Diesem Urteil liegt ein Missverständnis zugrunde: Wenn in einer Zeile APL soviel passiert wie in zwei Seiten C-Code, dann sollte man realistischerweise davon ausgehen, dass diese eine Zeile zum Verständnis etwa die gleiche Zeit benötigt wie die zwei Seiten C-Code. </p><p>APL hat sich besonders in Bereichen bewährt, in denen sich die Anforderungen konstant und schnell ändern: Versicherungen, Hedge-Fonds, Portfolio-Verwalter sowie <a href="/wiki/Prototyping_(Softwareentwicklung)" title="Prototyping (Softwareentwicklung)">Prototyping</a> für neue Anwendungen. </p><p>Die verwendeten Symbole, die Kürze der Formulierung und die variable Manipulation abstrakter Objekte (die erwähnten Skalare, Vektoren, Matrizen und so weiter – sowohl in Zahlen- wie in Textform und sogar gemischt) machen APL zu einer Sprache für Mathematiker (wofür sie ja auch anfangs konzipiert war). Sie erfordert abstraktes Denken und räumliches Vorstellungsvermögen, ist dadurch aber auch einfach und sehr elegant. </p> <div class="mw-heading mw-heading2"><h2 id="Ausführungsgeschwindigkeit"><span id="Ausf.C3.BChrungsgeschwindigkeit"></span>Ausführungsgeschwindigkeit</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=20" title="Abschnitt bearbeiten: Ausführungsgeschwindigkeit" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=20" title="Quellcode des Abschnitts bearbeiten: Ausführungsgeschwindigkeit"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Da APL interpretiert wird, kann es vergleichsweise langsam in der Ausführung sein. Dies macht sich besonders dann unangenehm bemerkbar, wenn ein APL-Programm sich um einzelne Datenteilchen kümmern muss, zum Beispiel in einem KeyPress-Event-Handler. Andererseits umfasst APL einen großen Vorrat hochspezialisierter Funktionen, die für die Verarbeitung großer Arrays optimiert sind. Werden diese Funktionen auf große Datenmengen angewendet, dann können APL-Programme wie auch andere Interpreter-Programme sehr schnell sein. </p><p>Als funktionale Sprache ist APL prinzipiell geeignet, Multiprozessormaschinen auszunutzen. In diesem Bereich gibt es derzeit die größten Weiterentwicklungen der am Markt erfolgreichen APL-Implementationen. </p> <div class="mw-heading mw-heading2"><h2 id="Entwicklung_und_aktuelle_Situation">Entwicklung und aktuelle Situation</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=21" title="Abschnitt bearbeiten: Entwicklung und aktuelle Situation" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=21" title="Quellcode des Abschnitts bearbeiten: Entwicklung und aktuelle Situation"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Die Zeitschrift <i>APL Quote-Quad</i> stellte das erste schriftliche Kommunikationsmittel für APL-Anwender außerhalb von IBM dar, und dieses hausgemachte Mitteilungsblatt war definitiv ein Keimzelle für die Organisation von APL-Anwendern unter der Ägide der <i><a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">Association for Computing Machinery</a></i> (ACM).<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p><p>Bis etwa 1985 war IBM mit ihrem APL2-Interpreter auf PCs wie auf Mainframes der führende Anbieter. In den folgenden knapp 10 Jahren war APL sehr erfolgreich, wurde aber nicht nennenswert weiterentwickelt. Erst seit etwa 1992 haben kleinere Software-Unternehmen (APL2000, Dyalog APL, später auch MicroAPL) APL kontinuierlich weiterentwickelt. Mittlerweile haben diese Implementierungen IBMs APL2 in Sachen Leistungsfähigkeit deutlich hinter sich gelassen. Allerdings ist APL2 die einzige APL-Implementierung, die (auch) auf Mainframes läuft. </p><p>Die vielleicht derzeit beste Implementierung, Dyalog APL, wurde von Microsoft in den Kreis der anerkannten .NET-Sprachen aufgenommen. IBM APL2 ist dagegen erste Wahl in IBMs Websphere-Welt. </p><p>Besondere Bedeutung hat APL2 heute vor allem noch in der Banken-, Versicherungs- und der Tourismusbranche sowie in Forschung und Entwicklung. </p><p>Heute wird APL in kleinen Projekten von spezialisierten Software-Unternehmen eingesetzt sowie als Werkzeug von Fachleuten, die sich eher als Systemanalytiker oder Business-Analysten denn als Programmierer bezeichnen. Auch in den Fachabteilungen größerer Unternehmen, Forschungsinstituten und an Universitäten wird es noch immer erfolgreich genutzt. </p><p>APL ist „alive and well“<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> und hat ein eigenes Wiki.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> </p><p>2012 konnte das <a href="/wiki/Computer_History_Museum" title="Computer History Museum">Computer History Museum</a> mit der Erlaubnis von <a href="/wiki/IBM" title="IBM">IBM</a> den Assembler-Quelltext von APL in der 1969–1972 „XM6“ Version für System/360 veröffentlichen.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> </p><p>Die Firma Log-On Software kündigte im Januar 2021 Log-On APL2 für den April 2021 an.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> Bei IBM ging der Support für das Produkt APL2 im September 2021 zu Ende.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="J_und_APL">J und APL</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=22" title="Abschnitt bearbeiten: J und APL" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=22" title="Quellcode des Abschnitts bearbeiten: J und APL"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In seinen späten Jahren hat der Hauptdesigner von APL, Ken Iverson, einen zweiten Versuch gewagt. Das Ergebnis ist die <a href="/wiki/J_(Programmiersprache)" title="J (Programmiersprache)">Programmiersprache J</a>, die nichts mit Microsofts nicht mehr unterstützter <a href="/wiki/J-Sharp" title="J-Sharp">Programmiersprache J#</a> zu tun hat. Diese Sprache ähnelt in ihren Konzepten sehr stark APL, verwendet aber ausschließlich Zeichen des ASCII-Zeichensatzes. Dies wird von den Anhängern als gewaltiger Fortschritt angesehen, von Kritikern aber abgelehnt, da die Verständlichkeit vermindert und Selbsterklärung der Symbole nicht ausgenutzt werden. </p> <div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=23" title="Abschnitt bearbeiten: Einzelnachweise" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=23" title="Quellcode des Abschnitts bearbeiten: Einzelnachweise"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Falkoff, A.D., K.E. Iverson, The Design of APL, IBM Journal of Research and Development, Volume 17, Number 4, 1973-07.</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Iverson K.E.," <style data-mw-deduplicate="TemplateStyles:r246413598">.mw-parser-output .webarchiv-memento{color:var(--color-base,#202122)!important}</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120824073056/http://awards.acm.org/images/awards/140/articles/9147499.pdf">Notation as a tool of thought</a> (<a href="/wiki/Web-Archivierung#Begrifflichkeiten" title="Web-Archivierung"><span class="webarchiv-memento">Memento</span></a> vom 24. August 2012 im <i><a href="/wiki/Internet_Archive" title="Internet Archive">Internet Archive</a></i>) (PDF; 2,2 MB)", <i>Communications of the ACM</i>, 23: 444-465 (August 1980).</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">A. D. Falkoff, K. E. Iverson, E. H. Sussenguth: <i>A formal description of SYSTEM/360.</i> In: <i>IBM Systems Journal.</i> Volume 3, Issue 2 (1964).</span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">Die Schreibmaschine hat einen begrenzten Zeichenvorrat. Spezielle Symbole wurden deshalb durch Übereinandertippen zweier Zeichen erzeugt. Beispiel: Das Zeichen <b>⍝</b> wird durch die Folge <b>⋂ [Rücktaste] °</b> erzeugt.</span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text">Als Beispiel möge ein Video auf YouTube dienen, in dem Schritt für Schritt zwei einzeilige APL Funktionen entwickelt werden: die erste Funktion berechnet die nächste Generation gemäß den Regeln für <a href="/wiki/Conways_Spiel_des_Lebens" title="Conways Spiel des Lebens">Conways Spiel des Lebens</a>, die zweite Funktion stellt das Spiel dar: <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?fmt=18&gl=US&hl=uk&v=a9xAKttWgP4">Conway’s Game Of Life in APL</a></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://foldoc.org/one-liner+wars">One-liner Wars in APL</a></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text">Arlene E. Azzarello: <a rel="nofollow" class="external text" href="https://www.jsoftware.com/papers/QQ_Early_Years.htm%7CAPL">QUOTE-QUAD: The Early Years.</a>, APL Press, Palo Alto, 1982-11.</span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><span class="cite">Morten Kromberg: <a rel="nofollow" class="external text" href="https://groups.google.com/g/comp.lang.apl/c/Yn1Q7HKr_yQ"><i>APL - Alive and Well!</i></a><span class="Abrufdatum"> Abgerufen am 3. Mai 2022</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AAPL+%28Programmiersprache%29&rft.title=APL+-+Alive+and+Well%21&rft.description=APL+-+Alive+and+Well%21&rft.identifier=https%3A%2F%2Fgroups.google.com%2Fg%2Fcomp.lang.apl%2Fc%2FYn1Q7HKr_yQ&rft.creator=Morten+Kromberg&rft.language=en"> </span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://aplwiki.com/">APL wiki</a></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a></span> <span class="reference-text"><span class="cite">Len Shustek: <a rel="nofollow" class="external text" href="http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/"><i>The APL Programming Language Source Code.</i></a> computerhistory.org, 10. Oktober 2012,<span class="Abrufdatum"> abgerufen am 15. Oktober 2013</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AAPL+%28Programmiersprache%29&rft.title=The+APL+Programming+Language+Source+Code&rft.description=The+APL+Programming+Language+Source+Code&rft.identifier=&rft.creator=Len%26%2332%3BShustek&rft.publisher=computerhistory.org&rft.date=2012-10-10&rft.language=englisch"> </span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.dbta.com/Editorial/News-Flashes/Log-On-Software-Announces-Log-On-APL2-145097.aspx"><i>Log-On Software Announces Log-On APL2.</i></a> Database Trends and Applications, 8. Februar 2021,<span class="Abrufdatum"> abgerufen am 24. Oktober 2021</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AAPL+%28Programmiersprache%29&rft.title=Log-On+Software+Announces+Log-On+APL2&rft.description=Log-On+Software+Announces+Log-On+APL2&rft.identifier=https%3A%2F%2Fwww.dbta.com%2FEditorial%2FNews-Flashes%2FLog-On-Software-Announces-Log-On-APL2-145097.aspx&rft.publisher=Database+Trends+and+Applications&rft.date=2021-02-08&rft.language=en"> </span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><span class="cite"><a rel="nofollow" class="external text" href="https://www.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/6/877/ENUSZP21-0096/index.html"><i>Software withdrawal and support discontinuance.</i></a> IBM APL2, IBM APL2 Application Environment, and IBM Workstation APL2 for Multiplatforms. In: <i>ibm.com.</i> 26. Januar 2021,<span class="Abrufdatum"> abgerufen am 24. Oktober 2021</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AAPL+%28Programmiersprache%29&rft.title=Software+withdrawal+and+support+discontinuance&rft.description=Software+withdrawal+and+support+discontinuance&rft.identifier=https%3A%2F%2Fwww.ibm.com%2Fcommon%2Fssi%2FShowDoc.wss%3FdocURL%3D%2Fcommon%2Fssi%2Frep_ca%2F6%2F877%2FENUSZP21-0096%2Findex.html&rft.date=2021-01-26&rft.language=en"> </span></span> </li> </ol> <div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=24" title="Abschnitt bearbeiten: Literatur" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=24" title="Quellcode des Abschnitts bearbeiten: Literatur"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Bernard Legrand: <cite style="font-style:italic">Mastering Dyalog APL</cite>. 2009, <a href="/wiki/Spezial:ISBN-Suche/9780956463807" class="internal mw-magiclink-isbn">ISBN 978-0-9564638-0-7</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Bernard+Legrand&rft.btitle=Mastering+Dyalog+APL&rft.date=2009&rft.genre=book&rft.isbn=9780956463807" style="display:none"> </span></li> <li>Kenneth E. Iverson: <cite style="font-style:italic">A Programming Language</cite>. Wiley, 1962, <a href="/wiki/Spezial:ISBN-Suche/0471430145" class="internal mw-magiclink-isbn">ISBN 0-471-43014-5</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Kenneth+E.+Iverson&rft.btitle=A+Programming+Language&rft.date=1962&rft.genre=book&rft.isbn=0471430145&rft.pub=Wiley" style="display:none"> </span></li> <li>James A. Brown, Sandra Pakin, Raymnod P. Polivka: <cite style="font-style:italic">APL2 at a Glance</cite>. Prentice Hall, 1988, <a href="/wiki/Spezial:ISBN-Suche/0130386707" class="internal mw-magiclink-isbn">ISBN 0-13-038670-7</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=James+A.+Brown%2C+Sandra+Pakin%2C+Raymnod+P.+Polivka&rft.btitle=APL2+at+a+Glance&rft.date=1988&rft.genre=book&rft.isbn=0130386707&rft.pub=Prentice+Hall" style="display:none"> </span></li> <li>Hans Lochner: <cite style="font-style:italic">APL2-Handbuch</cite>. Springer Verlag, 1989, <a href="/wiki/Spezial:ISBN-Suche/9783540506775" class="internal mw-magiclink-isbn">ISBN 978-3-540-50677-5</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Hans+Lochner&rft.btitle=APL2-Handbuch&rft.date=1989&rft.genre=book&rft.isbn=9783540506775&rft.pub=Springer+Verlag" style="display:none"> </span></li> <li>Wulf-Dieter Wagner: <cite style="font-style:italic">Software-Engineering mit APL2</cite>. Springer Verlag, 1992, <a href="/wiki/Spezial:ISBN-Suche/3540544062" class="internal mw-magiclink-isbn">ISBN 3-540-54406-2</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Wulf-Dieter+Wagner&rft.btitle=Software-Engineering+mit+APL2&rft.date=1992&rft.genre=book&rft.isbn=3540544062&rft.pub=Springer+Verlag" style="display:none"> </span></li> <li>Hanspeter Bieri und Felix Grimm: <cite style="font-style:italic">Datenstrukturen in APL2</cite>. Springer Verlag, 1992, <a href="/wiki/Spezial:ISBN-Suche/0387557474" class="internal mw-magiclink-isbn">ISBN 0-387-55747-4</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Hanspeter+Bieri+und+Felix+Grimm&rft.btitle=Datenstrukturen+in+APL2&rft.date=1992&rft.genre=book&rft.isbn=0387557474&rft.pub=Springer+Verlag" style="display:none"> </span></li> <li>Bernhard Legrand: <cite style="font-style:italic">Les APL étendus</cite>. Masson, Paris 1994.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:APL+%28Programmiersprache%29&rft.au=Bernhard+Legrand&rft.btitle=Les+APL+%C3%A9tendus&rft.date=1994&rft.genre=book&rft.place=Paris&rft.pub=Masson" style="display:none"> </span></li></ul> <div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=25" title="Abschnitt bearbeiten: Weblinks" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=25" title="Quellcode des Abschnitts bearbeiten: Weblinks"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noresize noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Commons"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/12px-Commons-logo.svg.png" decoding="async" width="12" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/24px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span></span></div><b><span class="plainlinks"><a class="external text" href="https://commons.wikimedia.org/wiki/Category:APL_(programming_language)?uselang=de"><span lang="en">Commons</span>: APL (Programmiersprache)</a></span></b> – Sammlung von Bildern, Videos und Audiodateien</div> <div class="mw-heading mw-heading3"><h3 id="Implementierungen">Implementierungen</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=26" title="Abschnitt bearbeiten: Implementierungen" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=26" title="Quellcode des Abschnitts bearbeiten: Implementierungen"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://www.dyalog.com/">Dyalog APL</a></li> <li><a rel="nofollow" class="external text" href="http://www.apl2000.com/">APL2000 (ehemals STSC, Manugistics)</a></li> <li><a rel="nofollow" class="external text" href="http://www-306.ibm.com/software/awdtools/apl/">IBMs APL2</a></li> <li><a rel="nofollow" class="external text" href="http://www.microapl.co.uk/APL/index.html">MicroAPL</a></li> <li><a rel="nofollow" class="external text" href="http://www.jsoftware.com/">J</a></li> <li><a rel="nofollow" class="external text" href="http://www.nars2000.org/">NARS2000 (Open Source)</a></li> <li><a rel="nofollow" class="external text" href="http://www.gnu.org/software/apl/">GNU APL (Open Source und frei (GPL))</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Periodika">Periodika</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=27" title="Abschnitt bearbeiten: Periodika" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=27" title="Quellcode des Abschnitts bearbeiten: Periodika"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://www.vector.org.uk/">Vector – englischsprachige APL-Publikation</a></li> <li><a rel="nofollow" class="external text" href="http://apl-germany.de/apl-journal/">APL-Journal – deutschsprachige APL-Publikation</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Über_APL"><span id=".C3.9Cber_APL"></span>Über APL</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=28" title="Abschnitt bearbeiten: Über APL" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=28" title="Quellcode des Abschnitts bearbeiten: Über APL"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://aplwiki.com/">APL Wiki</a></li> <li><a rel="nofollow" class="external text" href="http://www.apl-germany.de/">APL-Germany e. V. – Deutsche Anwendervereinigung</a></li> <li><a rel="nofollow" class="external text" href="http://aplteam.de/ueber-apl/">Über APL</a></li> <li><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?fmt=18&gl=US&hl=uk&v=a9xAKttWgP4">Conways Game of life in APL</a></li> <li><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=_DTpQ4Kk2wA">APL demonstration</a> Professor Bob Spence, Imperial College London, 1975.</li> <li><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=8kUQWuK1L4w">The Origins of APL</a> mit Ken Iverson und Adin Falkoff, 1974</li></ul> <div class="mw-heading mw-heading3"><h3 id="Syntax">Syntax</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit&section=29" title="Abschnitt bearbeiten: Syntax" class="mw-editsection-visualeditor"><span>Bearbeiten</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit&section=29" title="Quellcode des Abschnitts bearbeiten: Syntax"><span>Quelltext bearbeiten</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://publibfp.boulder.ibm.com/epubs/pdf/x2638510.pdf">APL2-Handbuch</a> (PDF; 702 kB)</li></ul></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Abgerufen von „<a dir="ltr" href="https://de.wikipedia.org/w/index.php?title=APL_(Programmiersprache)&oldid=236647000">https://de.wikipedia.org/w/index.php?title=APL_(Programmiersprache)&oldid=236647000</a>“</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Wikipedia:Kategorien" title="Wikipedia:Kategorien">Kategorien</a>: <ul><li><a href="/wiki/Kategorie:Programmiersprache" title="Kategorie:Programmiersprache">Programmiersprache</a></li><li><a href="/wiki/Kategorie:Funktionale_Programmiersprache" title="Kategorie:Funktionale Programmiersprache">Funktionale Programmiersprache</a></li><li><a href="/wiki/Kategorie:Programmiersprache_mit_einem_ISO-Standard" title="Kategorie:Programmiersprache mit einem ISO-Standard">Programmiersprache mit einem ISO-Standard</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigationsmenü</h2> <div id="mw-head"> <nav id="p-personal" class="mw-portlet mw-portlet-personal vector-user-menu-legacy vector-menu" aria-labelledby="p-personal-label" > <h3 id="p-personal-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Meine Werkzeuge</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anonuserpage" class="mw-list-item"><span title="Benutzerseite der IP-Adresse, von der aus du Änderungen durchführst">Nicht angemeldet</span></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Spezial:Meine_Diskussionsseite" title="Diskussion über Änderungen von dieser IP-Adresse [n]" accesskey="n"><span>Diskussionsseite</span></a></li><li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Spezial:Meine_Beitr%C3%A4ge" title="Eine Liste der Bearbeitungen, die von dieser IP-Adresse gemacht wurden [y]" accesskey="y"><span>Beiträge</span></a></li><li id="pt-createaccount" class="mw-list-item"><a href="/w/index.php?title=Spezial:Benutzerkonto_anlegen&returnto=APL+%28Programmiersprache%29" title="Wir ermutigen dich dazu, ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht zwingend erforderlich."><span>Benutzerkonto erstellen</span></a></li><li id="pt-login" class="mw-list-item"><a href="/w/index.php?title=Spezial:Anmelden&returnto=APL+%28Programmiersprache%29" title="Anmelden ist zwar keine Pflicht, wird aber gerne gesehen. [o]" accesskey="o"><span>Anmelden</span></a></li> </ul> </div> </nav> <div id="left-navigation"> <nav id="p-namespaces" class="mw-portlet mw-portlet-namespaces vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-namespaces-label" > <h3 id="p-namespaces-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Namensräume</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected mw-list-item"><a href="/wiki/APL_(Programmiersprache)" title="Seiteninhalt anzeigen [c]" accesskey="c"><span>Artikel</span></a></li><li id="ca-talk" class="mw-list-item"><a href="/wiki/Diskussion:APL_(Programmiersprache)" rel="discussion" title="Diskussion zum Seiteninhalt [t]" accesskey="t"><span>Diskussion</span></a></li> </ul> </div> </nav> <nav id="p-variants" class="mw-portlet mw-portlet-variants emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-variants-label" > <input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-menu-checkbox" aria-labelledby="p-variants-label" > <label id="p-variants-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Deutsch</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> </div> <div id="right-navigation"> <nav id="p-views" class="mw-portlet mw-portlet-views vector-menu-tabs vector-menu-tabs-legacy vector-menu" aria-labelledby="p-views-label" > <h3 id="p-views-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Ansichten</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected mw-list-item"><a href="/wiki/APL_(Programmiersprache)"><span>Lesen</span></a></li><li id="ca-ve-edit" class="mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&veaction=edit" title="Diese Seite mit dem VisualEditor bearbeiten [v]" accesskey="v"><span>Bearbeiten</span></a></li><li id="ca-edit" class="collapsible mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&action=edit" title="Den Quelltext dieser Seite bearbeiten [e]" accesskey="e"><span>Quelltext bearbeiten</span></a></li><li id="ca-history" class="mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&action=history" title="Frühere Versionen dieser Seite [h]" accesskey="h"><span>Versionsgeschichte</span></a></li> </ul> </div> </nav> <nav id="p-cactions" class="mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown vector-menu" aria-labelledby="p-cactions-label" title="Weitere Optionen" > <input type="checkbox" id="p-cactions-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-cactions" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" > <label id="p-cactions-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Weitere</span> </label> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </nav> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <h3 >Suche</h3> <form action="/w/index.php" id="searchform" class="vector-search-box-form"> <div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation"> <input class="vector-search-box-input" type="search" name="search" placeholder="Wikipedia durchsuchen" aria-label="Wikipedia durchsuchen" autocapitalize="sentences" title="Durchsuche die Wikipedia [f]" accesskey="f" id="searchInput" > <input type="hidden" name="title" value="Spezial:Suche"> <input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Suche nach Seiten, die diesen Text enthalten" value="Suchen"> <input id="searchButton" class="searchButton" type="submit" name="go" title="Gehe direkt zu der Seite mit genau diesem Namen, falls sie vorhanden ist." value="Artikel"> </div> </form> </div> </div> </div> <div id="mw-panel" class="vector-legacy-sidebar"> <div id="p-logo" role="banner"> <a class="mw-wiki-logo" href="/wiki/Wikipedia:Hauptseite" title="Hauptseite"></a> </div> <nav id="p-navigation" class="mw-portlet mw-portlet-navigation vector-menu-portal portal vector-menu" aria-labelledby="p-navigation-label" > <h3 id="p-navigation-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Navigation</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikipedia:Hauptseite" title="Hauptseite besuchen [z]" accesskey="z"><span>Hauptseite</span></a></li><li id="n-topics" class="mw-list-item"><a href="/wiki/Portal:Wikipedia_nach_Themen"><span>Themenportale</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Spezial:Zuf%C3%A4llige_Seite" title="Zufällige Seite aufrufen [x]" accesskey="x"><span>Zufälliger Artikel</span></a></li> </ul> </div> </nav> <nav id="p-Mitmachen" class="mw-portlet mw-portlet-Mitmachen vector-menu-portal portal vector-menu" aria-labelledby="p-Mitmachen-label" > <h3 id="p-Mitmachen-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Mitmachen</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Artikel-verbessern" class="mw-list-item"><a href="/wiki/Wikipedia:Beteiligen"><span>Artikel verbessern</span></a></li><li id="n-Neuerartikel" class="mw-list-item"><a href="/wiki/Hilfe:Neuen_Artikel_anlegen"><span>Neuen Artikel anlegen</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Autorenportal" title="Info-Zentrum über Beteiligungsmöglichkeiten"><span>Autorenportal</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Hilfe:%C3%9Cbersicht" title="Übersicht über Hilfeseiten"><span>Hilfe</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Spezial:Letzte_%C3%84nderungen" title="Liste der letzten Änderungen in Wikipedia [r]" accesskey="r"><span>Letzte Änderungen</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:Kontakt" title="Kontaktmöglichkeiten"><span>Kontakt</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_de.wikipedia.org&uselang=de" title="Unterstütze uns"><span>Spenden</span></a></li> </ul> </div> </nav> <nav id="p-tb" class="mw-portlet mw-portlet-tb vector-menu-portal portal vector-menu" aria-labelledby="p-tb-label" > <h3 id="p-tb-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Werkzeuge</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Spezial:Linkliste/APL_(Programmiersprache)" title="Liste aller Seiten, die hierher verlinken [j]" accesskey="j"><span>Links auf diese Seite</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Spezial:%C3%84nderungen_an_verlinkten_Seiten/APL_(Programmiersprache)" rel="nofollow" title="Letzte Änderungen an Seiten, die von hier verlinkt sind [k]" accesskey="k"><span>Änderungen an verlinkten Seiten</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Spezial:Spezialseiten" title="Liste aller Spezialseiten [q]" accesskey="q"><span>Spezialseiten</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&oldid=236647000" title="Dauerhafter Link zu dieser Seitenversion"><span>Permanenter Link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&action=info" title="Weitere Informationen über diese Seite"><span>Seiteninformationen</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Spezial:Zitierhilfe&page=APL_%28Programmiersprache%29&id=236647000&wpFormIdentifier=titleform" title="Hinweise, wie diese Seite zitiert werden kann"><span>Artikel zitieren</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Spezial:URL-K%C3%BCrzung&url=https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FAPL_%28Programmiersprache%29"><span>Kurzlink</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Spezial:QrCode&url=https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FAPL_%28Programmiersprache%29"><span>QR-Code herunterladen</span></a></li> </ul> </div> </nav> <nav id="p-coll-print_export" class="mw-portlet mw-portlet-coll-print_export vector-menu-portal portal vector-menu" aria-labelledby="p-coll-print_export-label" > <h3 id="p-coll-print_export-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">Drucken/exportieren</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Spezial:DownloadAsPdf&page=APL_%28Programmiersprache%29&action=show-download-screen"><span>Als PDF herunterladen</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=APL_(Programmiersprache)&printable=yes" title="Druckansicht dieser Seite [p]" accesskey="p"><span>Druckversion</span></a></li> </ul> </div> </nav> <nav id="p-wikibase-otherprojects" class="mw-portlet mw-portlet-wikibase-otherprojects vector-menu-portal portal vector-menu" aria-labelledby="p-wikibase-otherprojects-label" > <h3 id="p-wikibase-otherprojects-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In anderen Projekten</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:APL_(programming_language)" hreflang="en"><span>Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q296187" title="Link zum verbundenen Objekt im Datenrepositorium [g]" accesskey="g"><span>Wikidata-Datenobjekt</span></a></li> </ul> </div> </nav> <nav id="p-lang" class="mw-portlet mw-portlet-lang vector-menu-portal portal vector-menu" aria-labelledby="p-lang-label" > <h3 id="p-lang-label" class="vector-menu-heading " > <span class="vector-menu-heading-label">In anderen Sprachen</span> </h3> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-an mw-list-item"><a href="https://an.wikipedia.org/wiki/APL" title="APL – Aragonesisch" lang="an" hreflang="an" data-title="APL" data-language-autonym="Aragonés" data-language-local-name="Aragonesisch" class="interlanguage-link-target"><span>Aragonés</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A5%D9%8A%D9%87_%D8%A8%D9%8A_%D8%A5%D9%84_(%D9%84%D8%BA%D8%A9_%D8%A8%D8%B1%D9%85%D8%AC%D8%A9)" title="إيه بي إل (لغة برمجة) – Arabisch" lang="ar" hreflang="ar" data-title="إيه بي إل (لغة برمجة)" data-language-autonym="العربية" data-language-local-name="Arabisch" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/APL_(proqramla%C5%9Fd%C4%B1rma_dili)" title="APL (proqramlaşdırma dili) – Aserbaidschanisch" lang="az" hreflang="az" data-title="APL (proqramlaşdırma dili)" data-language-autonym="Azərbaycanca" data-language-local-name="Aserbaidschanisch" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/%D0%90%D0%9F%D0%9B_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%B0%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" title="АПЛ (мова праграмавання) – Belarussisch" lang="be" hreflang="be" data-title="АПЛ (мова праграмавання)" data-language-autonym="Беларуская" data-language-local-name="Belarussisch" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/APL" title="APL – Bulgarisch" lang="bg" hreflang="bg" data-title="APL" data-language-autonym="Български" data-language-local-name="Bulgarisch" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/APL" title="APL – Katalanisch" lang="ca" hreflang="ca" data-title="APL" data-language-autonym="Català" data-language-local-name="Katalanisch" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/APL_(programovac%C3%AD_jazyk)" title="APL (programovací jazyk) – Tschechisch" lang="cs" hreflang="cs" data-title="APL (programovací jazyk)" data-language-autonym="Čeština" data-language-local-name="Tschechisch" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/APL_(programmeringssprog)" title="APL (programmeringssprog) – Dänisch" lang="da" hreflang="da" data-title="APL (programmeringssprog)" data-language-autonym="Dansk" data-language-local-name="Dänisch" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/APL_(programming_language)" title="APL (programming language) – Englisch" lang="en" hreflang="en" data-title="APL (programming language)" data-language-autonym="English" data-language-local-name="Englisch" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/APL" title="APL – Esperanto" lang="eo" hreflang="eo" data-title="APL" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/APL" title="APL – Spanisch" lang="es" hreflang="es" data-title="APL" data-language-autonym="Español" data-language-local-name="Spanisch" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/APL" title="APL – Estnisch" lang="et" hreflang="et" data-title="APL" data-language-autonym="Eesti" data-language-local-name="Estnisch" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A7%DB%8C%E2%80%8C%D9%BE%DB%8C%E2%80%8C%D8%A7%D9%84" title="ایپیال – Persisch" lang="fa" hreflang="fa" data-title="ایپیال" data-language-autonym="فارسی" data-language-local-name="Persisch" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/APL_(ohjelmointikieli)" title="APL (ohjelmointikieli) – Finnisch" lang="fi" hreflang="fi" data-title="APL (ohjelmointikieli)" data-language-autonym="Suomi" data-language-local-name="Finnisch" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/APL_(langage)" title="APL (langage) – Französisch" lang="fr" hreflang="fr" data-title="APL (langage)" data-language-autonym="Français" data-language-local-name="Französisch" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/APL" title="APL – Irisch" lang="ga" hreflang="ga" data-title="APL" data-language-autonym="Gaeilge" data-language-local-name="Irisch" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/APL" title="APL – Galicisch" lang="gl" hreflang="gl" data-title="APL" data-language-autonym="Galego" data-language-local-name="Galicisch" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/APL" title="APL – Hebräisch" lang="he" hreflang="he" data-title="APL" data-language-autonym="עברית" data-language-local-name="Hebräisch" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/APL" title="APL – Ungarisch" lang="hu" hreflang="hu" data-title="APL" data-language-autonym="Magyar" data-language-local-name="Ungarisch" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/APL" title="APL – Italienisch" lang="it" hreflang="it" data-title="APL" data-language-autonym="Italiano" data-language-local-name="Italienisch" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/APL" title="APL – Japanisch" lang="ja" hreflang="ja" data-title="APL" data-language-autonym="日本語" data-language-local-name="Japanisch" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/APL_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)" title="APL (프로그래밍 언어) – Koreanisch" lang="ko" hreflang="ko" data-title="APL (프로그래밍 언어)" data-language-autonym="한국어" data-language-local-name="Koreanisch" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/APL" title="APL – Latein" lang="la" hreflang="la" data-title="APL" data-language-autonym="Latina" data-language-local-name="Latein" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%8E%E0%B4%AA%E0%B4%BF%E0%B4%8E%E0%B5%BD_(%E0%B4%AA%E0%B5%8D%E0%B4%B0%E0%B5%8B%E0%B4%97%E0%B5%8D%E0%B4%B0%E0%B4%BE%E0%B4%AE%E0%B4%BF%E0%B4%82%E0%B4%97%E0%B5%8D_%E0%B4%AD%E0%B4%BE%E0%B4%B7)" title="എപിഎൽ (പ്രോഗ്രാമിംഗ് ഭാഷ) – Malayalam" lang="ml" hreflang="ml" data-title="എപിഎൽ (പ്രോഗ്രാമിംഗ് ഭാഷ)" data-language-autonym="മലയാളം" data-language-local-name="Malayalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%8F%E0%A4%AA%E0%A5%80%E0%A4%8F%E0%A4%B2" title="एपीएल – Marathi" lang="mr" hreflang="mr" data-title="एपीएल" data-language-autonym="मराठी" data-language-local-name="Marathi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/APL" title="APL – Malaiisch" lang="ms" hreflang="ms" data-title="APL" data-language-autonym="Bahasa Melayu" data-language-local-name="Malaiisch" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/APL_(programmeertaal)" title="APL (programmeertaal) – Niederländisch" lang="nl" hreflang="nl" data-title="APL (programmeertaal)" data-language-autonym="Nederlands" data-language-local-name="Niederländisch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/APL_(programmeringsspr%C3%A5k)" title="APL (programmeringsspråk) – Norwegisch (Bokmål)" lang="nb" hreflang="nb" data-title="APL (programmeringsspråk)" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegisch (Bokmål)" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%8F%E0%A8%AA%E0%A9%80%E0%A8%90%E0%A8%B2_(%E0%A8%AA%E0%A9%8D%E0%A8%B0%E0%A9%8B%E0%A8%97%E0%A9%8D%E0%A8%B0%E0%A8%BE%E0%A8%AE%E0%A8%BF%E0%A9%B0%E0%A8%97_%E0%A8%AD%E0%A8%BE%E0%A8%B8%E0%A8%BC%E0%A8%BE)" title="ਏਪੀਐਲ (ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ) – Punjabi" lang="pa" hreflang="pa" data-title="ਏਪੀਐਲ (ਪ੍ਰੋਗ੍ਰਾਮਿੰਗ ਭਾਸ਼ਾ)" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="Punjabi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/APL_(j%C4%99zyk_programowania)" title="APL (język programowania) – Polnisch" lang="pl" hreflang="pl" data-title="APL (język programowania)" data-language-autonym="Polski" data-language-local-name="Polnisch" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/APL_(linguagem_de_programa%C3%A7%C3%A3o)" title="APL (linguagem de programação) – Portugiesisch" lang="pt" hreflang="pt" data-title="APL (linguagem de programação)" data-language-autonym="Português" data-language-local-name="Portugiesisch" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/APL" title="APL – Rumänisch" lang="ro" hreflang="ro" data-title="APL" data-language-autonym="Română" data-language-local-name="Rumänisch" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/APL_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)" title="APL (язык программирования) – Russisch" lang="ru" hreflang="ru" data-title="APL (язык программирования)" data-language-autonym="Русский" data-language-local-name="Russisch" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/APL_(programski_jezik)" title="APL (programski jezik) – Serbokroatisch" lang="sh" hreflang="sh" data-title="APL (programski jezik)" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="Serbokroatisch" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/APL_(programovac%C3%AD_jazyk)" title="APL (programovací jazyk) – Slowakisch" lang="sk" hreflang="sk" data-title="APL (programovací jazyk)" data-language-autonym="Slovenčina" data-language-local-name="Slowakisch" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/APL_(programski_jezik)" title="APL (programski jezik) – Serbisch" lang="sr" hreflang="sr" data-title="APL (programski jezik)" data-language-autonym="Српски / srpski" data-language-local-name="Serbisch" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/APL_(programspr%C3%A5k)" title="APL (programspråk) – Schwedisch" lang="sv" hreflang="sv" data-title="APL (programspråk)" data-language-autonym="Svenska" data-language-local-name="Schwedisch" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/%D0%90%D0%9F%D0%9B_(%D0%B7%D0%B0%D0%B1%D0%BE%D0%BD%D0%B8_%D0%B1%D0%B0%D1%80%D0%BD%D0%BE%D0%BC%D0%B0%D0%BD%D0%B0%D0%B2%D0%B8%D1%81%D3%A3)" title="АПЛ (забони барноманависӣ) – Tadschikisch" lang="tg" hreflang="tg" data-title="АПЛ (забони барноманависӣ)" data-language-autonym="Тоҷикӣ" data-language-local-name="Tadschikisch" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/APL_(programlama_dili)" title="APL (programlama dili) – Türkisch" lang="tr" hreflang="tr" data-title="APL (programlama dili)" data-language-autonym="Türkçe" data-language-local-name="Türkisch" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/APL" title="APL – Ukrainisch" lang="uk" hreflang="uk" data-title="APL" data-language-autonym="Українська" data-language-local-name="Ukrainisch" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/APL_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="APL (ngôn ngữ lập trình) – Vietnamesisch" lang="vi" hreflang="vi" data-title="APL (ngôn ngữ lập trình)" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamesisch" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/APL%E8%AF%AD%E8%A8%80" title="APL语言 – Wu" lang="wuu" hreflang="wuu" data-title="APL语言" data-language-autonym="吴语" data-language-local-name="Wu" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/APL%E8%AA%9E%E8%A8%80" title="APL語言 – Chinesisch" lang="zh" hreflang="zh" data-title="APL語言" data-language-autonym="中文" data-language-local-name="Chinesisch" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/APL_(%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80)" title="APL (程式語言) – Kantonesisch" lang="yue" hreflang="yue" data-title="APL (程式語言)" data-language-autonym="粵語" data-language-local-name="Kantonesisch" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q296187#sitelinks-wikipedia" title="Links auf Artikel in anderen Sprachen bearbeiten" class="wbc-editpage">Links bearbeiten</a></span></div> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Diese Seite wurde zuletzt am 22. August 2023 um 15:30 Uhr bearbeitet.</li> <li id="footer-info-copyright"><div id="footer-info-copyright-stats" class="noprint"><a rel="nofollow" class="external text" href="https://pageviews.wmcloud.org/?pages=APL_(Programmiersprache)&project=de.wikipedia.org">Abrufstatistik</a> · <a rel="nofollow" class="external text" href="https://xtools.wmcloud.org/authorship/de.wikipedia.org/APL_(Programmiersprache)?uselang=de">Autoren</a> </div><div id="footer-info-copyright-separator"><br /></div><div id="footer-info-copyright-info"> <p>Der Text ist unter der Lizenz <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">„Creative-Commons Namensnennung – Weitergabe unter gleichen Bedingungen“</a> verfügbar; Informationen zu den Urhebern und zum Lizenzstatus eingebundener Mediendateien (etwa Bilder oder Videos) können im Regelfall durch Anklicken dieser abgerufen werden. Möglicherweise unterliegen die Inhalte jeweils zusätzlichen Bedingungen. Durch die Nutzung dieser Website erklären Sie sich mit den <span class="plainlinks"><a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/de">Nutzungsbedingungen</a> und der <a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Privacy_policy/de">Datenschutzrichtlinie</a></span> einverstanden.<br /> </p> Wikipedia® ist eine eingetragene Marke der Wikimedia Foundation Inc.</div></li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/de">Datenschutz</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:%C3%9Cber_Wikipedia">Über Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Impressum">Impressum</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Verhaltenskodex</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Entwickler</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/de.wikipedia.org">Statistiken</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Stellungnahme zu Cookies</a></li> <li id="footer-places-mobileview"><a href="//de.m.wikipedia.org/w/index.php?title=APL_(Programmiersprache)&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile Ansicht</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.log.warn("This page is using the deprecated ResourceLoader module \"codex-search-styles\".\n[1.43] Use a CodexModule with codexComponents to set your specific components used: https://www.mediawiki.org/wiki/Codex#Using_a_limited_subset_of_components");mw.config.set({"wgHostname":"mw-web.codfw.main-688fc9465-t84n4","wgBackendResponseTime":156,"wgPageParseReport":{"limitreport":{"cputime":"0.291","walltime":"0.637","ppvisitednodes":{"value":2526,"limit":1000000},"postexpandincludesize":{"value":20916,"limit":2097152},"templateargumentsize":{"value":6307,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":1,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":9093,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 325.883 1 -total"," 33.54% 109.312 4 Vorlage:Internetquelle"," 19.16% 62.442 1 Vorlage:Cite_web"," 17.53% 57.132 1 Vorlage:Infobox_Programmiersprache"," 12.69% 41.338 7 Vorlage:Literatur"," 10.95% 35.682 1 Vorlage:Webarchiv"," 7.25% 23.621 1 Vorlage:Lang"," 4.75% 15.476 4 Vorlage:Str_len"," 3.95% 12.876 1 Vorlage:Commonscat"," 2.72% 8.851 1 Vorlage:Webarchiv/Wayback"]},"scribunto":{"limitreport-timeusage":{"value":"0.123","limit":"10.000"},"limitreport-memusage":{"value":4367866,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-5dc468848-f2jtp","timestamp":"20241122064142","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"APL (Programmiersprache)","url":"https:\/\/de.wikipedia.org\/wiki\/APL_(Programmiersprache)","sameAs":"http:\/\/www.wikidata.org\/entity\/Q296187","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q296187","author":{"@type":"Organization","name":"Autoren der Wikimedia-Projekte"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2003-08-08T13:18:39Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/b\/b6\/APL_%28programming_language%29_logo.svg","headline":"Programmiersprache"}</script> </body> </html>