Euphoria (ohjelmointikieli)

Euforia
Semantiikka välttämätöntä
Kieliluokka menettelyllinen
Toteutustyyppi tulkinta , tavukoodin tulkinta , C - käännös
Esiintyi 1993
Tekijä Robert Craig (luoja) & Jeremy Kovgar, Matt Lewis, Derek Parnell (version 4 kehittäjät)
Kehittäjä avaa Euphoria Group
Tiedostotunniste _ .e, .ex, .exw, .edb
Vapauta 4.15.2 [1]  (15. elokuuta 2019 ) ( 15.8.2019 )
Testiversio 4.1 Beta 2
Tyyppijärjestelmä staattinen , dynaaminen
Murteet RDS Euphoria, openEuphoria
Vaikutettu BASIC , C
vaikutti Phix
Lisenssi avata
Verkkosivusto openeuphoria.org
OS cross-platform
 Mediatiedostot Wikimedia Commonsissa

Euphoria ( [ju:ˈfɔ:riə] , yufori , myös venäjäksi euphoria, joy) on Robert Craigin (Rapid Deployment Software) [2] Torontossa , Kanadassa luoma ohjelmointikieli . Nimi Euphoria on lyhenne sanoista "Loppukäyttäjän ohjelmointi hierarkkisilla objekteilla vahvoja tulkittuja sovelluksia varten".

Ensimmäinen julkinen julkaisu [3] oli 32-bittisille koneille (i386), joissa oli MS-DOS , ja se oli patentoitu (1993). Vuonna 2006, kun versio 3 [4] julkaistiin, Euphoria-projekti avautui , ja sen kehitti OpenEuphoria-yhteisö [5] , joka julkaisi joulukuussa 2010 neljännen version [6] uudella logolla ja maskotilla [7 ]. ] . OpenEuphoria-paketin versio 4.* on tällä hetkellä julkaistu Microsoft Windowsille , Linuxille , Mac OS X :lle ja kolmelle BSD-järjestelmälle ( FreeBSD , NetBSD , OpenBSD ).

Euforia on korkeatasoinen, yleiskäyttöinen tulkittu pakottava kieli . Euphoria-lähdekoodia voidaan käyttää C - lähdekoodin luomiseen kääntäjän avulla , joka puolestaan ​​voidaan kääntää suoritettavaksi tiedostoksi tai dynaamiseksi kirjastoksi käyttämällä kääntäjiä, kuten GCC , OpenWatcom jne. Euphoria-ohjelma voidaan myös "linkittää" [8 ] tulkin kanssa itsesuoritettavan tiedoston tuottamiseksi . Useita GUI- kirjastoja tuetaan , mukaan lukien Win32lib [9] ja wxWidgettien [10] , GTK+ [11] ja IUP [12 ] kääreet . Euphoriassa on sisäänrakennettu yksinkertainen tietokantajärjestelmä [13] ja kääreitä muun tyyppisten tietokantojen kanssa työskentelemiseen [14] .

Yleiskatsaus

Euphoria on yleiskäyttöinen proseduurikieli , jolle on ominaista yksinkertaisuus, luettavuus, nopea käyttöönotto ja korkea suorituskyky.

Yksinkertaisuus Luettavuus Nopea käyttöönotto Esitys

Historia

Euphoria-kielen kehitys alkoi Robert Craigin [2] kokeilla Atari Mega-ST -tietokoneella [15] . Monet kielisuunnitteluideat tulivat Craigin pro gradu -työstä Toronton yliopistossa [16] . Väitöskirja kirjoitettiin John Backuksen toiminnallisia ohjelmointikieliä käsittelevän työn vaikutuksen alaisena [16] .

