0

我是一名 Python 程序员,也懂一点 Ruby 和 PHP。我对 Java 的了解还不够,无法做任何有意义的事情,而且我当然不知道 C、C++ 或其他低级语言。我听说过所有“谁在乎速度,因为硬件便宜,但编码器很贵”的论点,我不想在这里引发争论。我想了解关于低级编程语言社区的两件事(无论是 C 还是汇编):

  1. 您选择仍然使用它的主要原因是什么(工作要求、速度、桌面与网络等)
  2. 我仍然值得花时间在游戏后期学习 C++(从金钱上讲)或其他东西,还是我会受益?

此外,在选择原因时,请考虑动态类型与静态类型的优缺点。我主要为网络编程,但没有充分考虑到这一点,因为部分原因是网络就是我所知道的一切。

4

7 回答 7

4

无耻的 Fortran 程序员在这里。速度速度速度。哦,和我一起工作的所有科学家都相当流利地使用 Fortran。但后来我在大型集群和超级计算机上从事计算电磁学工作,如果 Web 应用程序跳起来咬我的鼻子,我就无法识别它。

我不会将 Fortran 视为低级或缺乏表达力,我认为它是用于线性代数和更一般的数字运算的 DSL。那么我为什么要上钩回答这个问题呢?

动态与静态类型?静态的,一切都在编译时绑定,这样编译器就可以进行优化。

于 2010-03-10T17:36:28.850 回答
3

对于 Web 程序员,C/C++ 几乎不会为您提供任何优势。它的表现力不如 Perl、Ruby、Python 等,并且需要更多的代码和对内存管理细节的关注。不幸的是,为其“功能”选择一种语言通常仅次于为其平台选择。C++ 不像 C# 那样干净和优雅,大部分来自它的 C 兼容性。可悲的是,即使对于某些事情有更好的语言,但大多数都没有编译,并且大多数都没有得到广泛的支持。

如果您计划开发客户将下载或通过 CD 接收的商业产品,那么 C/C++ 可为您提供知识产权保护(难以进行逆向工程)、运行时占用空间小以及针对旧平台的能力像 Windows XP。

在游戏中学习 C/C++ 还为时不晚。只要所有高级语言都存在,C/C++ 就会存在,因为这些语言是用 C/C++ 实现的。并不是说有一天我们都会迁移到 Python 并且 C/C++ 会被淘汰。高级非编译语言不是自提升的,因此没有 C++ 就无法存在。

如果您要实现更高级别东西,如语言、API、工具包、驱动程序、IDE 等,则可以使用它。但如果您想要以最快的方式开发内部 GUI 应用程序或网络应用程序。

只需学习工作的工具。如果工作发生变化,或者您希望改变工作,那么您可能想要推动自己学习 C++,以了解计算机科学世界的另一面,即 CPU 和您当前编写 Web 应用程序之间的一面。

于 2010-03-10T17:47:43.917 回答
2
  1. 我认为这里的三大原因将是性能、传统系统支持和嵌入式开发。

  2. 如此巨大的主观性,它使任何答案都变得毫无用处。

于 2010-03-10T17:39:03.087 回答
1

对于数值计算,我直接编写比使用C++直接Python更快。当然,我可以将我的 C++ 库连接到高级语言(我确实这样做了),但由于我的大部分工作都是在低级数字方面完成的,所以我不会获得太多。

还要考虑到很多库,特别是在科学计算中FORTRANC或者C++链接它们C++的速度要快得多(特别是如果你只是想完成它),你自己创建包装器和接口。

如果能从学习一门低级语言中得到什么,很大程度上取决于你的问题领域。

于 2010-03-10T17:38:19.280 回答
1

低级语言有几个很好的理由。

首先,有很多应用程序对性能很重要。我工作的主要应用程序本身就足够慢(它做了很多事情),并且在 Python 中无法使用。

其次,有些应用程序需要不是那么大的独立可执行文件。

第三,C 和 C++ 中有大量遗留代码,而且不会很快消失。

第四,操作系统通常用 C 或 C++ 或类似语言编写,并在其中公开 API。如果您需要熟悉操作系统,无论出于何种原因,您最好使用操作系统语言。

动态类型显然更适合让应用程序快速启动和运行,而我的 Lisp 背景让我相信静态类型通常只是过早的优化。然而,很多人认为静态类型对于在大型项目中强制正确性要好得多,而 C 和 C++ 非常适合大型项目。

关于你的第二个问题,我不知道你以后想做什么,所以我不知道你学习C++是否值得。对于专业发展,我强烈建议学习多种语言,包括 C 或类似语言。SO还有其他关于学习什么语言的问题。

于 2010-03-10T17:44:33.607 回答
1

为什么 Python、Ruby 和 PHP 不是自己编写的?

关键任务应用程序需要尽可能好的性能和算法,并且不需要元编程之类的东西。C++ 有一些很棒的想法和库,然后我在那些现代语言中发现了它们,有时更好有时更糟(比较 C++ 中模板的功能和 Java 中的泛型)。低级语言将使您了解更多有关计算机、操作系统或网络的低级抽象的知识。

静态限制了你的编程并且经常让你写出类型,但它也让你更好地表达你的意图,编译器可以自动证明,你可以获得对工具的支持。Dynamic 让您解放双手,您可以做更多甚至更轻松,但您必须进行更好的测试。

于 2010-03-10T17:48:21.620 回答
0

我可能在这里误解了你,但听起来你的印象是 C++ 是适合各种项目的语言。它不是。您不会使用利勃海尔卡车进行越野旅行。现存的每一种流行语言都是这样,因为它在某些情况下效果很好。曾经有一段时间,C++ 被用于编写 Web 应用程序,但由于生产和性能之间的权衡,它很快让位于 Perl 脚本。因此,在回答您的第一个问题时,主要是人们仍在使用它,因为在某些情况下,它是完成这项工作的最佳工具。

至于要不要学,我说你有时间有心去学。即使 C++ 从来都不是任何项目的正确工具,但如果你对 C++ 中必要的概念有充分的理解,你也会成为每种语言的更好的开发人员。

于 2010-03-10T17:54:20.970 回答