从众多语言中,挑出本书包含的几门语言,这一过程也许不像你想得那么复杂。我们只不过发了些调查问卷,向本书的潜在读者请教了一番。调查数据汇总上来时,有八门语言入选希望最大。不过,我先是把JavaScript“踢”了出去,因为它实在是过于热门了,取而代之的是原型语言中热门程度仅次于JavaScript的Io。随后,我又把Python“踢”了出去,因为我只想给面向对象语言一个名额,而Ruby的票数多于Python。同时,这也给一个出人意料的候选者让出了位置——名单上位列前十的Prolog。下面,我给出成功入围本书的最终名单和挑选它们的理由
- Ruby。这门面向对象语言高票当选,因为它不仅好用,而且好读。我曾经考虑过不介绍任何一门面向对象语言,但我又想在其他编程范型与面向对象编程之间作一些比较,因此,至少介绍一门面向对象语言还是有必要的。相比于大多数程序员的日常用法,我想把它挖掘得更深入一些,以揭示设计者的良苦用心。我最终决定重点介绍Ruby元编程(metaprogramming),因为它可以扩展Ruby的语法。对于Ruby榜上有名的结果,我还是相当认可的。
- Io。和Prolog一样,Io也是本书颇具争议的语言。它虽与商业成功无缘,但其兼具简单性和语法一致性的并发结构,却是十分重要的思想。它的最简语法(minimal syntax)功能强大,与Lisp的相似性也颇能给人留下几分印象。Io不仅和JavaScript一样同为原型语言,还有着独一无二、韵味无穷的消息分发机制,因此在众多编程语言之中,它也占有小小的一席之地。
- Prolog。没错,我知道Prolog年事已高,但它仍然力大无穷。它能轻松解出数独问题,这不禁让我大开眼界。而且用Java或C语言时,有些难题我殚精竭虑方能解决,用它却能干净利落地搞定。承蒙Erlang的发明者Joe Armstrong出手相助,我得以深刻体会到Prolog之妙。同时,也正是深受Prolog影响,Erlang才得以问世。如果你此前从未用过Prolog,我保证,它定会带给你惊喜。
- Scala。作为运行于Java虚拟机上的新一代语言,Scala为Java系统引入了强大的函数式思想,而且也并未丢弃面向对象编程。回顾历史,我发现C++和它有着惊人的相似之处,因为从过程式编程过渡到面向对象编程期间,C++同样起到了举足轻重的作用。当你真正融入Scala社区之后,你就会明白,为什么对于函数式语言程序员来说,Scala是异端邪说,而对于Java开发者来说,Scala是天降福音。
- Erlang。作为名单上历史最悠久的语言之一,Erlang不仅是一门函数式语言,而且在并发、分布式编程、容错等诸多方面都有着优异表现,真是想不火都难。CouchDB(新兴的基于云的数据库)的创始人就选择了Erlang,并且义无反顾地一直用它,只要花上点时间了解这门分布式语言,你就会明白原因所在。在Erlang帮助下,设计带有并发、分布式、容错等特征的应用程序将变得无比简单。
- Clojure。这又是一门Java虚拟机语言,但正是这门Lisp方言,彻底颠覆了我们在Java虚拟机上并发编程的思考方式。它是本书唯一在版本数据库中使用同一种策略管理并发的语言。作为Lisp方言,Clojure或许拥有本书所有语言中最灵活的编程模型,因此绝不缺乏号召力。与其他Lisp方言不同的是,它不会带那么多括号 ,还有众多Java库和在各平台上的广泛部署作为坚强后盾。
- Haskell。它是本书唯一的纯函数式语言,这也意味着,它根本不存在可变状态:只要使用相同的输入参数调用相同的函数,就会返回相同的输出。在所有强类型语言中,Haskell拥有最令人称羡的类型模型。和Prolog一样,它也需要你花一些时间理解,但你得到的回报绝对物超所值。
如果名单上没有你钟爱的语言,我深感抱歉。老实说,还真有语言狂热分子给我发过好几封恐吓信。在本节开始提到的民意调查中,我们总共列出了几十门语言。我挑的这几门语言未必是其中最出色的,但它们特点突出、个性鲜明,都具有重要的学习价值。
摘自《七周七语言》
分享到:
相关推荐
4、选择多语言包文件所在位置(比如E:\langpacks\en-us),并选中“英语(美国)”。 5、点击“下一步”进行安装 6、安装成功之后,进入控制面板->语言,点击English(United States) 的选项(如果没有这个语言,...
解压密码:www.sanye.cx 资源介绍:取选中文本易语言模块源码例程程序调用API函数取选中文本。点评:取选中文本易语言模块源码不通过剪贴板取选中文本,可取后台选中文本。资源作者:易语言源码资源界面:资源下载:
在Struts中几种情况可以使标签初始就是选中的,Formbean里面该Property的值设为 1.on 、2.yes 、3.true 这三种情况都是可以实现默认选中的。 注:如果不选中,最好把Property的设置为””,因为在Action中得到...
checkBox分别处理选中与不选中checkBox分别处理选中与不选中
本文提供了三种取消选中radio的方式,代码示例如下: 本文依赖于jQuery,其中第一种,第二种方式是使用jQuery实现的,第三种方式是基于JS和DOM实现的。 代码如下: <!DOCTYPE HTML> <html> <head> <...
使用富文本TInMCE默认为英文,设置语言需要导入相应的语言包 , 发现其它的语言包下载需要积分,翻译不全以及是很老的版本了。特此上传一份供大家使用, 导入格式如下: tinymce.init({ selector: '#textID', // ...
checkbox多项选中及取消选中
易语言单选框选择框选中状态源码,单选框选择框选中状态,SendMessageA,CheckRadioButton,GetDlgCtrlID,CheckDlgButton
opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型...
C# treeview复选框选中问题 父节点选中 相应的子节点也被选中 父节点不选中 子节点全部不选中;子节点全部选中 父节点也被选中
在原html上可能浏览不到想要的功能,需要放到程序上运行才可以
给GridView设置默认选中效果 及 选中后的效果
如何获取对话框中,哪一个单选按钮被选中,通过弹出框提示
TreeView的CheckBoxs的第三种状态(有部分子结点被选中),TreeView的CheckBoxs的第三种状态(有部分子结点被选中)。
ListCtrl 控件,选中,取消选中,得到选中值。简单示例,代码清晰,操作简单,完成针对功能。
基于asp语言,用来判断radio控件是否被选中
//JS实现treeview中选中父节点,子节点也选中,如果子节点全部选中,自动选中父节点 //仅支持TreeView //调用方法 TreeView.Attributes.Add("onclick", "OnTreeNodeChecked()");
主要介绍了js实现下拉列表选中某个值的方法,涉及JavaScript针对select下拉列表选择操作的相关技巧,需要的朋友可以参考下
本文将通过radiogroup和radiobutton实现组内信息的单选, 其中radiogroup就是将radiobutton进行分组,同一管理和控制 同时实现默认选中情况,获取默认值.