Ikon (programozási nyelv)

ikon
Szemantika több paradigma : imperatív , logikus
Nyelvóra programozási nyelv
A végrehajtás típusa tolmács
Megjelent 1974
Szerző Ralph E. Griswold
Kiadás
Típusrendszer dinamikus
Főbb megvalósítások Ikon, Jcon, Unicon
Befolyásolva Snobol , Algol
befolyásolta Piton
Weboldal cs.arizona.edu/icon
ikon

WinIcon v.9.3.2 képernyőkép a VQUEENS.ICN-ről, az IPL része.
Típusú Fordító
Fejlesztő Ralph E. Griswold , Gregg Townsend
Operációs rendszer Unix ( Linux és BSD buildek tesztelése folyamatban ) , MacOS és Microsoft Windows Cygwinnel
Első kiadás 1977
legújabb verzió 9.5.1 ( 2013 . június 6. )
Engedély GNU GPL
Weboldal cs.arizona.edu/icon/
Unicon

Képernyőkép UniconIDE v.12.0.2
Típusú Fordító
Fejlesztő Clint Jeffery
Operációs rendszer Linux és Microsoft Windows
Első kiadás 1977
legújabb verzió 12.1.0 [3] ( 2012. augusztus 27. )
Engedély GNU GPL
Weboldal unicon.sf.net

Az Icon  egy programozási nyelv, amely egy korábbi nyelv, a Snobol ideológiáját örökölte . A nyelv nevének semmi köze az "ikonokhoz", hanem az angol szó rövidítése.  ikonoklasztikus (ikonoklasztikus), a konformizmus elleni küzdelem értelmében használják a programozási nyelvek fejlesztésében.

Ez egy szupermagas szintű programozási nyelv , amely integrálja a mintaillesztést és a visszalépést , így közelebb hozza a logikai programozási nyelvekhez .

A nyelv dinamikusan van beírva, és beépített hatékony adattípusokkal rendelkezik. Az Icon-ban lévő eljárások első osztályú értékek , ami azt jelenti, hogy a változókhoz maguknak az eljárásoknak az értékei rendelhetők , nem pedig a végrehajtásuk eredményei .  Van egy ko-kifejezési mechanizmus , amely lehetővé teszi korutinok létrehozását .  

Alapszintaxis

Az ikon szintaxisa az Algol programozási nyelvcsaládból származik , és hasonlít a C vagy a Pascal szintaxisára . Az Icon inkább a Pascalhoz hasonlít, a hozzárendeléshez a jelet :=, a kulcsszót procedurestb. használja. Az Icon viszont C-stílusú kapcsos zárójeleket használ a nyelvi utasítások csoportosítására, és a program a "main" nevű eljárással indul.

Az eljárások az Icon programok alapvető építőkövei, azonban a Pascal-eljárásokkal ellentétben ezek (mint a C és a Pascal függvények) értékeket adhatnak vissza; az Ikonban nincs kulcsszó function.

procedure doSomething(aString) write(aString) end

Céltudatos kivitelezés

Az Icon nyelv bármely mondata (operátora) valójában kifejezés, és értékeket adhat vissza. Az ikonban lévő kifejezések a tényleges visszatérési értékeiken kívül, amelyek tetszőleges számok lehetnek, két állapot egyikét eredményezik - siker Eng.  siker vagy kudarc engl.  kudarc . A kifejezések sikerességét vagy kudarcát a logikai értékek helyett az ikonvezérlő struktúrák használják. Ennek köszönhetően olyan konstrukciókat írhatunk, mint:

if a := read() then write(a)

Továbbá, mivel a "sikertelen" állapot hajlamos felbuborékolni a beágyazott függvényhívásokból egy külső függvény eredményeként, még rövidebb idiómák is használhatók, például:

while write(read())

a bemeneti adatfolyam olvasásához és a kimeneti adatfolyamba való megkettőzéséhez (visszhang).

Az olyan összehasonlító műveletek, mint a >és <sikeresek lehetnek, és a második argumentum értékével megegyező eredményt produkálhatnak, vagy sikertelenek és nem adnak eredményt. Ennek köszönhetően olyan kifejezések if a < b < c thenírhatók az ikonba, mint a ….

A sikerhez és kudarchoz kapcsolódó fogalmat az Iconban célirányos végrehajtásnak nevezik .  célirányos végrehajtás . Ez egy olyan módszer, amellyel a számítás addig folytatható, amíg el nem ér egy bizonyos célt. A fenti visszhangpéldában a cél az, hogy a bemeneti fájl teljes tartalmát beolvassuk, amíg a fájl végét meg nem találjuk. A célt közvetlenül állítják be, nem a visszatérési kódok további ellenőrzésével vagy bármi hasonlóval. A célirányos számítás a backtracking segítségével valósul meg , ami egy nagyon hatékony mechanizmus.

Generátorok

A nyelv egyik fő újítása az iterátorok mechanizmusát általánosító generátorok [4] . Az ikontól származott a generátorok ötlete az olyan nyelvekbe, mint a Python [5] .

Thomas W. Christopher, az Icon Programming Language Handbook szerzője ezt írja: "A legnagyobb különbség az Icon és más programozási nyelvek között az, hogy az Icon kifejezései generátorok."

Példa a generátor használatára:

eljárás main() L:=["1","22","333"] # Karakterláncok listája minden ír(" ",! L) vége ---- Kimenet: 1 22 333

Hatás a következő nyelvekre

