阅读更多

13顶
7踩

编程语言

翻译新闻 哪种编程语言更好?真的不重要

2013-01-21 16:20 by 副主编 wangguo 评论(32) 有17975人浏览
先来看个例子。两个工匠制作国际象棋,其中一个工匠使用传统的工具——各种规格的凿子、锉刀和锤子,首选的材料是石头。他仔细地雕刻细节,像他的父亲做的那样。另一种工匠使用更现代的技术去熔化金属、使用模具制作,他使用火以及可以承受极高温度和压力的模具和工具。最终,这两个工匠的作品同样精致、细腻、美丽。



谁的方法更好?

这两个工匠产生了同等价值的东西——美丽的国际象棋。你可能更喜欢经典样式的石质棋盘,或者更喜欢冰冷的沉甸甸的金属制品。你的选择与工匠们所使用的方法没有任何关系,你只关心最终产品。

同样,开发一个应用程序,选择什么语言真的不是很重要。自各种编程语言诞生以来,关于孰优孰劣的争论一直没有停止过,比如“Python更好,因为……”、“PHP是战斗力不足5的渣,Ruby才是王道”……此类话题如同一针鸡血,可以瞬间点燃码农们的斗志。


编程语言拥护者眼中的编程语言


选择编程语言和工匠选择材质是一样的,其中一个工匠之所以选择石头,可能他认为石头比金属好一些。争论这些毫无意义——因为两种方法创造了类似的结果和价值,而且这两种方法都是有用的。

其实,我们应该将时间花费在如何创造更有价值、更具创新的东西上,而不是在这些无关的讨论上。

我们几年前开发的一个产品中包含了一个Python后端和PHP前端,尽管我的很多同事都讨厌PHP,但一点都不妨碍该产品的开发和使用。去年,我们才迁移到一个新的基于Python的Web框架。这一决定并不是因为PHP不好用,而是出去其他方面的考虑,如开发者的技能、PHP框架老化(一些功能需要重写)等。尽管迁移到了Python框架,该产品中还是包含了基于其他语言的代码。

编程语言只是一个工具,重要的是使用这些工具做出的产品。每个开发者应该尽可能了解如何使用不同的语言和不同的方式来完成同样的事情。一旦开发者开始思考他们选择的语言是否优于另一种语言时,就应该回顾一下文章开头的工匠的故事。

最后要说的是,语言并不重要,重要的是你拿它做什么。所以,没有最好的,只有最合适、最顺手的。

原文:Languages Don’t Matter
  • 大小: 31.8 KB
  • 大小: 84.1 KB
  • 大小: 11.9 KB
13
7
评论 共 32 条 请登录后发表评论
32 楼 wandou 2013-01-23 11:04
编程语言,推荐c#。

现在的游戏引擎会优先采用c#做为开发语言,说明了它的生产力。有gc,可以方便的调用c函数。这是它流行的原因。

unity和monogame都是用c#的。其他游戏引擎将来应该也会朝这个地方靠拢。

的确,要做事的时候,选择编程语言还是很重要的。开发成本10万元跟1万元是两个概念。
31 楼 theoffspring 2013-01-23 10:38
不能说不重要,只是不太重要,更重要的是思想和设计。
30 楼 kidneyball 2013-01-23 10:35
jiangwenxian 写道
这篇文章的作用已经偏离了作者的目的,本来要平息争端,结果却又引起了新的争端...


这个例子说明,没点江湖地位,就不要当和事佬。“指责别人的争吵没有任何意义”这种行为本身就没有任何意义。
29 楼 timyuheng 2013-01-23 10:34
貌似 "语言并不重要,重要的是你拿它做什么" 的逆否命题是 “当你决定了要做什么时,语言就很重要了” 这个很经典,比如 说, 我写web 程序的时候 就用java,我写游戏外挂时就用delphi,要写驱动过游戏保护了, 问就用vc++  嘿嘿, 纯属吹吹牛,别当真
28 楼 jiangwenxian 2013-01-23 10:25
这篇文章的作用已经偏离了作者的目的,本来要平息争端,结果却又引起了新的争端...
27 楼 dwangel 2013-01-22 21:16
kidneyball 写道
貌似 "语言并不重要,重要的是你拿它做什么" 的逆否命题是 “当你决定了要做什么时,语言就很重要了”

