编程语言不仅仅是工具而已

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

多语言电影
让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到7、8个国家。每个演员都说着他们本地的语
言,没有字幕。谁能看懂这个阴谋的情节?恐怕只有少数几个懂得多语言的制片人能欣赏的了这个电影。我们大部分人都不会去看它。

多语言编程
我们的上一个Web应用项目里使用了6、7种的编程语言(Groovy, Java, HTML, CSS, SQL,
Ant)。如果我们感觉需要的话,还可以轻松的再增加更多的语言。再增加Clojure, Scala 或 Ruby/JRuby
并不会觉得不合适。一个懂得多种语言并有能力在多种语言间切换到程序员就被称作“多语言程序员”。

造成多语言项目产生的一个主要理由通常是“使用正确的工具干活儿”的概念。而这个“活儿”通常指的是一个大项目里的一些小任务,比如编译项目,访问数据库,
实现永不定型的业务逻辑。对于每个子任务,都有某个语言能够更出色的完成。除了人们对这种多语言的做法造成的隐藏成本存在争议外,还有一个对于“工具”这
个词的误解需要注意。

编程语言不是工具


果你的工具碰巧是一种编程语言,那你生产的源代码将和你的工具融合到一起。没有这个工具,你的产品完全不能运行。如果你认为编译后的二进制代码是“产
品”,你将没有可能针对它做“需求变更”,这是程序员最初可能会有的一个错误概念。很显然,程序员的生产的产品是“源代码”。编程语言并不是扮演工具的角色,从软件的性质上看,它应该是材料。工具可以扔掉,材料构成主体。

编程语言是产品材料
因为源代码依附于它的编程语言,它们是一个概念上的合体。所以,我建议,当我们在谈论编程语言时,应该改成“使用正确的材料来干活儿”的说法。相比起选择
是使用飞利浦的螺丝刀还是三菱的改锥这样的问题,我们修改后的说法会对编程语言的选择起到更深远的意义。材料需要持久的耐用,而工具大部分时间是丢在一
边。

但同时也是工具
在上面提到的我们做过的Web应用项目中,我们使用了很多工具。Grails是我们的框架,Jetty是我们的Web容
器,Spring
Framework提供了强大的服务,我们用IDEA把它们结合到一起。我们可以轻松的用Tomcat替换Jetty,或用Eclipse替换IDEA。
工具需要可替换,甚至是一次性的。

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

更多编程语言教程集合请登录e良师益友网。

时间: 2024-10-23 22:38:40

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

编程语言只是工具,所以不必执着?

今天和学长聊到编程语言的问题,他说编程语言只是一个工具,不必太局限于一种,数据结构和算法才是核心. 作为一名菜鸟,我想说一下菜鸟的观点.我认为,"编程语言只是一个工具",这句话是有前提的,那就是真的精通一门或一门以上的语言,能力已经达到了一定的级别,这时,语言已经无法成为限制了. 首先从工具这一点说起,因为不是专业的,解释会有偏差.我个人认为工具是完成某件事情的辅助,比如说我们出门要坐交通工具,但是没有交通工具单纯地走路也一样可以到达目的地.再比如说想和美国人交流要说英语,但是不会英语

高效率完成工作的12种热门编程语言,你会用几个?

编程语言不仅仅面向程序员.如果你是网络工程师.系统管理员.存储管理员或其他基础设施专业人员,知道一种(或两三种)编程语言,都能在工作中派上用场. 软件定义基础设施正在迅速进入数据中心,为了管理这种基础设施,用你自己编写的脚本定义网络或软件定义存储软件,会对工作很大的帮助. 此外,由于更多的企业采用开发运维的方法,许多公司力求加大使用自动化的力度.虽然现有的自动化工具可以为你处理其中一些工作,但是管理员能够自己编写脚本是个好主意.而实际上,一些雇主要求任何优秀的系统管理员或其他基础设施专业人员都要

