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 | |
---|---|
| |
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 | |
---|---|
| |
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 .
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
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.
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 333Az 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 .
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.
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] .
Programozási nyelvek | |
---|---|
|