kuvake | |
---|---|
Semantiikka | moniparadigma : pakottava , looginen |
Kieliluokka | ohjelmointikieli |
Toteutustyyppi | tulkki |
Esiintyi | 1974 |
Tekijä | Ralph E. Griswold |
Vapauta |
|
Tyyppijärjestelmä | dynaaminen |
Tärkeimmät toteutukset | Ikoni, Jcon, Unicon |
Vaikutettu | Snobol , Algol |
vaikutti | Python |
Verkkosivusto | cs.arizona.edu/icon |
kuvake | |
---|---|
WinIcon v.9.3.2 -kuvakaappaus VQUEENS.ICN-esimerkistä, osa IPL:tä. | |
Tyyppi | Kääntäjä |
Kehittäjä | Ralph E. Griswold , Gregg Townsend |
Käyttöjärjestelmä | Unix ( Linux- ja BSD- koontiversiot testataan ), MacOS ja Microsoft Windows Cygwinin kanssa |
Ensimmäinen painos | 1977 |
uusin versio | 9.5.1 ( 6. kesäkuuta 2013 ) |
Lisenssi | GNU GPL |
Verkkosivusto | cs.arizona.edu/icon/ |
Unicon | |
---|---|
Kuvakaappaus UniconIDE v.12.0.2 | |
Tyyppi | Kääntäjä |
Kehittäjä | Clint Jeffery |
Käyttöjärjestelmä | Linux ja Microsoft Windows |
Ensimmäinen painos | 1977 |
uusin versio | 12.1.0 [3] ( 27. elokuuta 2012 ) |
Lisenssi | GNU GPL |
Verkkosivusto | unicon.sf.net |
Icon on ohjelmointikieli, joka peri saman kirjoittajan aikaisemman kielen, Snobolin , ideologian . Kielen nimellä ei ole mitään tekemistä "kuvakkeiden" kanssa, vaan se on lyhenne sanasta englanti. ikonoklastinen (ikonoklastinen), jota käytetään konformismin torjuntaan ohjelmointikielten kehittämisessä.
Se on erittäin korkeatasoinen ohjelmointikieli , joka integroi kuvioiden täsmäytyksen ja takaisinseurannan , mikä tuo sen lähemmäksi loogisia ohjelmointikieliä .
Kieli on dynaamisesti kirjoitettu ja siinä on sisäänrakennetut tehokkaat tietotyypit. Iconin proseduurit ovat ensiluokkaisia arvoja , mikä tarkoittaa, että muuttujille voidaan määrittää itse toimintojen arvot, ei niiden suorituksen tuloksia . On olemassa yhteisilmaisumekanismi, jonka avulla voit luoda korutiineja .
Ikonin syntaksi on peritty Algol -ohjelmointikieliperheestä ja muistuttaa C :n tai Pascalin syntaksia . Ikoni on enemmän kuin Pascal, se käyttää määrityksessä merkkiä :=, avainsanaa procedurejne. Icon sen sijaan käyttää C-tyylisiä kiharoita kielilauseiden ryhmittelyyn, ja ohjelma alkaa toimintosarjalla nimeltä "main".
Proseduurit ovat Icon-ohjelmien perusrakennuspalikka, mutta toisin kuin Pascal-proseduurit, ne (kuten C- ja Pascal-funktiot) voivat palauttaa arvoja; Iconissa ei ole avainsanaa function.
procedure doSomething(aString) write(aString) end
Mikä tahansa kuvakekielen lause (operaattori) on itse asiassa lauseke ja voi palauttaa arvoja. Ikonin lausekkeet tuottavat todellisten palautusarvojensa lisäksi, jotka voivat olla mikä tahansa luku, jommankumman kahdesta tilasta - menestys Eng. menestys tai epäonnistuminen engl. epäonnistuminen . Icon-ohjausrakenteet käyttävät lausekkeiden onnistumista tai epäonnistumista loogisten arvojen sijasta. Tämän ansiosta voimme kirjoittaa rakennuksia kuten:
if a := read() then write(a)
Lisäksi, koska "epäonnistunut" tila pyrkii kuplimaan sisäkkäisistä funktiokutsuista ulkoisen funktion seurauksena, voidaan käyttää jopa lyhyempiä idioomeja, kuten:
while write(read())
lukeaksesi tulovirran ja kopioidaksesi sen lähtövirtaan (kaiku).
Vertailuoperaatiot, kuten >ja <voivat onnistua ja tuottaa tuloksen, joka on yhtä suuri kuin niiden toisen argumentin arvo, tai epäonnistua eivätkä tuota tulosta. Tämän ansiosta if a < b < c thenkuvakkeessa voidaan kirjoittaa ilmaisuja, kuten ….
Menestykseen ja epäonnistumiseen liittyvää käsitettä kutsutaan Iconissa tarkoituksenmukaiseksi toteuttamiseksi . tavoitteellinen toteutus . Se on tapa, jolla laskentaa voidaan jatkaa, kunnes tietty tavoite saavutetaan. Yllä olevassa kaikuesimerkissä tavoitteena on lukea syötetiedoston koko sisältö, kunnes tiedoston loppu löytyy. Tavoite asetetaan suoraan, ei palautuskoodien lisätarkistuksilla tai muulla vastaavalla. Tarkoituksenmukainen laskenta toteutetaan käyttämällä backtrackinga , joka on erittäin tehokas mekanismi.
Kielen merkittävä innovaatio ovat generaattorit, jotka yleistävät iteraattorien mekanismin [4] . Ikonista ajatus generaattoreista löysi tiensä Pythonin kaltaisiin kieliin [5] .
Thomas W. Christopher, Icon Programming Language Handbookin kirjoittaja, kirjoittaa: "Suurin ero Iconin ja muiden ohjelmointikielten välillä on, että Iconin ilmaisut ovat generaattoreita."
Esimerkki generaattorin käytöstä:
menettely main() L:=["1","22","333"] # Merkkijonojen luettelo jokainen kirjoittaa (" ",! L) loppu ---- Tulos: 1 22 333Icon- ja Snoball-kielet toimivat eräänlaisena testausalustana joillekin ohjelmointikielille , erityisesti rakenteille, jotka sisältävät &&tai ||ja ensimmäisen kielen, joka käyttää säännöllisiä lausekkeita (tosinkin eri muodossa kuin nykyinen). Myöhemmin näitä mekanismeja käytettiin Unix - ympäristössä C- , AWK- ja Perl-kielillä .
Tässä on esimerkki tällaisesta idioomista:
[ $soitto != 0 ]&&kaiku Puhelin soi!!!Toinen esimerkki, olkoon komentotulkkirakenne :
xview -root ` gtk-shell -t "Mikä kuva?" -fs` _Vaikka et valitsisi kuvatiedostolle nimeä, xview toimii silti. Ja ikonikielellä näin ei koskaan tapahtuisi.
Säännöllisten lausekkeiden analogit ovat osa itse kieltä, mikä mahdollistaa rajattoman monimutkaisten tekstinkäsittelyjärjestelmien käytön.
Kielen joustavuuden ansiosta voit tallentaa erittäin suuren määrän toimintoja heikentämättä tekstin luettavuutta .
Tekijän Arizonan yliopistossa kirjoittama Icon-toteutus (ns. Arizona-kuvake ) jaetaan GNU GPL -lisenssillä .
Ikoni 9.3 (viimeinen versio, jossa on alkuperäinen Windows -tuki ) otettiin käyttöön tavukoodin kääntäjänä, joka luo suoritettavan tiedoston, joka sisältää tulkin tälle tavukoodille. Versiosta 9.4 lähtien Arizona Icon on toteutettu klassisena Unix - skriptikielenä .
Kielen kirjoittajan kuoleman jälkeen klassisen Arizona-kuvakkeen kehitys jäädytettiin pitkäksi aikaa, Icon v.9.4.3:n toiseksi viimeinen versio julkaistiin 14. marraskuuta 2005 , mutta nyt sen tuki on palautettu hänen oppilaansa Greg Townsend. 12. huhtikuuta 2010 julkaistiin uusi versio kääntäjästä.
Iconin aktiivisesti kehittyvä haara on Unicon -kieli , jonka kääntäjä perustuu sen koodiin ja jota jaetaan myös GNU GPL -lisenssillä . Se on kielen oliosuuntautunut murre, jossa on parannettu integraatio käyttöjärjestelmäympäristöön , mukaan lukien esimerkiksi tuki tietokannan kanssa vuorovaikutukseen . Kuten icon v.9.3, Unicon on kääntäjä, joka keskittyy suoritettavien tiedostojen luomiseen.
ObjectIconin murre kehittyy edelleen, ja se perustuu Uniconin aikaisempiin versioihin ja on viimeksi mainitun haarukka. ObjectIcon, kuten nimestä voi päätellä, on laajennettu olio-versio Iconista, erityisesti toisin kuin Uniconissa, ObjectIconissa on menetelmän käyttöoikeuskentän muokkaajia. ObjectIconissa kirjastojen koostumusta on muutettu suuresti (suurin osa IPL:stä on muokattu voimakkaasti - joitain moduuleja on poistettu, grafiikkakirjastot on muutettu kokonaan.), Unicode-tuki on lisätty, nimitilan tuki on lisätty, moniperintö ja vakioiden ja muuttujien automaattinen alustus on lisätty - ja nyt se on moderni ja tehokas OOP-kieli. Robert Parlettin kehittämä ja MIT - lisenssin alainen jakelu. Ladattavissa SourceForgesta ja toimii Linux/Unix-käyttöjärjestelmissä.
Laurence Tratt, yksi Icon 9.5:n ja ObjectIconin kehittäjistä, on myös samankaltaisen Convergen kielen kirjoittaja [6] .
Vuonna 2015 Greg Townsend esitteli Goaldi-kielen ( goal Directionista ). Se on Go :ssa toteutettu oliokieli, joka perii monet Iconin ominaisuudet. Se toteuttaa sulkemiset , rinnakkaisohjelmoinnin , nimitilan tuen ja Unicode-käsittelyn . Samalla siitä puuttuu sellaiset ikoniset ominaisuudet, kuten merkkijonojen skannaus kielen perustoimintona (sen sijaan se käyttää funktiotason vertailua säännöllisten lausekkeiden kanssa ) ja siihen liittyviä tietotyyppejä, kuten merkistöjä, ei ole mielivaltaista tarkkuusaritmetiikkaa ja virheet ovat ei muunneta takaisinseurannan avulla käsitellyiksi virheiksi, vaan ne käsitellään poikkeusmekanismilla [7] .
Ohjelmointikielet | |
---|---|
|