如何比较工作中的项目的编程语言?

时间:2010-11-28 19:53:32

标签: programming-languages

我想知道在比较用于给定工作项目的编程语言时,我应该记住哪些具体问题。例如,我被告知像Prolog这样的逻辑编程语言对自然语言处理很有用。我不确定为什么;我认为这是真的,因为专家这么说,但我不知道引导他们得出这个结论的考虑因素。所以我正在寻找一个简单的启发式方法,一个问题清单,我可以申请评估编程语言并能够解释我的决定,这样我就可以说“语言X对Y有好处,因为它确实是Z.”

4 个答案:

答案 0 :(得分:4)

我知道找出哪种编程语言最适合给定问题的唯一方法就是了解很多编程语言。毕竟,如果您不知道螺丝刀存在,当您遇到螺丝时,您怎么知道不使用锤子?

不幸的是,有数千种(可能是数万种)编程语言,所以学习它们中的很大一部分是不现实的。

但是,编程语言实现了范例。而彼得范罗伊的着名海报只列出了其中的34个。虽然他故意决定忽略几个方面,包括与打字有关的任何事情,所以实际数字可能高于此。但我们可以预期它会远低于100。

但是,这仍然很多,但幸运的是,范式也不是原子的,它们由概念组成。海报列出了大约十几个(再次忽略打字和其他几件事)。显着低于范式。

学习很大一部分概念是完全可行的。一旦了解了它们,就可以查看问题,看看哪些概念对于构建解决方案很有用。然后,您将看看哪些范例包含这些概念以及哪些语言实现了这些范例。选择一个,学习它,使用它,解决问题。

既然您已经了解了语言实现的概念(以及范例),您只需要学习语法,而不是语义。实际上并没有那么多不同的语法(C,C ++,Objective-C,Objective-C ++,D,Go,Java,C#,ECMAScript,PHP,Vala和许多其他语法共享很多语法,例如,和Smalltalk,Self,Newspeak和Objective-C,SML,OCaml和F#等等一样,所以很有可能,你会很快选择它。 (此外,对于今天的现代IDE来说,无论如何都不是一个问题。)

答案 1 :(得分:3)

要记住一个小问题:如果您是X语言专家,并且您被要求在Y领域开发一个Z语言应该是理想的程序 - 您是否会通过写作来更快更好地交付即使不是(通过某些措施)对问题域理想的语言,您是专家的语言?或者,您是否会通过首先学习一门新语言来提供更快更好的服务?

我认为你搜索一个简单的启发式算法是徒劳的。

答案 2 :(得分:1)

从您熟悉的团队开始。虽然优秀的开发人员可以在短时间内掌握几乎所有语言的理念,但有一个实际的方面可以说,如果你有大量的.Net或Java编码器,那么你是最好的。从那个基地开始服务。

现在,在两个堆栈中,您可以选择函数编程(F#,Erlang等)以及团队最熟悉的运行时上的其他语言。但它确实归结为文化,基础设施以及(最重要的)团队中各个开发人员的经验和灵活性。

答案 3 :(得分:1)

有几个因素需要考虑:

  • 您当地的专业知识是什么?如果你有一个充满C程序员的公司,可能不值得重新培训每个人成为Lisp程序员。
  • 你的图书馆是什么?如果您有要使用的库,请确保它们与您选择的语言兼容。

如果您正在开始一个具有广泛开放选项的新项目,我建议您从应用程序域中提取一些示例问题。没有什么太复杂,但也没有什么微不足道的。然后,在每种候选语言中实施(或让团队成员实施)这些样本。然后,选择一个清晰,简单和适当的。