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 ) |
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] .
Euphoria je univerzální procedurální jazyk vyznačující se jednoduchostí, čitelností, rychlým nasazením a vysokým výkonem.
JednoduchostVý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.
Euphoria byla koncipována a vyvinuta s ohledem na následující cíle a vlastnosti:
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.
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.
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í skupinyParametry 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.
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 [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.
Juliet Kempová. Radostné kódování s OpenEuphoria // LinuxFormat (anglická verze). - listopad 2013. - č. 176 .
Programovací jazyky | |
---|---|
|