Icon (编程语言)

Icon是一门非常高级编程语言,有着“终点(goal)导向执行”特征和管理字符串和文本模式的很多设施。它与SNOBOL和SL5字符串处理语言有关。Icon不是面向对象的,但在1996年开发了叫做Idol的面向对象扩展并最终变成了Unicon

Icon
Panorama Icon logo Mondadori.png
编程范型多范型结构化, 面向文本
設計者Ralph Griswold
发行时间1977年,​44年前​(1977
穩定版本
9.5.1
( 2018年9月27日,​2年前​(2018-09-27
型態系統动态
網站www.cs.arizona.edu/icon
主要實作產品
Icon, Jcon
衍生副語言
Unicon
啟發語言
SNOBOL, SL5, ALGOL
影響語言
Unicon, Python[1], Goaldi

基本语法编辑

Icon语言衍生自ALGOL类的结构化编程语言,因而有着类似CPascal的语法。Icon最类似于Pascal的是,使用了:=语法的赋值,procedure关键字和类似的语法。在另一方面,Icon使用C风格的花括号来结构化执行句组,并且程序开始于运行叫做main的过程。

Icon还在很多方面分享了多数脚本语言(还有SNOBOL及SL5)的特征:变量不需要声明,类型是自动转换的,就说数字和字符串可以自动来回转换。另一个常见于很多而非全部的脚本语言的特征是,缺少行终止字符;在Icon中,行不结束于分号,而是结束于暗含的分号如果这么想有意义的话。

过程是Icon程序的基本建造块。尽管它们使用Pascal名称,但工效上更像C函数并可以返回值;在Icon中没有function关键字。

 procedure doSomething(aString)
   write(aString)
 end

生成器编辑

生成器是Icon中的关键概念。生成器可以定义为使用suspend关键字的过程:

 procedure findOnlyOdd(pattern, theString)
   every i := find(pattern, theString) do
     if i % 2 = 1 then suspend i
 end

这个例子在theString上循环,使用find来查找pattern。当找到一个位置并且它是奇数的时候,用suspend从这个函数返回这个位置。不同于returnsuspend记住这个生成器的状态,允许在下次迭代时在上次中止的地方恢复。

参见编辑

引用编辑

  • 权威著作是《The Icon Programming Language》(第三版),Griswold和Griswold著,ISBN 1-57398-001-3。可以下载为PDF文件 页面存档备份,存于互联网档案馆
  1. ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus. PEP 255 -- Simple Generators. 2001-12-21 [2008-09-05]. (原始内容存档于2020-06-05). 

外部链接编辑