所以我知道开发人员并不总是选择他们正在工作的语言和平台 - 但从某种意义上说他们这样做,因为他们总能提出要求,追求或留下工作......所以记住:你为什么最终选择特定的语言或平台 - 不同的因素会影响最终的决定。请不要停留在“正确工作的正确工具”或类似的短语 - 请用现实生活中的例子说明。
答案 0 :(得分:5)
这都是关于成本效益的。
如果我只是需要快速完成一些数据处理,对于一次性任务,我将使用JSDB Javascript(一个Javascript shell),这是我对瑞士军队型计算机Perl的替代方案黑客攻击。我有时会将它用于以后可能需要再次执行的任务,但我会更加谨慎地记录它。
对于PC上更强大的应用程序,我将使用Java,因为它在执行速度,开发速度,良好的工具集/库/文档(有些人称之为软件“生态系统”)之间是一个很好的折衷方案,并且跨平台支持。
对于嵌入式系统,我尝试使用C ++,并希望并祈祷调试器是不错的。 (其中一些是可怕的,有些没有任何调试器,你必须从串口吐出数据或闪存LED。或者创建数字脉冲来调试时序问题。)
标准我通常使用:
答案 1 :(得分:3)
作为一个涉足多种语言的人......我现在发现自己被这些平台所吸引作为我的优先事项
1)厨房水槽图书馆 - 一切都已包括在内
2)最经过深思熟虑的库结构(并且可扩展 - 因此设计师可以随时修复错误)
3)语言语法 - 我做得更好 - 过去常常是#1
4)mindshare - 你可以在某处24/7在线获得帮助
我将在明年将重点放在这两点上: Java,.NET,Groovy,IronRuby和F# 我之所以选择这些,是因为我对.NET和Java的库支持有一定程度的安慰。
我现在必须把其他东西放在一边......我太破碎了。
答案 2 :(得分:1)
我处于幸运的位置,能够在我的梦想系统中工作,并且已经存在很长时间了。我在Smalltalk中完成所有工作 - 期间(实际上:Smalltalk / X)。如果有时间关键的东西(图像处理,实时数据获取,rt控制),我将事物分成混合,其中关键的东西是用C完成的,所有的管理,GUI,webInterface,配置等都是在Smalltalk完成。这样,我们就建造了非常复杂的控制设备(控制化工厂,发电厂,煤矿,造纸厂和其他工业工厂)。另一方面,我们在Smalltalk中进行银行业务,Web框架,GUI原型设计和通信安全工作。甚至通过Smalltalk中的完全重写替换了多个现有的Java系统(!) - 并且具有更高的性能。
Smalltalk是我梦寐以求的环境,原因如下:
有些人认为其缺点是其有趣的语法;如果你不能对此进行抽象,我会回答你可能不值得CS学位。此外,Smalltalk几乎没有语法(它的描述适合单个页面) - 大部分内容都在库中完成。
愿意接受评论和抨击(但是downvotes是不公平的:-)
PS:是的 - 我知道并且已经使用过其他几种语言...
PPS:如果我不得不放弃Smalltalk,Lisp或Haskell将是我的第二选择,但两者都不提供IDE,这些都是我现在习惯的。
PPPS:我确实接受这样的论点,即近年来可能没有太多的“官方”咨询工作。
答案 3 :(得分:0)
对于大多数人来说,去钱的地方。如果这需要为旧的Unix系统学习Perl,或者为新的企业解决方案学习.NET(相关性不是唯一的),那么确定。
有些人可能有自己的少数几个“绝对”,但足够高的工资通常甚至可以赢得那个。没有太多的精英家会每年拒绝20万美元来忍受他们最讨厌的语言/平台。 ;)
答案 4 :(得分:0)
我可以用那种语言思考,如果没有与我做的太多其他想法发生冲突吗?
有时候小距离会有所帮助 - 过于接近的语言会导致混乱,并且在使用语言改变思维方式时有助于获得语境线索。
因此,出于工作目的,我寻找语义上接近但语法不同的语言,以帮助我专注于平台。
作为最近的一个例子 - 我在REALbasic(一个非常干净的OO BASIC)做了很多工作。对于我的Windows工作,我使用C#而不是VB.net,以避免混淆。
在学习语言以扩展我的想法(并决定是否应该将它们添加到我的工具包中)时,我会寻找具有显着差异的语言。我目前正在研究Ruby,以及改进我的C#。我希望今年晚些时候能为F#或Haskell投入大量时间。我去年学过Lisp。我相信你必须使用一种语言来完成一些真正的编程任务才能决定它与其他心理工具的兼容性 - 用语言思考与阅读它不同。