Euphoria (programovací jazyk)

Euforie
Sémantika rozkazovací způsob
Jazyková třída procesní
Typ provedení interpretace , interpretace bytecode , překlad C
Objevil se v 1993
Autor Robert Craig (tvůrce) & Jeremy Kovgar, Matt Lewis, Derek Parnell (vývojáři verze 4)
Vývojář otevřená skupina Euphoria
Přípona souboru .e, .ex, .exw, .edb
Uvolnění 4.15.2 [1]  (15. srpna 2019 ) ( 2019-08-15 )
Testovací verze 4.1 Beta 2
Typový systém statické , dynamické
Dialekty RDS Euphoria, openEuphoria
Byl ovlivněn ZÁKLADNÍ , C
ovlivnil Phix
Licence OTEVŘENO
webová stránka openeuphoria.org
OS multiplatformní
 Mediální soubory na Wikimedia Commons

Euphoria ( [ju:ˈfɔ:riə] , yufori, také rusky euphoria, joy) je programovací jazyk vytvořený Robertem Craigem (Rapid Deployment Software) [2] v Torontu v Kanadě . Název Euphoria je akronym pro „Programování koncového uživatele s hierarchickými objekty pro robustní interpretované aplikace“.

První veřejné vydání [3] bylo pro 32bitové stroje (i386) s MS-DOS a bylo proprietární (1993). V roce 2006, s vydáním verze 3 [4] , se projekt Euphoria stal otevřeným , a byl vyvinut komunitou OpenEuphoria [5] , která v prosinci 2010 vydala 4. verzi [6] s novým logem a maskotem [7 ] . Verze 4.* balíčku OpenEuphoria je aktuálně vydána pro Microsoft Windows , Linux , Mac OS X a tři systémy BSD ( FreeBSD , NetBSD , OpenBSD ).

Euforie je na vysoké úrovni, univerzální interpretovaný imperativní jazyk . Zdrojový kód Euphoria lze použít ke generování zdrojového kódu C pomocí překladače , který lze zase zkompilovat do spustitelného souboru nebo dynamické knihovny pomocí kompilátorů jako GCC , OpenWatcom atd. Program Euphoria lze také "propojit" [8 ] s tlumočníkem k vytvoření samospustitelného souboru . Je podporováno několik GUI knihoven , včetně Win32lib [9] a wrapperů pro wxWidgets [10] , GTK+ [11] a IUP [12] . Euphoria má vestavěný jednoduchý databázový systém [13] a wrappery pro práci s jinými typy databází [14] .

Přehled

Euphoria je univerzální procedurální jazyk vyznačující se jednoduchostí, čitelností, rychlým nasazením a vysokým výkonem.

Jednoduchost Čitelnost Rychlé nasazení Výkon

Historie

Vývoj jazyka Euphoria začal experimenty Roberta Craiga [2] na osobním počítači Atari Mega-ST [15] . Mnoho nápadů na jazykový design vzešlo z Craigovy magisterské práce na University of Toronto [16] . Disertační práce byla napsána pod vlivem práce Johna Backuse o funkcionálních programovacích jazycích [16] .

Craig poté portoval původní implementaci jazyka Atari na 32bitovou platformu 386 strojů s Microsoft MS-DOS a vydal první balíček (verze 1.0) v červenci 1993 [3] pod proprietární licencí, čímž založil vlastní společnost Rapid Deployment Softawre (RDS ) pro vývoj a prodej interpretu Euphoria ve variantě DOS32. Craig nazývá původní implementaci pro Atari „primitivní“ [17] a nezveřejnil ji. Až do roku 2006 Craig pokračoval ve vývoji a publikování Euphoria ve své firmě (rapideuphoria.com [2] ), kterou tvoří on a jeho manželka Janko Miura, přičemž vydal více než tucet verzí ve dvou sériích, 1.* a 2.*. V říjnu 2006 RDS spustila 3. [4] sérii Euphoria a oznámila, že do budoucna bude Euphoria volně distribuována pod licencí open source . Výsledkem práce s proprietární řadou 1 a 2 je komunita registrovaných uživatelů v 67 zemích světa, včetně mnoha programátorů, jejichž přesný počet zná pouze RDS, ale v době vydání verze 2.5 to bylo dobře přes tisíc.

Pod přímým dohledem RDS komunita pokračovala ve vydávání Euphoria, čímž se balíček dostal až na verzi 3.1.1 (srpen 2007) [16] [18] . Od té doby se RDS postupně vzdalovalo vedení vývoje Euphoria a další vylepšení a změny provádí komunita OpenEuphoria [5] pod kolegiálním vedením. V prosinci 2010 [19] komunita vydala verzi 4.0, počínaje Series 4, nyní s novým logem projektu a maskotem [7] .

Verze 3.1.1 je důležitým milníkem ve vývoji jazyka, protože je to poslední verze, která oficiálně podporuje platformu MS-DOS [20] . Verze 3.1.1 je stále poslední verzí přísného klasického směru, bez „svobod“, které se objevily ve 4.

