我应该坚持使用哪种语言[关闭]

Posted

技术标签:

【中文标题】我应该坚持使用哪种语言[关闭]【英文标题】:Which language should I stick with [closed] 【发布时间】:2011-06-14 07:39:56 【问题描述】:

我在 Java 和 Web 开发方面拥有良好的经验,并且在 C++ 方面也有一些经验。最近,我一直在考虑将 Java(厌烦它)留给 C++。然后是 Python(不喜欢 Ruby)。我觉得它太好了,无法抗拒并开始使用它。但是 C++ 仍然留在我的脑海中。

现在我想“坚持”一种语言来流利地使用它。

Python 非常适合快速编程,但它太简单了,我担心它会让我失望。 C++ 更难,但我怀疑我是否应该使用这种浪费更多时间来让编译器满意的语言。

我应该坚持使用哪种语言。有cmets吗?

【问题讨论】:

你想用它做什么?语言是为了实现一个目标。确定要求,确定一种可以满足这些要求的语言 - 而不是相反。 【参考方案1】:

我建议您不要担心“固守”一门语言,而是要学会进出对您的问题最好的解决方案。

最好的程序员只是出色的问题解决者——特定的语言并不重要。

【讨论】:

这太简单了。我见过的最优秀的程序员了解多种语言,并且非常清楚各种选择的精确含义,这些选择涵盖通过语言特性、设计模式、应用程序架构和主机间企业技术进行的最低级编译器优化。通过跨越高级和低级语言、不同的范式、库和技术,可以最好地学习大部分洞察力。即使出于实际原因必须使用通用语言,在其问题领域中看到专业语言的优雅也可以产生新的想法。 @Tony - 你对他最后一句话的回答很到位;但是他的第一句话本质上暗示了您所说的“解决问题的最佳方法”。 @Kelsey:是的 - 有很多共识......在特定项目的上下文中,优秀的程序员将充分利用任何语言。但是,他们在这方面取得了成功,因为 - 有时就像亚当一样 - 他正在决定学习哪种语言 - 他们选择了一个多样化和强大的集合并学习他们的最佳实践。就教育而言,特定的语言确实很重要。内省、lambdas、序列化、常量正确性、模板、惰性求值的完整实用程序 - 很难完全理解,除非您使用一种支持简单、优雅使用的语言。【参考方案2】:

我认为您不会“离开”一种语言。它仍在您的工具箱中,只是可能不经常使用。我建议您更像是:

“我正在考虑通过学习一门新语言来拓宽我的选择范围。”

就在上周,我使用过 C#、Java、Bash、Python 和 javascript。当你被视为问题解决者时,你永远不知道下个月会被要求帮助什么,但你知道你会做一些事情......

【讨论】:

【参考方案3】:

我主要有一些特定领域的语言和一些通用语言(C、C++、Java、Delphi 等)的经验,而我对 Python 没有经验(只是大致了解它)。

您不能根据语言的难易程度来判断语言。您说您必须考虑必须花时间调试代码才能取悦 C++ 编译器的事实。我是一名经验丰富的 C++ 程序员,我可以一次编写数千行代码,然后编译并运行,第一次尝试一切正常(嗯,有一些不可避免的拼写错误和其他东西,就像在任何编程中一样) .因此,该论点实际上仅指您的编程语言技能水平。对于我拥有的任何项目,我总是偏爱 C++,因为(对我而言)用这种语言编写代码非常有效。这肯定可以作为一种务实的观点,即您应该使用您实际上可以提高生产力的语言(在短期内)进行编程。

但是,在学习方面,您必须转向似乎适用于您的领域的内容。我做人工智能来控制机器人,所以我需要硬件访问,我需要 OOP、GP 和 TMP 提供的复杂编程结构。所以,C++ 的选择对我来说是理所当然的。您必须询问您所在领域的常见任务是什么?它们在低级与高级、网络与数值分析、面向用户与面向计算等尺度上处于什么位置?在您的领域(或您想学习的语言)中使用最广泛的语言是什么?

我还想指出,作为 Linux 用户,在 Linux 软件生态系统的开源开发人员中似乎相当普遍的设置是用 C 实现低级驱动程序,用 C++ 实现复杂软件,以及用 C++ 实现高级驱动程序。 Python 中的级别软件接口和插件。这正是我在许多开源软件中所观察到的,我认为它似乎使用了所有三种语言中最好的一面是有道理的。这就是我考虑开始学习 Python 的原因。

【讨论】:

我认为这解决了我的困境。【参考方案4】:

我建议至少研究一下更深奥的语言。在 Smalltalk 中编写一个小型 GUI,或者在 Common Lisp 或 Scheme 中编写一个实用程序。不要只是尝试使您的 Java 知识适应这些语言,而是要真正尝试像世界上的 Ron Jeffries 和 Paul Grahams 使用它们的方式来使用这些语言。

如果你只是想学习一些适用于就业市场的东西,那么那些东西就不如 Python 或 C++。但是,学习与您已经知道的语言截然不同的语言应该会带来一个有趣的挑战,并永久改变您对编程的看法。

【讨论】:

【参考方案5】:

我个人的主要活动是 C/C++/Assembly,同时探索其他语言。这是因为我的目标是尽可能保持敏锐,无论是在解决问题的部分还是硬件友好方面。就我个人而言,我发现在硬件旁边以及其他方面更令人兴奋。此外,当您经常使用后一种语言进行编码时,管理指针、内存等变得自然而然地使您成为一名更好的编码员,甚至更适合问题解决者;^)。

希望这会有所帮助!

【讨论】:

【参考方案6】:

这真的取决于你打算做什么样的工作。但是,实际上,大多数高级编程语言都遵循非常相似的原则。如果您了解所有基本概念,从一种语言切换到另一种语言只是改变语法的问题。

不过,如果您坚持完全使用一种语言,我还是 java 的粉丝。我认为你是对的,C++ 对于大型任务来说有点笨拙。你可以用 java 完成任何你可以用 python 完成的事情,但是它用 python 的一些平滑性换取了你正在做的事情和实际发生的事情之间更直接的关系。 (至少,这是我的看法,作为一个使用 java 比使用 python 花费更多时间的人。两者的专家可能不同意我的观点。)

【讨论】:

【参考方案7】:

愚蠢的程序员是优秀的程序员。我维护了比我聪明得多的人的代码,他们的代码一团糟。有趣的是,除了真正聪明的程序员代码确实有效之外,不会编程的人也会发生同样的事情。

在这两种情况下,其他人都很难接管,同时聪明的程序员也变得无聊,正在做其他事情。

优秀程序员编写“愚蠢”、易于理解的代码,他可以将这些代码交给其他人来维护,这样他就可以继续做更多有趣的事情,而不是维护那个烦人的大型软件这非常需要重构。

程序员应该很聪明。代码应该是愚蠢的。

【讨论】:

以上是关于我应该坚持使用哪种语言[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2框架是用哪种语言开发的? [关闭]

你会用哪种语言自学SICP? [关闭]

哪种编程语言最好地弥合伪代码和代码之间的差距? [关闭]

用于识别文本文件中的编程语言的代码 [关闭]

用于识别文本文件中的编程语言的代码 [关闭]

哪种脚本语言更适合嵌入多线程 C/C++ 应用程序 [关闭]