Zdrojový kód programovacího jazyka APL

Softwarové skvosty: V prvních padesáti letech éry počítačů byly vynalezeny tisíce programovacích jazyků. Mnohé z nich si byly podobné a mnohé šly tradiční, evoluční cestou svých předchůdců.

Některé revoluční jazyky však měly sklon, který je odlišoval od jejich univerzálnějších bratříčků. LISP byl určen pro zpracování seznamů. SNOBOL byl určen pro manipulaci s řetězci. SIMSCRIPT byl určen pro simulace. A APL byl určen pro matematiku s důrazem na zpracování polí.

To, co se nakonec stalo APL, poprvé vymyslel harvardský profesor Kenneth E. Iverson v roce 1957 jako matematickou notaci, nikoli jako počítačový programovací jazyk. Ačkoli existovaly i jiné maticově orientované symbolové systémy, včetně stručné tenzorové notace vynalezené Einsteinem, byly orientovány spíše na matematickou analýzu a méně na syntézu algoritmů. Iverson, který byl studentem Howarda Aikena, učil své harvardské studenty to, co se stalo známým jako „Iversonova notace“ pro vysvětlení algoritmů.

Iverson byl v roce 1960 najat společností IBM, aby společně s Adinem Falkoffem a dalšími pracoval na své notaci. Ve své dnes již slavné knize „A Programming Language“ 1 z roku 1962 uvádí, že notace slouží k popisu „procedur… nazývaných algoritmy nebo programy“ a že se jedná o jazyk, protože „vykazuje značnou syntaktickou strukturu“. V té době se však jednalo pouze o notaci pro čtení, nikoli o jazyk pro programování počítačů. V knize je uvedeno mnoho příkladů jeho použití jak jako popisného nástroje (například pro dokumentaci definice počítačových instrukčních sad), tak jako prostředku pro vyjádření obecných algoritmů (například pro třídění a vyhledávání). Předvídajíc odpor k něčemu tak novému, říká v předmluvě: „Ústřední tezí této knihy je, že popisná a analytická síla adekvátního programovacího jazyka bohatě vynahradí značné úsilí, které je třeba vynaložit na jeho zvládnutí.“ Možná varoval, že zvládnutí jazyka není triviální. Možná také signalizoval, že podle jeho názoru jsou jiné notační jazyky méně než „adekvátní“.

Tým samozřejmě brzy pochopil, že z notace lze udělat jazyk pro programování počítačů. Tento jazyk, který se od roku 1966 nazýval APL, kladl důraz na manipulaci s poli a používal netradiční symboly. Nepodobal se žádnému jinému programovacímu jazyku, který byl do té doby vynalezen.

APL se stal populárním, když IBM představila „APL360“ pro svůj mainframový počítač System/360. Na rozdíl od většiny ostatních jazyků té doby byl APL360 také kompletním interaktivním programovacím prostředím. Programátor, který seděl u elektromechanického psacího stroje propojeného s časově sdíleným počítačem, mohl zadávat příkazy APL a dostávat okamžitou odpověď. Programy bylo možné definovat, ladit, spouštět a ukládat na počítači, který současně používaly desítky dalších lidí.

Tato verze jazyka APL, napsaná výhradně v assembleru 360, ovládala celý stroj. Kromě vysokoúrovňového jazyka implementovala i kompletní operační systém pro sdílení času.

Se souhlasem společnosti IBM zpřístupňuje Muzeum počítačové historie zdrojový kód verze APL „XM6“ pro System/360 z let 1969-1972 pro nekomerční použití.

Textový soubor obsahuje 37 567 řádků, které zahrnují kód, makra a globální definice. Jednotlivých 90 souborů je odděleno příkazy „./ ADD“. Chcete-li získat přístup k tomuto materiálu, musíte souhlasit s podmínkami zde zobrazené licence, která povoluje pouze nekomerční použití a nedává vám právo poskytovat licenci třetím stranám zveřejněním kopií jinde na webu.

Stáhněte si zdrojový kód APL360

