选择正确的语言

时间:2010-06-10 18:35:24

标签: programming-languages

我是大学的学生,所以我的经验有限,因此问题。

如果有人对你说,这是一个编码任务,你在看什么才能选择你将要做的语言或范例?

希望这个问题有意义吗?

10 个答案:

答案 0 :(得分:13)

有许多因素会产生影响:

  • 表现有多重要?快速编写慢速解决方案是否可以接受?
  • 我需要什么类型的图书馆?
  • 平台是什么? OS?网?移动设备?
  • 问题的本质是什么?正则表达式字符串处理?数学用Matlab / Maple / etc?
  • 图形?文本?
  • 我想要解决方案的可重用性如何?

这假设您实际上可以选择语言,当然。一种语言可能最适合这个问题,但如果你对它不够了解,那么它几乎不是一个选择,除非你有时间学习。

答案 1 :(得分:3)

我认为问题是“你怎么知道这项工作的正确工具是什么?”

部分取决于要求。如果他们谈论Web界面或数据库,您可能需要一些SQL经验和HTML经验。如果他们提到高性能图形显示,那么可能会提示C / C ++和OpenGL / DirectX。如果要求谈论高速数字处理,你可能需要...嗯...别的东西。 ;)

接下来要做的就是可以选择的东西。如果您在一个主要具有Java经验的团队中工作,除非您有非常好的理由要切换,否则您可能会坚持使用Java,或者如果您已经拥有十几个Visual Studio许可证,那么它可能就是某种.NET解决方案。

答案 2 :(得分:1)

我总是看几个不同的方面。其中大部分归结为语言支持库,环境和人为因素而非语言本身。也就是说,不同的语言具有不同的优势,选择与您需要的语言相匹配的语言非常重要。以下是我在开始一个新项目时考虑的一些事项。

  1. 要执行的任务的范围。这是一项重大的企业级任务还是更小的任务。不同的语言对不同的范围有不同程度的支持。
  2. 它是什么类型的问题?是数学,文本,逻辑,用户界面驱动?语言的不同范式将决定它适合的问题类型。您很可能不会使用过程语言来处理UI驱动的内容。
  3. 您对语言的了解程度如何?大多数情况下,工作的语言不止一种,表现同样出色。您能够使用该语言编写代码(或愿意学习它)的能力非常重要。
  4. 这是什么环境?在工作中,我有不同的要求,而不是在家里。工作更频繁地决定使用有限的数量。此外,如果我和其他人在一个团队中,他们可能也需要了解它。

答案 3 :(得分:0)

除非这是一个基本上尖叫的任务,告诉你哪种语言最适合你,你应该选择一个你最流利的语言......我想。

答案 4 :(得分:0)

这完全取决于您的兴趣和专业知识。如果您对Java有很好的了解,那么您是否希望花时间在C / c ++ / C#中进行编码?

就我而言,我会考虑可行性。如果解决方案在.Net中可行,我将使用.Net。

还需要考虑的其他事项是要实现任务的平台。如果目标服务器可以是Linux / Mac / Windows,那么请转到Java。如果任务需要太多的系统级工作,请转到c。  等等...

答案 5 :(得分:0)

冗余是关键。我会选择我最熟悉的语言,因为我的工作效率会更高。

尝试选择一种语言并掌握它。当然,了解大多数语言是件好事,然后你可以选择最适合你的语言。

然后坚持你最喜欢的那个。

对我来说,它是Asp.Net C#/ jQuery。

PHP有一个很好的社区,它是免费的。如果你是新人,我会从这开始。

答案 6 :(得分:0)

我看一个问题,我想在很高的层次上我将如何用我所知道的一些语言来实现它。比方说,我知道在MFC / C ++中实现一个对话框需要两倍的代码,就像在C#中实现它一样,而且我的Java有点生疏。我会选择用C#编程。

但是,由于您是学生,您可能希望选择一种您不熟悉的语言,并使用该语言实施该项目。我的理由是我进入大学非常了解C ++。用C ++实现我知道我可以做的事情对我来说并不是很好。但是,在我不熟悉的C#中实现它会让我从程序中获得更多的知识,而不是我本来会得到的。在学校里保持这个概念,你最终会知道更多。

所以基本上你的选择取决于你是否想用你知道的最简单的语言编写它,或者你想用你想要学习的语言编写代码。每个决定都有不同的优势。

答案 7 :(得分:0)

我要看的第一件事是:我所知道的语言/范例是什么?基于这个答案,我会问自己哪种语言/范式的优势能够解决问题。这是一个例子:

我了解JavaScript,Java和Python(用于此对话)。这个问题是基于网络的吗?支持JavaScript的巨大论据。很容易尝试新想法对这个问题有价值吗?支持Python的大论据。它是长期运行和性能敏感的吗?这是Java的论据。

答案 8 :(得分:0)

在现实世界中,您几乎总是在构建由其他人创建的库和框架。所以我问的第一个问题通常是什么是最好的库和框​​架,然后在它们的基础上构建。按照我使用它们的大致顺序分解为:

  • 用于密集图形和图像处理的C ++,一些数字工作和高级解释器。

  • 用于Web服务器端的Java + XSLT(虽然我已经做了大约6年没用过多少web了,可能会使用Ruby来查找那些东西,或者在MS商店中使用.net)

  • C#用于商业表格和不太密集的图形

  • python用于非常小的脚本,偶尔也是小型GUI应用程序。

  • C99如果我想使用较低级别的库,较低级别的解释器,以及偶尔的PIC或嵌入式系统。

我最终还是做了一些Fortran维护,但从未启动过Fortran项目。

这些绝不是决定性的,但我发现这些领域的效果都很好。其中一些是判断 - 我想换掉长编译时间和简单的模块化来获得性能和表现力(C ++)的组合吗?我是否想要快速创建基于表单的现代GUI(C#)?我是否想操纵指针并编写自己的垃圾收集例程(C)?我想快速尝试一种算法来查看它是否有效(Python)?

答案 9 :(得分:0)

选择已有详细记录的语言。