APL
| Een programmeertaal | ||
|---|---|---|
|
| ||
| Ontwikkelaar(s) | ||
|
Kenneth E. Iverson, Larry Breed, Dick Lathwell, Roger Moore en anderen | ||
| Algemene informatie | ||
| Paradigma | Array, functioneel, gestructureerd, modulair | |
| Verscheen in | 1966 | |
| Ontworpen door | Kenneth E Iverson | |
| Licentie | Eigenaar, Open Source | |
APL ( Ap rogramming Language ) is een programmeertaal die is ontstaan uit de wiskundige notatie ontwikkeld door Kenneth Iverson in 1957, die het in 1962 implementeerde toen hij in hetzelfde jaar door IBM werd aangenomen.
Functies
De APL is een applicatietaal of een taal om iets toe te passen, vergelijkbaar met een functionele taal.
Het maakt gebruik van parametreerbare operators, dus het is erg beknopt. De syntaxis is gebaseerd op enkele "operators" en gebruikt een speciale set tekens die niet aanwezig zijn in ASCII -code . De reeks bewerkingen is gebaseerd op abstracte lineaire algebra, waardoor het een ideale taal is om met vectoren en matrices te werken. Het heeft een repertoire van operatoren waarmee u nieuwe logische of wiskundige bewerkingen kunt samenstellen.
Door gegeneraliseerde punt- en kruisproducten te gebruiken, kan een enkele zin worden vertaald in vele regels van andere talen, zoals Fortran , Basic , PL1, C , enz. Omdat hierin deze bewerkingen en andere worden geïmplementeerd via lussen of iteratieve cycli (lussen).
Een voorbeeld hiervan is de circuitsimulatietaal, SIAL , die, met ongeveer 25.000 zinnen in de Fortran - Assembler -taal , twee pagina's in beslag nam in de gedrukte versie toen het werd herschreven in APL. [ 1 ] Aan de andere kant is het, ondanks dat het zo'n taal op hoog niveau is, ook in staat tot manipulatie op bitschaal en interfaces met programmeertalen op laag niveau (C, assembler, enz.) via zogenaamde processors. hulpstoffen.
Het heeft de eigenschap dat tijdens runtime andere routines kunnen worden gemaakt, gecompileerd en uitgevoerd vanuit een routine, waardoor het ook zeer geschikt is voor het automatisch uitwerken van compilers en interpreters.
Enkele praktische moeilijkheden zijn dat:
- U hebt stickers (of markering met een permanente marker) op het toetsenbord nodig, zodat u de operators (de eigen symbolen van APL) kunt zien die aan elke toets zijn toegewezen (ze kunnen door de gebruiker opnieuw worden gedefinieerd wanneer en hoe u maar wilt).
- Programma's die in APL zijn geschreven, zijn erg beknopt en hierdoor kunnen ze lang duren om te documenteren en te begrijpen voor beginners. Voor ingewijden maken de beknoptheid en de volgorde van uitvoering (elke zin wordt altijd van rechts naar links uitgevoerd) het echter heel gemakkelijk te volgen.
- Omdat het wordt geïnterpreteerd (tijdens runtime), is de snelheid ervan meestal iets langzamer dan die van applicaties met gecompileerde programmeertalen. Daarom is het tegenwoordig, met de hoge snelheden van de processors, in de meeste toepassingen geen merkbaar nadeel. Integendeel, het vergemakkelijkt onmiddellijk interactief testen en beoordelen.
- Hoewel er een gratis versie beschikbaar is in de "Free Software Foundation"-catalogus, zijn de meeste APL-interpreters of compilers closed source en delen hun gebruikers hun code niet, wat voorkomt dat hun gebruik zich verspreidt naar het niveau dat ze andere talen hebben om doe rekenkundige berekeningen zoals Matlab , Mathematica , SAGE , Maxima , Octave onder anderen.
APL voorbeelden
APL kan een stelsel vergelijkingen in één zin oplossen als we het toepassen op een specifiek stelsel vergelijkingen. Bijvoorbeeld:
7x + 4y + 2z = 4
6x + 8y + 9z = 7
4x + 2j + 1z = 2
Voer gewoon EEN ENKELE APL-zin uit, waarvan de syntaxis is:
4 7 2 ⌹ 3 3 ρ 7 4 2 6 8 9 4 2 1
Waarbij de operator ρ ( rho ) de lijst met getallen opmaakt in een 3x3 matrix. De operator ⌹ (" domino ") berekent de inverse van de matrix en vermenigvuldigt deze met de vector 4 7 2, waardoor de oplossing voor elke variabele (x, y, z) wordt gegenereerd:
0 1.1 -0.2
Het bovenstaande programma zou bibliotheken kunnen gebruiken voor matrixbewerkingen, Fortran staat aanpasbare arrays toe en is geschikt voor parallelle berekening. Maar sommige declaraties zijn nodig voor de arrays en om de subroutines aan te roepen, en in andere inflexibele talen om subroutines met arrays te maken, is het nog ingewikkelder omdat de inversie van de matrix en het product moeten worden gecodeerd via lussen , minimaal ongeveer 20 lijnen.
Met de APL kunt u direct nadenken over algebraïsche bewerkingen die op een zeer beknopte manier kunnen worden uitgedrukt, waardoor zeer korte ontwikkel- en testtijden mogelijk zijn. Om deze reden is het een zeer geschikte taal voor zeer uiteenlopende vakgebieden, zoals Wiskunde , Statistiek , Bedrijfskunde, Kunstmatige Intelligentie , Prototyping, etc.
APL in
Een van de bekendste toepassingen is het gebruik ervan in de Walt Disney -film Tron voor het genereren van speciale effecten , [ 2 ]
Als curiositeit stelt de auteur in de roman Cheap Complex Devices van JC Sundman dat de inhoud van het boek automatisch is geschreven door een computer, met behulp van code die is gegenereerd in APL, wat hem de Douglas R. Hofstadter -prijs opleverde voor de creatie van romans per computer, in 1997. [ 3 ] Dit alles is natuurlijk een literaire kunstgreep.
APL
Kenneth Iverson liep later voorop bij het ontwikkelen van een programmeertaal, aangekondigd als de opvolger van APL, genaamd J . Een van de specifieke kenmerken van J is wat stilzwijgend functioneel programmeren wordt genoemd, waarbij wordt aangenomen dat het, om programma's uit te drukken, niet nodig is om variabelen of parameters aan functies te noemen (deze concepten van stilzwijgend programmeren zijn opgenomen in de taal Logo in de LogoFE-bibliotheek). In J is de verscheidenheid aan routines (in APL "operators" genoemd) veel groter.
Invloed op andere talen
John Backus introduceerde in zijn Turing Award- lezing FP/FFP . FP is een functionele taal en FFP zijn functionele vormen, die waren gebaseerd op de APL-toepassingstaal. Een voorbeeld van de functionele vormen in APL is de verkleinbewerking op/vector die een vector reduceert door de operator toe te passen. +/1 2 3 4 berekent 1 + 2 + 3 + 4 , in sommige talen zoals sommige dialecten van Lisp hield de naam te verminderen, die werd geërfd naar andere functionele talen.
Referenties
- ^ M. Alfonseca, "SIAL/71, a Continuous Simulation Compiler", in "Advances in Cybernetics and Systems", Ed. J. Rose, Gordon en Breach, Londen, deel 3, 1974, 1319-1340.
- ^ David Selby, "Aantekeningen uit de business intelligence jungle". In APL '02: Proceedings van de 2002-conferentie over APL, 2002, pagina's 190-197.
- ^ "Natte machine" . Gearchiveerd van het origineel op 30 maart 2009 . Ontvangen 2009 .
Externe links
- APL - Mi Universo HACT Korte introductie in het Spaans tot de syntactische conventies van de taal en biografie van KE Iverson
- BASIC -taal Programmeertaal die werd gebruikt in combinatie met APL op de IBM 5100
- IBM 5100 De IBM 5100 Portable Computer was een desktopcomputer die in september 1975 werd geïntroduceerd, zes jaar vóór de IBM PC.