Jürgen Winkelmann z ETH Zürich odvedl úžasnou práci a převedl tento zdrojový kód do spustitelného systému. Více informací najdete v MVT pro APL verze 2.00.

Vytvoření programovacího jazyka APL

Iversonova kniha „Programovací jazyk“ 1 používá grafickou notaci, kterou by bylo obtížné přímo použít jako programovací jazyk pro počítače. Považoval ji za rozšíření maticové algebry a používal běžné matematické typografické konvence, jako jsou indexy, horní indexy a rozlišení na základě váhy nebo písma znaků. Zde je například program pro třídění čísel:

Pro linearizaci notace pro použití jako programovacího jazyka pro počítače psané na klávesnici se implementátoři APL museli zcela jistě vzdát používání označených šipek pro přenosy řízení. Jednou z vlastností, kterou se jim však podařilo do jisté míry zachovat, bylo používání speciálních symbolů pro primitivní funkce, jak ilustruje tento program, který vytváří Huffmanovy kódy:

APL používá symboly, které mají blíže ke standardní matematice než k programování. Například symbol pro dělení je ÷, nikoli /. Pro podporu netradičních symbolů používal APL360 speciálně navrženou klávesnici s velkými písmeny.

APL360 používal speciálně navrženou klávesnici

I tak bylo speciálních znaků více, než se vešlo na klávesnici, takže některé se psaly přeškrtnutím dvou znaků. Například znak „grade up“ ⍋, primitivní operátor používaný pro třídění, vznikl napsáním ∆ (shift H), pak backspace a pak ∣ (shift M). Pro velká i malá písmena nezbylo místo, takže APL podporoval pouze velká písmena.

Pro tisk programů přiměli Iverson a Falkoff společnost IBM, aby pro své terminály 1050 a 2741, které používaly mechanismus psacího stroje IBM Selectric, navrhla speciální psací kouli.

Nyní bylo možné programy jak psát, tak tisknout. Zde je například tištěná verze programu z příručky APL Language 2, který počítá matematický determinant matice:

A Taste of APL

APL je stručný vysokoúrovňový programovací jazyk, který se od většiny ostatních vyvinutých v 60. letech 20. století liší v několika ohledech:

Pořadí vyhodnocení: V APL se výrazy vyhodnocují zprava doleva a neexistuje hierarchie priority funkcí. Například zadání výrazu

2×4+3

způsobí, že počítač ihned napíše výslednou hodnotu

Hodnota není, jako v mnoha jiných jazycích, které mají precedenci operátorů, 11. V APL je tedy výsledná hodnota

. Závorky lze samozřejmě použít ke seskupení podvýrazu a změnit tak pořadí vyhodnocování. Obecně platí, že pravým argumentem libovolné funkce je hodnota výrazu napravo od ní.

Automatické vytváření vektorů a polí: Vyšší rozměrná struktura se automaticky vytvoří vyhodnocením výrazu, který ji vrací, a skaláry lze libovolně míchat. Například

A ← 2 + 1 2 3

vytvoří vektor „1 2 3“, přidá k němu skalár 2 a vytvoří proměnnou A, která bude obsahovat vektor, jehož hodnota je

3 4 5

Proměnné se nikdy nedeklarují; vytvářejí se automaticky a nabývají velikosti a tvaru podle toho, jaký výraz je jim přiřazen.

Přehršel primitivů: APL má bohatou sadu vestavěných funkcí (a „operátorů“, které se aplikují na funkce, aby vznikly různé funkce), které pracují se skaláry, vektory, poli, dokonce i s objekty vyšších dimenzí a jejich kombinacemi. Například výraz pro sčítání čísel ve výše vytvořeném vektoru „A“ je jednoduše

+/A

kde / je operátor „redukce“, který způsobí, že funkce vlevo se postupně aplikuje na všechny prvky operandu vpravo. Výraz pro výpočet průměru čísel v A také používá primitivní funkci ρ pro určení, kolik prvků je v A:

(+/A) ÷ ρA

