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 ) |
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] .
Euphoria on yleiskäyttöinen proseduurikieli , jolle on ominaista yksinkertaisuus, luettavuus, nopea käyttöönotto ja korkea suorituskyky.
YksinkertaisuusEuphoria-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.
Euphoria suunniteltiin ja kehitettiin seuraavia tavoitteita ja ominaisuuksia ajatellen:
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.
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ä.
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 lopetusfunktionKoodirivi
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 lopetusfunktionAliohjelman 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.
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 [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.
Juliet Kemp. Iloinen koodaus OpenEuphorialla // LinuxFormat (englanninkielinen versio). - Marraskuu 2013. - Nro 176 .
Ohjelmointikielet | |
---|---|
|