Az Icon és a Snoball nyelvek egyfajta tesztelési terepet szolgáltak egyes programozási idiómák&& számára, különösen a vagy ||az első nyelvet tartalmazó konstrukciók esetében , amelyek reguláris kifejezéseket használnak (bár a jelenlegitől eltérő formában). Ezt követően ezeket a mechanizmusokat használták a Unix környezetben, a C , AWK és Perl nyelvekben .

Íme egy példa egy ilyen idiómára:

[ $cseng != 0 ]&&visszhang Telefon cseng!!!

Egy másik példa, legyen egy shell -konstrukció :

xview -root ` gtk-shell -t "Melyik kép?" -fs` _

Még ha nem is választ nevet a képfájlnak, az xview továbbra is futni fog. És az ikonok nyelvén ez soha nem történne meg.

A reguláris kifejezés analógjai magának a nyelvnek a részét képezik, lehetővé téve a korlátlan összetettségű szövegfeldolgozó rendszerek használatát.

A nyelv rugalmassága lehetővé teszi, hogy nagyon sok műveletet rögzítsen anélkül, hogy csökkentené a szöveg olvashatóságát .

Megvalósítás és nyelvjárások

A szerző által az Arizonai Egyetemen írt Icon (az úgynevezett Arizona ikon ) megvalósítása a GNU GPL licenc alatt kerül terjesztésre .

A 9.3 ikont (a Windows natív támogatásával rendelkező utolsó verzió ) a bájtkód fordítójaként valósították meg , és egy végrehajtható fájlt generált, amely az adott bájtkód értelmezőjét tartalmazza. A 9.4-es verzió óta az Arizona Icon klasszikus Unix szkriptnyelvként valósult meg .

A nyelv szerzőjének halála után a klasszikus Arizona ikon fejlesztése hosszú időre befagyott, az Icon v.9.4.3 utolsó előtti verziója 2005. november 14-én jelent meg , de mostanra újraindult a támogatása tanítványa Greg Townsend. 2010. április 12- én megjelent a fordító új verziója.

Az Icon aktívan fejlődő ága a Unicon nyelv , amelynek fordítója a kódja alapján készült, és a GNU GPL licenc alatt is terjeszthető . Ez a nyelv objektum-orientált dialektusa, továbbfejlesztett integrációval az operációs rendszer környezetével , beleértve például az adatbázissal való interakció támogatását . Az icon v.9.3-hoz hasonlóan a Unicon egy olyan fordító, amely végrehajtható fájlok generálására összpontosít.

Az ObjectIcon dialektus tovább fejlődik, a Unicon korábbi verzióira alapozva, és ez utóbbinak egy elágazása. Az ObjectIcon, ahogy a neve is sugallja, az Icon kiterjesztett objektum-orientált változata, különösen az Unicontól eltérően, az ObjectIcon metódus hozzáférési mező módosítókkal rendelkezik. Az ObjectIconban a könyvtárak összetétele jelentősen megváltozott (az IPL nagy részét alaposan átdolgozták - néhány modult eltávolítottak, a grafikus könyvtárakat teljesen megváltoztatták.), Unicode támogatás került hozzáadásra, névtér támogatás, többszörös öröklődés és az állandók és változók automatikus inicializálása is hozzáadásra került - és most ez egy modern és erőteljes OOP nyelv. Robert Parlett fejlesztette és az MIT licence alatt terjesztették. Letölthető a SourceForge webhelyről, és Linux/Unix rendszeren fut.

Leszármazott nyelvek

Laurence Tratt, az Icon 9.5 és az ObjectIcon egyik fejlesztője, a hasonló kialakítású Converge nyelv szerzője is [6] .

2015-ben Greg Townsend bevezette a Goaldi nyelvet (a Goal Direction -ból ). Ez egy Go -ban megvalósított objektum-orientált nyelv, amely az Icon számos funkcióját örökli. Lezárásokat , párhuzamos programozást , névtér támogatást és Unicode kezelést valósít meg . Ugyanakkor hiányoznak belőle olyan ikonikus jellemzők, mint a karakterláncok beolvasása alapvető nyelvi műveletként (ehelyett függvényszintű összehasonlítást használ reguláris reguláris kifejezésekkel ) és a kapcsolódó adattípusok, például a karakterkészletek, nincs tetszőleges precíziós aritmetika, és a hibák nem konvertálódik visszalépés által kezelt hibákká, hanem a kivétel mechanizmus kezeli [7] .

Irodalom

Jegyzetek

  1. https://www2.cs.arizona.edu/icon/v95u.htm
  2. 1 2 https://github.com/gtownsend/icon/releases
  3. Unicon Sourceforge . Letöltve: 2013. március 26. Az eredetiből archiválva : 2012. szeptember 10.
  4. Michael Lee Scott. 6.5.4. Generátorok az ikonban // Programozási nyelv pragmatika . - III. kiadás .. - Morgan Kaufmann, 2009. -  268. o . — 941 p. — ISBN 9780080922997 .
  5. Steve Holden, David M. Beazley. kb. 2. Változás a Python 2.0 óta // Python webprogramozás. - Sams Publishing, 2002. - S. 612. - 691 p. — ISBN 9780735710900 .
  6. Laurence Tratt. Tapasztalatok egy ikonszerű kifejezésértékelő rendszerrel  // Proceedings of the 6th Symposium on Dynamic Languages. – New York, NY, USA: ACM, 2010-01-01. – S. 73–80 . — ISBN 9781450304054 . - doi : 10.1145/1869631.1869640 . Az eredetiből archiválva : 2016. augusztus 14.
  7. Goaldi projekt a GitHubon

Linkek

Dialektusok és terjesztések