Uvádíme několik tabulek z „Uživatelské příručky APL360“ 3 z roku 1970, které dávají představu o síle a propracovanosti vestavěných funkcí a operátorů APL. (Kliknutím na obrázky získáte větší verze.)

APL vybízí k jinému způsobu programování a k používání dočasných velkorozměrových datových struktur jako mezilehlých hodnot, které se pak redukují pomocí výkonných primitiv. Známým příkladem je následující krátký, ale úplný program na výpočet všech prvočísel až do R.

(~T∊T∘.×T)/T←1↓⍳R

Takto se tento výraz vyhodnotí:

výraz

význam

hodnota, pokud R je 6

⍳R

Vytvořte vektor čísel od 1 do R.

1 2 3 4 5 6

T←1↓

Pustit první prvek vektoru a zbytek přiřadit do dočasného vektoru T.

2 3 4 5 6

T∘.×T

Vytvořte vnější součin násobení: tabulku, která obsahuje výsledek násobení každého prvku T každým prvkem T.

T∊

Pomocí operátoru „příslušnost k množině“ zjistíme, které prvky T jsou v tabulce.

0 0 1 0 1

~

Negujte výsledek, abyste zjistili, které prvky T nejsou v tabulce. Jsou to celá čísla, která nemají v tabulce žádné násobky.

1 1 0 1 0

( )/T

Vyberte prvky T, které jsme identifikovali. Jsou to všechna prvočísla menší než R.

2 3 5

Všimněte si, že v tomto programu nejsou žádné smyčky. Díky síle výrazů APL jsou podmíněné větvení a smyčky vyžadovány mnohem méně často než v tradičnějších programovacích jazycích.

Operátory APL lze snadno použít pro nejrůznější druhy výpočtů, které by obvykle vyžadovaly smyčky. Například výraz, který vypočítá počet prvků vektoru X, které jsou větší než 100, je

+/X>100

Funguje to, protože X>100 vrací bitový vektor 0 a 1, který ukazuje, které prvky X jsou větší než 100, a +/ sečte všechny bity v tomto vektoru.

Ale podmíněné provádění a smyčky jsou samozřejmě někdy potřeba. Ve světle pozdějšího vývoje strukturovaného programování je jediný primitiv APL pro přenos řízení, příkaz „GO TO LINE x“ →, obzvláště slabý. Zde je příklad funkce, která počítá největší společný dělitel svých dvou argumentů. Poslední příkaz vytváří cyklus větvením na začátek. V řádku 2 podmíněný přenos řízení na řádek 0 způsobí ukončení funkce a vrácení hodnoty naposledy přiřazené G.

Pokud se chcete dozvědět více o jazyce APL z 60. let, podívejte se do referenční příručky „APL Language“ 2 a do knihy Paula Berryho „APL360 Primer“ z roku 1969 4.

Jazyk se samozřejmě v průběhu let vyvíjel a novější verze obsahují řídicí struktury jako IF-THEN-ELSE.

Jak byl APL implementován

První počítačovou implementací notace APL byl dávkově orientovaný interpret jazyka napsaný v jazyce FORTRAN v roce 1965 pro sálový počítač IBM 7090 Larrym Breedem ve výzkumném středisku IBM v Yorktown Heights ve státě New York a Philipem Abramsem, tehdy postgraduálním studentem na Stanfordově univerzitě.

První interaktivní verzi napsali Larry Breed a Roger Moore brzy poté pro počítač 7093 (experimentální 7090 s virtuální pamětí). Běžela pod systémem timesharingu TSM a byla rozmarně nazývána „IVSYS“, což se rýmuje s „IBSYS“, názvem pro standardní operační systém 7090. V e-mailu z roku 2012 Breed uvádí,

IVSYS poskytoval přihlášení, odhlášení, okamžité spuštění a definici funkcí; poskytoval pracovní prostory, a to jak aktivní, tak uložené. Jejich implementace byla primitivní; většinou jsme používali to, co nám projekt TSM nabízel pro přihlášení/odhlášení/ukládání souborů. Měli jsme jen několik týdnů na používání systému 7093, než byl vyřazen z provozu, a Roger a já jsme začali plánovat samostatný systém na System/360. Během těchto týdnů Ken a jeho skupina poprvé viděli, jak bude vypadat spustitelný APL.