准备踏入IT编程的学子们,你们第一门编程语言选谁? Are You Ready? Go!

Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门:如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见. 发表看法请在本贴评论,或者在我的新浪微博“北理工教师金旭亮(http://weibo.com/jinxuliang)”上相互沟通. 本文仅代表个人

软件应用加壳程序防止破解工具Themida免费下载地址

Themida是先进的微软视窗软件保护系统,专为了那些想保护自己的程序不被先进的反向工程防止反编译和黑客软件破解的软件开发者而开发的. 具体功能: 明白当中的风险 当创建了程序后,编译器就会将程序的原代码编译成几个机器码的文件.接下来,这些文件就会被衔接起来产生最终的软件档. 相似于程序的原代码在编译时被转换成机器码,有些工具也可以将已经编译成机器码的文件转变成汇编语言或更高级的编程语言.这些工具被称为反汇编器和反编译器. 一个软件破解者可以使用反汇编器或反编译器观察特定的程序是怎么运作和特定的

【原创】自己动手写工具----XSmartNote [Beta 3.0]

一.前面的话 在动笔之前,一直很纠结到底要不要继续完成这个工具,因为上次给它码代码还是一年多之前的事情,参考自己动手写工具----XSmartNote [Beta 2.0],这篇博文里,很多园友提出了宝贵的意见.最后决定吸收园友的建议把这个工具重构一下.首先给它换了个名 称,XSmartNote.因为各种自身的原因,并没有完成这个工具的基本功能,只是实现了基本的框架.最近有点时间就搞了一下,权当做打下基础.本来想用B/S结构来重新搞一下,毕竟园子里有很多大牛都是专注于ASP.NET MVC,但仔

我对编程语言的选择上存在困惑

对于选择计算机语言我真的很困惑. 我一直是个贪心的人.要学就学最好的东西.可是,问题是我学的懂吗?残酷的事实告诉我,我真的是普通人.我懒惰,我拖延,我自控力差.我有一大堆的偏见.对于自己的不喜欢的东西,完全不去思考为什么?可能是因为浪费时间去和自己不喜欢的东西扯淡,这好窝心.也许吧.我想问问我自己,应该怎么办? 问:我第一次学习的时候应该学哪一种语言? 答:对这些语言分别找一本经典书籍,然后,你觉得哪本书看下去,就学哪个. 问:我学的这个语言不够强力怎么办? 答:自己升级呗,我相信,当你发现你的

编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图):凭什么说"Python 太慢,Java 太笨拙,我讨厌 JavaScript"?[图]编程语言生而为何?我们人类从原始社会就是用语言表达自己,互相沟通.编程语言也是如此.它是一种人类和机器沟通的工具.就像人类语言一样,很多编程语言也有不同的方言.适用性和语境.有些语言甚至被认为已死,因为没有国家的官方讲这种语言.语言的核心与编程语言很相似:沟通.两者都是很伟大的沟通工具.你看待编程语言的方式理应如此:一种工具.随着敏

做iOS开发我为什么弃用Objective-C而选择RubyMotion?

Hendrik Mans是德国汉堡市的一名程序员,他从事iOS开发已有很长一段时间了,起初他一直使用Objective-C语言进行编程而忽视了RubyMotion.从前他认为 RubyMotion只是个介于Ruby和Objective-C之间的交叉编译器,但后来他发现自己完全错了,现在Hendrik已彻底改变了自己的想法. RubyMotion 关于Ruby语言 Hendrik以前不仅从未用过 Ruby,还没少嘲笑过它.而现在Hendrik却认为,Ruby绝对是一种有着清晰漂亮语法的编程语言.R

且看如何以精致的方式展现,解析和分析GitHub上语言的发展趋势

GitHut网站原文连接:http://githut.info/,其实这是一个非常简单的只有一个页面的网站.做的事情就是去通过GitHub Archive来获取到GitHub代码仓库的大数据然后进行分析,并把Github上用到的各种语言的信息整理出来并呈现给大家. GITHUT GitHut is an attempt to visualize and explore the complexity of the universe of programming languages used acr