SNAP (programovací jazyk) - SNAP (programming language)
Paradigma | Rozkazovací způsob |
---|---|
Navrhl | Michael Barnett, William Ruhsam |
Poprvé se objevil | 1970 |
SNAP, zkratka pro Stylizované, přirozené, procedurální, je vzdělávací programovací jazyk navrhl Michael Barnett při práci v RCA v roce 1968 a později použit v Columbia University učit programování na internetu humanitní vědy. Je to imperativní programovací jazyk, stejně jako mnoho jazyků šedesátých let, ale byl záměrně podrobný a pokoušel se vypadat spíše jako konverzační angličtina v módě Hyper-textový a novější jazyky. Na rozdíl od jiných vzdělávacích jazyků té doby nebyl SNAP zamýšlen jako interaktivní a byl navržen tak, aby byl programován prostřednictvím děrné štítky. Pro uložení karet bylo možné na každou kartu napsat více výroků oddělených tečkami, takže výsledný kód často vypadal jako jeden odstavec.
Dějiny
V roce 1964 Michael Barnett připojil se RCA nově vytvořená divize grafických systémů, která byla vytvořena za účelem komercializacesazba technologie, ze které získali licenci Rudolf Hell. RCA, původně známá jako Digiset, prodávala systémy pod názvem Videocomp. Za dobu své historie bylo prodáno asi 50 systémů Videocomp.[1]
V letech 1964 a 1965 vyvinul Barnett a jazyk popisu stránky známý jako PAGE-1 pro psaní programů, které vedly k výstupu Videocomp, podobně jako pozdější PostScript jazyk vytváří stránky na laserové tiskárny.[2] Jednou z prvních aplikací tohoto systému bylo publikování Index společenských věd podle Společnost H. W. Wilsona.[3]
To vedlo k zájmu Barnetta o společenské vědy a jeho rostoucí interakce s H. W. Wilsonem a Columbia University humanitní oddělení. Barnett nastoupil na pozici H. W. Wilsona v roce 1969. Začal také učit kurzy automatizace knihoven na Columbia School of Library Service a v roce 1970 počítačové programování v humanitních oborech.[4] Na fakultu Columbia nastoupil na plný úvazek v roce 1975.
První verzi SNAP napsal William Ruhsam z RCA v FORTRAN IV[5] pro RCA Spectra 70, ačkoli verze pro IBM 360 v OS-360 byl také vyroben.[A] někdy v roce 1967 nebo 1968.[6][b] Tento jazyk vytvořil značné množství komentářů, zejména na začátku 70. let,[7] ale zdá se, že měl malý přímý vliv na pozdější jazyky.
Popis
Obecné pojmy
SNAP umožnil umístit více příkazů na jeden řádek a použil období jako oddělovač příkazů. Tak vznikl kód, který vypadal jako anglické věty, a byl obecně uspořádán do bloků, které vypadaly jako odstavce.[8]
SNAP nepoužíval čísla řádků pro úpravy a místo toho použil popisky v kódu pro cíle větví, jako tomu bylo v případě FORTRAN. V SNAPu lze štítek umístit kdekoli v kódu obklopením textového názvu v závorkách (PRVNÍ ŠTÍTEK)
. Štítky nebyly samostatnými výroky a nevyžadovaly období po nich.[9]
Názvy proměnných mohou obsahovat mezery, což je pro programovací jazyky i dnes poměrně vzácné. Proměnné mohly obsahovat řetězce nebo čísla, ale k přiřazení každé z nich byla použita jiná syntaxe. U čísel byla použita jednoduchá syntaxe, NASTAVTE NA 1.
SOUBOR
byl také použit k provádění matematických operací, jako NASTAVTE I NA PRODUKT 10 A J.
Pro běžnější operace zvyšování a snižování byla nabídnuta jednodušší syntaxe, ZVÝŠTE M O 1.
nebo SNÍŽENÍ M O 2.
[9]
U řetězců se obvykle používala delší syntaxe, VOLEJTE „TO JE STRUNA“ NOVINÁŘ.
Podřetězce byly přístupné pomocí syntaxe podobné HyperTalk odkazem na pořadovou pozici, například ZAVOLEJTE J-TÝ CHARAKTER NOVINY NEWCHARU.
nebo VOLEJTE M-ČT N-TÝMI CHARAKTERY VSTUPU VÝSTUPU.
[9]
SNAP také nabídl kolekce podobné maticím známé jako „seznamy“. Interně byly uloženy jako řetězce oddělené čárkami. Většinu příkazů souvisejících s řetězci lze použít k práci s nimi přidáním SEZNAM.
do konce. Například by bylo možné číst řadu karet pomocí PŘEČTĚTE SI SEZNAM KARTY.
, který by načetl každou kartu jako samostatný řetězec do proměnné CARD. K položkám v seznamu bylo například přistupováno pomocí stejné pořadové syntaxe VYTISKNĚTE SI PÁTOU KARTU
nebo KOPÍROVAT „NOVOU STRUNU“ A ZAVOLAT TO 7. ČÍSLO.
Seznamy čísel lze vytvořit pomocí NASTAVTE ČÍSLO SEZNAMU NA 1,2,3,4,5.
[10]
Řetězcové proměnné lze také použít jako seznamy nebo pole. Toho bylo dosaženo pomocí stejné syntaxe pořadové pozice, ale s odkazem na název proměnné a nikoli na CHARAKTER
. Například, VOLEJTE „AHOJ“ 1. část. VOLEJTE „SVĚT“ 2. ČÁSTI.
vytvoří pole s názvem PART se dvěma řetězci.[9]
Důležitým bodem systému SNAP je, že VOLÁNÍ
prohlášení není statické; nedefinuje KEY jako znak v místě J, když se v kódu setká, ale když jakýkoli následující kód přistupuje ke KEY. Například, NASTAVTE J NA 1. TISK. ZVÝŠTE J O 1. TISKOVÝ KLÍČ.
by mělo za následek vytištění dvou různých řetězců. Tímto způsobem VOLÁNÍ
má více společného s ZÁKLADNÍ programovací jazyk je DEF FN
uživatelem definované funkce než to dělá s SOUBOR
prohlášení, které je statické.[11]
Statickou kopii řetězce lze vytvořit pomocí KOPÍROVAT OLDSTRING A VOLAT TO NEWSTRING.
Zahrnuty další funkce řetězce PŘIPOJIT jeden řetězec NA jiný řetězec.
, PŘEPSAT řetězcový výraz V M-TÉ [A NÁSLEDUJÍCÍ] CHARAKTERU Z název-řetězce.
, VYMAZEJTE M-TH [PROSTŘEDKEM N-TH] CHARAKTERU Z název-řetězce.
a VLOŽIT řetězcový výraz (PŘED | PO) M-TÝ CHARAKTER Z název-řetězce.
[12]
Bezpodmínečné větve byli voláni pomocí POKRAČOVAT
, například, POKRAČOVAT S PRVNÍM ŠTÍTKEM.
Existovala také alternativní forma OPAKUJTE PRVNÍ ŠTÍTEK.
. Nebyl mezi nimi žádný rozdíl, i když kontext okolního kódu obecně znamenal, že jedna nebo druhá forma byla čitelnější. Dalo by se také odkazovat na začátek programu pomocí POKRAČOVAT V ZAČÁTKU.
Výraz „takto“ lze použít k odkazu na další prohlášení, POKRAČOVAT TAKTO.
, které by mohly být použity k objasnění větví.[13]
Podmíněné větve používaly Jestliže pak jinak) struktura:
POKUD J JE MÉNĚ NEŽ 80 ZVÝŠENÍ J O 1, A OPAKUJTE OD PRVNÍHO ŠTÍTKU, JINAK POKRAČUJTE TAKTO.
Stejně jako ve většině jazyků V OPAČNÉM PŘÍPADĚ
část byla volitelná. Všimněte si použití A
vytvořit složený příkaz v dané sekci, který nabízí blokovou strukturu. Pro porovnání řetězců se používá jeden JE
nebo volitelný JE STEJNÉ JAKO
.[12]
SNAP zahrnoval řadu dalších klíčových slov, která neměla žádné vlastní chování, která byla přidána jednoduše pro syntaktický cukr. Mezi nimi byli THE
, A
, Z
které programátor mohl přidat na mnoha místech, aby byla syntaxe čitelnější. Zahrnuto typické použití PŘEČTĚTE SI ZÁZNAM
a OPAKUJTE OD ZAČÁTKU SLUČKY
.[13]
Prohlášení
Z Přirozený jazyk.[6] Proměnné a výrazy jsou v kurzíva. Volitelné formuláře jsou odděleny svislými pruhy, |. Šle obklopují volitelné položky, zatímco hranaté závorky obklopují požadované položky, které mají více než jeden tvar. hodnota odkazuje na číselnou konstantu nebo proměnnou, tětiva na řetězcovou konstantu nebo proměnnou řetězce oddělenou uvozovkami.
Řízení toku:
(řetězcová konstanta)
- definuje označení programu
[S | OD] <označení| ZAČÁTEK [ŘÍZENÍ] | DALŠÍ VĚTA | NÁSLEDUJÍCÍ> - skočit na pojmenovaný štítek, začátek programu nebo pokračovat na další příkaz
LI hodnota | řetězec
[STEJNÉ JAKO] hodnota | řetězec výraz[,A výraz...] [, V OPAČNÉM PŘÍPADĚ výraz[,A výraz...]] - konstrukce if-then-else s libovolným počtem výrazů v sekcích then a else
- - porovnání řetězců umožňovalo testy podřetězců jako
JE hodnota[-TH] A [NÁSLEDUJÍCÍ | PŘEDCHOZÍ] CHARAKTERY tětiva
- - zahrnuto číselné srovnání
ROVNÁ
,MÉNĚ NEŽ
,VĚTŠÍ NEŽ
,ROVNAKÉ
,VĚTŠÍ NEŽ ROVNÉ
,MÉNĚ NEŽ ROVNÉ
- - konec souboru lze otestovat pomocí
POKUD JE VSTUP VYČERPÁN
.
- - porovnání řetězců umožňovalo testy podřetězců jako
- konstrukce if-then-else s libovolným počtem výrazů v sekcích then a else
VYPOVĚDĚT
- zastaví program
VYKONAT
- spustí program. Mělo být rozšířeno, aby umožnilo spuštění spuštění na daném štítku, ale nebylo implementováno ve verzích popsaných v odkazech
Matematika:
SOUBOR číselná proměnná NA hodnota
- přiřadí hodnotu číselné proměnnéSOUBOR číselná proměnná NA [SOUHRN | ROZDÍL | VÝROBEK | KAŽDÝ | ZEMĚDĚLEK | STROP | VĚTŠÍ | MÉNĚ] hodnota A hodnota
- provádět matematické funkce dvěma operandy
ZVÝŠIT proměnná PODLE hodnota
- zjednodušená notace pro přidáníPOKLES proměnná PODLE hodnota
- ... a odčítání
Manipulace s řetězci:
VOLÁNÍ tětiva [THE] proměnná řetězce
- vytvořit funkci řetězce[FORMULÁŘ A] KOPÍROVAT [OF] tětiva A ZAVOLEJTE TO [THE] proměnná řetězce
- zkopíruje řetězec z jedné proměnné do druhéPŘIPOJIT tětiva NA proměnná řetězce
- připojí řetězcovou proměnnou k jinému řetězciODKAZ tětiva NA tětiva
- připojí první řetězec k druhému, ale nekopíruje jej, budoucí změny druhého řetězce budou sledovány jako vVOLÁNÍ
ODSTRANIT hodnota[-TH] [PROSÍM hodnota [-TH]] CHARAKTER Z proměnná řetězce
- oříznutí řetězce od vybraného znaku nebo daného rozsahuPŘEPSAT tětiva NA hodnota[-TH] [A NÁSLEDUJÍCÍ | PŘEDCHOZÍ] CHARAKTERY Z proměnná řetězce
- nahradí jeden znak řetězce jiným, nebo tento znak a ty, které běží dopředu nebo dozadu z vybrané polohy.
Související se vstupem / výstupem:
VYBRAT číslo [PRO
] - slouží k výběru zařízení pro jiné vstup výstup operace
PŘEČTĚTE [A | THE] proměnná řetězce
- čte singl děrný štítek
ŽÁDOST [A | THE] proměnná řetězce
- požádá o vstup uživatele z konzoly
FETCH [A | THE] proměnná řetězce
- přečte jeden záznam z posledních
VYBRAT
ed zařízení
- přečte jeden záznam z posledních
TISK [A | THE] proměnná
- posílá výstup do řádková tiskárna
TYP [A | THE] proměnná
- odešle výstup na konzolu
PUNCH [A | THE] proměnná
- odešle výstup do děrovače karty
PERFORÁT [A | THE] proměnná
- posílá výstup do papírová páska
NAPÍŠTE [A | THE] proměnná
- posílá data na poslední
VYBRAT
ed zařízení
- posílá data na poslední
Ostatní:
ŘÍZENÍ rozličný
- dočasný příkaz používaný k ovládání jazyka při přidávání nových funkcí
REZERVUJTE PROSTOR PRO číslo
proměnná| PRVKY V [THE] proměnná SEZNAM - podobně jako
ZTLUMIT
příkaz v BASICu, vyčlení určité množství paměti pro uložení řetězce nebo daného počtu řetězců ze seznamu. PoužitímREZERVOVAT
vyhnout se operacím s pamětí, protože byl vytvořen řetězec nebo seznam a vylepšen výkon
- podobně jako
Příklad
Zde je největší příklad praktického programu uvedeného v SNAP,[14] který čte řetězce z karet a poté vytiskne jednotlivá slova v nich nalezená:
PŘEČTĚTE SI ZÁZNAM. NASTAVTE I NA 1. NASTAVTE J NA 1. VOLEJTE J-TÝ CHARAKTER NAHRÁVACÍ KLÁVESY. (KROK ZAČNĚTE) POKUD JE KLÍČ "" POKRAČOVAT V ZÁLOHĚ. POKUD KLÍČ JE "" POKRAČOVÁNÍ V ZÁLOHĚ. KDYŽ KLÍČ JE „.“ POKRAČOVAT V ZÁLOHĚ. POKUD J JEDNODUCHÉ NEŽ 80 ZVÝŠTE J O 1, A OPAKUJTE SE OD ZAČÁTKU KOUČKY, JINAK POKRAČUJTE V VÝSTUPNÍ AKCI. (ZÁLOHOVÁNÍ) SNÍŽENÍ J O 1. (VÝSTUPNÍ AKCE) TISKNĚTE J-TY ZPŮSOBY J-TÝCH ZÁZNAMŮ ZÁZNAMU. POKUD J JE MÉNĚ NEŽ 79 ZVÝŠTE J O 2, NASTAVTE NA J, A OPAKUJTE OD ZAČÁTKU KROKU, JINAK OPAKUJTE OD ZAČÁTKU.
Kvůli jasnosti následující verze jednoduše odděluje příkazy na samostatné řádky a přidává příslušné mezery:
PŘEČTĚTE SI ZÁZNAM. NASTAVTE I NA 1. NASTAVTE J NA 1. VOLEJTE J-TÝ CHARAKTER ZÁZNAMU TLAČÍTKA. POKUD KLÍČ JE "" POKRAČOVÁNÍ V ZÁLOHĚ. KDYŽ KLÍČ JE „.“ POKRAČOVAT V ZÁLOHĚ. POKUD J JE MÉNĚ NEŽ 80 ZVÝŠENÍ J O 1, A OPAKUJTE SE OD ZAČÁTKU KROKU, JINAK POKRAČUJTE VE VÝSTUPNÍ AKCI. (ZÁLOHOVÁNÍ) SNÍŽENÍ J O 1. (VÝSTUPNÍ AKCE) TISKTE I-TÉ PROSTŘEDNICÍ J-TÝMI ZÁZNAMY ZÁZNAMU . POKUD J JE MÉNĚ NEŽ 79 ZVÝŠENÍ J O 2, NASTAVTE I NA J, A OPAKUJTE OD ZAČÁTKU KROKU, JINAK OPAKUJTE OD ZAČÁTKU.
Program ČÍST
s jedinou kartu a přiřadí data řetězce nalezená na ní proměnné s názvem RECORD. Poté nastaví dva ukazatele, I a J. Funkce zvaná KEY je VOLÁNÍ
ed, který vrací J-tý znak RECORD.
Poté prozkoumá J-tý znak, aby zjistil, zda se jedná o znak lámající slovo, nebo mimo konec řetězce. Pokud je některá z těchto skutečností pravdivá, přeskočí na BACKUP, který zálohuje jeden znak (přeskočí právě prozkoumanou interpunkci) a poté vytiskne řetězec z počáteční polohy v I do aktuální polohy v J. Neviděli jsme zalomení slova, zkuste další znak, pokud nějaké ještě zbývají, jinak zobrazte to, co jsme již našli.
Pokud jsme se nedostali na konec karty, posuňte J vpřed o dva znaky, abyste přeskočili interpunkci, které jsme se dříve vyhnuli, která přesune ukazatel na začátek dalšího (potenciálního) slova. Poté nastavte I na J, abych od tohoto bodu umístil počáteční pozici dalšího slova a vrátil se do LOOP START. Pokud jsme na konci karty, spusťte celý program znovu a přečtěte si další kartu.
Poznámky
Reference
Citace
- ^ Belzer, Jack; Holzman, Albert; Kent, Allen, eds. (Prosinec 1976). „Počítačem podporovaná kompozice“. Encyclopedia of computer science and technology. CRC Press. str. 350. ISBN 9780824722555.
- ^ Pierson, John (1972). Počítačová kompozice pomocí PAGE-1. Wiley Interscience. str. vi. ISBN 9780471689553.
- ^ „Nekrolog Michaela Barnetta (1929-2012)“. Fyzika dnes. 29. března 2012. doi:10.1063 / PT.4.1776.
- ^ Barnett, Michael (1971). "Počítačový hardware a software pro knihovníky". In Fasana, P.J .; Veaner, A. (eds.). Společný vývoj knihovních systémů. MIT Stiskněte.
- ^ Barnett & Ruhsam 1968, str. 47.
- ^ A b C Barnett & Ruhsam 1968, str. 48.
- ^ Raskin, Jeffrey (Leden 1971). "Programovací jazyky pro humanitní vědy". Počítače a humanitní vědy. 5 (3): 155–158. doi:10.1007 / BF02402180. S2CID 61028443.
- ^ Barnett 1970, str. 225.
- ^ A b C d Barnett 1970, str. 228.
- ^ Barnett & Ruhsam 1968, str. 49.
- ^ Barnett 1970, str. 231.
- ^ A b Barnett 1970, str. 232.
- ^ A b Barnett 1970, str. 230.
- ^ Barnett 1970, str. 229.
Bibliografie
- Barnett, Michael; Ruhsam, William (květen 1969). Harrison Fuller (ed.). SNAP: experiment v programování přirozeného jazyka. AFIPS '69, Jarní společná konference. Boston. 75–87. doi:10.1145/1476793.1476815.CS1 maint: ref = harv (odkaz)
- Barnett, Michael; Ruhsam, William (srpen 1968). "Programovací systém přirozeného jazyka pro zpracování textu". Transakce IEEE na inženýrském psaní a řeči. 11 (2): 45–52. doi:10.1109 / TEWS.1968.4322334. JSTOR 30199362. S2CID 51670564.CS1 maint: ref = harv (odkaz)
- Barnett, Michael (březen 1970). „SNAP: Programovací jazyk pro humanisty“. Počítače a humanitní vědy. 4 (4): 225–240. doi:10.1109 / TEWS.1968.4322334. JSTOR 30199362. S2CID 51670564.CS1 maint: ref = harv (odkaz)
Další čtení
- Barnett, Michael (1969). Počítačové programování v angličtině. Harcourt, Brace & World. OL 5754250M.