Další implementace podmnožiny jazyka byla provedena v roce 1967 pro minipočítač IBM 1130.

První implementace jazyka APL, která získala široké uplatnění mimo IBM, byla pro IBM System/360. Nazývala se „APL360“ a byla uvedena do provozu nejprve v rámci IBM v listopadu 1966. (Zápis „APL360″, protože zpětné lomítko bylo operátorem „rozšíření“ jazyka APL, měl také skrytý význam: „APL rozšiřuje 360″).

Breed říká o době těsně předtím,

Toto období, počátek roku 1966, bylo přechodným obdobím od Iversonovy notace k APL. (Adin skutečně přišel s „APL“ na jaře ’66.) Zdokonalování a rozšiřování jazyka a prostředí pokračovalo po mnoho let. Pro vytvoření komerční verze nebyl přidán téměř žádný kód, pouze papírování.

V srpnu 1968 byl APL360 k dispozici zákazníkům IBM jako nepodporovaný („typ III“) program v knihovně IBM „Contributed Program Library“ 5. Hlavními implementátory byli Larry Breed, Dick Lathwell a Roger Moore; dalšími, kdo přispěli, byli Adin Falkoff a Luther Woodrum.

Raní vývojáři APL, zleva doprava: Dick Lathwell, Ken Iverson, Roger Moore, Adin Falkoff, Phil Abrams, Larry Breed. Fotografie byla pořízena kolem roku 1983.

Vzhledem k dynamické povaze proměnných APL byl APL360 implementován jako interpret, nikoli jako kompilátor, který generuje strojový kód. Programy byly uloženy v interní formě zvané „codestring“, která přímo odpovídala tomu, co uživatel zadal. Interpret pak během provádění programu zkoumal kódový řetězec a dynamicky přiděloval a rekonfiguroval proměnné podle toho, jak se vyhodnocovaly výrazy.

První verze APL360 ovládaly celý stroj. Jednalo se tedy o kombinaci operačního systému, souborového systému, timesharingového monitoru, příkazového interpretu a programovacího jazyka. Vzhledem k omezené operační paměti se uživatelské pracovní prostory podle potřeby vyměňovaly na buben nebo disk. Výkon byl působivý, což Larry Breed ve svém jasném a stručném popisu implementace 6 přičítá schopnosti přizpůsobit operační systém požadavkům jazyka.

APL360 byl konverzační jazyk, který poskytoval rychlou odezvu a efektivní provádění až pro 50 uživatelů současně. Každý uživatel měl k dispozici „aktivní pracovní prostor“, který uchovával programy, proměnné a stav pozastaveného provádění programu. Systémové příkazy jako „)LOAD“, „)SAVE“ a „)COPY“ udržovaly uživatelovu knihovnu uložených pracovních prostorů. Další systémové příkazy ovládaly vlastnosti jazyka; například pomocí příkazu „)ORIGIN“ mohl programátor řídit, zda se vektory a pole číslují od 0 nebo 1.

APL byl prvním seznámením s interaktivním sdílením času pro mnohé z generace programátorů, kteří trpěli dávkovým programováním pomocí děrných štítků.

Aplikace APL

Ještě předtím, než se stal počítačovým programovacím jazykem, byla Iversonova notace užitečná jako jazyk pro dokumentování algoritmů pro lidi. Klasickým příkladem je formální definice architektury instrukční sady nového počítače IBM System/360, kterou publikovali Adin Falkoff, Ken Iverson a Ed Sussenguth v článku v časopise IBM Systems Journal v roce 1965 7.

Popis, který je spíše formální než slovní, je proveden sadou programů, které spolu komunikují prostřednictvím společných proměnných, použitých ve spojení s pomocnými tabulkami… Ačkoli je formální popis úplný a samostatný, text je uveden jako pomůcka pro počáteční studium.