Craig siirsi sitten kielen alkuperäisen Atari-toteutuksen 32-bittiselle alustalle, jossa oli 386 konetta, joissa oli Microsoft MS-DOS , ja julkaisi ensimmäisen paketin (versio 1.0) heinäkuussa 1993 [3] omalla lisenssillä perustaen oman yrityksensä Rapid Deployment Softawre (RDS ) DOS32-version Euphoria-tulkin kehittämiseen ja myyntiin. Craig kutsuu Atarin alkuperäistä toteutusta "primitiiviseksi" [17] eikä julkaissut sitä. Vuoteen 2006 asti Craig jatkoi Euphorian kehittämistä ja julkaisua yrityksessään (rapideuphoria.com [2] ), joka koostui hänestä ja hänen vaimostaan ​​Janko Miurasta. Hän julkaisi yli tusina versiota kahdessa sarjassa, 1.* ja 2.*. Lokakuussa 2006 RDS julkaisi kolmannen [4] Euphoria-sarjan ja ilmoitti, että jatkossa Euphoriaa jaetaan vapaasti avoimen lähdekoodin lisenssillä. Omien sarjojen 1 ja 2 kanssa työskentelyn tuloksena on rekisteröityjen käyttäjien yhteisö 67 maassa ympäri maailmaa, mukaan lukien monet ohjelmoijat, joiden tarkan lukumäärän tietää vain RDS, mutta version 2.5 julkaisuhetkellä se oli hyvä yli tuhat.

RDS:n suoran valvonnan alaisena yhteisö on jatkanut Euphorian julkaisemista ja tuonut paketin versioon 3.1.1 (elokuu 2007) [16] [18] . Sittemmin RDS on vähitellen siirtynyt pois Euphoria-kehityksen johtajuudesta, ja OpenEuphoria [5] -yhteisö on tehnyt lisäparannuksia ja muutoksia kollegiaalisen johdon alaisuudessa. Joulukuussa 2010 [19] yhteisö julkaisi version 4.0, joka alkoi sarjasta 4, nyt uudella projektilogolla ja maskotilla [7] .

Versio 3.1.1 on tärkeä virstanpylväs kielen kehityksessä, koska se on viimeinen versio, joka tukee virallisesti MS-DOS-alustaa [20] . Versio 3.1.1 on edelleen tiukan klassisen suunnan viimeinen versio ilman "vapauksia", jotka ilmestyivät neljännessä.

Lyhyt luettelo innovaatioista, jotka ovat ilmestyneet version 4.0.0 jälkeen [21] :

ja paljon enemmän.

Euphoria-kielen tulkki kirjoitettiin alun perin kokonaan C. Marraskuussa 2004 julkaistusta versiosta 2.5 [16] lähtien tulkki on jaettu kahteen osaan: Euphoria-kielellä kirjoitettuun jäsentimeen ja C-kielellä kirjoitettuun tavukooditulkkiin.

Erottavat ominaisuudet

Euphoria suunniteltiin ja kehitettiin seuraavia tavoitteita ja ominaisuuksia ajatellen:

Suoritustilat

Käyttö

Euphoria on tarkoitettu avaimet käteen -ratkaisuksi helpottamaan erityyppisten dynaamisten tietokokoelmien käsittelyä, ja se on erityisen hyödyllinen merkkijonojen ja kuvien käsittelyssä. Euphoriaa käytetään kokeilemaan tekoälyä , opiskelemaan matematiikkaa , opettamaan ohjelmointia ja luomaan tuhansista merkeistä koostuvia fontteja. Melko suuri osa Euphoria-tulkista on kirjoitettu Euforialla.

Tietotyypit

Euphoriassa on neljä sisäänrakennettua tietotyyppiä:

atomi (atomi) luku, joka on toteutettu 31-bittisenä etumerkillisenä kokonaislukuna tai 64-bittisenä IEEE-liukulukulukuna . Euphoria vaihtaa dynaamisesti luvun esittämisen välillä kokonaislukuna tai liukulukuna sen nykyisen arvon mukaan. järjestys (numero, järjestys) sarja, joka koostuu useista elementeistä. Jokainen joukon alkio voi olla joko atomi tai luku . Rivielementtien lukumäärä ei ole kiinteä (ei vaadi pakollista ilmoitusta). Ohjelma voi lisätä tai poistaa elementtejä tarpeen mukaan milloin tahansa. Muistin varaus/purkaminen käsitellään automaattisesti referenssilaskennan avulla. Yksittäisiin elementteihin pääsee hakasulkeissa olevan indeksiarvon avulla. Ensimmäisen elementin indeksi on [1]. Sisäkkäisten sarjojen elementteihin päästään käyttämällä lisäindeksejä hakasulkeissa, joten X[3][2] viittaa sisäkkäisen sarjan toiseen elementtiin, joka on sarjan X kolmas elementti. Sarjan jokainen elementti on tyyppiä objekti ( esine) (katso alla). kokonaisluku (kokonaisluku) atomi, jonka arvot voivat olla vain kokonaislukuja -1073741824 - 1073741823 (-2 30 - 2 30 -1). Kokonaislukutyyppi on usein tehokkaampi operaatioissa kuin atomityyppi , mutta se ei voi sisältää samaa arvoaluetta. Merkit tallennetaan numeroina, esimerkiksi ASCII 'A' on sama kuin 65. esine (objekti) yleinen tietotyyppi, joka voi sisältää minkä tahansa lueteltujen tyyppien ( atomi , sekvenssi tai kokonaisluku ) tietoja, jotka muuttuvat ohjelman suorittamisen aikana.

