编程语言不是工具

让我以一个免责声明来开始这篇文章:我绝对的认可懂得多种编程语言的价值,也认为“用正确的工具干活儿”是个好思想。但在编程工作中,人们对这个概念有个误解,我认为需要在这里指出一下。但请记住,对这个误解的诠释并不是来否定这个思想的。

多语言电影

让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到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。工具需要可替换,甚至是一次性的。

总结

“用正确的工具干活儿”这话并不能简单的应用到编程语言上,因为它们不是工具,而是材料。这就是为什么在一个项目中大量使用多语言是危险的。它很容易让项目变成一个混乱的“复合板“项目。

时间: 2025-01-02 04:48:51

编程语言不是工具的相关文章

金旭亮:如何选择你学的第一门编程语言?

说明:这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门;如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见. 最近,台湾知名技术专家蔡学镛先生写了一本<编程ING>,宣称"人人都能学会程序设计".作为一名IT教育工作者,这本书引发了我的兴趣,翻看之后,共鸣之处不少,结合国内计算机教育的现状,产生了颇多感触,

最棒的60个DevOps开源工具

编者按:DevOps越来越流行,越来越成为加快产品研发速度.提升团队效率的有效工具.现在,在开发.测试.部署.交付.维护以及监控分析等工作中,有越来越多的开源DevOps工具可以使用. 本文推荐了60款开源工具来帮助大家更好的实行DevOps. 你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的.这里列举了 60+ 款最棒的开源工具,可以帮助你很好的实行 DevOps. 开发工具 版本控制&协作开发 版本控制系统 Git Git 是一个开源的分布式版本控制系统,用以有效.

红帽更新开源软件开发工具

红帽(RHT)更新了其开源编程语言和开发工具,即熟知的红帽软件集合,目前可用的是1.1测试版本.这套开发套件(独立发布的)是其旗舰产品红帽企业版Linux(RHEL)的补充. 红帽软件集合发布于2013年秋季,其http://www.aliyun.com/zixun/aggregation/8437.html">目标群体是那些想要借助单一来源来部署最新的稳定版本的主导开源编程语言.数据库和工具集的开源软件开发者.红帽以订阅服务方式提供这组套件,承诺会比RHEL提供更多的软件更新.而通常情况

10款流行的Markdown编辑器,总有一款适合你

作为一个开源人,如果你不会使用Markdown语法,那你就OUT了!Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用. CSDN CODE平台的 帮助文档.项目README文件.文档项目甚至包括ISSUES和项目评论等都是支持Markdown语法的! 以下,我们收集了10个业界最受欢迎的Markdown编辑器,喜欢用Markdown的朋友都来看看吧!(以下排名仅为一家之言,请勿拍砖) 1.MarkdownPad  用户可以通过键盘快捷

Hadoop专业解决方案-第13章 Hadoop的发展趋势

一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,经过两周的努力,已经有啦初步的成果,目前第13章 Hadoop的发展趋势小组已经翻译完成,在此对:hbase-深圳-18361.旅人AQUARION表示感谢. 二.意见征集: 本章节由<Hadoop专业解决方案群:313702010>翻译小组完成,为小组校验稿,已经通过小组内部校验通过,特此面向网络征集意见,如果对本章节内容有任何异议,请在评论中加以说明,说明时,请标明行号,也可以以修订的方

到了 50 岁你还愿意做编程工作吗?

你真的愿意到了50岁还要做编程吗? "大规模.高强度的编程?我必须承认,这是年轻人的游戏." 不,这是傻子们的游戏(大部分都是男性,但不是100%).我今年55岁,从1981年开始就从事编程这个行业,如果从学校里算起,那是开始于1973年.我真真切切的认识到的一件事是,编程到死是值得的. 若问我到了55岁还要做编程吗?我的回答是:Yes.我仍然会喜欢编程中的各种挑战,解决复杂的问题,找到最优的解决方案.每天早上我都会浏览很多 的跟技术和编程相关的网站,看有什么新的技术动态.我知道,如果

GitHub 万星推荐:黑客成长技术清单

本文讲的是GitHub 万星推荐:黑客成长技术清单,最近两天,在reddit安全板块和Twitter上有个GitHub项目很火,叫"Awesome Hacking". "Awesome Hacking"在reddit上有超过四百个赞,但管理员后来认为不适合该板块(Awesome类项目没有新的内容),给了"reject". 这个项目由Twitter账号@HackwithGithub 维护,混Twitter的安全爱好者应该了解,在@HackwithG

从Oracle收购Sun 公司谈起

4 月20日,Sun 公司董事会通过决议,同意以每股9.5美元的价格将公司出售给Oracle.虽然还有一些必要的审查和手续,但是两家公司的合并,看起来是不可避免的了.一时间,很多IT领域的朋友众说纷纭,对Sun 公司各种产品和技术的前途提出种种预测.在这里我个人就Sun 公司软件部门的一些产品和技术(包括Solaris操作系统,Java编程语言,MySQL数据库等等)的未来发表一点看法.需要说明的是,虽然我个人在Sun 公司工作,但是并没有任何机会接触到公司决策层的任何相关资料.因此,在本文中出

大数据环境下的地税预算执行审计

看起来纷繁复杂的海量数据资料,通过分析,可以发现很多有用的信息,可以告诉我们很多隐藏在数字背后的秘密,并有效提高决策的准确性.淘宝根据购物记录可以推荐买家可能会喜欢的商品,餐厅根据用餐记录可以推荐消费者可能喜欢的菜单.大数据审计分析可以通过对相关领域长年累月形成的数据的分析,挖掘出某种群体行为的特点,提示某种社会现象的潜在规律,为政府制定政策提供关键依据,同时还可以评估政府政策的实施效果,从而帮助政府不断发现问题,改进问题.下面笔者结合自己从事的地税审计业务浅谈在大数据审计分析中的心得体会,以达