编程语言不仅仅是工具而已
我绝对的认可懂得多种编程语言的价值,也认为“用正确的工具干活儿”是个好思想。但在编程工作中,人们对这个概念有个误解,我认为需要在这里指出一下。但请记住,对这个误解的诠释并不是来否定这个思想的。
多语言电影
让我从一个古怪的类比开始:假设这有一个电影,是关于一个政治阴谋,涉及到一系列复杂的国际冒险,冲突波及到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
编程语言不仅仅是工具而已相关推荐
- 关于编程语言和编程工具
说说你了解过.使用过什么编程语言?比较下它们的优势. 答:我使用过C语言和Java语言. C语言的优势: C语言可以提供高效的性能和速度,因为它是一种直接操作内存的编程语言,这使得它成为开发高性能应用 ...
- 流行的14个机器学习编程语言框架和工具
https://www.toutiao.com/a6662518600965816844/ O Reilly的一项新调查发现,主要从事技术.金融和医疗保健行业的1300多人透露了他们在公司使用的机器学 ...
- VS2017-多种编程语言的开发工具
VS2017如此强大,不仅仅是C语言,Python,R,F#,ios,Android,Web,Node.js,Azure,Unity,HTML,JavaScript等开发都可以执行,大家快来使用它吧~ ...
- 编程语言只是一个工具
PHP 最好的语言,没有之一 优点 快速启动一个项目,验证可行性 缺点 复杂的功能,很难实现 代码运行在一个个进程中,性能浪费严重 JAVA 最完善生态系统,没有之一 优点 就像英雄亚瑟,对抗路.打野 ...
- Computer:少儿编程—每个人都应该学习编程,它能教你如何思考—编程入门的简介(编程语言的特点种类开发工具对比人类语言)、编程应用、编程意义之详细攻略
Computer:少儿编程-每个人都应该学习编程,它能教你如何思考-编程入门的简介(编程语言的特点&种类&开发工具&对比人类语言).编程应用.编程意义之详细攻略 导读:乔布斯说 ...
- 这场编程语言的发布会,不参加可太亏了!
国人开发的编程语言? 兼容 Go 语言? 为数据科学而生? 以 Python 之形结合 Go 之心? 10 月 15 日·上海,这场名为「Go+ Together!Go+ 1.0 发布会暨 Go+ 开 ...
- 厉害了!国人开发的编程语言 Go+ 1.0 即将发布!
关注公众号,发现CV技术之美 国人开发的编程语言? 兼容 Go 语言? 为数据科学而生? 以 Python 之形结合 Go 之心? 10 月 15 日·上海,这场名为「Go+ Together!Go+ ...
- 高效率完成工作的12种热门编程语言,你会用几个?
编程语言不仅仅面向程序员.如果你是网络工程师.系统管理员.存储管理员或其他基础设施专业人员,知道一种(或两三种)编程语言,都能在工作中派上用场. 软件定义基础设施正在迅速进入数据中心,为了管理这种基础 ...
- python语言开发效率高吗_12种高效率热门编程语言,你会用几个?
纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注.导读 编程语言不仅仅面向程序员.如果你是网络工程师.系统管理员.存储管理员或其他基础设施专业人员,知道一种(或两三种)编程语言 ...
最新文章
- Django----中间件详解
- git 撤销挂起的更改_Timer计时任务因系统时间的修改导致挂起解决方案
- uc3842开关电源电路图_UC3842 的原理及应用详解 (上)
- 清华计算机系和交叉信息学院,清华大学交叉信息研究院与计算机科学与技术系哪个..._考研_帮考网...
- U盘安装centos7
- 微信测试公众号-jssdk基本配置和使用-thinkphp
- linux之service命令
- 牛客小白月赛9 论如何出一道水题
- 文字处理(WORD/WP)中,布局与绘制必然分开
- cron表达式每一个小时_嵊泗新闻网丨两千小时的热爱——任春华:用志愿服务守护每一个笑容...
- 学生信息管理系统(php MySql),基于PHP学生信息管理系统设计系统设计(MySQL)(含录像)...
- 蔡学镛:架构师最重视的文档 转
- java计算费用类题目
- 大学到底教会了我们什么?
- unity新手小球走迷宫小游戏
- go牛刀小试:go的打点器ticker,可停止
- 此nvidia驱动程序与此windows版本不兼容,此图形的驱动程序无法找到兼容的驱动硬件
- signature=d363d26bda212f777fef81d270ecd42b,基于DNA-pooling全基因组重测序初步筛查CAD易感基因变异位点...
- csharp基础练习题:符号计数【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练
- 室内主动导航系统在高铁站场景应用分析
热门文章
- BZOJ-1507 文本编辑器(Editor)
- 第三章:什么是组织结构
- SQL语句的解析过程
- 关键字:auto、static、register、const、volatile 、extern 总结
- groupby多个字段性能_SQL 性能优化
- mysql+基本代码_PHP+MySQL扎实基本功十句话_php
- oracle怎么截取long类型,Oracle 数据库中 Long 类型字段的读取
- c语言定义函数后引用,求助,函数在其他函数中使用时要先声明后调用,这个没声明就用了...
- html代码放进json数据,用json数据填充html表
- mw325r已断开服务器无响应,水星mw325r路由器恢复出厂设置之后上不了网怎么办?...