多语言电影
让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到7、8个国家。每个演员都说着他们本地的语 言,没有字幕。谁能看懂这个阴谋的情节?恐怕只有少数几个懂得多语言的制片人能欣赏的了这个电影。我们大部分人都不会去看它。
多语言编程
我们的上一个Web应用项目里使用了6、7种的编程语言(Groovy, Java, HTML, CSS, HQL/SQL, Ant)。如果我们感觉需要的话,还可以轻松的再增加更多的语言。再增加Clojure, Scala 或 Ruby/JRuby 并不会觉得不合适。一个懂得多种语言并有能力在多种语言间切换到程序员就被称作“多语言程序员”。
造成多语言项目产生的一个主要理由通常是“使用正确的工具干活儿”的概念。而这个“活儿”通常指的是一个大项目里的一些小任务,比如编译项目,访问数据 库,实现永不定型的业务逻辑。对于每个子任务,都有某个语言能够更出色的完成。除了人们对这种多语言的做法造成的隐藏成本存在争议外,还有一个对于“工 具”这个词的误解需要注意。
编程语言不只是工具
如果我们在一个简单或复杂传统工程中使用一个工具,就比如用锤子把木片钉成橱柜,或用起子拆解计算机,当你完成了这个“活儿”后,工具会被你丢在一旁。你 的最终产品(一个新的木橱柜或一堆电路板)并不包括工具。大多时候,当你的活儿干完后,你的产品上不会再有“变更请求”。
如果你的工具碰巧是一种编程语言,那你生产的源代码将和你的工具融合到一起。没有这个工具,你的产品完全不能运行。如果你认为编译后的二进制代码是“产 品”,你将没有可能针对它做“需求变更”,这是程序员最初可能会有的一个错误概念。很显然,程序员的生产的产品是“源代码”。编程语言并不是扮演工具的角 色,从软件的性质上看,它应该是材料。工具可以扔掉,材料构成主体。
编程语言是产品材料
因为源代码依附于它的编程语言,它们是一个概念上的合体。所以,我建议,当我们在谈论编程语言时,应该改成“使用正确的材料来干活儿”的说法。相比起选择 是使用飞利浦的螺丝刀还是三菱的改锥这样的问题,我们修改后的说法会对编程语言的选择起到更深远的意义。材料需要持久的耐用,而工具大部分时间是丢在一 边。
但它们也是工具
在上面提到的我们做过的Web应用项目中,我们使用了很多工具。Grails是我们的框架,Jetty是我们的Web容器,Spring Framework提供了强大的服务,我们用IDEA把它们结合到一起。我们可以轻松的用Tomcat替换Jetty,或用Eclipse替换IDEA。 工具需要可替换,甚至是一次性的。
总结
“用正确的工具干活儿”这话并不能简单的应用到编程语言上,因为它们不是工具,而是材料。这就是为什么在一个项目中大量使用多语言是危险的。它很容易让项目变成一个混乱的“复合板“项目。
相关推荐
所有编程语言的API查找工具-推荐一款能查询所有编程语言的API 还支持苹果操作系统
VB精简版下载,VB编程语言开发工具精简版,VB编程语言开发工具下载
freepascal pascal 编程 编程工具 编程语言,wince下的编程工具。ppc编程下的工具
《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件...
编程语言反编译工具集,辛辛苦苦下载来的,赶紧来个分享,聚集了一些语言编译工具
最简单最好用的汇编语言编程工具,还有部分学习汇编语言编程的代码
器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有...
Julia编程语言的特点: 1,Julia侧重于统计计算和科学计算,在统计计算、科学计算方面的性能经过测试比较接近C; 2,同时作为一种新的动态编程语言,在代码编写效率和运行调试等方面,相比C有很大的优势。 PS.这个...
编程语言转换器 编程语言转换器 C# c++ java VB 相互转换的工具
tc语言编程工具 tc语言编程工具 turboc
可将程序中的特定批注转换成为说明文件。通常我们在写程序时,或多或少都会写上批注,但是对于其它人而言,要直接探索程序里的批注,与打捞铁达尼号同样的辛苦。大部分有用的批注都是属于针对函式,类别等等的说明。...
开发小工具,支持高亮显示各种编程语言的关键字.
这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如...
tools, D 编程语言编译器的辅助工具 工具 这个存储库托管了各种在各种构建任务中使用DMD重新分发或者内部使用的工具。程序范围说明catdoc生成连接Ddoc文件。已经更改内部更改日志生成器。chmodzip生成ZIP
超级速查表 - 编程语言、框架和开发工具的速查表,单个文件包含一切你需要知道的东西
各学科编程开发工具及源码云盘链接:jdk、python、Android、C++、iOS、Java、PHP、H5、Web前端。
Ada是一种表现能力很强的通用程序...它是迄今为止 最复杂,最完备的软件工具。 Ada语言是 美国国防部指定的 唯一的一种可用于 军用系统开发的语言,我国军方也将Ada做为军内开发标准(GJB 1383《程序设计语言Ada》)。
手机上的C#语言编程工具 pcsharp ppc c#编程 手机编程 可以直接在ppc上边编写c#