`
参照物
  • 浏览: 12379 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

编程语言不只是工具

阅读更多
转载自IT学习社区:http://bbs.itcast.cn/forum-102-1.html

 

多语言电影

让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到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.zip

    这款名为“所有编程语言的API查找工具”的软件,正如其标题和描述所示,提供了一站式的解决方案,允许用户查询超过150种常见和非常见编程语言的API。这样的全面覆盖意味着无论你是Java、Python、C++,还是Swift或...

    《自制编程语言》相关资料1

    "自制编程语言相关资料" 本资源摘要信息是关于自制编程语言的相关资料,涵盖了编程语言的设计、实现和使用等方面。下面是从给定的文件中提取的知识点: 编程语言设计 * 编程语言的设计是指根据一定的规则和规范...

    IBM-PC汇编语言编程工具

    在IT领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,但比机器语言更易读和编写。IBM-PC汇编语言编程工具是专为IBM个人计算机设计的,用于编写和调试用汇编语言编写的程序。这款软件提供了一个简洁的编辑...

    编程语言原理(第10版

    根据提供的标题“编程语言原理(第10版)”及描述“编程语言原理(第10版 编程语言原理)”,我们可以推断出这本书主要讲述了编程语言的基础理论与实践应用,是学习和理解编程语言设计与实现的重要参考资料。...

    zemax编程语言.pdf

    总之,Zemax和它的编程语言ZPL为光学设计行业提供了一套强大的工具,能够帮助工程师们在设计光学系统时更加高效和灵活。通过本书的学习,读者不仅能够系统地掌握ZPL的语法和结构,还能够通过实例学习如何应用这些...

    汇编语言可视化编程工具

    在计算机科学领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,每个指令对应一个特定的机器码。尽管汇编语言的直接操作性和效率很高,但它的语法通常较为复杂,对初学者来说可能不太友好。为了简化这一过程...

    编程语言原理(第10版)

    书中会详细讲解上下文无关文法(CFG)和巴科斯范式(BNF),这两种工具常用于描述编程语言的语法结构。读者将学习如何使用这些工具来定义和理解语言的语法规则,例如词法分析和语法分析的过程。 接着,**类型系统**...

    开发小工具,支持高亮显示各种编程语言的关键字.

    标题中的“开发小工具,支持高亮显示各种编程语言的关键字”表明我们正在讨论一个用于文本编辑和代码阅读的应用程序,它可以突出显示不同编程语言的关键字。这种工具对于程序员和开发者来说非常有用,因为它可以提高...

    linux-超级速查表编程语言框架和开发工具的速查表

    "Linux-超级速查表编程语言框架和开发工具的速查表" 是一个集大成的资源,它包含了多种编程语言、框架以及开发工具的关键信息,方便开发者快速查阅和学习。这份速查表旨在帮助用户在短时间内掌握核心概念,提高工作...

    Go编程语言Go编程语言Go编程语言Go编程语言Go编程语言Go编程语言Go编程语言Go编程语言.zip

    Go编程语言,也被称为Golang,是由Google在2007年发起的开源项目,旨在创造一种简单、高效且安全的编程语言。Go语言的设计灵感来源于C语言,但同时引入了垃圾回收、并发编程和类型安全性等现代特性,使得它在系统...

    编程语言反编译工具集

    编程语言反编译工具集,辛辛苦苦下载来的,赶紧来个分享,聚集了一些语言编译工具

    汇编语言编程工具及几个学习代码

    最简单最好用的汇编语言编程工具,还有部分学习汇编语言编程的代码

    编程语言实现模式【高清版】

    器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有...

    编程语言的进代图,编程语言的发展历程。

    编程语言的演变是计算机科学史上的一个重要篇章,它揭示了技术如何从最初的原始形式发展到今天高度抽象和灵活的工具。让我们沿着这个时间线,深入探索编程语言的进化过程。 早在计算机诞生初期,程序员需要直接与...

    编程之魂:与27位编程语言创始人对话

    这些内容可以帮助我们理解编程语言不是静态不变的工具,而是随着技术进步和用户需求不断演化的过程。 最后,书中还可能提供一些个人层面的见解和经验分享,让我们了解到在技术世界中扮演重要角色的这些创始人们自己...

    E语言编程辅助工具源码

    这表明该辅助工具不仅仅是一个图片处理工具,还可能包含了代码编辑和调试的功能,对E语言的开发者来说是一站式的解决方案。 综上所述,这个名为"E辅助精灵.exe"的压缩包文件提供了一个全面的E语言开发辅助工具,...

    编程语言实现模式

    《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件...

    编程语言实现模式 带书签高清版

    这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如...

Global site tag (gtag.js) - Google Analytics