Text uvedený v článku je však mnohem více než to. Je to vysvětlení formálního popisu řádek po řádku, což znamená, že je to také ukázka a vysvětlení popisné síly APL.

V zápisu byl použit grafický styl pro řídicí přenosy, který byl v Iversonově knize. Zde je například popis operace přístupu do paměti. (Kliknutím na něj jej zvětšíte.)

Byl to právě přechod APL z notace určené k publikování do interaktivního počítačového programovacího jazyka, který způsobil jeho rozkvět. Když byla k dispozici implementace APL360, IBM a další firmy stimulovaly jeho používání tvorbou rozmanitých aplikací, jako jsou tyto:

  • Starmap: Sada funkcí APL pro výpočet a vykreslování poloh hvězd a planet. 8 9 Napsali ji v roce 1973 Paul Berry z IBM a John Thorstensen, tehdy student astronomie na Bryn Mawr College, nyní profesor fyziky a astronomie na Dartmouth College. Používá klasické řešení Keplerových rovnic pro určité datum a čas a sérii otáčení souřadnic, aby ukázal, kde by se planety a hvězdy objevily na misce oblohy.
  • IBGS: Interaktivní simulace obchodní hry: „
  • Nuly a integrály v APL: „Pomocí klasických metod, jako je Newtonova a Müllerova, i nedávno vyvinutých metod, jako je Jenkinsova a Traubova, najde reálné nuly reálné funkce, reálné a komplexní nuly polynomu s reálnými nebo komplexními koeficienty a komplexní nuly komplexní funkce.“
  • Graphpak – Interactive Graphics Package for APL360: „…schopnosti, které sahají od podpory grafického rozhraní na nejnižší úrovni až po několik aplikačních oblastí na vyšších úrovních… Komponenta pro vykreslování… lineární nebo logaritmické… fitování křivek… Komponenta deskriptivní geometrie umožňuje definovat, měnit měřítko, zvětšovat, překládat, otáčet a promítat trojrozměrné objekty.“
  • Grafy a histogramy v APL: „vytváří křivky a sloupcové grafy na terminálu psacího stroje“.
  • Souřadnicový geometrický systém APL: pro použití geodety, stavebními inženýry, urbanisty…“
  • APL/PDTS – Programming Development Tracking System: „interaktivně řeší úlohy souřadnicové geometrie na terminálu…“: „…na pomoc manažerům a plánovačům při sledování plnění plánu u projektů rozvoje programování.“ MINIPERT: „Systém metody kritické cesty (CPM) pro řízení projektů“
  • APL – ekonometrický plánovací jazyk: „Praktický ekonom, obchodní prognostik nebo učitel má k dispozici snadno použitelné nástroje pro interaktivní tvorbu modelů a jejich řešení.“
  • APL Financial Planning System: „Systém pro finanční plánování: „umožňuje finančnímu analytikovi a plánovači navrhovat sestavy, zadávat výpočtové příkazy, zadávat a měnit data a získávat tištěné sestavy s okamžitou realizací.“
  • APL Text Editor and Composer: „Tento program je určen k interaktivnímu zpracování textu na terminálu… Obsahuje funkce pro zadávání, revizi, sestavování, tisk a ukládání textu… pro použití sekretářkami, vědci, inženýry, administrátory nebo všemi ostatními, kteří vytvářejí dokumenty, dopisy, zprávy nebo specifikace.“

Mnoho z těchto aplikací kladlo důraz na interaktivitu, která zajišťovala obrovské zvýšení produktivity ve srovnání s dávkovým zpracováním úloh, které bylo v té době typičtější. Kromě toho APL umožňoval mnohem rychlejší vývoj aplikací. V e-mailu z roku 2012 Larry Breed poznamenal,