Euphorialla ei ole erityistä tietotyyppiä merkkijonoille . Merkkijono on sarja kokonaislukuja , mutta merkkijonoissa käytetään tavanomaista merkintää lainausmerkeissä. Näin ollen Euphoria-ohjelmassa

"ABC"

vastaa:

{'A', 'B', 'C'}

ja vastaavasti:

{65,66,67}

Sisäänrakennettujen tyyppien lisäksi Euphoria-ohjelma voi toimia ohjelmoijan määrittämien tietotyyppien kanssa, jotka määrittävät suppeamman vaihtelualueen muuttujaarvoja sisäänrakennettujen tyyppien rajoissa. Käyttäjän määrittämiä tietotyyppejä käytetään pääasiassa ohjelman virheenkorjauksessa; virheenkorjauksen jälkeen näiden tyyppien tarkistus voidaan poistaa käytöstä direktiivillä without type_check, kun taas sisäänrakennettujen tyyppien tarkistus pysyy aina käytössä.

Esimerkkejä

hei maailma

puts (1,"Hello World!\n")

Työskentely rivien kanssa

Seuraava koodi etsii elementtiä x elementtiryhmästä. Jos tällainen elementti löytyy, se poistetaan ketjuttamalla kaikki ryhmän elementit ennen sitä ja kaikki elementit sen jälkeen. Huomaa, että sarjan ensimmäisellä elementillä on indeksi yksi [1] ja dollarimerkki $ indeksinä ilmaisee sarjan viimeisen elementin numeroa.

funktio delete_item ( objekti x, sarjaryhmä ) kokonaisluku pos pos = etsi ( x, ryhmä ), jos pos > 0 niin ryhmä = ryhmä[1 .. pos-1] & ryhmä [pos+1 .. $] loppu Jos palauttaa ryhmän lopetusfunktion

Koodirivi

group = group[1 .. pos-1] & group[pos+1 .. $]

näyttää yhden tavan työskennellä sarjojen kanssa [23] . Rivi voi sisältää ryhmän minkä tahansa tyyppisiä elementtejä, ja ne voidaan valita ja sitten yhdistää ( ketjuttaa ) toiseen riviin sisäänrakennetuilla operaattoreilla. Sarjan elementtien valintaoperaatiota kutsutaan sarjan osaksi.

Edellisen esimerkin seuraava muutos korvaa vanhan elementin uudella. Koska muuttujat vanha ja uusi ilmoitetaan objekteiksi, ne voivat olla sekä atomeja että sarjoja. Tyyppitarkistusta ei tarvita, koska toiminto voi toimia minkä tahansa tietotyypin kanssa.

funktio korvaa_kohde( objekti vanha, objekti uusi, sekvenssiryhmä ) kokonaisluku pos pos = etsi ( vanha, ryhmä ) jos pos > 0 sitten ryhmä[pos] = uusi loppu Jos palauttaa ryhmän lopetusfunktion

Parametrien välitys

Aliohjelman parametrit välitetään aina arvolla, mutta aluksi välitetään vain viittaus objektiin ja sen kopio luodaan vain jos aliohjelma yrittää muuttaa sitä, ja sitten aliohjelma toimii kopion kanssa, ei objektin kanssa. itse (ns. " kopiointi-kirjoitus " -menetelmä) . Siten parametri voi muuttua aliohjelman sisällä, kun taas alkuperäinen objekti pysyy muuttumattomana. Vaihtoehtoisesti objektin muokattu kopio voidaan välittää funktion palautusarvona.

Tärkeimmät muutokset ja Euforian murteet

Kaksikielinen versio Euphoriasta

Euphorian 2.5-versiosta on muunnelma englannin- ja venäjänkielisillä avainsanoilla ( CP866- koodauksella ) ja rajoittamattomalla tunnisteiden aakkosilla, joka on kehitetty Craigin osallistuessa [24] . Myös kaksikielinen modi Euphoria-versiolle 3 on kehitteillä, tällä hetkellä alfaversiossa.

