查看原文
其他

如果程序员是士兵,那编程语言会是什么样的武器?

2016-10-03 伯乐在线/郑劳蕾 开源中国

(点击上方公众号,可快速关注)


来源:伯乐在线 - Florence

点击 → 了解如何加入专栏作者


【伯乐在线导读】:如果程序员是士兵,那 C、C++、汇编、PHP、Perl、Python、JavaScript、Java、Scala、ActionScript、Objective-C、Swift、Go、Ruby 等编程语言 会是什么样的武器呢?本文摘编自 Chandra Penke 在 Quora 同名问答贴中的分享,3200+ 顶。


PHP 3 是电锯


对于开发 Web 应用的程序员大兵来说,它是最早的武器之一(在 Web 应用出现之前它就已经很受欢迎了)。它能完成工作,但是看起来有些麻烦,好在现在可供选择的工具已经越来越多了。(PHP 3的语法是个噩梦,导致代码维护起来很困难。php后来的版本在这方面似乎提高了很多)



Perl 是刺客手中的剑

对于想要分派任务的程序员来说,就像是刺客手中的剑。优雅而高能,可以快速击中目标(尤其如果它们是文本文件)。确保与刺客联盟保持良好关系,否则你也许会发现这个武器不是你能控制的。(Perl强大而复杂,但是语法和语义使得它很难被掌握,这导致无法识读,代码也很难维护。就像一个刺客,神秘但高效。)

Python是坦克

自我防御能力很好,坚固,并能确保摧毁你的目标。如果你是初学者你通常可以瞄准射击(经过一定的训练后)。如果你是一个专家,你可以有条不紊地部署征服你的领域。尽管它很有效,但有可能很慢。不过有了挥舞着的武士刀(C拓展)的超级士兵的支持,你可以选择解决任何潜在的缓慢问题。

JavaScript 是战斗机发出的导弹

JavaScript经历了好长时间才成为导弹。它最初只是一个炸弹,仅仅发出恼人而巨大的声音,但是多年来(尤其发布了V8,加上巨大的社区和一些非常棒的框架,又称真正可怕的战斗机技术)它演变成了一个不那么优雅但能快速解决问题的导弹。

Java 是从枪(JVM)里发出的子弹

Java 原本是从枪(JVM)里发出的子弹,然而枪支制造商决定去造不同的枪,所以很不幸,出现了外形类似子弹的轻微变种。然而,这使得 Java 的使用效率更高。

Scala 是来自火影忍者的分身影术

Scala 是来自火影忍者的分身影术,允许你创造自己的分身,可以完全压垮敌人。

ActionScript 2 是一台投石机

想像一下,它虽然使用起来简单,看起来也很有吸引力,但移动速度很慢,并且击中目标的速度甚至更慢。如果你有更好的选择,你为什么还用它?

Objective-C 是一柄没有原力的光剑

有些类似 C,但似乎有更多的样式,和一些额外的功能。你的敌人会认为你要么很傻,要么很酷(如果你有 Xcode 和其他开发者工具,你的敌人更有可能会认为你很酷)。

 C++ 是一柄带盾的剑

盾(OOP / RAII功能、模板等)可以帮助你远离一些危险,但如果没有明智使用,它也可以成为累赘。你可以甩掉盾,只带着剑冲刺(因为 C++ 是 C 的一个拓展集),但有经验的士兵知道如何带着盾和剑冲刺。

C 是武士刀

C 是武士刀,致命且光滑,它激励精通它的人拥有超越现实的力量。但要注意,如果你和很多武士挤在一个房间训练,你可能会意外地被伤到。(有编译器的帮助,C 最接近汇编语言,最有潜力编写高性能的代码。然而,注意那些可能不小心释放你的指针的初学者士兵。)

Assembly 是你自己的身体

如果你是李小龙或者超人,它就是你想要的全部。但是除非你出生在另一个星球拥有超人的力量,不是的话,就好好磨练你的身体和心灵来完善技艺,这样才能用好你的武器(编译器/解释器)。

Swift 是一把有拥有原力的光刀

你现在可以在不接触它们的情况下偏转爆破枪,移动对象,并让你的敌人彻底屈服对你敬畏。但是额外的力量也会伴随着一些黑暗面。(相比较于 Objective-C ,Swift 带来很多自由和能力,但增加的流动性有可能导致代码很难去理解和维护)

Go 是星际迷航中的移相器

具有未来色彩,圆滑,非常小,不需太多装饰就可以完成工作。要击败那些更强硬更有经验的敌人,你现在也许还需要使用另一个武器。(GO 仍然在改进,发展成为武器所需要的社区和支持基地,虽然这似乎在很快进行)。船长 Jean Luc Picard(谷歌)魅力超凡,领导能力出众,你保证可以重拳出击,很快拥有超越“击晕”和“杀死”敌人的设置(强大的库,工具,支持等)

Ruby 是光晕中跑出的幽灵

当它击中目标时非常令人满意,彰显着能力,但是有时操作慢很费力。(Ruby 有很多吸引人的优点,但是最大的缺点是当创建到一定规模时,它需要去匹配一些其他替代品的性能。)

Bash 是一架装有隐蔽货物的运输机,大部分是为需要运输其他士兵或武器准备的

在紧急情况下你可以卸掉隐藏的货物以减少一些损失。但是大部分情况下你还是想要利用它去部署,返回,远距离观察。(Bash 擅长将事情粘合起来,在它自己的角度上它也是一种编程语言。但是它最好做一小部分任务,把更重的任务留给其他语言。)

注:所有图片都来源于 Google 图片搜索。

感谢各位的顶、建议和评论。我从反馈和建议中学到了很多。当我最初写下答案时,这个问题还在一个安静的角落无人问津,我以为没有多少人会看,所以回答得不够认真周全。我没想到它后来竟然引发了这么大的关注!如果你感觉我不够尊重你喜爱的编程语言,我鼓励你去写下自己的答案,因为本文终究就是一个“假想的比较”。

也感谢各位对更多的编程语言提出编辑意见。就此我要收尾了,我鼓励去提交你自己的答案。这是一个有趣的问题,你不会后悔回答它。

译者简介点击 → 加入专栏作者 )


郑劳蕾:前端,JAVA

打赏译者翻出更多好文章,谢谢!



关注「伯乐在线」

看更多精选 IT 职场文章

↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存