Krátký seznam inovací, které se objevily od verze 4.0.0 [21] :

a mnohem víc.

Jazykový tlumočník Euphoria byl původně napsán celý v C. Od verze 2.5 [16] , vydané v listopadu 2004, je interpret rozdělen na dvě části: parser napsaný v Euphoria a interpret bytecode napsaný v C.

Charakteristické rysy

Euphoria byla koncipována a vyvinuta s ohledem na následující cíle a vlastnosti:

Režimy provádění

Použití

Euphoria má být řešením na klíč pro usnadnění manipulace s dynamickými kolekcemi dat různých typů a je zvláště užitečná pro práci s řetězci a obrázky. Euphoria se používá k experimentování s umělou inteligencí , studiu matematiky , výuce programování a vytváření písem skládajících se z tisíců znaků. Poměrně velká část interpretu Euphoria je napsána v Euphorii.

Datové typy

Euphoria má čtyři vestavěné datové typy:

atom (atom) číslo implementované jako 31bitové celé číslo se znaménkem nebo 64bitové číslo IEEE s pohyblivou řádovou čárkou . Euphoria dynamicky přepíná mezi reprezentací čísla jako celého čísla nebo čísla s plovoucí desetinnou čárkou v závislosti na jeho aktuální hodnotě. sekvence (číslo, sekvence) sada skládající se z několika prvků. Každý prvek množiny může být buď atom nebo číslo . Počet prvků řádku není pevně stanoven (nevyžaduje povinnou deklaraci). Program může kdykoli přidat nebo odebrat prvky podle potřeby. Alokace/dealokace paměti je řešena automaticky pomocí počítání referencí. K jednotlivým prvkům se přistupuje pomocí hodnoty indexu uzavřené v hranatých závorkách. Index prvního prvku je [1]. K prvkům vnořených řad se přistupuje pomocí dalších indexů v hranatých závorkách, takže X[3][2] odkazuje na druhý prvek vnořené řady, což je třetí prvek řady X. Každý prvek řady je typu objekt ( objekt) (viz níže). celé číslo (celé číslo) atom, jehož hodnoty mohou být pouze celá čísla od -1073741824 do 1073741823 (od -2 30 do 2 30 -1). Typ integer je často efektivnější v operacích než typ atom , ale nemůže obsahovat stejný rozsah hodnot. Znaky jsou uloženy jako čísla, například ASCII 'A' je stejné jako 65. objekt (objekt) obecný datový typ, který může obsahovat data libovolného z uvedených typů ( atom , sekvence nebo celé číslo ), které se mění během provádění programu.

Euphoria nemá speciální datový typ pro znakové řetězce . Řetězec je řada celých čísel , ale řetězce používají obvyklý zápis v uvozovkách. Tedy v programu Euphoria

"ABC"

ekvivalentní:

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

a ekvivalentně:

{65,66,67}

Kromě vestavěných typů může program Euphoria pracovat s datovými typy definovanými programátorem, které specifikují užší rozsah hodnot proměnných v rámci limitů vestavěných typů. Uživatelsky definované datové typy se používají především při ladění programu, po odladění lze kontrolu těchto typů zakázat direktivou without type_check, zatímco kontrola vestavěných typů zůstává vždy povolena.

Příklady

ahoj světe

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

Práce s řádky

Následující kód hledá prvek x ve skupině prvků. Pokud je takový prvek nalezen, je odstraněn zřetězením všech prvků skupiny před ním se všemi prvky za ním. Všimněte si, že první prvek řady má index jedna [1] a znak dolaru $ jako index označuje číslo posledního prvku řady.

funkce delete_item ( objekt x, skupina sekvencí ) celé číslo poz pos = find ( x, group ) if pos > 0 then skupina = skupina[1 .. pozice-1] & skupina[pos+1 .. $] konec pokud návratová funkce ukončení skupiny

Řádek kódu

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

ukazuje jeden způsob práce se sériemi [23] . Řádek může obsahovat skupinu prvků libovolného typu a lze je vybrat a poté zkombinovat ( zřetězit ) s dalším řádkem pomocí vestavěných operátorů. Operace výběru prvků řady se nazývá sekce řady.

Další úprava předchozího příkladu nahradí starý prvek novým. Protože proměnné old a new jsou deklarovány jako objekty, mohou to být jak atomy, tak série. Není vyžadována žádná kontrola typu, protože funkce může pracovat s jakýmkoli datovým typem.

funkce nahradit_položku( objekt starý, nový objekt , skupina sekvencí ) celé číslo poz pos = najít ( staré, skupina ) pokud pos > 0 then skupina[pos] = nový konec pokud návratová funkce ukončení skupiny

Předávání parametrů

