Euphoria (programozási nyelv)

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. ) ( 2019-08-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 .

Áttekintés

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ég Olvashatóság Gyors telepítés Teljesítmény

Történelem

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

Megkülönböztető jellemzők

Az Euphoria a következő célokat és jellemzőket szem előtt tartva tervezték meg és fejlesztették ki:

Végrehajtási módok

Használat

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.

Adattípusok

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.

Példák

helló világ

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

Munka sorokkal

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ény

Kó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ény

Paraméterek átadása

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

Az Euphoria főbb módosításai és dialektusai

Az Euphoria kétnyelvű változata

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.

Phix

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

Kapcsolódó programozási nyelvek

Irodalom

Juliet Kemp. Örömteli kódolás az OpenEuphoria segítségével  // LinuxFormat (angol verzió). - 2013. november - 176. sz .

Linkek

Jegyzetek

  1. EuGTK 4.15.2 közzétéve . Az eredetiből archiválva : 2021. január 30. Letöltve: 2022. április 5.
  2. 1 2 3 RapidEuphoria weboldal (eng.) (nem elérhető link) . Az eredetiből archiválva : 2012. július 14.   
  3. 1 2 RapidEuphoria fórum, 2006-10-18, 16:44 Robert Craig  (eng.)  (downlink) . Archiválva az eredetiből 2011. július 16-án.
  4. 1 2 RapidEuphoria fórum, 2006. 10. 18., 1:19, írta: Robert Craig  (eng.)  (downlink) . Archiválva az eredetiből 2011. július 16-án.
  5. 1 2 Közösségi oldal openEuphoria (angol) (hivatkozás nem érhető el) . Az eredetiből archiválva : 2012. július 14.   
  6. Bejelentés az openEuphoria 4.0.0-s verziójáról (lefelé irányuló kapcsolat) . Az eredetiből archiválva : 2012. július 14. 
  7. 1 2 openEuphoria logó és kabalája (eng.) (a link nem érhető el) . Az eredetiből archiválva : 2012. július 14.   
  8. 1 2 3 openEuhporia kézikönyv, Binding and Shrouding (angol) (hivatkozás nem érhető el) . Az eredetiből archiválva : 2012. július 14.   
  9. Euphoria Win32Lib projekt a Sourceforge-nál ( elérhetetlen link) . Az eredetiből archiválva : 2012. július 14.   
  10. Euphoria projekt wxEuphoria a Sourceforge-on (eng.) (hivatkozás nem érhető el) . Az eredetiből archiválva : 2012. július 14.   
  11. Euphoria GTK+ projekt a Sourceforge-nál ( elérhetetlen link) . Az eredetiből archiválva : 2012. július 14.   
  12. Euphoria IUP projekt, Jeremy Kovgar (angol) (a link nem érhető el) . Az eredetiből archiválva : 2012. július 14.   
  13. openEuphoria manual, Database (eng.) (downlink) . Az eredetiből archiválva : 2012. július 14.   
  14. openEuphoria wiki, Adatbázis interfészek ( holt link) . Az eredetiből archiválva : 2012. július 14.   
  15. RapidEuphoria fórum, 2002-09-10, szerző: Robert Craig  (angol)  (a link nem érhető el) . Archiválva az eredetiből 2011. július 16-án.
  16. 1 2 3 4 RapidEuphoria webiste, kiadási megjegyzések (angol) (downlink) . Az eredetiből archiválva : 2012. július 14.   
  17. RapidEuphoria fórum, 1998. március 2., 13:04, írta: Robert Craig  (eng.)  (nem elérhető link) . Archiválva az eredetiből 2011. július 16-án.
  18. RapidEuphoria hírek (angolul) (hivatkozás nem elérhető) . Az eredetiből archiválva : 2012. július 14.   
  19. openEuphoria kiadási megjegyzések ( elérhetetlen link) . Az eredetiből archiválva : 2012. július 14.   
  20. openEuhporia manual, Platform Specific Issues (angol) (a hivatkozás nem elérhető) . Az eredetiből archiválva : 2012. július 14.   
  21. A 4.0-s verzió újdonságai . Letöltve: 2012. augusztus 17. Az eredetiből archiválva : 2012. január 10..
  22. openEuphoria roadmap (eng.) (downlink) . Az eredetiből archiválva : 2012. július 14.   
  23. Ez a kód eltávolítja a pos számú sorelemet. A 4.0.0-s verzió óta az Euphoria egy speciális beépített remove() eljárást használ a művelet végrehajtásához.
  24. Az Euphoria kétnyelvű változata a RapidEuphoria.com webhelyen archiválva ( elérhetetlen hivatkozás ) . Az eredetiből archiválva : 2012. július 14.   
  25. Phix . Letöltve: 2022. május 8. Az eredetiből archiválva : 2016. március 12.
  26. Pete Lomax bejegyzése a Phix és az Euphoria közötti különbségekről (eng.) (holt link) . Az eredetiből archiválva : 2012. július 14.   
  27. Pete Lomax bejegyzése az OpenEuphoria fórumon a Phix és az Euphoria 4.0 közötti különbségről ( halott link) . Az eredetiből archiválva : 2012. július 14.