Ve všech oborech je APL díky rychlosti, s jakou lze psát programy, cenný pro modelování a prototypování… Jeden příklad: Společnost Continental Can potřebovala kolem roku 1973 inventární systém pro svých 21 výrobních závodů. Jejich tým programátorů v jazyce FORTRAN pracoval rok a úspěch byl v nedohlednu. Jeden obchodník STSC během jednoho víkendu sestavil použitelný funkční model v APL Plus.

Oblasti, v nichž se APL nejvíce prosadil, byly vědecké, pojistně-matematické, statistické a finanční aplikace. Podrobnosti o vývoji APL během prvních 25 let jeho existence najdete ve speciálním čísle časopisu IBM System Journal 10 z roku 1991, které obsahuje 12 článků a jednu esej na toto téma.

Chvála a kritika APL APL nebyl původně navržen jako programovací jazyk. Jak řekl Iverson,

Původním motivem pro vývoj APL bylo poskytnout nástroj pro psaní a výuku. Ačkoli byl APL využíván především v komerčním programování, stále věřím, že jeho nejdůležitější využití zůstává nevyužito: jako jednoduchá, přesná a spustitelná notace pro výuku široké škály předmětů.11

Počítačové programy v APL, stejně jako matematická notace, která jej inspirovala, mají díky tolika stručným a neobvyklým symbolům pro mnohé přitažlivou stručnost a eleganci. APL přitahuje fanatické stoupence. Jedním z nich byl Alan Perlis (první nositel Turingovy ceny ACM v roce 1966):

Přejetí pohledem po jediné větě může odhalit složitou, důmyslnou a krásnou souhru operací a řízení, která je v jiných programovacích jazycích pozorovatelná až na několika stránkách textu. Člověk začíná oceňovat vznik a význam stylu. 12

Mnozí považují svobodu vyjadřování v APL za osvobozující.

Zvykl jsem si jej označovat za „fašistický programovací jazyk“, protože je diktátorsky rigidní. …Pokud je Pascal fašistický, APL je anarchistický. 13

Ale programy v APL jsou často kryptické a těžko se dekódují. Někteří žertovali, že je to „jazyk pouze pro zápis“, protože i autor programu může mít později problémy s jeho pochopením. Inspiruje k programátorským trikům. Výzvě napsat v APL „jednořádkový“ program, který by implementoval kompletní složitý algoritmus, je těžké odolat. Zde jsou například dva různé jednořádkové příkazy jazyka APL, které implementují verze „Hry o život“ Johna Conwaye:

life←{1 ω∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂ω}

Očividně není pro slabé povahy. Nizozemský informatik Edsger Dijkstra řekl,

APL je omyl, dovedený k dokonalosti. Je to jazyk budoucnosti pro programovací techniky minulosti: vytváří novou generaci programátorských povalečů. 14

Fanoušci APL by ale řekli, že kryptické kódování v APL je špatný programovací styl, který může být neduhem každého jazyka. APL poskytuje bohatší paletu pro vyjádření algoritmů, zní argument, takže lze řešit obtížnější problémy rychleji a s menším irelevantním syntaktickým nepořádkem.

Ať už je váš názor jakýkoli, APL a jazyky, které ho inspirovaly, jako APL2 a J, jsou stále aktivní součástí rozmanitého světa programovacích jazyků.

Krátký životopis Kena Iversona

Kenneth Eugene Iverson se narodil 17. prosince 1920 na farmě poblíž Camrose v kanadské Albertě. Vzdělával se ve venkovských jednotřídních školách až do konce 9. třídy, kdy školu opustil, protože právě vrcholila hospodářská krize a bylo třeba pracovat na rodinné farmě. Později uvedl, že jediným smyslem pokračování ve školní docházce by bylo stát se učitelem, a to bylo povolání, o které rozhodně nestál. Během dlouhých zimních měsíců se sám učil počty.

V roce 1942 byl odveden do armády a během služby absolvoval tolik korespondenčních kurzů, že téměř dokončil střední školu. Po skončení vojenské služby získal bakalářský titul z matematiky i fyziky na Queen’s University v ontarijském Kingstonu a poté magisterský titul z fyziky na Harvardově univerzitě. V roce 1954 dokončil doktorské studium pod vedením průkopníka počítačů Howarda Aikena s prací nazvanou „Strojová řešení lineárních diferenciálních rovnic:

