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

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

转载于:https://www.cnblogs.com/yuguotianqing/p/4052150.html

编程语言不仅仅是工具而已相关推荐

  1. 关于编程语言和编程工具

    说说你了解过.使用过什么编程语言?比较下它们的优势. 答:我使用过C语言和Java语言. C语言的优势: C语言可以提供高效的性能和速度,因为它是一种直接操作内存的编程语言,这使得它成为开发高性能应用 ...

  2. 流行的14个机器学习编程语言框架和工具

    https://www.toutiao.com/a6662518600965816844/ O Reilly的一项新调查发现,主要从事技术.金融和医疗保健行业的1300多人透露了他们在公司使用的机器学 ...

  3. VS2017-多种编程语言的开发工具

    VS2017如此强大,不仅仅是C语言,Python,R,F#,ios,Android,Web,Node.js,Azure,Unity,HTML,JavaScript等开发都可以执行,大家快来使用它吧~ ...

  4. 编程语言只是一个工具

    PHP 最好的语言,没有之一 优点 快速启动一个项目,验证可行性 缺点 复杂的功能,很难实现 代码运行在一个个进程中,性能浪费严重 JAVA 最完善生态系统,没有之一 优点 就像英雄亚瑟,对抗路.打野 ...

  5. Computer:少儿编程—每个人都应该学习编程,它能教你如何思考—编程入门的简介(编程语言的特点种类开发工具对比人类语言)、编程应用、编程意义之详细攻略

    Computer:少儿编程-每个人都应该学习编程,它能教你如何思考-编程入门的简介(编程语言的特点&种类&开发工具&对比人类语言).编程应用.编程意义之详细攻略 导读:乔布斯说 ...

  6. 这场编程语言的发布会,不参加可太亏了!

    国人开发的编程语言? 兼容 Go 语言? 为数据科学而生? 以 Python 之形结合 Go 之心? 10 月 15 日·上海,这场名为「Go+ Together!Go+ 1.0 发布会暨 Go+ 开 ...

  7. 厉害了!国人开发的编程语言 Go+ 1.0 即将发布!

    关注公众号,发现CV技术之美 国人开发的编程语言? 兼容 Go 语言? 为数据科学而生? 以 Python 之形结合 Go 之心? 10 月 15 日·上海,这场名为「Go+ Together!Go+ ...

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

    编程语言不仅仅面向程序员.如果你是网络工程师.系统管理员.存储管理员或其他基础设施专业人员,知道一种(或两三种)编程语言,都能在工作中派上用场. 软件定义基础设施正在迅速进入数据中心,为了管理这种基础 ...

  9. python语言开发效率高吗_12种高效率热门编程语言,你会用几个?

    纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注.导读 编程语言不仅仅面向程序员.如果你是网络工程师.系统管理员.存储管理员或其他基础设施专业人员,知道一种(或两三种)编程语言 ...

最新文章

  1. Django----中间件详解
  2. git 撤销挂起的更改_Timer计时任务因系统时间的修改导致挂起解决方案
  3. uc3842开关电源电路图_UC3842 的原理及应用详解 (上)
  4. 清华计算机系和交叉信息学院,清华大学交叉信息研究院与计算机科学与技术系哪个..._考研_帮考网...
  5. U盘安装centos7
  6. 微信测试公众号-jssdk基本配置和使用-thinkphp
  7. linux之service命令
  8. 牛客小白月赛9 论如何出一道水题
  9. 文字处理(WORD/WP)中,布局与绘制必然分开
  10. cron表达式每一个小时_嵊泗新闻网丨两千小时的热爱——任春华:用志愿服务守护每一个笑容...
  11. 学生信息管理系统(php MySql),基于PHP学生信息管理系统设计系统设计(MySQL)(含录像)...
  12. 蔡学镛:架构师最重视的文档 转
  13. java计算费用类题目
  14. 大学到底教会了我们什么?
  15. unity新手小球走迷宫小游戏
  16. go牛刀小试:go的打点器ticker,可停止
  17. 此nvidia驱动程序与此windows版本不兼容,此图形的驱动程序无法找到兼容的驱动硬件
  18. signature=d363d26bda212f777fef81d270ecd42b,基于DNA-pooling全基因组重测序初步筛查CAD易感基因变异位点...
  19. csharp基础练习题:符号计数【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
  20. 室内主动导航系统在高铁站场景应用分析

热门文章

  1. BZOJ-1507 文本编辑器(Editor)
  2. 第三章:什么是组织结构
  3. SQL语句的解析过程
  4. 关键字:auto、static、register、const、volatile 、extern 总结
  5. groupby多个字段性能_SQL 性能优化
  6. mysql+基本代码_PHP+MySQL扎实基本功十句话_php
  7. oracle怎么截取long类型,Oracle 数据库中 Long 类型字段的读取
  8. c语言定义函数后引用,求助,函数在其他函数中使用时要先声明后调用,这个没声明就用了...
  9. html代码放进json数据,用json数据填充html表
  10. mw325r已断开服务器无响应,水星mw325r路由器恢复出厂设置之后上不了网怎么办?...