Parametry do podprogramu jsou vždy předávány hodnotou, ale zpočátku se předává pouze odkaz na objekt a jeho kopie se vytváří pouze v případě, že se podprogram pokusí ji změnit, a poté podprogram pracuje s kopií, nikoli s objektem. samotný (tzv. metoda „ copy-on-write “) . Parametr se tedy uvnitř podprogramu může změnit, zatímco původní objekt zůstane nezměněn. Volitelně lze jako návratovou hodnotu funkce předat upravenou kopii objektu.

Hlavní modifikace a dialekty Euforie

Dvojjazyčná verze Euphoria

Existuje modifikace verze 2.5 Euphoria s anglickými a ruskými klíčovými slovy (v kódování CP866 ) a neomezenou abecedou pro identifikátory, vyvinutá za účasti Craiga [24] . Ve vývoji je také dvojjazyčný mod pro Euphoria verze 3, aktuálně v alfa verzi.

Phix

Phix [25] je kompilátor programovacího jazyka  vyvinutý Petem Lomaxem založený na syntaxi RDS Euphoria, ale s následujícími rozdíly [26] [27] :

V tuto chvíli je aktuální verze 0.6.2 kompilátoru, vydaná 10. července 2011, ve stavu beta.

Související programovací jazyky

Literatura

Juliet Kempová. Radostné kódování s OpenEuphoria  // LinuxFormat (anglická verze). - listopad 2013. - č. 176 .

Odkazy

Poznámky

  1. Zveřejněno EuGTK 4.15.2 . Archivováno z originálu 30. ledna 2021. Staženo 5. dubna 2022.
  2. 1 2 3 Web RapidEuphoria (anglicky) (nedostupný odkaz) . Archivováno z originálu 14. července 2012.   
  3. 1 2 Fórum RapidEuphoria, 2006-10-18 16:44 od Roberta Craiga  (eng.)  (downlink) . Archivováno z originálu 16. července 2011.
  4. 1 2 Fórum RapidEuphoria, 2006-10-18 1:19 od Roberta Craiga  (anglicky)  (downlink) . Archivováno z originálu 16. července 2011.
  5. 1 2 Komunitní stránka openEuphoria (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  6. Oznámení o vydání openEuphoria verze 4.0.0 (downlink) . Archivováno z originálu 14. července 2012. 
  7. 1 2 openEuphoria logo a maskot (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  8. 1 2 3 openEuhporia manuál, Binding and Shrouding (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  9. Projekt Euphoria Win32Lib na Sourceforge ( nepřístupný odkaz) . Archivováno z originálu 14. července 2012.   
  10. Projekt Euphoria wxEuphoria na Sourceforge (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  11. Projekt Euphoria GTK+ na Sourceforge ( nepřístupný odkaz) . Archivováno z originálu 14. července 2012.   
  12. Projekt Euphoria IUP od Jeremyho Kovgara (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  13. openEuphoria manual, Database (anglicky) (downlink) . Archivováno z originálu 14. července 2012.   
  14. openEuphoria wiki, Database Interfaces ( mrtvý odkaz) . Archivováno z originálu 14. července 2012.   
  15. Fórum RapidEuphoria, 2002-09-10 od Roberta Craiga  (anglicky)  (odkaz není k dispozici) . Archivováno z originálu 16. července 2011.
  16. 1 2 3 4 Web RapidEuphoria, poznámky k vydání (anglicky) (odkaz dolů) . Archivováno z originálu 14. července 2012.   
  17. Fórum RapidEuphoria, 2. března 1998 13:04 od Roberta Craiga  (eng.)  (nedostupný odkaz) . Archivováno z originálu 16. července 2011.
  18. RapidEuphoria news (anglicky) (odkaz není k dispozici) . Archivováno z originálu 14. července 2012.   
  19. poznámky k vydání openEuphoria ( nepřístupný odkaz) . Archivováno z originálu 14. července 2012.   
  20. openEuhporia manuál, Platform Specific Issues (anglicky) (odkaz není dostupný) . Archivováno z originálu 14. července 2012.   
  21. Co je nového ve verzi 4.0 . Získáno 17. srpna 2012. Archivováno z originálu 10. ledna 2012.
  22. openEuphoria roadmap (anglicky) (downlink) . Archivováno z originálu 14. července 2012.   
  23. Tento kód odstraní prvek řádku s číslem poz. Od verze 4.0.0 používá Euphoria k provedení této operace speciální vestavěnou proceduru remove().
  24. Dvojjazyčná verze Euphoria archivována na RapidEuphoria.com ( nepřístupný odkaz) . Archivováno z originálu 14. července 2012.   
  25. Phix . Získáno 8. května 2022. Archivováno z originálu dne 12. března 2016.
  26. Příspěvek Pete Lomaxe o rozdílech mezi Phix a Euphoria (eng.) (mrtvý odkaz) . Archivováno z originálu 14. července 2012.   
  27. Příspěvek Pete Lomaxe na fóru OpenEuphoria o rozdílu mezi Phix a Euphoria 4.0 ( mrtvý odkaz) . Archivováno z originálu 14. července 2012.