Euphoria (programming language): Difference between revisions
Jump to navigation
Jump to search
imported>Dgpop →History: copyediting + consistency with platform name in lede |
imported>RapidDweller added Category:University of Toronto software using HotCat |
||
| Line 1: | Line 1: | ||
{{Short description|Imperative, procedural programming language}} | |||
{{Infobox programming language | {{Infobox programming language | ||
|name = Euphoria | |name = Euphoria | ||
| Line 15: | Line 16: | ||
|influenced = [http://phix.x10.mx Phix] | |influenced = [http://phix.x10.mx Phix] | ||
|website = {{URL|openeuphoria.org}} | |website = {{URL|openeuphoria.org}} | ||
|screenshot = Euphoria editor 2.PNG | |||
|screenshot caption = Official editor for Euphoria | |||
}} | }} | ||
| Line 35: | Line 38: | ||
RDS continued to develop Euphoria, culminating with the release of version 3.1.1 in August, 2007.<ref name=renotes/><ref name=renews/> Subsequently, RDS ceased unilateral development of Euphoria and the openEuphoria Group<ref name=oehomepage/> took over ongoing development. The openEuphoria Group released version 4 in December, 2010<ref name=oenotes/> along with a new logo and mascot for the openEuphoria project. | RDS continued to develop Euphoria, culminating with the release of version 3.1.1 in August, 2007.<ref name=renotes/><ref name=renews/> Subsequently, RDS ceased unilateral development of Euphoria and the openEuphoria Group<ref name=oehomepage/> took over ongoing development. The openEuphoria Group released version 4 in December, 2010<ref name=oenotes/> along with a new logo and mascot for the openEuphoria project. | ||
Version 3.1.1 | Version 3.1.1 is the last version of Euphoria which supports MS-DOS.<ref name=oeplatform/> | ||
Euphoria is an [[acronym]] for ''End-User Programming with Hierarchical Objects for Robust Interpreted Applications'' although there is some suspicion that this is a [[backronym]].{{according to whom|date=August 2013}} | Euphoria is an [[acronym]] for ''End-User Programming with Hierarchical Objects for Robust Interpreted Applications'' although there is some suspicion that this is a [[backronym]].{{according to whom|date=August 2013}} | ||
| Line 52: | Line 55: | ||
* Interpreted, with automatic memory management and [[Garbage collection (computer science)|garbage collection]] | * Interpreted, with automatic memory management and [[Garbage collection (computer science)|garbage collection]] | ||
* Heterogeneous collection types (sequences) | * Heterogeneous collection types (sequences) | ||
* | * MS-DOS graphics library (language versions through 3.1.1) | ||
* Debugger | * Debugger | ||
* Integrated database system | * Integrated database system | ||
| Line 66: | Line 69: | ||
==Use== | ==Use== | ||
Euphoria is designed | {{Unreferenced section|date=September 2025}} | ||
Euphoria is designed handle dynamic sets of data of varying types. It is particularly useful for string and image processing. Euphoria has been used in [[artificial intelligence]] experiments, the study of [[mathematics]], for teaching programming, and to implement fonts involving thousands of characters.{{citation needed|date=June 2015}} A large part of the Euphoria interpreter is written in Euphoria. | |||
==Data types== | ==Data types== | ||
Euphoria has two basic data types: | Euphoria has two basic data types: | ||
: | ; Atom : A number, implemented as a 31-bit signed [[integer]] or a 64-bit [[IEEE floating-point standard|IEEE floating-point]]. Euphoria dynamically changes between integer and floating point representation according to the current value. | ||
: | ; Sequence : A [[Array data type|vector]] (array) with zero or more elements. Each element may be an ''atom'' or another ''sequence''. The number of elements in a sequence is not fixed (i.e., the size of the vector/array does not have to be declared). The program may add or remove elements as needed during run-time. Memory allocation-deallocation is automatically handled by reference counting. Individual elements are referenced using an index value enclosed in square brackets. The first element in a sequence has an index of one [1]. Elements inside embedded sequences are referenced by additional bracked index values, thus X[3][2] refers to the second element contained in the sequence that is the third element of X. Each element of a sequence is an ''object'' type (see below). | ||
Euphoria has two additional data types predefined: | Euphoria has two additional data types predefined: | ||
: | ; Integer : An ''atom'', restricted to 31-bit signed [[integer]] values in the range {{val|-1073741824}} to {{val|1073741823}} ({{tmath|-2^{30} }} to {{tmath|2^{30}-1}}). ''Integer'' data types are more efficient than the ''atom'' data types, but cannot contain the same range of values. Characters are stored as integers, e.g., coding [[ASCII]]-'A' is exactly the same as coding 65. | ||
: | ; Object : A generic datatype which may contain any of the above (i.e., ''atom'', ''sequence'' or ''integer'') and which may be changed to another type during run-time. | ||
There is no character [[String (computer science)|string]] data type. Strings are represented by a ''sequence'' of ''integer'' values. However, because literal strings are so commonly used in programming, Euphoria interprets double-quote enclosed characters as a sequence of integers. Thus | There is no character [[String (computer science)|string]] data type. Strings are represented by a ''sequence'' of ''integer'' values. However, because literal strings are so commonly used in programming, Euphoria interprets double-quote enclosed characters as a sequence of integers. Thus | ||
| Line 85: | Line 90: | ||
==Hello, World!== | ==Hello, World!== | ||
{{sxhl|puts(1, "Hello, World!\n")|phix}} | |||
==Examples== | ==Examples== | ||
| Line 126: | Line 131: | ||
==Comparable languages== | ==Comparable languages== | ||
* [[ | * [[Lua]] | ||
* [http://phix.x10.mx Phix] | * [http://phix.x10.mx Phix] | ||
* [[Python (programming language)|Python]] | * [[Python (programming language)|Python]] | ||
| Line 161: | Line 166: | ||
<ref name=win32lib> | <ref name=win32lib> | ||
{{cite web|url= | {{cite web|url=https://sourceforge.net/projects/win32libex|title=Euphoria Win32Lib project at Sourceforge|access-date=2010-12-30}}</ref> | ||
<ref name=wxeuphoria> | <ref name=wxeuphoria> | ||
| Line 168: | Line 173: | ||
<ref name=GTK> | <ref name=GTK> | ||
{{cite web|url= | {{cite web|url=https://sourceforge.net/projects/eugtk|title=Euphoria GTK+ project at Sourceforge|access-date=2010-12-30}} | ||
</ref> | </ref> | ||
| Line 204: | Line 209: | ||
==External links== | ==External links== | ||
{{commons category|Euphoria}} | {{commons category|Euphoria (programming language)}} | ||
Free downloads of Euphoria for the various platforms, packages, Windows IDE, Windows API libraries, a cross-platform GTK3 wrapper for Linux and Windows, graphics libraries (DOS, OpenGL, etc.). | Free downloads of Euphoria for the various platforms, packages, Windows IDE, Windows API libraries, a cross-platform GTK3 wrapper for Linux and Windows, graphics libraries (DOS, OpenGL, etc.). | ||
* {{Official website|openeuphoria.org}} OpenEuphoria | * {{Official website|openeuphoria.org}} OpenEuphoria | ||
| Line 223: | Line 228: | ||
[[Category:BASIC programming language family]] | [[Category:BASIC programming language family]] | ||
[[Category:Formerly proprietary software]] | [[Category:Formerly proprietary software]] | ||
[[Category:University of Toronto software]] | |||