Arc
此条目翻译自其他语言维基百科,需要相关领域的编者协助校对翻译。 |
Arc是一种编程语言,LISP的方言之一,由保罗·格雷厄姆与罗伯特·泰潘·莫里斯设计,2008年发布第一个正式版本。
编程范型 | 多范型:函数式编程、过程式编程、反射 |
---|---|
设计者 | 保罗·格雷厄姆和罗伯特·泰潘·莫里斯 |
发行时间 | 2008年1月29日 |
类型系统 | 动态、强类型 |
操作系统 | 跨平台,在Racket编译器上运行 |
许可证 | Perl基金会的Artistic License 2.0 |
文件扩展名 | .arc |
网站 | http://arclanguage.org/ |
启发语言 | |
LISP | |
影响语言 | |
Anarki、HL |
历史
2001年,保罗·格雷厄姆宣布正在制作一个名为“Arc”的新的Lisp方言。多年以来,他已撰写数篇文章描述该语言的特点与目标,并且Y Combinator的一些内部项目已经用Arc编写,最受关注的是Hacker News网络论坛和新闻聚合程序。Arc本身以Racket编写。[2]
在论文“Being Popular”[3]中,格雷厄姆描述了他对该语言的一些目标。虽然许多目标非常普遍(“Arc应该是可hack”、“它应该是良好的函数库”),但也确实提供了一些细节。例如,他认为一门语言的简练很重要:
It would not be far from the truth to say that a hacker about to write a program decides what language to use, at least subconsciously, based on the total number of characters he'll have to type. If this isn't precisely how hackers think, a language designer would do well to act as if it were.
他还表示,一种语言只能实现少量的“公理”,即使这意味着语言可能没有大型组织想要的功能,比如面向对象程式设计(OO)。事实上,格雷厄姆认为OO是没有用的,因为它的方法和模式只是“好的设计”,并且他看到用于实现OO的语言特性部分存在谬误。[4][5]Arc于2008年推出,Graham表示其优势之一是其简洁性。[6]
Lisp程序员之间的一个争议是,该种语言的S-表达式是否及应在多大程度上应该用其他形式的语法来补充。格雷厄姆认为当纯粹的S表达式过于冗长的情况下,应该使用额外的语法,他说:“我不认为我们应该在宗教上反对引入语法到Lisp。”格雷厄姆也认为,应该给程序员一个好的性能分析器解决方案来解决效率问题。[7]
反响
在2008年发布后,Arc产生了多种反应,有人称它只是Lisp或Scheme的一个扩展,而不是一个独立的编程语言。其他人则称赞Arc拆去了Lisp非必要的东西。Arc发布不久后,它被移植到JavaScript,以及被一个基于Eclipse的IDE“Schemescript”支持。[8]
示例
Arc的Hello world代码:
(prn "Hello, World")
保罗·格雷厄姆(Paul Graham)使用了一个程序来说明Arc的简洁性。[9]它产生一个表单,包含一个字段,url"/said"。提交表单后会被带到一个带有“click here”链接的页面,该页面本身则会带回包含原来输入字段值的页面。
(defop said req
(aform [onlink "click here" (pr "you said: " (arg _ "foo"))]
(input "foo")
(submit)))
版本
官方版本
Arc的第一个公开发布版本出现于2008年1月29日,[10]以Racket(那时为“PLT-Scheme”)实现。该版本以.tar压缩档形式发布,包含Arc的Racket原始码。一份教程[11] and a discussion forum[12]同时可用。论坛使用也本身以Arc编写Hacker News程序。
非官方版本
由于官方Arc分支发展缓慢,部分Arc社区的成员已开启非官方代码库存放非官方的修订、扩展和库。其中之一是Anarki,[13] permitted[14] anyone to submit changes to the project. 社区管理的wiki[15]是比官方网站更好的资讯来源。[来源请求]
参考资料
- ^ Arc Forum: Tell Arc: Arc 3.2. Arclanguage.org. [2018-11-07]. (原始内容存档于2021-01-23).
- ^ Arc Programming Language. GitHub. [2017-04-11]. (原始内容存档于2017-05-07).
- ^ Graham, Paul. Being Popular. [2017-04-11]. (原始内容存档于2017-05-02).
- ^ Graham, Paul. Why Arc Isn't Especially Object-Oriented. [2013-01-23]. (原始内容存档于2013-06-26).
- ^ Graham, Paul. Arc FAQ. [2013-01-23]. (原始内容存档于2013-06-26).
- ^ Arc Makes Programs Shorter. Linux magazine. [2017-04-11]. (原始内容存档于2018-12-05). 参数
|newspaper=
与模板{{cite web}}
不匹配(建议改用{{cite news}}
或|website=
) (帮助) - ^ Five Questions About Language Design. [2017-04-11]. (原始内容存档于2017-04-20).
- ^ Web pioneer hits critics with Lisp gauntlet. The Register. UK. 2008-02-07 [2017-04-11]. (原始内容存档于2017-08-10).
- ^ Graham, Paul. Take the Arc Challenge. [2017-04-11]. (原始内容存档于2017-03-28).
- ^ Graham, Paul. Arc's Out. [2017-04-11]. (原始内容存档于2017-03-21).
- ^ Tutorial, Arc, Y combinator, [2017-04-11], (原始内容存档于2014-06-01).
- ^ Arc Forum. Arc language. [2017-04-11]. (原始内容存档于2011-07-25).
- ^ Anarki. Arc language. GitHub. [2017-04-11]. (原始内容存档于2017-09-14).
- ^ Announcement: anarki is no longer world-committable. Arc Forum. Arc language. [2017-04-11]. (原始内容存档于2015-03-07).
- ^ Arc Lang Wiki. Sites. Google. [2017-04-11]. (原始内容存档于2016-12-04).
- ^ Rainbow. Conanite. GitHub. [2017-04-11]. (原始内容存档于2018-06-11).
- ^ Arcadia. Kimtg. GitHub. [2017-04-11]. (原始内容存档于2018-06-11).