Eufori | |
---|---|
Semantik | bydende nødvendigt |
Sprog klasse | proceduremæssige |
Udførelsestype | fortolkning , bytekodefortolkning , C - oversættelse |
Dukkede op i | 1993 |
Forfatter | Robert Craig (Creator) & Jeremy Kovgar, Matt Lewis, Derek Parnell (version 4-udviklere) |
Udvikler | åbne Euphoria Group |
Filtypenavn _ | .e, .ex, .exw, .edb |
Frigøre | 4.15.2 [1] (15. august 2019 ) |
Test version | 4.1 Beta 2 |
Type system | statisk , dynamisk |
Dialekter | RDS Euphoria, openEuphoria |
Blev påvirket | BASIC , C |
påvirket | Phix |
Licens | åben |
Internet side | openeuphoria.org |
OS | på tværs af platforme |
Mediefiler på Wikimedia Commons |
Euphoria ( [ju:ˈfɔ:riə] , yufori, også russisk eufori, glæde) er et programmeringssprog skabt af Robert Craig (Rapid Deployment Software) [2] i Toronto , Canada . Navnet Euphoria er et akronym for "End-User Programming with Hierarchical Objects for Robust Interpreted Applications".
Den første offentlige udgivelse [3] var til 32-bit maskiner (i386) med MS-DOS og var proprietær (1993). I 2006, med udgivelsen af version 3 [4] , blev Euphoria-projektet åbent , og det blev udviklet af OpenEuphoria-fællesskabet [5] , som i december 2010 udgav den 4. version [6] med et nyt logo og maskot [7 ] . Version 4.* af OpenEuphoria-pakken er i øjeblikket udgivet til Microsoft Windows , Linux , Mac OS X og tre BSD-systemer ( FreeBSD , NetBSD , OpenBSD ).
Euphoria er et fortolket imperativt sprog på højt niveau, generelt til formål . Euphoria-kildekode kan bruges til at generere C -kildekode ved hjælp af en oversætter , som igen kan kompileres til en eksekverbar fil eller et dynamisk bibliotek ved hjælp af kompilatorer som GCC , OpenWatcom osv. Euphoria-programmet kan også "linkes" [8 ] med en tolk for at producere en selveksekverbar . Adskillige GUI- biblioteker er understøttet , inklusive Win32lib [9] og wrappers til wxWidgets [10] , GTK+ [11] og IUP [12] . Euphoria har et indbygget simpelt databasesystem [13] og wrappers til at arbejde med andre typer databaser [14] .
Euphoria er et almindeligt proceduresprog karakteriseret ved enkelhed, læsbarhed, hurtig implementering og høj ydeevne.
EnkelhedUdviklingen af Euphoria-sproget begyndte med eksperimenter udført af Robert Craig [2] på den personlige computer Atari Mega-ST [15] . Mange ideer til sprogdesign kom fra Craigs masterafhandling ved University of Toronto [16] . Afhandlingen er skrevet under indflydelse af John Backus ' arbejde med funktionelle programmeringssprog [16] .
Craig overførte derefter den originale Atari-implementering af sproget til 32-bit platformen på 386 maskiner, der kører Microsoft MS-DOS og udgav den første pakke (version 1.0) i juli 1993 [3] under en proprietær licens, og grundlagde sit eget firma Rapid Deployment Softawre (RDS ) til udvikling og salg af Euphoria-tolken i DOS32-varianten. Craig kalder den oprindelige implementering for Atari "primitiv" [17] og udgav den ikke. Indtil 2006 fortsatte Craig med at udvikle og udgive Euphoria i sit firma (rapideuphoria.com [2] ), bestående af ham selv og hans kone Janko Miura, og udgav mere end et dusin versioner i to serier, 1.* og 2.*. I oktober 2006 lancerede RDS den 3. [4] Euphoria-serie og annoncerede, at Euphoria fremover ville blive frit distribueret under en open source- licens. Resultatet af at arbejde med proprietære serier 1 og 2 er et fællesskab af registrerede brugere i 67 lande rundt om i verden, inklusive mange programmører, hvis nøjagtige antal kun er kendt af RDS, men på tidspunktet for udgivelsen af version 2.5 var det godt over tusind.
Under direkte overvågning af RDS er fællesskabet fortsat med at frigive Euphoria, hvilket bringer pakken op til version 3.1.1 (august 2007) [16] [18] . Siden da har RDS gradvist bevæget sig væk fra ledelsen af Euphoria-udvikling, og yderligere forbedringer og ændringer er foretaget af OpenEuphoria [5] -fællesskabet under kollegial ledelse. I december 2010 [19] udgav fællesskabet version 4.0, der startede Series 4, nu med et nyt projektlogo og maskot [7] .
Version 3.1.1 er en vigtig milepæl i udviklingen af sproget, da det er den sidste version, der officielt understøtter MS-DOS-platformen [20] . Version 3.1.1 er stadig den sidste version af den strenge klassiske retning, uden de "friheder", der dukkede op i den 4.
En kort liste over innovationer, der er dukket op siden version 4.0.0 [21] :
og meget mere.
Euphoria sprogtolken blev oprindeligt skrevet udelukkende i C. Siden version 2.5 [16] , udgivet i november 2004, er fortolkeren blevet opdelt i to dele: en parser skrevet i Euphoria og en bytekodefortolker skrevet i C.
Euphoria blev udtænkt og udviklet med følgende mål og funktioner i tankerne:
Euphoria er beregnet til at være en nøglefærdig løsning til at lette håndteringen af dynamiske samlinger af data af forskellige typer, og er særligt anvendelig til håndtering af strenge og billeder. Euphoria bruges til at eksperimentere med kunstig intelligens , studere matematik , undervise i programmering og til at skabe skrifttyper bestående af tusindvis af tegn. En ret stor del af Euphoria-tolken er skrevet i Euphoria.
Euphoria har fire indbyggede datatyper:
atom (atom) et tal implementeret som et 31-bit signeret heltal eller 64-bit IEEE flydende deal . Euphoria skifter dynamisk mellem at repræsentere et tal som et heltal eller et flydende kommatal afhængigt af dets aktuelle værdi. sekvens (nummer, sekvens) et sæt bestående af flere elementer. Hvert element i sættet kan enten være et atom eller et tal . Antallet af rækkeelementer er ikke fast (kræver ikke obligatorisk erklæring). Programmet kan til enhver tid tilføje eller fjerne elementer efter behov. Hukommelsesallokering/deallokering håndteres automatisk ved hjælp af referencetælling. De enkelte elementer tilgås ved hjælp af indeksværdien i firkantede parenteser. Indekset for det første element er [1]. Elementer i indlejrede serier tilgås ved hjælp af yderligere indekser i firkantede parenteser, så X[3][2] refererer til det andet element i den indlejrede serie, som er det tredje element i serie X. Hvert element i serien er af typen objekt ( objekt) (se nedenfor). heltal (heltal) et atom, hvis værdier kun kan være heltal fra -1073741824 til 1073741823 (fra -2 30 til 2 30 -1). Heltalstypen er ofte mere effektiv i operationer end atomtypen , men kan ikke indeholde det samme værdiområde. Tegn gemmes som tal, for eksempel er ASCII 'A' det samme som 65. objekt (objekt) en generel datatype, der kan indeholde data af enhver af de anførte typer ( atom , sekvens eller heltal ), som ændres under programafvikling.Euphoria har ikke en speciel datatype for tegnstrenge . En streng er en række heltal , men strenge bruger den sædvanlige notation i dobbelte anførselstegn. Således i Euphoria-programmet
"ABC"svarende til:
{'A', 'B', 'C'}og tilsvarende:
{65,66,67}Ud over indbyggede typer kan et Euphoria-program arbejde med programmør-definerede datatyper, der specificerer et snævrere område af variable værdier inden for grænserne for indbyggede typer. Brugerdefinerede datatyper bruges hovedsageligt ved fejlretning af et program; efter fejlretning kan kontrol af disse typer deaktiveres af direktivet without type_check, mens kontrol af indbyggede typer altid forbliver aktiveret.
Følgende kode leder efter element x i en gruppe af elementer. Hvis et sådant element findes, fjernes det ved at sammenkæde alle elementer i gruppen før det med alle elementer efter det. Bemærk, at det første element i serien har indeks et [1], og dollartegnet $ som indeks angiver nummeret på det sidste element i serien.
funktion delete_item ( objekt x, sekvensgruppe ) heltal pos pos = find ( x, gruppe ) hvis pos > 0 så gruppe = gruppe[1 .. pos-1] & gruppe[pos+1 .. $] Afslut Hvis returnere gruppeslutfunktion _Kodelinje
group = group[1 .. pos-1] & group[pos+1 .. $]viser en måde at arbejde med serier på [23] . En række kan indeholde en gruppe elementer af enhver type, og de kan vælges og derefter kombineres ( sammenkædet ) med en anden række ved hjælp af indbyggede operatorer. Operationen med at vælge elementerne i en serie kaldes sektionen af serien.
Den næste ændring af det foregående eksempel erstatter det gamle element med det nye. Da variablerne gammel og ny er erklæret som objekter, kan de både være atomer og serier. Der kræves ingen typekontrol, da funktionen kan fungere på enhver datatype.
funktion replace_item( objekt gammelt, objekt nyt, sekvensgruppe ) heltal pos pos = find ( gammel, gruppe ) hvis pos > 0 så gruppe[pos] = ny Afslut Hvis returnere gruppeslutfunktion _Parametre til subrutinen videregives altid efter værdi, men i starten sendes kun en reference til objektet, og dets kopi oprettes kun, hvis subrutinen forsøger at ændre det, og derefter arbejder subrutinen med kopien og ikke med objektet sig selv (den såkaldte " copy-on-write "-metode) . Således kan parameteren ændre sig inde i subrutinen, mens det oprindelige objekt forbliver uændret. Eventuelt kan en modificeret kopi af objektet sendes som returværdi for funktionen.
Der er en modifikation af 2.5-versionen af Euphoria med engelske og russiske nøgleord (i CP866- kodning ) og et ubegrænset alfabet for identifikatorer, udviklet med deltagelse af Craig [24] . En tosproget mod til Euphoria version 3 er også under udvikling, i øjeblikket i alfa.
Phix [25] er en programmeringssprogskompiler udviklet af Pete Lomax baseret på RDS Euphoria-syntaks, men med følgende forskelle [26] [27] :
I øjeblikket har den aktuelle version 0.6.2 af compileren, udgivet den 10. juli 2011, en beta-status.
Julie Kemp. Glædelig kodning med OpenEuphoria // LinuxFormat (engelsk version). - November 2013. - Nr. 176 .
Programmeringssprog | |
---|---|
|