Phix

Phix [25] on  Pete Lomaxin kehittämä ohjelmointikielen kääntäjä , joka perustuu RDS Euphoria -syntaksiin, mutta jolla on seuraavat erot [26] [27] :

Tällä hetkellä kääntäjän nykyinen versio 0.6.2, joka julkaistiin 10. heinäkuuta 2011, on beta-tilassa.

Aiheeseen liittyvät ohjelmointikielet

Kirjallisuus

Juliet Kemp. Iloinen koodaus OpenEuphorialla  // LinuxFormat (englanninkielinen versio). - Marraskuu 2013. - Nro 176 .

Linkit

Muistiinpanot

  1. EuGTK 4.15.2 julkaistu . Arkistoitu alkuperäisestä 30. tammikuuta 2021. Haettu 5. huhtikuuta 2022.
  2. 1 2 3 RapidEuphoria-verkkosivusto (eng.) (linkki ei saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  3. 1 2 RapidEuphoria foorumi, 2006-10-18 16:44 kirjoittanut Robert Craig  (eng.)  (downlink) . Arkistoitu alkuperäisestä 16. heinäkuuta 2011.
  4. 1 2 RapidEuphoria-foorumi, 18.10.2006 1:19 kirjoittanut Robert Craig  (eng.)  (downlink) . Arkistoitu alkuperäisestä 16. heinäkuuta 2011.
  5. 1 2 Yhteisösivusto openEuphoria (englanniksi) (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  6. OpenEuphoria-version 4.0.0 (downlink) julkaisuilmoitus . Arkistoitu alkuperäisestä 14. heinäkuuta 2012. 
  7. 1 2 openEuphoria logo ja maskotti (eng.) (linkki ei saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  8. 1 2 3 openEuhporia manual, Binding and Shrouding (englanniksi) (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  9. Euphoria Win32Lib -projekti Sourceforgessa ( linkki ei saavutettavissa) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  10. Euphoria-projekti wxEuphoria Sourceforgessa (eng.) (linkki ei saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  11. Euphoria GTK+ -projekti Sourceforgessa ( pääsemätön linkki) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  12. Euphoria IUP -projekti, kirjoittanut Jeremy Kovgar (englanniksi) (linkkiä ei ole saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  13. openEuphoria manual, Database (eng.) (downlink) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  14. openEuphoria wiki, tietokantaliittymät ( kuollut linkki) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  15. RapidEuphoria-foorumi, 2002-09-10 kirjoittanut Robert Craig  (englanniksi)  (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 16. heinäkuuta 2011.
  16. 1 2 3 4 RapidEuphoria webiste, julkaisutiedot (englanniksi) (downlink) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  17. RapidEuphoria-foorumi, 2. maaliskuuta 1998 13:04 kirjoittanut Robert Craig  (eng.)  (linkki ei saatavilla) . Arkistoitu alkuperäisestä 16. heinäkuuta 2011.
  18. RapidEuphoria-uutiset (englanniksi) (linkkiä ei ole saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  19. openEuphorian julkaisutiedot ( ei saavutettavissa oleva linkki) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  20. openEuhporia manual, Platform Specific Issues (englanniksi) (linkki ei ole käytettävissä) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  21. Mitä uutta versiossa 4.0 . Haettu 17. elokuuta 2012. Arkistoitu alkuperäisestä 10. tammikuuta 2012.
  22. openEuphoria tiekartta (eng.) (downlink) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  23. Tämä koodi poistaa rivielementin numerolla pos. Versiosta 4.0.0 lähtien Euphoria on käyttänyt erityistä sisäänrakennettua Remove()-menettelyä tämän toiminnon suorittamiseen.
  24. Euphorian kaksikielinen versio arkistoitu osoitteeseen RapidEuphoria.com ( linkki ei saatavilla) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  25. Phix . Haettu 8. toukokuuta 2022. Arkistoitu alkuperäisestä 12. maaliskuuta 2016.
  26. Pete Lomaxin viesti Phixin ja Euphorian eroista (eng.) (kuollut linkki) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.   
  27. Pete Lomaxin viesti OpenEuphoria-foorumilla Phixin ja Euphoria 4.0:n eroista ( kuollut linkki) . Arkistoitu alkuperäisestä 14. heinäkuuta 2012.