阅读更多

13顶
7踩

编程语言

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

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



谁的方法更好?

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

同样,开发一个应用程序,选择什么语言真的不是很重要。自各种编程语言诞生以来,关于孰优孰劣的争论一直没有停止过,比如“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语言开发一切软件就可以了,何必再发展出现在的这么多语言?

发表评论

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

相关推荐

  • 网页FLASH播放器代码

    //根据 Flash 的播放进度设置 id 为 bar 的表格的宽度 bar.style.width=Math.round(N*100/total)+"%" //在 id 为 frameCount 的对象中显示当前帧数和总帧数 frameCount.innerText=N+"/"+total } function ...

  • html5 audio js控制进度,HTML5多媒体的之audio和video。JavaScript控制进度条播放进度

    使用HTML5多媒体,audio和video两个元素可以让用户不必借助flash player插件即可播放音频和视频。小知识:视频文件包含了音频轨道,视频轨道和其他一些元数据。当我们播放视频的时候,音频轨道和和视频轨道是绑定在...

  • 如何在浏览器 console 控制台中播放视频?

    如何在浏览器 console 控制台中播放视频? 要实现这个目标,主要涉及到这几个点: 如何获取和解析视频流? 如何在 console 里播放动态内容? 如何在 console 里播放彩色内容? 如何连接视频流和 console? 事实上...

  • 在vue项目中使用video.js实现视频播放和视频进度条打点

    markerStyle配置的是各个打点的默认颜色,如果要每个打点都有自己各自的颜色,可以在markers里给每个打点添加class名字,然后在css里单独设置颜色。Video.js表示用户通过"vjs-user-active"和"vjs-user-inactive"类...

  • 浏览器不支持flash插件之后,h5播放rtmp直播流的解决方案

    浏览器不支持flash插件之后,h5播放rtmp直播流的解决方案背景几种视频流比较http-flv搭配flv.js播放方案rtmp与http-flv地址格式直播在线测试地址: JavaCV转封装rtsp到rtmp(无需转码,低资源消耗) 海康sdk捕获码...

  • js控制swf播放

    <... <head> <...用js代码控制flash的播放</title> <meta charset="utf-8" /> </head> <body> <input type="button" value="播放" onclick="myflash.Pl...

  • FLASH 加载进度 JS代码

    <divid="d1">...embedtype="application/x-shockwave-flash"pluginspage="http://www.adobe.com/go/getflashplayer"id="mgame"name="mgame"width="640px"height="480px"src="http://www.kfc123.com/...

  • Android 通过WebView来播放flash在线视频流

    首先,Android 自带的WebView控件是不支持flash播放的在Android4.0以上的版本中,所以需要keh

  • videojs 播放视频

    背景:动态更换播放的视频源时,需要先用dispose()销毁,再重新创建,dispose方法会连同dom一同删除,故需要创建dom (如果直接创建video元素,注意生成的object不能在video标签下面,否则页面不报错但不能播放,...

  • java flash 播放器_视频播放插件Video.js

    插件描述:Video.js 是一个通用的在网页上嵌入视频播放器的 JS ...(要支持ie低版本请下载5.4.3版 )Video.js最新v7.5.5版 2019-7-4最新Bug修复liveui:在自动播放直播时的一些问题(#6062)(8777c89)Video.js最新v7.4....

  • html video标签播放直播视频,HTML5 Video 标签播放及控制视频

    Video 是 HTML5 中新增的标签,使用 Video 标签可以播放 ogg、mp4、webm 等格式的视频,Video 标签的引入,减少前端页面对 Flash 动画的依赖。0x0 预备知识不同的浏览器支持的视频格式可能不同,以下是摘自 W3School...

  • Video 标签播放及控制视频

    Video 是 HTML5 中新增的标签,使用 Video 标签可以播放 ogg、mp4 、webm 等格式的视频,Video 标签的引入,减少前端页面对 Flash 动画的依赖。 不同的浏览器支持的视频格式可能不同,以下是摘自 W3School 各个...

  • 记录下js控制网页WMP播放的属性

    还是觉得使用Flash音乐播放器的好,兼容各个浏览器。不过,工作内容不是由自己决定的。。。郁闷   来源:   http://www.jb51.net/article/16402.htm     http://www.jb51.net/article/11075.htm   ...

  • Android播放flash

    所以本文的思路是使用WebView播放flash,通过java代码控制WebView中的javascript代码来控制flash的播放和进度显示操作。由于android 2.2以下的系统不能安装flash插件,所以不能使用此方法播放flash。 首先

  • videoJs实现手机视频播放功能

    我们项目中用的是angular开发的手机H5的app,今天有一个需求是js播放视频功能,就上网搜索了一下,找到了videoJs,Video.js是一款web视频播放器,支持html5和flash两种播放方式。 二、videojs初始化 video.js有两...

  • node-v4.1.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 基于AT89S52的数字温度计设计说明.docx

    基于AT89S52的数字温度计设计说明.docx

  • HTML+CSS+JS精品网页模板H108.rar

    HTML5+CSS+JS精品网页模板,设置导航条、轮翻效果,鼠标滑动效果,自动弹窗,点击事件、链接等功能;适用于大学生期末大作业或公司网页制作。响应式网页,可以根据不同的设备屏幕大小自动调整页面布局; 支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改; 支持包括IE、Firefox、Chrome、Safari主流浏览器浏览; 下载文件解压缩,用Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件打开,只需更改源代码中的文字和图片可直接使用。图片的命名和格式需要与原图片的名字和格式一致,其他的无需更改。如碰到HTML5+CSS+JS等专业技术问题,以及需要对应行业的模板等相关源码、模板、资料、教程等,随时联系博主咨询。 网页设计和制作、大学生网页课程设计、期末大作业、毕业设计、网页模板,网页成品源代码等,5000+套Web案例源码,主题涵盖各行各业,关注作者联系获取更多源码; 更多优质网页博文、网页模板移步查阅我的CSDN主页:angella.blog.csdn.net。

  • node-v6.15.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 13-12.网络安全法.mp4

    13-12.网络安全法.mp4

Global site tag (gtag.js) - Google Analytics