选择编程语言

使用哪种编程语言可能是项目面临的最大的技术决策。 这一决定会影响随后的每个决定-从您可以使用的框架和库,到您雇用的人员。 那么,如何选择要使用的编程语言呢?
事实是,您可能会做大多数人都在做的事情,并使用与上一个项目相同的语言。 或者,如果您是时髦人士,则使用最新的超酷语言。 几年前,所有很酷的孩子都陷入困境。 现在,赶时髦的人试图告诉我他们的节点有多棒。 或那个clojures在哪里。 上次我检查时,他们的完整语言与我的完整语言具有相同的解决问题的能力。 实际上,他们在争论的是他们的语言为他们提供了更好的表达能力:编写起来更快,和/或维护起来更便宜。

正确的工具,正确的工作

就像古老的格言一样:始终使用正确的工具进行工作。 如果您需要自动化一些命令行维护任务,请使用一种擅长Shell脚本编写的语言:bash,perl,hell甚至ruby; 不要使用Java。 如果您要解决的问题需要在Windows环境中无缝集成的台式机客户端:请使用C#,而不要使用Java(在台式机迷上使用安静的Java,请保持安静)。 如果您要解决的问题涉及处理大量XML,并且您喜欢堆栈跟踪:当然,请使用Java。

通常,最大的区别在于算法的复杂性。 如果您正在处理的东西具有很多算法复杂性,请使用擅长表达它的东西:一种功能语言,例如haskell或F#。 或者,如果像90%的webapp一样,您正在做的事情是数据输入,那么数据输出则需要一种具有良好OO能力的语言来尝试对您的域进行建模:Java和C#都是不错的选择,几乎所有其他现代语言在那里。

斯卡拉

或者,也许您真的讨厌自己并且想要折衷方案:为什么在可以同时拥有功能或程序的同时选择功能或程序? 当您将所有功能都融合到一种语言中时,为什么还要错过过去50年来所想到的每种语言功能呢? 是的,如果听起来像您,您可能认为您是个时髦人士,但实际上您错过了几年的船:是时候学习一些scalas了。

我怀疑Scala之所以如此受欢迎,部分原因是它最终为所有沮丧的Java开发人员提供了他们一直想要的语言玩具。 Java确实是一种令人难以置信的弱智语言,使用起来令人无比沮丧。作为刚切换到C#的人,我喜欢我必须使用的所有新语言小工具和geegaws。 他们使代码变得更好了吗? 随着很多玩具的出现,带来了很多复杂性和多样性,使得代码难以理解和维护。

问题是,Java是一种玩具语言:任何白痴都可以编写体面的惯用Java。 问题在于,Java是一种玩具语言:每个人都不得不写冗长的,习惯性的,愚蠢的Java冗长的句子,无论他们是忍者摇滚明星有多少。 Java的最好之处在于,它通过编写难以理解的废话,阻止了所有忍者摇滚明星展示忍者的状态。 我担心随着每个人开始寻找新的,令人困惑的方式来表达一切,lambda会对平均Java代码库的可维护性产生影响。

招聘

选择正确的编程语言的另一个原因是,它会影响您可以雇用的开发人员。 但是真的吗? 我现在在C#商店工作,是否拒绝Java开发人员? 一定不行。 一个好的开发者就是一个好的开发者,无论使用哪种语言。 由于他们所知道的语言而导致解雇潜在的新兵。

问题是,如果您认为仅雇用python或节点开发人员将为您提供更好的开发人员标准:您错了。 游泳池将小得多。 也许该池的平均质量会更高,谁知道,谁在乎? 我只需要一个开发人员,我希望她能成为我能聘请的最好的开发人员-平均水平没有区别。

语言与能力无关:我遇到了一些非常聪明的Java开发人员,以及一些真正可怕的时髦开发人员。 我宁愿使用尽可能广泛的网络,并聘请乐于使用我们使用的技术的优秀开发人员。 做其他事情就是限制我可以吸引的人才。 老实说,这已经很有限了。

我听到的另一个论点是,您使用的技术会限制那些愿意为您工作的候选人–有些开发人员只想使用clojure。 好吧,那时他们很弱智。 我宁愿有一些人想要解决有趣的问题, 而不论其语言是什么 ,而不是宁愿以最新的时髦语言解决狗屎问题的人。 现在,如果您在一家银行工作,那么您所遇到的一切都是粪便问题吗? 当然,请继续使用时髦的语言,如果它可以帮助您雇用白痴的配额。 如果没有别的,那会让他们远离我。

林瓜·弗朗卡(Lingua Franca)

在一个充满时髦语言程序员的房间里,请他们组成团队。 怎么了? 神奇的是,您现在拥有一个充满C#和Java开发人员的房间。 几乎每个开发人员都会知道这两种语言中的至少一种-他们是通用语言。 坦白说,其他一切都是时髦人士。

事实是,选择一种语言时最重要的事情是团队中有多少开发人员以及您打算招聘的开发人员已经知道该语言。 如果团队中的每个人都必须重新训练,比如说些小话; 并且您雇用的每个人在学习新语言时都需要手握–这是您必须考虑的成本。从中得到的好处是什么?

其次,遇到问题时获得支持有多容易? 围绕Java的开源社区很棒–如果您遇到问题,将已经有15种不同的解决方案,其中一些甚至可以使用。 如果您使用C#工作,那么您的选择将受到更多限制-但是会有很多选择,其中有些甚至不是Microsoft提供的。 如果您使用的是最新的时髦语言,那您猜怎么着? 你一个人。 对于某些人来说,这就是时髦语言的吸引力。 对于我们那些想完成工作的人来说,这只是一个痛苦。

最后,最好的建议可能是使用您在上一个项目中使用的相同语言:每个人都已经知道它,并且您的工具已经围绕它进行设置。 这就是JavaSwift成为新的cobol的原因。

参考: Actively Lazy博客上的JCG合作伙伴 David Green 选择一种编程语言

翻译自: https://www.javacodegeeks.com/2013/04/choosing-a-programming-language.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值