Kuvake (ohjelmointikieli)

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 .  

Perussyntaksi

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

Tarkoituksenmukainen toteutus

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.

Generaattorit

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 333

Vaikutus seuraaviin kieliin

Icon- 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 .

Toteutus ja murteet

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ä.

Jälkiläiset kielet

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] .

Kirjallisuus

Muistiinpanot

  1. https://www2.cs.arizona.edu/icon/v95u.htm
  2. 1 2 https://github.com/gtownsend/icon/releases
  3. Unicon Sourceforge . Haettu 26. maaliskuuta 2013. Arkistoitu alkuperäisestä 10. syyskuuta 2012.
  4. Michael Lee Scott. 6.5.4. Generaattorit kuvakkeessa // Ohjelmointikielen pragmatiikka . - III painos .. - Morgan Kaufmann, 2009. - s  . 268 . — 941 s. — ISBN 9780080922997 .
  5. Steve Holden, David M. Beazley. sovellus. 2. Muutos Python 2.0 :sta // Python Web Programming. - Sams Publishing, 2002. - S. 612. - 691 s. — ISBN 9780735710900 .
  6. Laurence Tratt. Kokemuksia ikonimaisesta ilmaisujen arviointijärjestelmästä  // 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 . Arkistoitu alkuperäisestä 14. elokuuta 2016.
  7. Goaldi- projekti GitHubissa

Linkit

Murteet ja jakelut