Po dokončení doktorátu nastoupil Iverson na Harvardovu fakultu, aby vyučoval v Aikenově novém programu automatického zpracování dat. Jeden rok zde působil jako instruktor a pět let jako odborný asistent. Byl stále více frustrován nedostatečností konvenčního matematického zápisu pro vyjádření algoritmů, a tak začal vymýšlet vlastní.

V roce 1960 Iverson nastoupil do nového výzkumného centra IBM v Yorktown Heights ve státě New York na radu Fredericka Brookse, který byl jedním z jeho pedagogických kolegů na Harvardu a nyní pracoval v IBM. Oba spolupracovali na dalším vývoji nové notace. V roce 1962 Ken vydal dnes již klasickou knihu „A Programming Language“ 1, jejíž název dal notaci, která se do té doby neformálně nazývala „Iversonova notace“, název APL.

Iverson pokračoval ve vývoji APL po celou dobu svého působení u IBM. V roce 1980 opustil IBM a vrátil se do Kanady, kde pracoval pro společnost I.P. Sharp Associates, která založila službu sdílení času založenou na APL.

V roce 1987 „odešel z placeného zaměstnání“ a plně se věnoval vývoji modernějšího dialektu APL. APL se úspěšně používal pro komerční účely, ale Iverson chtěl vyvinout novou jednoduchou spustitelnou notaci vhodnější pro výuku, která by byla dostupná za nízkou cenu. První implementace tohoto jazyka, nazvaná J, byla oznámena na uživatelské konferenci APL90.

Iversonova schopnost vytvářet takové jazyky vycházela z jeho „čiré radosti z jazyka a slov“, vzpomíná jeho dcera Janet Cramerová. „Četl slovníky jako lidé čtou romány.“ Iverson považoval za důležité, aby jazyk, a to jak anglický, tak matematický, komunikoval jasně a stručně.

Se spolupracovníky, k nimž patřil i jeho syn Eric, Iverson pokračoval v práci na vývoji J a nadále plodně publikoval. V sobotu 16. října 2004 utrpěl – při práci na výukovém programu J – mozkovou mrtvici a o tři dny později, 19. října, ve věku 83 let zemřel.

O Kenu Iversonovi existuje mnoho příběhů. Zde je několik z nich:

Ken nedostal na Harvardu místo. Odpracoval si svých pět let jako odborný asistent a fakulta se rozhodla, že ho nepovýší. Zeptal jsem se ho, co se pokazilo, a on odpověděl: „No, zavolal si mě děkan a řekl: ‚Problém je v tom, že jsi nic nepublikoval, kromě té jedné malé knížky‘.“ A tak jsem se ho zeptal, co se pokazilo. Ta jedna malá knížka později dostala Turingovu cenu. Myslím, že to je spíše komentář k tradičnímu způsobu myšlení při postupech povyšování než komentář ke Kenovi; je to komentář k akademickému postupu a k Harvardu.

– Fred Brooks, A Celebration of Kenneth Iverson, 2004-11-30

V jedné z raných přednášek Ken vysvětloval výhody tolerantního srovnávání. Jeden z posluchačů se nedůvěřivě zeptal: „Určitě nechcete říct, že když A=B a B=C, nemusí se A rovnat C?“. Ken bez meškání odpověděl: „To ví každý tesař!“ a přešel k další otázce.

– Paul Berry

Při jedné společenské konverzaci s Kenem jsem řekl: „Víš, Kene, ty jsi můj nejoblíbenější návrhář jazyků a Don Knuth je můj nejoblíbenější programátor.“ „To je pravda,“ odpověděl jsem. A Ken se okamžitě zeptal: „Co je špatného na mém programování?“.

– Joey Tuttle, A Celebration of Kenneth Iverson, 2004-11-30

