Eufória | |
---|---|
Szemantika | parancsoló |
Nyelvóra | eljárási |
A végrehajtás típusa | értelmezés , bájtkód értelmezés , C fordítás |
Megjelent | 1993 |
Szerző | Robert Craig (alkotó) és Jeremy Kovgar, Matt Lewis, Derek Parnell (4-es verzió fejlesztői) |
Fejlesztő | nyissa meg az Euphoria csoportot |
Fájlkiterjesztés _ | .e, .ex, .exw, .edb |
Kiadás | 4.15.2 [1] (2019. augusztus 15. ) |
Teszt verzió | 4.1 Béta 2 |
Típusrendszer | statikus , dinamikus |
Dialektusok | RDS Euphoria, openEuphoria |
Befolyásolt | BASIC , C |
befolyásolta | Phix |
Engedély | nyisd ki |
Weboldal | openeuphoria.org |
OS | platformközi |
Médiafájlok a Wikimedia Commons oldalon |
Az Euphoria ( [ju:ˈfɔ:riə] , yufori, oroszul is euphoria, joy) egy programozási nyelv , amelyet Robert Craig (Rapid Deployment Software) [2] hozott létre Torontóban , Kanadában . Az Euphoria név a "végfelhasználói programozás hierarchikus objektumokkal robusztus értelmezett alkalmazásokhoz" rövidítése .
Az első nyilvános kiadás [3] 32 bites gépekre (i386) készült MS-DOS- szal, és szabadalmaztatott (1993). 2006-ban a 3-as verzió megjelenésével [4] az Euphoria projekt nyílttá vált , és az OpenEuphoria közösség [5] fejlesztette ki , amely 2010 decemberében kiadta a 4. verziót [6] új logóval és kabalával [7 ] ] . Az OpenEuphoria csomag 4.* verziója jelenleg megjelent Microsoft Windows , Linux , Mac OS X és három BSD rendszerhez ( FreeBSD , NetBSD , OpenBSD ).
Az eufória egy magas szintű, általános célú értelmezett felszólító nyelv . Az Euphoria forráskódja fordító segítségével C forráskód előállítására használható , amely viszont végrehajtható fájllá vagy dinamikus könyvtárba fordítható olyan fordítóprogramok segítségével, mint a GCC , OpenWatcom stb. Az Euphoria program "linkelhető" is [8 ] egy tolmács segítségével egy önálló végrehajtható fájl létrehozásához . Számos grafikus felületi könyvtár támogatott , beleértve a Win32lib [9] és a wxWidgets [10] , a GTK+ [11] és az IUP [12] burkolóit . Az Euphoria beépített egyszerű adatbázis-rendszerrel [13] és más típusú adatbázisokkal való munkavégzéshez szükséges wrapperekkel [ 14] rendelkezik .
Az Euphoria egy általános célú eljárási nyelv, amelyet egyszerűség, olvashatóság, gyors telepítés és nagy teljesítmény jellemez.
EgyszerűségAz Euphoria nyelv fejlesztése Robert Craig [2] Atari Mega-ST személyi számítógépen [15] végzett kísérleteivel kezdődött . Számos nyelvi tervezési ötlet Craig Torontói Egyetemen végzett mesterdolgozatából származott [16] . A disszertáció John Backus funkcionális programozási nyelvekkel foglalkozó munkájának hatására készült [16] .
Craig ezután a nyelv eredeti Atari-megvalósítását a 386, Microsoft MS-DOS- t futtató gép 32 bites platformjára portolta, és 1993 júliusában kiadta az első csomagot (1.0-s verzió) saját licenc alatt [3] , megalapítva saját Rapid Deployment nevű cégét. Softawre (RDS ) az Euphoria tolmács fejlesztéséhez és értékesítéséhez a DOS32 változatban. Craig az Atari eredeti megvalósítását "primitívnek" [17] nevezi, és nem tette közzé. 2006-ig Craig folytatta az Euphoria fejlesztését és kiadását saját maga és felesége, Janko Miura társaságában (rapideuphoria.com [2] ), több mint egy tucat változatot adott ki két sorozatban, az 1.* és a 2.*. 2006 októberében az RDS elindította a 3. [4] Euphoria sorozatot, és bejelentette, hogy a jövőben az Euphoria nyílt forráskódú licenc alatt szabadon terjeszthető lesz . A szabadalmaztatott 1-es és 2-es sorozattal végzett munka eredménye egy regisztrált felhasználók közössége a világ 67 országában, köztük számos programozó, akiknek pontos számát csak az RDS ismeri, de a 2.5-ös verzió kiadásakor jó volt. több mint ezer.
Az RDS közvetlen felügyelete alatt a közösség folytatta az Euphoria kiadását, és a csomagot a 3.1.1-es verzióra hozta (2007. augusztus) [16] [18] . Azóta az RDS fokozatosan eltávolodott az Euphoria fejlesztés vezetésétől, és további fejlesztéseket és változtatásokat hajt végre az OpenEuphoria [5] közösség kollegiális vezetésével. 2010 decemberében [19] a közösség kiadta a 4.0-s verziót, a 4-es sorozattól kezdve, immár új projektlogóval és kabalával [7] .
A 3.1.1-es verzió fontos mérföldkő a nyelv fejlődésében, mivel ez az utolsó verzió, amely hivatalosan támogatja az MS-DOS platformot [20] . A 3.1.1-es verzió még mindig a szigorú klasszikus irányzat utolsó változata, a 4.-ben megjelent "szabadságok" nélkül.
A 4.0.0-s verzió óta megjelent újítások rövid listája [21] :
és még sok más.
Az Euphoria nyelvi tolmács eredetileg teljes egészében C nyelven íródott. A 2004 novemberében megjelent 2.5-ös verzió [16] óta az értelmező két részre oszlik: egy Euphoria-ban írt elemzőre és egy C-ben írt bájtkód értelmezőre.
Az Euphoria a következő célokat és jellemzőket szem előtt tartva tervezték meg és fejlesztették ki:
Az Euphoria kulcsrakész megoldás a különféle típusú dinamikus adatgyűjtemények kezelésének megkönnyítésére, és különösen hasznos karakterláncok és képek kezelésére. Az Euphoria mesterséges intelligenciával való kísérletezésre , matematika tanulmányozására , programozás oktatására és több ezer karakterből álló betűtípusok létrehozására szolgál. Az Euphoria tolmács meglehetősen nagy része Euphoria nyelven van írva.
Az Euphoria négy beépített adattípussal rendelkezik:
atom (atom) 31 bites előjeles egész számként vagy 64 bites IEEE lebegőpontos számként megvalósított szám . Az Euphoria dinamikusan vált a számok egész vagy lebegőpontos ábrázolása között, az aktuális értékétől függően. sorozat (szám, sorozat) több elemből álló készlet. A halmaz minden eleme lehet atom vagy szám . A sorelemek száma nem fix (nem igényel kötelező bevallást). A program szükség szerint bármikor hozzáadhat vagy eltávolíthat elemeket. A memóriafoglalás/felosztás automatikusan, referenciaszámlálás segítségével történik. Az egyes elemek a szögletes zárójelben lévő indexértékkel érhetők el. Az első elem indexe [1]. A beágyazott sorozatok elemei a szögletes zárójelben lévő további indexekkel érhetők el, így az X[3][2] a beágyazott sorozat második elemére utal, amely az X sorozat harmadik eleme. A sorozat minden eleme objektum típusú ( tárgy) (lásd alább). egész szám (egész szám) olyan atom, amelynek értékei csak egész számok lehetnek –1073741824 és 1073741823 között (–2 30 és 2 30 -1 között). Az egész típus gyakran hatékonyabb a műveletekben, mint az atom típus , de nem tartalmazhatja ugyanazt az értéktartományt. A karakterek számként vannak tárolva, például az ASCII 'A' ugyanaz, mint a 65. tárgy (tárgy) egy általános adattípus, amely a felsorolt típusú ( atom , sorozat vagy egész szám ) bármelyikének adatait tartalmazhatja, amelyek a program végrehajtása során változnak.Az Euphoria nem rendelkezik speciális adattípussal a karakterláncokhoz . A karakterlánc egész számok sorozata , de a karakterláncok a szokásos jelölést használják dupla idézőjelben. Így az Euphoria programban
"ABC"egyenértékű:
{'A', 'B', 'C'}és ezzel egyenértékűen:
{65,66,67}A beépített típusokon kívül az Euphoria program a programozó által meghatározott adattípusokkal is működhet, amelyek a beépített típusok határain belül szűkebb változóérték-tartományt adnak meg. A felhasználó által definiált adattípusokat főként a programok hibakeresése során használjuk, a hibakeresés után ezeknek a típusoknak az ellenőrzését a direktíva letilthatja without type_check, míg a beépített típusok ellenőrzése mindig engedélyezve marad.
A következő kód x elemet keres egy elemcsoportban. Ha ilyen elemet találunk, akkor az eltávolításra kerül úgy, hogy az előtte lévő csoport összes elemét összefűzi az utána lévő összes elemmel. Figyeljük meg, hogy a sorozat első elemének indexe egy [1], és a $ dollárjel mint index a sorozat utolsó elemének számát jelöli.
függvény törlés_elem ( objektum x, sorozatcsoport ) egész szám poz poz = megkeresi ( x, csoport ), ha poz > 0 , akkor csoport = csoport[1 .. poz.1] & csoport[poz.+1 .. $] vége ha return group end függvényKódsor
group = group[1 .. pos-1] & group[pos+1 .. $]sorozatokkal való munka egyik módját mutatja be [23] . Egy sor tetszőleges típusú elemcsoportot tartalmazhat, ezek kijelölhetők, majd beépített operátorok segítségével kombinálhatók ( összefűzhetők ) egy másik sorral. A sorozat elemeinek kiválasztásának műveletét a sorozat szakaszának nevezzük.
Az előző példa következő módosítása lecseréli a régi elemet az újra. Mivel a régi és új változók objektumként vannak deklarálva, lehetnek atomok és sorozatok is. Nincs szükség típusellenőrzésre, mert a funkció bármilyen adattípuson működhet.
függvény csere_elem( régi objektum, új objektum , sorozatcsoport ) egész szám poz pos = keresés ( régi, csoport ), ha poz > 0 , akkor csoport[poz] = új vége ha return group end függvényA szubrutin paraméterei mindig érték szerint kerülnek átadásra, azonban kezdetben csak az objektumra való hivatkozás kerül átadásra, és csak akkor jön létre a másolata, ha a szubrutin megpróbálja megváltoztatni, majd a szubrutin a másolattal működik, és nem az objektummal magát (az úgynevezett „ írásra másolás ” módszert) . Így a paraméter változhat az alprogramon belül, miközben az eredeti objektum változatlan marad. Opcionálisan az objektum módosított másolata is átadható a függvény visszatérési értékeként.
Létezik az Euphoria 2.5-ös változatának módosítása angol és orosz kulcsszavakkal ( CP866 kódolásban ) és korlátlan számú azonosító ábécével, amelyet Craig [24] közreműködésével fejlesztettek ki . Az Euphoria 3-as verziójához egy kétnyelvű mod is fejlesztés alatt áll, jelenleg alfában.
A Phix [25] egy programozási nyelvi fordító , amelyet Pete Lomax fejlesztett ki az RDS Euphoria szintaxis alapján, de a következő eltérésekkel [26] [27] :
Jelenleg a fordítóprogram jelenlegi, 2011. július 10-én megjelent 0.6.2-es verziója béta állapotú.
Juliet Kemp. Örömteli kódolás az OpenEuphoria segítségével // LinuxFormat (angol verzió). - 2013. november - 176. sz .
Programozási nyelvek | |
---|---|
|