Euphoria (programming language): Difference between revisions

Jump to navigation Jump to search
imported>Dgpop
History: copyediting + consistency with platform name in lede
 
imported>RapidDweller
 
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 remains an important milestone release, being the last version of Euphoria which supports the [[DOS]] platform.<ref name=oeplatform/>
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)
* [[DOS]] graphics library (Euphoria language versions up to and including 3.1.1)
* 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 to readily facilitate handling of dynamic sets of data of varying types and 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.
{{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.
; 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).
; 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.
; 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.
; 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!==
puts(1, "Hello, World!\n")
{{sxhl|puts(1, "Hello, World!\n")|phix}}


==Examples==
==Examples==
Line 126: Line 131:


==Comparable languages==
==Comparable languages==
* [[Lua (programming language)|Lua]]
* [[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=http://sourceforge.net/projects/win32libex|title=Euphoria Win32Lib project at Sourceforge|access-date=2010-12-30}}</ref>
{{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=http://sourceforge.net/projects/eugtk|title=Euphoria GTK+ project at Sourceforge|access-date=2010-12-30}}
{{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]]