多语言电影
让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到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查找工具”的软件,正如其标题和描述所示,提供了一站式的解决方案,允许用户查询超过150种常见和非常见编程语言的API。这样的全面覆盖意味着无论你是Java、Python、C++,还是Swift或...
"自制编程语言相关资料" 本资源摘要信息是关于自制编程语言的相关资料,涵盖了编程语言的设计、实现和使用等方面。下面是从给定的文件中提取的知识点: 编程语言设计 * 编程语言的设计是指根据一定的规则和规范...
在IT领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,但比机器语言更易读和编写。IBM-PC汇编语言编程工具是专为IBM个人计算机设计的,用于编写和调试用汇编语言编写的程序。这款软件提供了一个简洁的编辑...
根据提供的标题“编程语言原理(第10版)”及描述“编程语言原理(第10版 编程语言原理)”,我们可以推断出这本书主要讲述了编程语言的基础理论与实践应用,是学习和理解编程语言设计与实现的重要参考资料。...
总之,Zemax和它的编程语言ZPL为光学设计行业提供了一套强大的工具,能够帮助工程师们在设计光学系统时更加高效和灵活。通过本书的学习,读者不仅能够系统地掌握ZPL的语法和结构,还能够通过实例学习如何应用这些...
编程语言转换器是一种工具,它允许开发者将源代码从一种编程语言转换成另一种。这个工具在多语言开发环境中尤其有用,因为它能帮助程序员理解和协作不同编程语言编写的代码。在这个场景中,提到的编程语言包括C#、...
freepascal pascal 编程 编程工具 编程语言,wince下的编程工具。ppc编程下的工具
在计算机科学领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,每个指令对应一个特定的机器码。尽管汇编语言的直接操作性和效率很高,但它的语法通常较为复杂,对初学者来说可能不太友好。为了简化这一过程...
书中会详细讲解上下文无关文法(CFG)和巴科斯范式(BNF),这两种工具常用于描述编程语言的语法结构。读者将学习如何使用这些工具来定义和理解语言的语法规则,例如词法分析和语法分析的过程。 接着,**类型系统**...
标题中的“开发小工具,支持高亮显示各种编程语言的关键字”表明我们正在讨论一个用于文本编辑和代码阅读的应用程序,它可以突出显示不同编程语言的关键字。这种工具对于程序员和开发者来说非常有用,因为它可以提高...
《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件...
"Linux-超级速查表编程语言框架和开发工具的速查表" 是一个集大成的资源,它包含了多种编程语言、框架以及开发工具的关键信息,方便开发者快速查阅和学习。这份速查表旨在帮助用户在短时间内掌握核心概念,提高工作...
Go编程语言,也被称为Golang,是由Google在2007年发起的开源项目,旨在创造一种简单、高效且安全的编程语言。Go语言的设计灵感来源于C语言,但同时引入了垃圾回收、并发编程和类型安全性等现代特性,使得它在系统...
在IT领域,编程语言是构建软件、应用和服务的基础工具。编程语言集合涵盖了广泛的技术和工具,每种语言都有其特定的用途和优势。本资源包包含的两个文件,"JDBC API数据库编程实作教材ss.pdf" 和 "Testsadasd.rar",...
编程语言反编译工具集,辛辛苦苦下载来的,赶紧来个分享,聚集了一些语言编译工具
这些内容可以帮助我们理解编程语言不是静态不变的工具,而是随着技术进步和用户需求不断演化的过程。 最后,书中还可能提供一些个人层面的见解和经验分享,让我们了解到在技术世界中扮演重要角色的这些创始人们自己...
最简单最好用的汇编语言编程工具,还有部分学习汇编语言编程的代码
器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有...