ikona | |
---|---|
Sémantika | multiparadigma : imperativ , logický |
Jazyková třída | programovací jazyk |
Typ provedení | tlumočník |
Objevil se v | 1974 |
Autor | Ralph E. Griswold |
Uvolnění | |
Typový systém | dynamický |
Hlavní implementace | Ikona, Jcon, Unicon |
Byl ovlivněn | Snobol , Algol |
ovlivnil | Krajta |
webová stránka | cs.arizona.edu/icon |
ikona | |
---|---|
| |
Typ | Překladatel |
Vývojář | Ralph E. Griswold , Gregg Townsend |
Operační systém | Unix ( testujeme sestavení Linuxu a BSD ), MacOS a Microsoft Windows s Cygwin |
První vydání | 1977 |
Nejnovější verze | 9.5.1 ( 6. června 2013 ) |
Licence | GNU GPL |
webová stránka | cs.arizona.edu/icon/ |
Unicon | |
---|---|
| |
Typ | Překladatel |
Vývojář | Clint Jeffery |
Operační systém | Linux a Microsoft Windows |
První vydání | 1977 |
Nejnovější verze | 12.1.0 [3] ( 27. srpna 2012 ) |
Licence | GNU GPL |
webová stránka | unicon.sf.net |
Icon je programovací jazyk, který zdědil ideologii dřívějšího jazyka od stejného autora, Snobola . Název jazyka nemá nic společného s „ikonami“, ale je zkratkou pro slovo angličtina. ikonoklastický (ikonoklastický), používaný ve smyslu boje proti konformismu při vývoji programovacích jazyků.
Je to programovací jazyk na super vysoké úrovni , který integruje porovnávání vzorů a zpětné sledování , čímž se přibližuje logickým programovacím jazykům .
Jazyk je dynamicky typován a má vestavěné výkonné datové typy. Procedury v Icon jsou hodnoty první třídy , což znamená, že proměnným lze přiřadit hodnoty samotných procedur, nikoli výsledky jejich provádění . Existuje mechanismus společného vyjádření , který vám umožňuje vytvářet korutiny .
Syntaxe Icon je zděděna z rodiny programovacích jazyků Algol a podobá se syntaxi C nebo Pascalu . Icon je spíše Pascal, k přiřazení používá znak :=, klíčové slovo procedureatd. Icon naproti tomu používá složené závorky ve stylu C k seskupování příkazů jazyka a program začíná procedurou nazvanou „main“.
Procedury jsou základním stavebním kamenem programů Icon, nicméně na rozdíl od procedur Pascal mohou (stejně jako funkce C a Pascal) vracet hodnoty; functionv ikoně není žádné klíčové slovo .
procedure doSomething(aString) write(aString) end
Jakákoli věta (operátor) jazyka Icon je vlastně výraz a může vracet hodnoty. Výrazy v Icon, kromě jejich skutečných návratových hodnot, které mohou být libovolné číslo, vytvářejí jeden ze dvou stavů - úspěch Ing. úspěch nebo neúspěch angl. selhání . Úspěch nebo neúspěch výrazů se používá namísto booleovských hodnot řídicími strukturami ikon. Díky tomu můžeme psát konstrukce jako:
if a := read() then write(a)
Kromě toho, protože stav „selhání“ má tendenci se objevovat z volání vnořených funkcí v důsledku vnější funkce, lze použít i kratší idiomy, jako například:
while write(read())
pro čtení vstupního toku a jeho duplikování do výstupního toku (echo).
Porovnávací operace jako >a <mohou uspět a přinést výsledek rovný hodnotě jejich druhého argumentu, nebo selžou a nepřinesou žádný výsledek. Díky tomu if a < b < c thenlze v Icon zapsat výrazy jako ….
Koncept spojený s úspěchem a neúspěchem se v Icon nazývá účelné provedení . cílená realizace . Je to způsob, kterým může výpočet pokračovat, dokud není dosaženo určitého cíle. Ve výše uvedeném příkladu echa je cílem přečíst celý obsah vstupního souboru, dokud nenarazíte na konec souboru. Cíl je nastaven přímo, nikoli pomocí dalších kontrol návratových kódů nebo něčeho podobného. Účelný výpočet je realizován pomocí backtrackingu , což je velmi výkonný mechanismus.
Zásadní novinkou jazyka jsou generátory, které zobecňují mechanismus iterátorů [4] . Právě z ikony se myšlenka generátorů dostala do jazyků jako Python [5] .
Thomas W. Christopher, autor příručky Icon Programming Language Handbook, píše: "Největší rozdíl mezi Icon a jinými programovacími jazyky je v tom, že výrazy v Icon jsou generátory."
Příklad použití generátoru:
procedura main() L:=["1","22","333"] # Seznam řetězců každý píše(" ",! L) konec ---- Výstup: 1 22 333Jazyky Icon a Snoball sloužily jako jakési testovací pole pro některé programátorské idiomy , zejména pro konstrukce obsahující &&nebo ||a první jazyk používající regulární výrazy (byť ve formě odlišné od té současné). Následně byly tyto mechanismy použity v prostředí Unix , v jazycích C , AWK a Perl .
Zde je příklad takového idiomu:
[ $ringing != 0 ]&&echo Telefon zvoní!!!Další příklad, mějme konstrukci shellu :
xview -root ` gtk-shell -t "Který obrázek?" -fs` _I když nezvolíte název souboru obrázku, xview bude stále fungovat. A v jazyce ikon by se to nikdy nestalo.
Analogy regulárních výrazů jsou součástí jazyka samotného, což umožňuje použití systémů zpracování textu neomezené složitosti.
Flexibilita jazyka umožňuje zaznamenat velmi velké množství akcí, aniž by se snížila čitelnost textu.
Autorská implementace Icon napsaná na University of Arizona (tzv. Arizona icon ) je distribuována pod licencí GNU GPL .
Icon 9.3 (poslední verze s nativní podporou Windows ) byla implementována jako kompilátor bajtkódu, generující spustitelný soubor obsahující interpret pro tento bajtový kód. Od verze 9.4 je Arizona Icon implementována jako klasický unixový skriptovací jazyk .
Po smrti autora jazyka byl vývoj klasické ikony Arizona na dlouhou dobu zmrazen, předposlední verze Icon v.9.4.3 vyšla 14. listopadu 2005 , ale nyní byla její podpora obnovena jeho student Greg Townsend. 12. dubna 2010 byla vydána nová verze překladače.
Aktivně se rozvíjející větví Icon je jazyk Unicon , jehož překladač je založen na jeho kódu a je také distribuován pod licencí GNU GPL . Jedná se o objektově orientovaný dialekt jazyka s vylepšenou integrací s prostředím OS , včetně například podpory interakce s databází . Podobně jako icon v.9.3 je Unicon kompilátor zaměřený na generování spustitelných souborů.
Dialekt ObjectIcon se nadále vyvíjí, založený na dřívějších verzích Uniconu a je rozvětvením posledně jmenovaného. ObjectIcon, jak název napovídá, je rozšířená objektově orientovaná verze Icon, konkrétně na rozdíl od Unicon má ObjectIcon modifikátory přístupových polí metod. V ObjectIcon se značně změnila skladba knihoven (většina IPL byla silně přepracována - některé moduly byly odstraněny, grafické knihovny byly zcela změněny.), byla přidána podpora Unicode, přidána podpora jmenného prostoru, vícenásobná dědičnost a byla přidána automatická inicializace konstant a proměnných - a nyní je to moderní a výkonný jazyk OOP. Vyvinutý Robertem Parlettem a distribuován pod licencí MIT . K dispozici ke stažení na SourceForge a běží na Linux/Unix.
Laurence Tratt, jeden z vývojářů Icon 9.5 a ObjectIcon, je také autorem podobně koncipovaného jazyka Converge [6] .
V roce 2015 Greg Townsend představil jazyk Goaldi (od Goal Direction ). Jedná se o objektově orientovaný jazyk implementovaný v Go , který zdědí mnoho funkcí Icon. Implementuje uzávěry , paralelní programování , podporu jmenného prostoru a zpracování Unicode . Zároveň postrádá takové ikonické funkce, jako je skenování řetězců jako základní jazyková operace (místo toho používá srovnání na úrovni funkcí s regulárními výrazy ) a související datové typy, jako jsou znakové sady, neexistuje žádná libovolně přesná aritmetika a chyby jsou nejsou převedeny na selhání řešená backtrackingem, ale jsou řešeny mechanismem výjimek [7] .
Programovací jazyky | |
---|---|
|