很精练的评价
26 楼 dwangel 2013-01-22 15:05
好吧,让我无聊一下
http://www.cnki.com.cn/Article/CJFDTotal-HLYZ198302007.htm
作者应用查表线性插值法,巧妙地设计函数表格、合理地选取比例因子使得每种函数的Z—80汇编程序运行速度可提高十倍左右,在火控常用值范围内精度可达万分
25 楼 kidneyball 2013-01-22 15:04
youarestupid 写道
dwangel 写道
youarestupid 写道
wangyanlong0107 写道
youarestupid 写道
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

那你说c语言编译后生成的是什么?是机器语言!机器语言才是控制导弹点火发射的!!不是c语言!你举的例子就是两个字--抬杠!!这篇文章的意思不是说语言不重要,而是告诉大家不要去争论哪个语言更重要。使用什么语言进行开发主要看你想实现什么样的功能。

抬杠的人是你吧,你仔细看看你说的是些什么啊?


首先,这篇文章是译文,原文是 doesn't matter。可以翻译为不是决定性因素,也可以翻译成不重要。
其次,这个例子确实不好。这里的决定性因素是操作系统和硬件环境,而非语言。C,C++,汇编,只要能生成该环境中运行代码的语言都可以……

只不过现有语言中关注 底层的高级语言主要是C/C++……
说实话,很难说是不是用的汇编,如果那个芯片比较老……

送你一段微博:
#泼妇#式讨论者常用的招数:偷换概念、转移话题、强词夺理、胡搅蛮缠、本末倒置。还有一些人不是故意胡搅蛮缠,而是因为他理解能力差,俗称#猪脑袋#,错误理解或者无法理解别人讨论的内容,但是他却善于给别人扣上一顶像他自己一样弱智的帽子,然后他就跳出来批判这顶他自己给你扣上的弱智帽子。


其实……泼妇式讨论的终极奥义应该是:恶人先告状。
24 楼 youarestupid 2013-01-22 14:33
dwangel 写道
youarestupid 写道
wangyanlong0107 写道
youarestupid 写道
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

那你说c语言编译后生成的是什么?是机器语言!机器语言才是控制导弹点火发射的!!不是c语言!你举的例子就是两个字--抬杠!!这篇文章的意思不是说语言不重要,而是告诉大家不要去争论哪个语言更重要。使用什么语言进行开发主要看你想实现什么样的功能。

抬杠的人是你吧,你仔细看看你说的是些什么啊?


首先,这篇文章是译文,原文是 doesn't matter。可以翻译为不是决定性因素,也可以翻译成不重要。
其次,这个例子确实不好。这里的决定性因素是操作系统和硬件环境,而非语言。C,C++,汇编,只要能生成该环境中运行代码的语言都可以……

只不过现有语言中关注 底层的高级语言主要是C/C++……
说实话,很难说是不是用的汇编,如果那个芯片比较老……

送你一段微博:
#泼妇#式讨论者常用的招数:偷换概念、转移话题、强词夺理、胡搅蛮缠、本末倒置。还有一些人不是故意胡搅蛮缠,而是因为他理解能力差,俗称#猪脑袋#,错误理解或者无法理解别人讨论的内容,但是他却善于给别人扣上一顶像他自己一样弱智的帽子,然后他就跳出来批判这顶他自己给你扣上的弱智帽子。
23 楼 dwangel 2013-01-22 14:22
youarestupid 写道
wangyanlong0107 写道
youarestupid 写道
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

