码农·Lisp面面观 - (EPUB全文下载)

文件大小:2.19 mb。
文件格式:epub 格式。
书籍内容:

版权信息
书名:码农 第13期
本书由北京图灵文化发展有限公司发行数字版。版权所有,侵权必究。
您购买的图灵电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
目录
编者的话
走在Lisp这条岔路上
专题:Lisp面面观
松本行弘谈Lisp元编程
Lisp, 何时用?
田春:走在Lisp的岔路上(图灵访谈)
Lisp之父约翰•麦卡锡——不走寻常路的常识逻辑学家
Clojure 为何不是面向对象的?
读《码农》 吐吐槽 还能赚银子!
人物
一位匠人的中州韵——专访Rime输入法作者佛振
九卦
你不知道的那个20%学说
鲜阅
Paul Graham:一百年后的编程语言
践行
让它工作,让它正确,让它更快
动手
两只水壶的Scheme程序
出版的未来
我们到底该卖字,还是卖内容?
书榜
看看大家都在看什么?
电子书榜
妙评
解决问题是一种通用技能 ——《咨询的奥秘》
封底
   
编者的话
走在Lisp这条岔路上
编者 / 李盼
Lisp是“list processing language”(表处理语言)的缩写。确如其名,Lisp中所有的数据都用表来表示。Lisp黑客早就明白数据结构灵活性的价值。他们在写程序的第一版时,往往会把所有事情都用列表的形式处理,这些最初版本可能效率低下得惊人。但是硅谷创业之父Paul Graham认为一百年后的程序员最需要的编程语言,就是可以让你毫不费力地写出程序第一版的语言。
重新回到原点,最初的Lisp是John McCarthy在其1960年发表的论文中定义的,只用区区7个函数和两个特殊form便定义出整个语言:atom、car、cdr、cond、cons、eq、quote、lambda和label。本期,Ruby之父Matz会带领我们重新审视一下Lisp的元编程。使用元编程技术,可以实现通常情况下无法实现的操作。确实,Lisp的最大危险就是它可能会把你宠坏,当你回过头去使用另一种语言时,总会有这样的感觉:它无法提供你所需要的灵活性。
Lisp吸引了计算机科学史上最聪明的一群头脑。但是,只有用其编写应用,才可以真正看到Lisp语言家族的真正价值。Lisp程序员田春走向了Lisp领域一条冷门的岔路:维护前人留下的古老商业Lisp软件。他认为为了不让有价值的东西失传,有些事情必须要做。同样具有极客精神的还有本期码农人物佛振,他是「Rime/中州韵」输入法引擎的开发者。Rime不仅仅是一个输入法,也是一个输入法算法框架,这一套算法还支持了许多种方言拼音的输入,如吴语、粤语,甚至中古汉语。
创造的过程,有苦有乐。对一个匠人来说,创作一件有情怀的作品,如果仅仅是为了现实目的,代码本身便缺乏灵气。对一位程序员来说,如果用Lisp编程仅仅是为了谋生,他就无法理解Lisp程序员对这种语言的热爱。看看岔路的风景,也是一种修行。
专题:Lisp面面观
松本行弘谈Lisp元编程
作者/ 松本行弘
Ruby语言发明者,亦是亚洲首屈一指的编程语言发明者。现兼任网络应用通信研究所(NaCl)研究员、乐天技术研究所研究员、Heroku首席架构师等。昵称“Matz”。讨厌东京,喜欢温泉。
Meta, Reflection
“元”这个词,是来自希腊语中表示“在……之间、在……之后、超过……”的前缀词 meta,具有超越、高阶等意思。从这个意思引申出来,在单词前面加上 meta,表示对自身的描述。例如,描述数据所具有的结构的数据,也就是关于数据本身的数据,被称为元数据(Metadata)。再举个比较特别的例子,小说中的角色如果知道自己所身处的故事是虚构的,这样的小说就被称为元小说(Metafiction)1

1 更常用的中文译法是“后设小说”,也叫“超小说”、“自反小说”。
综上所述,我们可以推论,所谓元编程,就是“用程序来编写程序”的意思。那么,用程序来编写程序这件事有什么意义吗?
像 C 这样的编程语言中,语言本身所提供的数据,基本上都是通过指针(地址)和数值来表现的。在语言层面上虽然有数组和结构体的概念,但经过编译之后,这些信息就丢失了。
不过,“现代派”的语言在运行的时候,还会保留这样一些信息。例如在 C++ 中,一个对象是知道自己的数据类型的,通过这个信息,可以在调用虚拟成员函数时,选择与自己的类型(类)相匹配的函数。在 Java 中也是一样。
像这样获取和变更程序本身信息的功能,被称为反射(Reflection)。将程序获取自身信息的行为,用“看着(镜子中)反射出的身影来反省自己”这样的语境来表达,听起来还挺文艺的呢。
Lisp
Lisp 可以说是这种语言的老祖宗。Lisp 的历史相当悠久,其诞生可以追溯到 1958 年。说起 1958 年,在那个时候其他的编程语言几乎都还没有出现呢。在那个时代已经存在,并且现在还依然健在的编程语言,也就只有 FORTRAN(1954 年)和 COBOL(1959 年)而已了吧。Lisp 作为编程语言的特殊之处,在于它原本并不是作为一种编程语言,而是作为一种数学计算模型设计出来的。Lisp 的设计者约翰·麦卡锡,当时并没有设想过要将其用作一种计算机语言。麦卡锡实验室的一名研究生——史蒂芬·罗素,用 IBM 704 的机器语言实现了原本只是作为计算模型而编写的万能函数 eval,到这里,Lisp 才真正成为了一种编程语言。
Lisp 在编程语言中可以说是类似 OOPArts 2
一样的东西。编程语言的历史是由机器语言、汇编语言开始,逐步发展到 FORTRAN、COBOL 这样的“高级语言”的。而在这样的历史中,作为最古老语言之一的 Lisp,居然一下子具备了超越当时时代的很多功能。
2 Out Of Place Artifacts 的缩写,意思是“与时代不符的(使用了先进技术的)遗物” ............

书籍插图:
书籍《码农·Lisp面面观》 - 插图1
书籍《码农·Lisp面面观》 - 插图2

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » 码农·Lisp面面观 - (EPUB全文下载)