MAD (programovací jazyk) - MAD (programming language) - Wikipedia
Paradigma | Rozkazovací způsob |
---|---|
Vývojář | Galler, Arden a Graham |
Poprvé se objevil | 1959 |
OS | UMES, MTS, CTSS, ostatní |
Hlavní, důležitý implementace | |
IBM 704, IBM 7090, UNIVAC 1108, Philco 210-211, IBM S / 360, a IBM S / 370 | |
Dialekty | |
MAD, MAD / I, GOM | |
Ovlivněno | |
IAL, ALGOL 58 |
ŠÍLENÝ (Dekodér algoritmu Michigan Algorithm) je programovací jazyk a překladač pro IBM 704 a později IBM 709, IBM 7090, IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210-211 a nakonec IBM S / 370 sálové počítače. Vyvinuto v roce 1959 na Michiganská univerzita podle Bernard Galler, Bruce Arden a Robert M. Graham, MAD je varianta ALGOL Jazyk. To bylo široce používáno k výuce programování na vysokých školách a univerzitách v šedesátých letech a hrálo podružnou roli ve vývoji CTSS, Multics a Michigan Terminal System počítač operační systémy.[1]
Archivy v Historická knihovna Bentley University of Michigan obsahují referenční materiály o vývoji MAD a MAD / I, včetně tří lineárních stop výtisků s ručně psanými notacemi a originály tištěných příruček.[2][3][4][5]
MAD, MAD / I a GOM
Existují tři překladače MAD:
- Originál ŠÍLENÝ, překladač vyvinutý v roce 1959 na University of Michigan pro IBM 704 a později IBM 709 a IBM 7090 mainframe počítače se systémem Výkonný systém University of Michigan (UMES) a Kompatibilní systém sdílení času (CTSS) operační systémy.[6][7] V polovině 60. let byl MAD portován na University of Maryland do UNIVAC 1108.[8] Verze MAD byly k dispozici také pro Philco 210-211 a UNIVAC 1107.[8]
- MAD / I, "rozšířená" verze MAD pro IBM System / 360 řada počítačů běžících pod Michigan Terminal System (MTS). Práce na novém kompilátoru byly zahájeny v roce 1965 jako součást ARPA sponzorovaný projekt CONCOMP na University of Michigan. Jak práce postupovala, bylo postupně jasné, že MAD / I je nový jazyk nezávislý na původní verzi MAD 7090.[9]
- GOM (Good Óld MAD), reimplementace původního 7090 MAD pro Systém IBM / 370 řada sálových počítačů se systémem Michigan Terminal System (MTS). GOM vytvořil počátkem 80. let Don Boettner z výpočetního centra University of Michigan.[10][11]
Dějiny
Zatímco ŠÍLENÝ byl motivován ALGOL 58, nijak výrazně se nepodobá na ALGOL 58.[12][13]
Programy napsané v MAD zahrnovaly MAIL,[14] RUNOFF,[15] jeden z prvních systémů pro zpracování textu a několik dalších obslužných programů Kompatibilní systém sdílení času (CTSS).[16] Byla provedena práce na návrhu kompilátoru MAD pro Multics, ale nikdy nebyl implementován.[17]
Následuje zajímavý citát od Rozhovor s Brian Kernighan[18] když byl dotázán „Co vás závislo na programování?“:
- Myslím, že nejzábavnější programování, které jsem měl, byla letní práce v Project MAC na MIT v létě 1966, kde jsem pracoval na programu, který vytvořil pracovní pásku pro zbrusu nový GE 645 v prvních dnech Multics. Psal jsem v MAD, což bylo mnohem jednodušší a příjemnější než FORTRAN a COBOL, které jsem napsal dříve, a používal jsem CTSS, první systém sdílení času, který byl nekonečně jednodušší a příjemnější než děrné štítky.
MAD byl docela rychlý ve srovnání s některými jinými kompilátory své doby. Protože řada lidí měla zájem o používání FORTRAN jazyka a přesto chtěl získat rychlost překladače MAD, byl vyvinut systém zvaný MADTRAN (napsaný v MAD). MADTRAN byl prostě překladač z FORTRANu do MAD, který poté vytvořil strojový kód. MADTRAN byl distribuován prostřednictvím PODÍL.[12]
MAD / I má syntaktickou strukturu podobnou ALGOL 60 společně s důležitými funkcemi z původního MAD az PL / I..[9] MAD / I byl navržen jako rozšiřitelný jazyk. Bylo k dispozici pro použití pod MTS a poskytly mnoho nových nápadů, které se dostaly do jiných jazyků, ale kompilace MAD / I byly pomalé a MAD / I se ve srovnání s původním 7090 MAD nikdy nerozšířil.[11]
GOM je v podstatě jazyk 7090 MAD upravený a rozšířený pro architekturu 360/370 s rozumným přizpůsobením, aby lépe vyhovoval současným programovacím postupům a problémům.[11] The MTS Systém zpráv byl napsán v GOM.
MAD, MAD Magazine a Alfred E. Neuman

