为什么你使用表达力较低的语言,我也应该这样做?

时间:2010-03-10 17:30:56

标签: programming-languages low-level

我是一名Python程序员,他也熟悉Ruby和PHP。我真的不太了解Java做任何有意义的事情,我当然不懂C,C ++或其他低级语言。我听过所有“谁关心速度,因为硬件很便宜,但编码器很昂贵”的论点,我并不想在这里提出辩论。我想了解有关低级编程语言社区的两件事(无论是C还是汇编):

  1. 您选择使用(工作要求,速度,桌面与网络等)的主要原因是什么?
  2. 我是否值得花时间在游戏后期花些时间学习C ++(金钱来说)或其他人,或者我会受益?
  3. 另外,在选择原因时,请考虑动态与静态类型的优缺点。我主要是为网络编程,但不要完全考虑到这一点,因为部分原因在于网络是我所知道的。

7 个答案:

答案 0 :(得分:4)

这里没有变相的Fortran程序员。速度速度快。哦,和我一起工作的所有科学家都相当流利地使用了Fortran。但后来我在大型集群和超级计算机上从事计算电磁学研究工作,如果网络应用程序跳了起来,我就不会认出它。

我不认为Fortran是低级或低级的,我认为它是线性代数的DSL和更通用的数字运算。那我为什么要拿诱饵回答这个问题呢?

动态与静态打字?请静态,在编译时将所有内容都绑定,以便编译器可以优化它。

答案 1 :(得分:3)

对于网络程序员来说,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等,则使用 工具。但如果您想要C ++,则不能使用C ++工具开发内部GUI应用程序或Web应用程序的最快方法。

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

答案 2 :(得分:2)

  1. 我认为这里的三大理由将是性能,遗留系统支持和嵌入式开发。

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

答案 3 :(得分:1)

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

还要考虑很多库,尤其是科学计算中的库都位于FORTRANCC++中,并且C++与它们的链接速度要快得多(特别是如果你只是希望完成它)自己创建包装器和接口。

如果从学习低级语言中获得的收益很大程度上取决于你的问题领域。

答案 4 :(得分:1)

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

首先,有很多性能很重要的应用程序。我工作的主要应用程序虽然很慢(它做了很多事情),但在Python中无法使用。

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

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

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

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

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

答案 5 :(得分:1)

为什么不编写Python,Ruby和PHP?

关键任务应用程序需要最佳性能和算法,不需要元编程等功能。 C ++有一些很棒的想法和库,然后我在那些现代语言中找到它们,有时候有时会更糟糕(比较C ++中的模板和Java中的泛型)。 低级语言将使您了解有关计算机,操作系统或网络的低级抽象的更多信息。

静态限制你编程,并且经常让你写出类型,但是它也可以让你更好地表达你的意图,这可以由编译器自动证明,你可以得到工具的支持。动态为您提供自由的手,您可以做得更多,也可以更轻松,但是您必须更好地进行测试。

答案 6 :(得分:0)

我可能在这里误解了你,但听起来你的印象是C ++是适合各种项目的语言。事实并非如此。您不会使用Liebherr truck进行越野公路旅行。现有的每种流行语言都有这种方式,因为它适用于某些情况。有一段时间,C ++被用来编写Web应用程序,这很快就让位于Perl脚本,因为在生产和性能之间进行权衡。因此,在回答您的第一个问题时,主要是人们仍然使用它,因为在某些情况下它是最好的工具。

至于你是否应该学习它,我会说你是否有时间和愿望。即使C ++永远不是任何项目的正确工具,您对C ++中必需的概念的理解也将使您成为每种语言中更好的开发人员。