那你说c语言编译后生成的是什么?是机器语言!机器语言才是控制导弹点火发射的!!不是c语言!你举的例子就是两个字--抬杠!!这篇文章的意思不是说语言不重要,而是告诉大家不要去争论哪个语言更重要。使用什么语言进行开发主要看你想实现什么样的功能。

抬杠的人是你吧,你仔细看看你说的是些什么啊?


首先,这篇文章是译文,原文是 doesn't matter。可以翻译为不是决定性因素,也可以翻译成不重要。
其次,这个例子确实不好。这里的决定性因素是操作系统和硬件环境,而非语言。C,C++,汇编,只要能生成该环境中运行代码的语言都可以……

只不过现有语言中关注 底层的高级语言主要是C/C++……
说实话,很难说是不是用的汇编,如果那个芯片比较老……
22 楼 fireaap 2013-01-22 13:37
尽管我的很多同事都讨厌PHP,但一点都不妨碍该产品的开发和使用。

不喜欢还能开发出优秀的产品吗?最多算过得去的产品
21 楼 shinestmt 2013-01-22 12:36
各自的优势,都有他存在的必要性
不能因为看到奔驰宝马法拉利的好,就否定拖拉机的价值

不同环境和情况,做不同的选择。
法拉利远远不如普通拖拉机——如果收割的水稻后要拖回家的话。
当然,法拉利也可以拖……
20 楼 紧急下潜 2013-01-22 12:25
扯淡,编程语言不重要是因为你没遇到LISP
19 楼 netkiller.github.com 2013-01-22 11:42
很多企业都是多种语言同时存在,取他们各自的优点。
18 楼 zui4yi1 2013-01-22 11:03
FireIce 写道
同样是割麦子,用手一根根拔是一种方法,用镰刀是一种方法,用收割机也是一种方法,结果都一样割完,但是效率是大大的差异

同意观点。不过楼主说得不清楚的是,应用场景也很重要。你在丘陵地区能用收割机吗?
17 楼 youarestupid 2013-01-22 10:55
wangyanlong0107 写道
youarestupid 写道
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

那你说c语言编译后生成的是什么?是机器语言!机器语言才是控制导弹点火发射的!!不是c语言!你举的例子就是两个字--抬杠!!这篇文章的意思不是说语言不重要,而是告诉大家不要去争论哪个语言更重要。使用什么语言进行开发主要看你想实现什么样的功能。

抬杠的人是你吧,你仔细看看你说的是些什么啊?
16 楼 wangyanlong0107 2013-01-22 10:53
youarestupid 写道
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

那你说c语言编译后生成的是什么?是机器语言!机器语言才是控制导弹点火发射的!!不是c语言!你举的例子就是两个字--抬杠!!这篇文章的意思不是说语言不重要,而是告诉大家不要去争论哪个语言更重要。使用什么语言进行开发主要看你想实现什么样的功能。
15 楼 wzjin 2013-01-22 10:22
编程语言只是一个工具。“只是”两字就看出了水平,美国打仗是用工具上阵,不用人向前扑了。
14 楼 denger 2013-01-22 10:03
语言并不重要,重要的是在适合的环境下使用适合的语言。
13 楼 youarestupid 2013-01-22 09:57
说语言不重要的人,试完成如下场景:
使用c语言可以控制导弹点火发射,这是语言控制硬件实现的;
请使用Java语言实现同样的功能??

如果你说使用jni或者jna,我要问的是:被jni或者jna调用的动态链接库也是java语言能写出来的么?
================================================================
结论:大部分语言都有自己合适的使用场景,非要说“哪种语言不重要”的人是明显的自欺欺人,试问如果语言真的不重要,那么为什么编程语言还会一代一代不断涌现新的语言和改进老的语言?如果语言真的不重要,现在世界上的软件开发人员都使用上世纪60年代的B语言开发一切软件就可以了,何必再发展出现在的这么多语言?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics