如果我已经知道大会,我还应该学习C吗?

时间:2009-01-29 09:24:27

标签: c assembly

通常,学习C的主要原因之一是它使您更接近低级别的编程,这使您可以深入了解事物在高级语言中的工作方式。

我已经在各种程序集风格中编程了一段时间,你不能得到比我编写的更低的级别,我对幻想的参考类型或指针没有任何幻想。应该指出的是,我在Java和C#方面也相当多。我不仅知道集会。

是否值得努力破解K&R并花费一些宝贵的时间来学习C语言的复杂性,或者我的时间最好是学习别的东西?

14 个答案:

答案 0 :(得分:16)

  

通常学习C的主要原因之一是它让你更接近低级编程

好吧,抓住那一个,看看其他人并自己决定。如果你想:

  • 保持接近低水平但获得便携性
  • 能够使用C已经
  • 的庞大代码库
  • 只是学到新的东西

然后你可能想学习C.

答案 1 :(得分:11)

是的,绝对的。编写任何大小的程序在直接组装中非常麻烦,因此大多数采用金属写入的应用程序(如硬件驱动程序)大多数都是在C中,或者至少是C将调用集合函数粘在一起。 / p>

另外,由于C与机器有如此密切的关系(也就是说,它是低级别),因此在学习C之后学习C将是理解编译器真正做什么来转换高级代码的一个很好的基石进入机器说明书。

答案 2 :(得分:3)

你知道汇编,你似乎知道C#。学习另一种语言从来都不是坏事,但如果你在不久的将来需要它,我只会推荐学习C.我认为你可以通过学习像Ruby这样的动态语言或像Common Lisp这样的函数来扩展你的知识。

答案 3 :(得分:3)

绝对!学习C也将改进你的汇编编程。学习C语言后,您将开始将结构化方法转移到汇编程序编程中。我注意到,我对高级语言学习的越多,我的汇编语言编程的组织和可理解性就越好。

能够混合C和汇编程序非常有用。能够在单个项目中使用它们允许您在该项目中的任何给定情况下使用适当的解决方案。对于大多数任务,C编码速度更快,有时候情况恰恰相反,汇编语言更快。有时,汇编语言能够更好地表达解决方案的特定方面(汇编程序与硬件的紧密映射可以使编程I / O或设备管理更加清晰)。对于更抽象的概念,C可以更清晰(C ++可以再次更好)。

学习C ++也是如此。我发现自己使用面向对象的方法来进行C语言和汇编程序编程。

最后,它是课程的马匹。针对手头的问题使用适当的语言。

答案 4 :(得分:1)

我认为你应该学习任何编程语言的最重要原因是你可以使用它。

如果你已经学会装配做某件事,并且你觉得你可以用C做更好的事情,那么请一定进行。

但如果你发现你在C中无所事事,那么从专业角度来说,学习它是没有意义的。

但是,如果您想将其作为业余爱好或个人努力。然后是你的时间,做你想做的任何事情。

答案 5 :(得分:1)

C是便携式的(如果你仔细写的话),这对我来说是个好理由。

答案 6 :(得分:1)

没人提到......

C是更快地编写汇编程序的途径。当我编写电脑游戏时,我们首先在C中编写了所有内容,然后重新编写了所有时间的部分,即旧的80-20规则。 80%的时间是20%的代码。

为此,我们编译了我们希望重写的代码并使用dump to assembler file flag。然后我们采用C生成的汇编程序文件,并将其作为编写更优化的汇编程序代码的基础。这比从头开始要快得多。

今天这种方法要困难得多,因为编译器要好得多,人类更难以改进编译器代码 - 因为处理器变得如此复杂,快速的代码已经成为关于保持缓存和管道完整的。

答案 7 :(得分:1)

学习一门新语言总是一件有趣的事情,特别是如果它与你已经知道的有很大不同,范式明智的话。所以我会说去吧。

我发现C仍然是the most sought-after languages on major search engines and book sites中的一个非常有趣。

答案 8 :(得分:0)

也许不是......但学习它不会有什么害处:)我个人在C之前学习了x86汇编,我的汇编知识让我更容易掌握C指针。

答案 9 :(得分:0)

这取决于。如果你想使用C ++,你肯定也应该学习C.如果你想用Python或Perl编写代码,你真的不需要它,因为你对Assembler的内部有了解。

有一件事:你是否使用指针和堆在Assembler中工作?理解指针和内存管理对于每种更高级的语言都非常重要。如果你没有得到指针和堆正确的想法,你应该尝试C。

答案 10 :(得分:0)

我务实地看待它 - 除非你觉得你的工作性能比程序员的工作效率更重要,否则我不会打扰。经过12年的编程,我从来没有遇到过应该用C编写的工作,而不是垃圾收集语言。但是,您的情况可能会有所不同。

如果你所知道的只是Java,那么我会说是的,这会很棒。

答案 11 :(得分:0)

我认为这取决于 - 你(或者你将来可能)必须处理包含C的代码库吗?那里有很多东西,所以我很惊讶你还没有必要用C做一些事情(至少阅读它),因为你引用了汇编,C#和Java经验。

另外,鉴于您已经了解了上述语言集以及随之而来的概念,我猜想学习C语言对您来说是一件轻松的事。

答案 12 :(得分:0)

是的,它是c就像所有编程语言的核心几乎每种语言都是基于它构建的,感觉你知道c#它不会带你学习c 如果你已经完成了大量的装配工作,那么我猜你有一天可能还没有使用它我不认为有一个编程工作要求你只知道装配,即使是大多数低级软件也需要C,比如操作系统使用C和Windows也使用C ++所以在我看来你甚至不应该考虑它C它就像一个基础知识甚至大多数网络开发人员都知道C

答案 13 :(得分:-6)

令人惊讶的是,在一个新的脚本语言世界中,每天仍然有人只能知道汇编程序。

我自己,在写了更长时间的perl或javascript之后总会找到像C或C ++那样缺乏的低级语言,例如,我在perl中编写foreach(@array),在C / C ++中我必须摆弄for循环和索引和/或迭代器。

所以,是的,我只能想象你将从C为你提供的抽象中获得多少。

此外,扩大视野总是一件好事。