V pre-release verzi původního MAD, jako odkaz na jmenovce MAD, Časopis MAD, když program obsahoval příliš mnoho chyb kompilace, kompilátor vytiskne celostránkový obrázek Alfred E. Neuman použitím ASCII umění. Titulek zněl: „Podívejte se na tohoto muže o svém programu - možná by ho chtěl zveřejnit. Nikdy se nebojí - ale podle vzhledu vašeho programu byste měli.“[8] Tato funkce nebyla zahrnuta do finální oficiální verze.[19] Byl však zahrnut do produkční verze pro IBM 7040.
A Bernie Galler si pamatuje:
- V době, kdy jsme navrhli jazyk, o kterém jsme si mysleli, že bude stát za to a pro který bychom mohli udělat překladač, už jsme ho nemohli nazvat Algol; bylo to opravdu jiné. Tehdy jsme přijali název MAD pro dekodér algoritmu Michigan Algorithm. Když jsme žádali o povolení používat název MAD, proběhla nějaká vtipná interakce s lidmi Mad Magazine. Ve velmi vtipném dopise nám řekli, že nás vezmou k soudu a všem ostatním, ale hrozbu ukončili P.S. dole - „Jasně, pokračuj.“ Ten dopis je bohužel ztracen.[20]
Příklad „Hello, world“
„Ahoj světe "ukázkový program vytiskne řetězec" Hello, world "na terminál nebo na obrazovku.
TISK FORMÁTU HELLOWVECTOR HODNOTY HELLOW = $ 13h0 Ahoj, svět * $ KONEC PROGRAMU
První znak řádku je považován za logické řízení vozíku, v tomto příkladu znak „0“, který způsobí tisk dvojité řádky.
Alternativně lze použít kontrakce a kompilátor je v seznamu rozšíří:
P'T HELLOWV'S HELLOW = $ 13h0 Ahoj, svět * $ E'M
Jazykové prvky
MAD a GOM, ale ne MAD / I, se skládají z následujících prvků:[7][11][12]
Vstupní formát
Programy MAD jsou série výpisů napsaných na děrné štítky, obvykle jeden výpis na kartu, i když v výpisu lze pokračovat na více karet. Sloupce 1-10 obsahují volitelný štítek prohlášení, komentáře nebo poznámky jsou označeny písmenem „R“ ve sloupci 11 a sloupce 73-80 jsou nepoužívané a mohou obsahovat identifikátor sekvence. Mezery nejsou nikde jiné významné než v konstantách znaků. Pro vstup GOM je volná forma bez sekvenčního pole a řádky mohou mít až 255 znaků; řádky začínající hvězdičkou (*) jsou komentáře; a řádky začínající znaménkem plus (+) jsou pokračovací řádky.
Jména
Názvy proměnných, názvy funkcí a popisky příkazů mají stejný tvar, písmeno, za nímž následuje nula až pět písmen nebo číslic. Názvy funkcí končí tečkou. Lze indexovat všechna jména (název, za nímž jsou uvedeny závorky, přičemž více indexů je odděleno čárkami). Názvy GOM mohou mít až 24 znaků a mohou zahrnovat znak podtržítka (_).
Několik klíčových slov v jazyce je vyhrazených slov, protože většina z nich je delší než šest písmen nebo je obklopena tečkami. Existuje standardní sada zkratek, kterou lze použít k nahrazení delších slov. Skládají se z prvního a posledního písmena klíčových slov s apostrofem mezi nimi, například W'R pro KDYKOLI a D'N pro ROZMĚR.
Typy dat
MAD používá pro své datové typy pojem „režim“. Podporováno je pět základních režimů:
- Celé číslo zapsáno s měřítkem nebo bez něj (1, +1, -1, 1K10, 1K) nebo jako osmičkové konstanty (do 7777777777777K);
- Plovoucí bod psáno s exponentem nebo bez exponenta (0,, 1,5, -0,05, +100,4, -4., 0,05E-2, -,05E2, 5E02, 5E2);
- Booleovský (1B pro true a 0B pro false);
- Štítek prohlášení, a
- Název funkce napsáno jako jméno následované tečkou (SQRT.).
Režim konstanty lze předefinovat přidáním znaku M následovaného jedinou číslicí na konci konstanty, kde 0 označuje plovoucí desetinnou čárku, 1 celé číslo, 2 logické hodnoty, 3 název funkce a 4 popisek příkazu.
Pro GOM je přidáno dalších šest režimů: CHARACTER, SHORT INTEGER, BYTE INTEGER, LONG INTEGER, POINTER a DYNAMIC RECORD.
Abecední nebo znakové konstanty se ukládají jako celá čísla a zapisují se znakem dolaru jako oddělovač ($ ABCDEF $) s dvojitými znaky dolaru použitými k zadání skutečného znaku dolaru ($$$. 56 $ je 56 centů). Řetězce delší než šest znaků jsou reprezentovány pomocí polí.
Pole a matice
- Počet rozměrů není nijak omezen.
- Negativní a nulové i plovoucí desetinné čárky jsou povoleny.
- Matice se ukládají do po sobě jdoucích paměťových míst v pořadí určeném nejprve změnou dolního indexu úplně vpravo.
- Na matice lze odkazovat pomocí dolního indexu pro každou dimenzi NAME (s1, s2, s3), nebo pomocí jediného dolního indexu, JMÉNO1).
- Seznamy vstupů a výstupů, příkazy VECTOR VALUES a některé podprogramy umožňují použití blokové notace, která má tvar A, ..., B nebo A ... B, což je odkaz na celou oblast od A do B. včetně. Pokud jde o vektor, A (1) ... A (N) bude A (1), A (2), A (3), ..., A (N).
- Existují zařízení, která umožňují měnit dimenze za běhu; umožnění programátorovi měnit umístění počátečního prvku v poli v rámci celkového bloku, který byl pro pole vyčleněn; a umožnění specifikování libovolného mapování úložiště.
Operátoři
Aritmetické operátory
Operátoři ukazatele (pouze GOM)
| Relační operátoři
Booleovské operátory
Bitoví operátoři (pouze GOM)
|
Prohlášení
Proměnné mohou být implicitně nebo explicitně deklarovány. Ve výchozím nastavení se předpokládá, že všechny implicitně deklarované proměnné jsou plovoucí desetinnou čárkou. Ke změně tohoto výchozího nastavení lze použít příkaz NORMAL MODE IS.
|
|
Spustitelné příkazy
|
|
Vstupní a výstupní příkazy
|
|
Funkce
Názvy funkcí končí tečkou. Interní a externí funkce jsou podporovány. Interní funkce se kompilují jako součást programu, ve kterém se používají, a sdílejí deklarace a proměnné s hlavním programem. Externí funkce jsou kompilovány samostatně a nesdílejí deklarace a proměnné. Je povolena definice jednoho příkazu interních funkcí. Rekurzivní funkce jsou povoleny, i když funkce musí provádět některé z požadovaných úsporných a obnovovacích prací sama.
|
|
Definice a předefinování operátora
Jednou z nejzajímavějších funkcí v MAD je schopnost rozšířit jazyk předefinováním stávajících operátorů, definováním nových operátorů nebo definováním nových datových typů (režimů). Definice jsou vytvářeny pomocí deklaračních příkazů MAD a mnemotechniky jazyka sestavení, které jsou součástí deklarace až po pseudonávod END, který operaci implementuje.
- DEFINUJTE BINÁRNÍ OPERÁTOR definované opPŘESNOST hodnost existující-op STRUKTURA REŽIMU možnosti režimu
- DEFINUJTE Unárního operátora definované opPŘESNOST hodnost existující-op STRUKTURA REŽIMU možnosti režimu
- STRUKTURA REŽIMU režim č = režim č existující-op režim č
- STRUKTURA REŽIMU režim č = režim č existující-op režim č ROVNÁ SEKVENCE JAKO režim č existující-op režim č
kde:
- hodnost je jedním ze STEJNÝCH, NIŽŠÍCH NEBO VYŠŠÍCH NEŽ; a
- možnosti režimu jsou možnosti, které se objeví ve výpisu MODE STRUKTURA.
Tři předdefinované balíčky definic (MATRIX, DOUBLE PRECISION a COMPLEX) jsou k dispozici pro zahrnutí do zdrojových programů MAD pomocí příkazu INCLUDE.
- ZAHRNOUT balík
Viz také
Poznámky
- ^ Alt, Franz (1967). Pokroky v počítačích. Akademický tisk. str. 143. ISBN 0-12-012104-2.
- ^ Technické poznámky Publikace University of Michigan Computing Center, 1965-1999
- ^ Technické zprávy Publikace University of Michigan Computing Center, 1965-1999
- ^ Aktuální složka 1960-1986, Záznamy výpočetního střediska University of Michigan, 1952-1996
- ^ MAD (Michigan Algorithm Decoder) 1960-1979, University of Michigan Computing Center records, 1952-1996
- ^ Uživatelská referenční příručka pro Michigan Algorithm Decoder (MAD) pro IBM 7090, Digital Computer Laboratory, Graduate College, University of Illinois, 1962, 221 stran
- ^ A b Dekodér algoritmu Michigan Algorithm (příručka MAD), Bruce W. Arden, revidované vydání z roku 1966
- ^ A b C George Gray (červen 2002). „UNIVAC a ALGOL“. Zpravodaj historie Unisys. 6 (2). Archivovány od originál 29. června 2017.
- ^ A b Manuál MAD / I, Bolas, Springer a Srodawa, technická zpráva CONCOMP 32, 1970, University of Michigan, Ann Arbor, 194 stran
- ^ MTS Volume 2: Public File Descriptions, Výpočetní středisko University of Michigan, 1990, s. 14
- ^ A b C d Manuál GOM, Don Boettner, Výpočetní středisko University of Michigan, Ann Arbor, červen 1989
- ^ A b C Počítačové jazyky - zásady a historie Archivováno 07.06.2011 na Wayback Machine, Sammet, Jean E., Englewood Cliffs, N.J., Prentice-Hall 1969, s. 205
- ^ V srpnu 2010, když byl dotázán na prohlášení Jean's Sammet, že „MAD se nijak významně nepodobá na ALGOL 58“, Bruce Arden napsal: „Pokud jde o Jean Sammet, mohla sjednotit obě verze IAL (58 a 60 ). Na rozdíl od pozdější verze verze 58 neřekla nic o tom, jaká slova (nebo jazyk) by měla být použita k identifikaci podmíněných a přenosových příkazů, což vedlo z důvodů analýzy ke slovům jako KDYKOLI. Také v MAD byly některé další funkce, které přesahovaly 58 specifikací. “
- ^ Dokumentace a zdroj pro ranou elektronickou poštu a zasílání zpráv Tom Van Vleck
- ^ „... Doug McIlroy a Bob Morris napsali odtok Multics v BCPL na základě MAD verze RUNOFF pro CTSS od Jerryho Saltzera.“, „Funkce softwaru Multics: Sekce 1.7.7“ Web společnosti Multicans. Citováno 10. listopadu 2018.
- ^ Kompatibilní systém sdílení času (1961-1973): Pamětní přehled k padesátému výročí, David Walden a Tom Van Vleck (Eds), 2011, IEEE Computer Society. Citováno 10. listopadu 2018.
- ^ "Glosář multimediálních zkratek a termínů", Tom Van Vleck, web Multicans.
- ^ Rozhovor s Brianem Kernighanem: Chov malých jazyků Allen Noren, 2009
- ^ Shneiderman, Ben; Plaisant, Catherine (07.05.2004). Návrh uživatelského rozhraní (4. vydání). Addison Wesley. ISBN 978-0-321-19786-3.
- ^ Bernard A. Galler; Enid H. Galler (leden 2001). „Kariérní rozhovor s Berniem Gallerem“. IEEE Annals of the History of Computing. 23 (1): 22–33. doi:10.1109/85.910847. ISSN 1058-6180.
Reference
- Zkrácený popis jazyka kompilátoru MAD, Fernando J. Corbató, Jerome H. Saltzer, Neil Barta a Thomas N. Hastings, M.I.T. Memorandum výpočetního střediska CC-213, červen 1963.
- CLSYS, program usnadňující použití překladače MAD pro velké dávky (velikost třídy), Jerome H. Saltzer, M.I.T. Memorandum výpočetního centra CC-204. Února 1963.
- Počítačový základ pro šílený jazyk, Elliott Irving Organick, 1961.
- Interní organizace překladače MAD, Arden, B. W., Galler, B. A. a Graham, R. M., s. 28–31, CACM, svazek 4, č. 1 (leden 1961)
- Úvod do algoritmických metod využívajících jazyk MADAlan B. Marcovitz a Earl J. Schweppe, Macmillan, 1966.
- Úvod do digitálních počítačů a jazyka MAD, Brice Carnahan, University of Michigan.
- Jazyk počítačů Bernard A. Galler, University of Michigan, McGraw-Hill, 1962.
- MAD v Michiganu: jeho funkce a vlastnosti Arden, B. W., Galler, B. A. a Graham, R. M., str. 27–28, Datamation, svazek 7, č. 12 (prosinec 1961)
externí odkazy
- Retrocompiler Erica Raymonda pro MAD
- Triviální příklad programu MAD
- Podpora Dave Pitts IBM 7094 - Má prostředí CTSS, které zahrnuje MIT verzi MAD.