2010年10月13日 (最后更新: 2010年10月14日)
何时使用何种语言以及原因
评分: 3.3/5 (149 票)
过去几个月来,这里一直在争论什么语言是“最好的”,或者更恰当地说,“最差的”,这反过来又定义了另一种语言的优越性。
我想澄清一件事。没有最好的语言。没有最好的范例。没有最好的算法、方法、优化、技术,任何东西都没有最好的。所有优秀的程序员都知道这一点,所有真正的计算机科学家都知道,语言只是计算科学中的一种工具。如果有人制造了一个更好的螺丝刀,为什么不用它呢?也许这个螺丝刀只是在更快地完成工作方面更好,而不是更有效地完成工作。或者它在这两方面都很棒,但螺丝因此没有牢固地拧在墙上。这与所有计算机语言的差异相似。
所以一位程序员可能会问“我应该在什么时候使用“XYZ”?” 当得到回答后,他们可能会问“为什么?”
我在这里回答这些问题。
我应该在什么时候使用汇编语言:当您需要对硬件进行最低级别的访问时,您应该使用汇编语言。或者当您需要手动优化算法等内容时。这并不是说您不能使用汇编语言来开发桌面应用程序,但这完全不切实际。一般来说,当您需要比快速编写和可读的代码更多的原始控制时,请使用汇编语言。
我应该在什么时候使用 C/C++:首先,c 和 c++ 都是较低级的语言,虽然远不如汇编语言那么低级,但仍然很低级。现在它们也是非垃圾回收的语言,所以您必须处理调试内存泄漏之类的问题,但这种假定的缺陷是这些语言的最大优势之一。虽然您可能会花费更多的时间编写和修复代码,而不是优化代码,但您有能力比垃圾回收的代码更好地优化它。因此,任何告诉你“为了你的内核/游戏引擎/通用时间和资源关键型应用程序使用 java/C#/Scala/etc”,因为他们认为你会更快地完成它,从而赚更多的钱的人,他们对计算机科学和经济学一无所知。一个月内构建 x 个劣质玩具,你只会剩下一堆垃圾。一个月内构建 1 个很棒的玩具,每个人都会想要你的玩具...拜托,谁想玩一堆垃圾?
现在您可能会想,如果真是这样,那我为什么要使用 java/c#/scala/F#/etc 等语言呢?事实是,有时您确实希望实现速度比效率更高,在某些情况下,其中一些语言在这两方面都做得更好。
所以我应该在什么时候使用 java:如果这不是一篇公正的文章,我会说永远不要,然后就此打住。但这篇文章应该是中立的,所以 Java 非常适合基于服务器的应用程序,以及基于客户端的 Web 应用程序。它速度快,与数据库配合良好,同时也有一些开销。我对 java 最大的问题是它不是一种很好的语言,事实上它很糟糕。但这就是人们试图将一种旨在教学生学习计算机科学和 OOP 的语言变成行业标准的结果。它从未打算成为今天的样子。
c# 怎么样? 只要你想使用 java,就使用 C#。 我认为 C# 就像 java...只是它能用。
像 F# 这样的函数式范式语言怎么样? 当您需要更高的平台独立性时,您会想要使用函数式语言。 函数式语言使您更容易处理您的算法、方法、函数等,而无需考虑 CPU 线程。 它非常适合多平台和多线程。 这也是 scala 在这些方面表现出色的原因。
所以考虑到所有因素,您在编程时需要记住一件事。 这不是关于找到最好的工具并像教条一样坚持它。 这实际上是关于找到学习如何使用这些工具的最佳技术,以便在构建软件时拥有一个完整的工具箱。
编辑:我上课迟到了,忘了添加“稍后会添加更多”并删除以上部分。