fbpx
维基百科

Euphoria语言

Euphoria是由加拿大安大略省多伦多Rapid Deployment Software公司Robert Craig开发的编程语言[2]。最初在Atari ST平台上开发但是没有公布[3], 第一个商业版本是在 16 位DOS平台的运行的[4],并且是专有软件。 2006 年,随着版本 3 的发布, Euphoria 成为开源软件[5]。 openEuphoria Group 继续管理和开发该项目[6]。 2010 年 12 月,openEuphoria Group 发布了 openEuphoria 的第 4 版[7]和它的吉祥物以及新的特性。 OpenEuphoria 目前支持WindowsLinuxmacOS伯克利软件包(BSD)的三种版本。

Euphoria
编程范型指令式编程
設計者Jeremy Cowgar, Robert Craig (original), Matt Lewis, Derek Parnell
實作者openEuphoria Group
发行时间1993年,​30年前​(1993
当前版本
  • 4.1.0 (2021年3月1日;穩定版本)[1]
型態系統static, dynamic
操作系统Cross-platform: Win32, Linux, macOS, FreeBSD, NetBSD, OpenBSD
許可證BSD
文件扩展名.e, .ex, .exw, .edb
網站openeuphoria.org
啟發語言
BASIC
影響語言
Phix

Euphoria 是一种通用的指令式解释型高级语言翻译器生成C源代码,并且支持GNU 编译器套装(GCC) 和Watcom C/C++ 编译器。而且,Euphoria 程序可以创建独立的可执行文件[8]。支持包括 Win32lib [9]wxWidgets[10]GTK+ [11]和IUP [12]在内的众多图形用户界面(GUI) 库。 Euphoria 有一个简单的内置数据库[13]和各种其他数据库的包装库[14]

概述 编辑

Euphoria 是一种通用的过程式编程,它通过多种方式努力使语言简洁、易读、适应快速开发、高效。

  • 简洁——它仅使用四种内置数据类型(见下文)并能够实现垃圾回收
  • 易读——它的语法倾向于使用简单的英语关键字表示结构而不是用标点符号来表示。
  • 快速开发——解释器有利于原型设计和增量开发。
  • 高效——高效的引用计数正确处理循环引用。

历史 编辑

Euphoria 是Robert Craig 作为一种从零开始开发编程语言的个人项目在Atari Mega-ST上创建的编程语言[2] [3]。 该语言的许多设计思想都来自于 Craig 在多伦多大学的计算机科学硕士论文[15]。 Craig 的论文深受John Backus函数式编程(FP) 语言方面工作的影响[15]

Craig 将他最初的 Atari 实现移植到 16 位DOS平台,并于 1993 年 7 月作为专有软件首次发布Euphoria 1.0[4]。最初的 Atari 实现被 Craig 描述为“原始”[16] 并且尚未公开发布。 Euphoria 由 Craig 通过他的公司快速部署软件 (RDS) 和网站 Rapideuphoria.com 继续开发和发布[2]。2006年10月,RDS 发布Euphoria 3版,并宣布今后 Euphoria 将在开源软件许可下免费分发[5]

RDS 继续开发 Euphoria,并于2007 年 8 月发布了 3.1.1 版[15][17]。随后,RDS 单方面停止了 Euphoria 的开发,openEuphoria Group 接管了正在进行的开发[6]。 openEuphoria Group 于 2010 年 12 月发布了版本 4,并公布了 openEuphoria 项目的新徽标和吉祥物[18]

3.1.1 版仍然是一个重要的里程碑版本,是 Euphoria 支持DOS的最后一个版本[19]

Euphoria 是End-User Programming with Hierarchical Objects for Robust Interpreted Applications 的首字母缩写词,尽管有人怀疑这是不一个缩略词[來源請求]

Euphoria 解释器最初是用C编写的。在2004年11月发布的Euphoria 2.5中[15],解释器分为两部分:前端解析器和后端解释器。前端现在是用 Euphoria 编写的(并与 Euphoria-to-C 转换器和 Binder 一起使用)。主要的后端程序和运行时库是用 C 编写的。

特征 编辑

Euphoria 的设计和开发实现以下设计目标和特性:

  • 易于学习且具有一致的高级结构(比BASIC语言更容易)
  • 实现 32 位内存以避免复杂的内存管理和大小寻址限制
  • 支持Debugging和运行时错误处理
  • 下标和类型检查
  • 松散和严格的变量类型
  • 面向对象编程(用户定义或其他)
  • 解释型语言,具有自动内存管理和垃圾回收
  • 异构集合类型(序列)
  • DOS图形库(Euphoria 直到版本 3.1.1一直支持)
  • 调试器
  • 综合数据库
  • 低级内存处理
  • 直接包装(或访问) C

执行模式 编辑

使用 编辑

Euphoria 旨在迅速促进不同类型的动态数据集处理,它尤其适用于字符串和图像处理。 Euphoria 已被用于人工智能数学研究、编程教学以及实现涉及数千个字符的字体[來源請求]。Euphoria 解释器的很大一部分是用 Euphoria 编写的。

数据类型 编辑

Euphoria 有两种基本数据类型:

Atom – 一个数字,用 31 位有符号整型或 64 位IEEE 浮点型实现。 Euphoria 根据当前值在整数和浮点表示之间动态变化。
Sequence – 具有零个或多个元素的数组,每个元素可能是一个Atom或另一个Sequence。Sequence中元素的数量不是固定的(即不必声明数组的大小)。程序可以在运行时根据需要添加或删除元素。内存分配-释放由引用计数自动处理。使用方括号括起来的索引值引用单个元素。Sequence中的第一个元素的索引为[1]。嵌入Sequence中的元素由附加带括号的索引值引用, X[3][2]指的是作为X的第三个元素的Sequence中包含的第二个元素。序列的每个元素都是一个Object类型(见下文) .

Euphoria 有两种额外的预定义数据类型:

Integer – 一种atom ,31位有符号整数,取值范围是 -1073741824 到 1073741823(即-230到230-1)。Integer数据类型比Atom数据类型更有效率,但和Atom的取值范围不同。字符存储为整数,例如,在编码ASCII'A'编码为65。
Object – 一种通用数据类型,它可能包含上述任何一种(即atomsequenceinteger ),并且可以在运行时更改为另一种类型。

没有字符串数据类型。字符串由Integer的Sequence表示。由于文字字符串在编程中非常常用,Euphoria 将双引号括起来的字符解释为整数序列。因此

"ABC" 

在解释器看来是与下列代码相同:

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

这与以下相同:

{65, 66, 67} 

Hello, World! 编辑

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

例子 编辑

程序注释以双连字符--开头并直至行尾。

以下代码在一组项目中查找旧项目。如果找到,它将移除这一结果并将后一个元素连接上前一个元素。请注意,Sequence中的第一个元素的索引为[1]$表示序列的长度(即元素总数)。

global delete_item(object old,Sequence group) integer pos -- 代码开始 -- pos =find(old,group) if pos > 0 then group = group[1 .. pos-1] & group[pos+1 .. $] end if return group end function 

对上述示例的以下修改将实现旧项目替换为新项目。由于变量oldnew已被定义为Object,它们可以是Atom或Sequence。不需要类型检查,因为该函数可以处理Sequence中任意类型的任意数据,并且不需要外部库。

global replace_item(Object old,Object new,Sequence group) integer pos -- 代码开始 -- pos =find(old,new) if pos > 0 then group[pos] = new end if return group end function 

此外,它不包含指针并能够自动检查下标,因此不存在函数越界访问。另外,Euphoria不需要显式分配或释放内存,因此没有内存泄漏的机会。

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

这行显示了一些Sequence处理特性。一个Sequence可能包含一组任何类型的数据,这个Sequence可以被切片(以获取Sequence中数据的子集),Sequence可以在表达式中链接并不需要特殊函数。

参数传递 编辑

程序中的参数总是值传递;不提供引用传递的特性。但是,参数允许在内部修改(例如函数内调用)。由于Sequence有自动写入时复制语法,因此可以非常有效地实现这一点。换句话说,当Sequence传递给函数时,最初只传递对它的引用,但在函数修改此Sequence時,會复制該Sequence,并且函数仅在副本更新数据。

类似的语言 编辑

参考文献 编辑

  1. ^ OpenEuphoria: 4.1.0 Latest Mar 1, 2021. 2021年3月1日 [2023年4月13日]. 
  2. ^ 2.0 2.1 2.2 . [2010-12-30]. (原始内容存档于2012-07-11). 
  3. ^ 3.0 3.1 . [2010-12-30]. (原始内容存档于2011-07-16). 
  4. ^ 4.0 4.1 . [2010-12-30]. (原始内容存档于2011-07-16). 
  5. ^ 5.0 5.1 . [2010-12-30]. (原始内容存档于2011-07-16). 
  6. ^ 6.0 6.1 openEuphoria group homepage. [2010-12-30]. (原始内容于2012-07-18). 
  7. ^ openEuphoria download page. [2010-12-30]. (原始内容于2012-06-18). 
  8. ^ 8.0 8.1 8.2 openEuhporia manual, Binding and Shrouding. [2011-01-07]. (原始内容于2012-04-16). 
  9. ^ Euphoria Win32Lib project at Sourceforge. [2010-12-30]. (原始内容于2012-01-14). 
  10. ^ Euphoria wxEuphoria project at Sourceforge. [2010-12-30]. (原始内容于2012-06-24). 
  11. ^ Euphoria GTK+ project at Sourceforge. [2010-12-30]. (原始内容于2012-07-08). 
  12. ^ Euphoria IUP Project by Jeremy Cowgar. [2010-12-30]. (原始内容于2012-07-23). 
  13. ^ openEuphoria manual, Database. [2010-12-30]. (原始内容于2012-03-14). 
  14. ^ openEuphoria wiki, Database Interfaces. [2011-01-02]. (原始内容于2012-03-14). 
  15. ^ 15.0 15.1 15.2 15.3 RapidEuphoria website, release notes. [2010-12-30]. (原始内容存档于2012-07-14). 
  16. ^ . [2010-12-30]. (原始内容存档于2011-07-16). 
  17. ^ . [2010-12-30]. (原始内容存档于2010-12-16). 
  18. ^ . [2010-12-30]. (原始内容存档于2011-07-27). 
  19. ^ openEuhporia manual, Platform Specific Issues. [2010-12-30]. (原始内容于2012-04-16). 
  20. ^ openEuphoria roadmap. [2010-12-30]. (原始内容于2012-03-14). 

外部链接 编辑

免费下载适用于各种平台、软件包、Windows IDE、Windows API 库、Linux 和 Windows 的跨平台 GTK3 包装器、图形库(DOS、OpenGL 等)的 Euphoria。

  • 官方网站OpenEuphoria
  • 官方网站RapidEuphoria
  • openEuphoria Wiki (页面存档备份,存于互联网档案馆
  • openEuphoria 论坛 (页面存档备份,存于互联网档案馆
  • OpenEuphoria · GitHub (页面存档备份,存于互联网档案馆)开发存储库。

euphoria语言, euphoria是由加拿大安大略省多伦多rapid, deployment, software公司robert, craig开发的编程语言, 最初在atari, st平台上开发但是没有公布, 第一个商业版本是在, 位dos平台的运行的, 并且是专有软件, 2006, 随着版本, 的发布, euphoria, 成为开源软件, openeuphoria, group, 继续管理和开发该项目, 2010, openeuphoria, group, 发布了, openeuphoria, 的第, 和它. Euphoria是由加拿大安大略省多伦多Rapid Deployment Software公司Robert Craig开发的编程语言 2 最初在Atari ST平台上开发但是没有公布 3 第一个商业版本是在 16 位DOS平台的运行的 4 并且是专有软件 2006 年 随着版本 3 的发布 Euphoria 成为开源软件 5 openEuphoria Group 继续管理和开发该项目 6 2010 年 12 月 openEuphoria Group 发布了 openEuphoria 的第 4 版 7 和它的吉祥物以及新的特性 OpenEuphoria 目前支持Windows Linux macOS和伯克利软件包 BSD 的三种版本 Euphoria编程范型指令式编程設計者Jeremy Cowgar Robert Craig original Matt Lewis Derek Parnell實作者openEuphoria Group发行时间1993年 30年前 1993 当前版本4 1 0 2021年3月1日 穩定版本 1 型態系統static dynamic操作系统Cross platform Win32 Linux macOS FreeBSD NetBSD OpenBSD許可證BSD文件扩展名 e ex exw edb網站openeuphoria wbr org啟發語言BASIC影響語言PhixEuphoria 是一种通用的指令式解释型高级语言 翻译器生成C源代码 并且支持GNU 编译器套装 GCC 和Watcom C C 编译器 而且 Euphoria 程序可以创建独立的可执行文件 8 支持包括 Win32lib 9 wxWidgets 10 GTK 11 和IUP 12 在内的众多图形用户界面 GUI 库 Euphoria 有一个简单的内置数据库 13 和各种其他数据库的包装库 14 目录 1 概述 2 历史 3 特征 4 执行模式 5 使用 6 数据类型 7 Hello World 8 例子 9 参数传递 10 类似的语言 11 参考文献 12 外部链接概述 编辑Euphoria 是一种通用的过程式编程 它通过多种方式努力使语言简洁 易读 适应快速开发 高效 简洁 它仅使用四种内置数据类型 见下文 并能够实现垃圾回收 易读 它的语法倾向于使用简单的英语关键字表示结构而不是用标点符号来表示 快速开发 解释器有利于原型设计和增量开发 高效 高效的引用计数正确处理循环引用 历史 编辑Euphoria 是Robert Craig 作为一种从零开始开发编程语言的个人项目在Atari Mega ST上创建的编程语言 2 3 该语言的许多设计思想都来自于 Craig 在多伦多大学的计算机科学的硕士论文 15 Craig 的论文深受John Backus在函数式编程 FP 语言方面工作的影响 15 Craig 将他最初的 Atari 实现移植到 16 位DOS平台 并于 1993 年 7 月作为专有软件首次发布Euphoria 1 0 4 最初的 Atari 实现被 Craig 描述为 原始 16 并且尚未公开发布 Euphoria 由 Craig 通过他的公司快速部署软件 RDS 和网站 Rapideuphoria com 继续开发和发布 2 2006年10月 RDS 发布Euphoria 3版 并宣布今后 Euphoria 将在开源软件许可下免费分发 5 RDS 继续开发 Euphoria 并于2007 年 8 月发布了 3 1 1 版 15 17 随后 RDS 单方面停止了 Euphoria 的开发 openEuphoria Group 接管了正在进行的开发 6 openEuphoria Group 于 2010 年 12 月发布了版本 4 并公布了 openEuphoria 项目的新徽标和吉祥物 18 3 1 1 版仍然是一个重要的里程碑版本 是 Euphoria 支持DOS的最后一个版本 19 Euphoria 是End User Programming with Hierarchical Objects for Robust Interpreted Applications 的首字母缩写词 尽管有人怀疑这是不一个缩略词 來源請求 Euphoria 解释器最初是用C编写的 在2004年11月发布的Euphoria 2 5中 15 解释器分为两部分 前端解析器和后端解释器 前端现在是用 Euphoria 编写的 并与 Euphoria to C 转换器和 Binder 一起使用 主要的后端程序和运行时库是用 C 编写的 特征 编辑Euphoria 的设计和开发实现以下设计目标和特性 易于学习且具有一致的高级结构 比BASIC语言更容易 实现 32 位内存以避免复杂的内存管理和大小寻址限制 支持Debugging和运行时错误处理 下标和类型检查 松散和严格的变量类型 面向对象编程 用户定义或其他 解释型语言 具有自动内存管理和垃圾回收 异构集合类型 序列 DOS图形库 Euphoria 直到版本 3 1 1一直支持 调试器 综合数据库 低级内存处理 直接包装 或访问 C库执行模式 编辑解释型语言 用于独立可执行文件或动态链接C 语言翻译器 E2C 字节码编译器和解释器 shrouder 8 Binder 8 将 Euphoria 源代码绑定到解释器以创建可执行文件 读取 求值 输出循环 REPL 版本在 openEuphoria计划中 20 使用 编辑Euphoria 旨在迅速促进不同类型的动态数据集处理 它尤其适用于字符串和图像处理 Euphoria 已被用于人工智能 数学研究 编程教学以及实现涉及数千个字符的字体 來源請求 Euphoria 解释器的很大一部分是用 Euphoria 编写的 数据类型 编辑Euphoria 有两种基本数据类型 Atom 一个数字 用 31 位有符号整型或 64 位IEEE 浮点型实现 Euphoria 根据当前值在整数和浮点表示之间动态变化 Sequence 具有零个或多个元素的数组 每个元素可能是一个Atom或另一个Sequence Sequence中元素的数量不是固定的 即不必声明数组的大小 程序可以在运行时根据需要添加或删除元素 内存分配 释放由引用计数自动处理 使用方括号括起来的索引值引用单个元素 Sequence中的第一个元素的索引为 1 嵌入Sequence中的元素由附加带括号的索引值引用 X 3 2 指的是作为X的第三个元素的Sequence中包含的第二个元素 序列的每个元素都是一个Object类型 见下文 Euphoria 有两种额外的预定义数据类型 Integer 一种atom 31位有符号整数 取值范围是 1073741824 到 1073741823 即 230到230 1 Integer数据类型比Atom数据类型更有效率 但和Atom的取值范围不同 字符存储为整数 例如 在编码ASCII中 A 编码为65 Object 一种通用数据类型 它可能包含上述任何一种 即atom sequence或integer 并且可以在运行时更改为另一种类型 没有字符串数据类型 字符串由Integer的Sequence表示 由于文字字符串在编程中非常常用 Euphoria 将双引号括起来的字符解释为整数序列 因此 ABC 在解释器看来是与下列代码相同 A B C 这与以下相同 65 66 67 Hello World 编辑puts 1 Hello World n 例子 编辑程序注释以双连字符 开头并直至行尾 以下代码在一组项目中查找旧项目 如果找到 它将移除这一结果并将后一个元素连接上前一个元素 请注意 Sequence中的第一个元素的索引为 1 表示序列的长度 即元素总数 global delete item object old Sequence group integer pos 代码开始 pos find old group if pos gt 0 then group group 1 pos 1 amp group pos 1 end if return group end function 对上述示例的以下修改将实现旧项目替换为新项目 由于变量old和new已被定义为Object 它们可以是Atom或Sequence 不需要类型检查 因为该函数可以处理Sequence中任意类型的任意数据 并且不需要外部库 global replace item Object old Object new Sequence group integer pos 代码开始 pos find old new if pos gt 0 then group pos new end if return group end function 此外 它不包含指针并能够自动检查下标 因此不存在函数越界访问 另外 Euphoria不需要显式分配或释放内存 因此没有内存泄漏的机会 group group 1 pos 1 amp group pos 1 这行显示了一些Sequence处理特性 一个Sequence可能包含一组任何类型的数据 这个Sequence可以被切片 以获取Sequence中数据的子集 Sequence可以在表达式中链接并不需要特殊函数 参数传递 编辑程序中的参数总是值传递 不提供引用传递的特性 但是 参数允许在内部修改 例如函数内调用 由于Sequence有自动写入时复制语法 因此可以非常有效地实现这一点 换句话说 当Sequence传递给函数时 最初只传递对它的引用 但在函数修改此Sequence時 會复制該Sequence 并且函数仅在副本更新数据 类似的语言 编辑Lua Phix 页面存档备份 存于互联网档案馆 Python REBOL Ruby参考文献 编辑 OpenEuphoria 4 1 0 Latest Mar 1 2021 2021年3月1日 2023年4月13日 2 0 2 1 2 2 RapidEuphoria homepage 2010 12 30 原始内容存档于2012 07 11 3 0 3 1 RapidEuphoria forum 2002 09 10 by Robert Craig 2010 12 30 原始内容存档于2011 07 16 4 0 4 1 RapidEuphoria forum 2006 10 18 16 44 by Robert Craig 2010 12 30 原始内容存档于2011 07 16 5 0 5 1 RapidEuphoria forum 2006 10 18 1 19 by Robert Craig 2010 12 30 原始内容存档于2011 07 16 6 0 6 1 openEuphoria group homepage 2010 12 30 原始内容存档于2012 07 18 openEuphoria download page 2010 12 30 原始内容存档于2012 06 18 8 0 8 1 8 2 openEuhporia manual Binding and Shrouding 2011 01 07 原始内容存档于2012 04 16 Euphoria Win32Lib project at Sourceforge 2010 12 30 原始内容存档于2012 01 14 Euphoria wxEuphoria project at Sourceforge 2010 12 30 原始内容存档于2012 06 24 Euphoria GTK project at Sourceforge 2010 12 30 原始内容存档于2012 07 08 Euphoria IUP Project by Jeremy Cowgar 2010 12 30 原始内容存档于2012 07 23 openEuphoria manual Database 2010 12 30 原始内容存档于2012 03 14 openEuphoria wiki Database Interfaces 2011 01 02 原始内容存档于2012 03 14 15 0 15 1 15 2 15 3 RapidEuphoria website release notes 2010 12 30 原始内容存档于2012 07 14 RapidEuphoria forum 2 Mar 1998 13 04 by Robert Craig 2010 12 30 原始内容存档于2011 07 16 RapidEuphoria news 2010 12 30 原始内容存档于2010 12 16 openEuphoria release notes 2010 12 30 原始内容存档于2011 07 27 openEuhporia manual Platform Specific Issues 2010 12 30 原始内容存档于2012 04 16 openEuphoria roadmap 2010 12 30 原始内容存档于2012 03 14 外部链接 编辑免费下载适用于各种平台 软件包 Windows IDE Windows API 库 Linux 和 Windows 的跨平台 GTK3 包装器 图形库 DOS OpenGL 等 的 Euphoria 官方网站 OpenEuphoria 官方网站 RapidEuphoria openEuphoria Wiki 页面存档备份 存于互联网档案馆 openEuphoria 论坛 页面存档备份 存于互联网档案馆 OpenEuphoria GitHub 页面存档备份 存于互联网档案馆 开发存储库 Using Euphoria 取自 https zh wikipedia org w index php title Euphoria语言 amp oldid 75601217, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。