V roce 1973 nebo 1974 jsme s Kenem přednášeli ve firmě Kodak v Rochesteru pro skupinu 40 až 50 programátorů, kteří museli pracovat v PL/I. Na přednášce jsme se dozvěděli, jak se Kenovi daří. V období otázek jeden z vedoucích pracovníků řekl: „Jestli rozumím tomu, co říkáte, tak navrhujete, abychom přijali nový způsob myšlení“. A Ken vyskočil ze židle a řekl: „Ano! Přesně to říkám!“.

– Joey Tuttle, Oslava Kennetha Iversona, 2004-11-30

Poděkování

Děkuji Michaelu Karasickovi, Yvonne Perkinsové, Stevu Selbstovi a Kenu Edwardsovi z IBM za to, že ukončili mou desetiletou odyseu za získání povolení ke zveřejnění zdrojového kódu APL. Děkuji Curtisi Jonesovi, Larrymu Breedovi, Paulu Berrymu a Royi Sykesovi za jejich připomínky k ranému návrhu tohoto článku.

– Len Šustek

Bibliografie

  1. K. E. Iverson, A Programming Language, John Wiley and Sons, Inc. 1962.
  2. IBM, „APL Language“, březen 1975.
  3. IBM, „APL360 User’s Manual“, březen 1970.
  4. IBM, Paul Berry, „APL360 Primer – Student Text,“ 1969.
  5. L. M. Breed a R. H. Lathwell, „APL360,“ 1968.
  6. L. M. Breed a R. H. Lathwell, „The Implementation of APL360,“ in ACM Symposium on Experimental Systems for Interactive Applied Mathematics, 1967.
  7. A. D. Falkoff, K. E. Iverson a E. H. Sussenguth, „A Formal Description of SYSTEM/360,“ IBM Systems Journal, roč. 3, č. 1, s. 1. 3, s. 198-261, 1964.
  8. P. C. Berry a J. R. Thorstensen, „Starmap,“ 1978.
  9. P. C. Berry a J. R. Thorstensen, „Starmap,“ IBM Systems Development Division, 1975.
  10. IBM Systems Journal, roč. 30, č. 3, s. 198-261, 1964. 4, 1991.
  11. K. E. Iverson, „A Personal View of APL,“ IBM Systems Journal, vol. 30, no. 4, 1991.
  12. A. J. Perlis, „In Praise of APL: A Language for Lyrical Programming,“ SIAM News, červen 1977.
  13. B. McCormick, „A Programming Language,“ 2000,2002.
  14. E. W. Dijkstra, „How Do We Tell Truths That Might Hurt?“,“ SIGPLAN Notices, roč. 17, č. 1, s. 1. 5, květen 1982.
  15. A. D. Falkoff a K. E. Iverson, „The Design of APL“, IBM Journal of Research and Development, roč. 17, č. 1, s. 1, 2, 3, 4, 5, 6. 4, 1973.
  16. A. D. Falkoff a K. E. Iverson, „The Evolution of APL,“ SIGPLAN Notices, roč. 13, č. 8, s. 45-57, srpen 1978.
  17. L. Breed, „How We Got to APL1130,“ 10. května 2004.
  18. ACM, „Proceedings of the APL’69 Conference on APL“, SUNY Binghamton, NY, 1969.
  19. „The Origins of APL – 1974“; nádherný rozhovor s původními vývojáři APL.

Historické vydání zdrojových kódů

  • Zdrojový kód MacPaint a QuickDraw, 18. července 2010
  • Zdrojový kód programovacího jazyka APL, 10. října 2012
  • Zdrojový kód Adobe Photoshop, 13. února 2013
  • Zdrojový kód Apple II DOS, 12. listopadu 2013
  • Zdrojový kód Microsoft MS-DOS Early, 25. března 2014
  • Microsoft Word pro Windows verze 1.1a Source Code, 25. března 2014
  • Early Digital Research CP/M Source Code, 1. října 2014
  • Xerox Alto Source Code, 21. října 2014
  • Electronic Arts DeluxePaint Early Source Code, 22. července 2015

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.