学习C语言:是还是不是?

7

我的主要编程语言是PHP,但我也用其他语言写过一些程序。

我用C语言写了2个Apache模块。我之所以选择C语言,是因为性能很重要。(在运行时生成世界地图并输出为.png格式)。

这些模块可以正常工作,但我只能保证代码的质量到这个程度。别误会,我尽力写正确的代码,但我相信它还有很大的改进空间。

我正在考虑将当前的模块改成线程化,但我没有线程化软件的经验,解决错误等问题仍需要花费很多时间。

我的问题是:
我应该先学好C语言(获取一本《C程序设计语言》),还是您建议采取其他方法。

注:
目前我没有使用C语言的计划,除了用于Apache模块。

14个回答

10
如果你真的认真对待编程,我认为学习C语言非常重要。它是许多语言的基础,并且你会遇到许多用C语言编写的源代码。但是,我们也可以说Java、C++等语言同样重要。
依我之见,我认为你应该继续编写你的模块并在需要时学习新知识。这是学习东西的最佳方式。

4
听起来你已经做得很好了。不如将这些模块开源并向社区请求反馈呢?

4

只学习你需要的。

你不需要花费时间阅读《C程序设计语言》并学习该语言的每个特性,才能使其有用。在需要时将《C程序设计语言》作为查找工具使用。如果你开始更频繁地编写C程序,则应投入更多时间来深入学习该语言。


虽然加粗的观点很重要,但是阅读《C程序设计语言》几乎应该成为程序员必读的书籍。目标不是学习C语言,而是接触一本关于编程的优秀书籍。K&R是所有编程书籍应该追求的目标。 - jmucchiello
1
刚刚偶然看到这篇文章,其中粗体部分让我觉得是错误的建议。应该是“尽可能多地学习”。一个人学得越多,学习新事物就会变得更容易,特别是在软件开发领域。懒于学习不能带来成功的心态。 - SirDarius

3
学习编程语言的最好方法是使用它。因此,向前迈进并实际编写C语言的apache模块是一个不错的方法。如果您想更深入地了解该语言,则应执行以下几个步骤:
  • 使用该语言。您已经做到了 :)
  • 了解该语言。K&R这本“圣经”是您应该至少了解一些内容的东西--您不需要了解书中的每一位,但您应该使用它来了解不常用的语言特性。它有一天会变得很有帮助。
  • 与他人合作。加入其他人的项目,使其他人可以阅读您的代码,并阅读他们的代码。开源通常是这样做的好方法,尽管还有其他选择。
从我的“职业”角度来看,我也从PHP开始,最终转向了C。阅读书籍(我强烈推荐Peter van der Linden的“Expert C Programming”,不幸的是已经绝版)将使您更深入地了解语言内部,从而使您成为更好的程序员。我不知道K&R的每一页,但我从未后悔使用和熟悉它(我认为我使用它而不是阅读它--在我看来,它不是教科书而是参考资料)。

2
我强烈推荐那本书。即使你不打算在未来使用C语言,但你永远不知道是否需要使用它,这是一本完美的书籍,可以让你获得更多关于C语言的经验和知识。
正如上面提到的,C语言是许多其他流行语言的基础,所以即使你最终不再使用C语言,你可能会使用其中的一种后继语言。

1
即使您将来没有计划使用C编程,甚至确定您永远不必开发某些与C相关的语言,出于历史原因,我仍然建议阅读K&R书籍:从已知大师学习是一个很好的实践。

1

我认为你面临的真正问题是:

1)C语言是否适合你正在做的任务?
2)随着需求的变化,你是否应该增加对C语言的了解?

对于问题1,也许有其他替代C语言的应用程序。你需要输出.png图像,并且需要管理线程:也许Java或Python是比C更好的选择(在这两种语言中,.png输出只需要几行代码,而我认为在C语言中需要外部库等。线程也是同样的情况。

对于问题2,如果你坚持使用C语言,最好深入学习这门语言,以避免在复杂度增加时遇到陷阱(特别是对于像C这样的低级语言)。


复杂性不在输出.png文件上。地图投影真的需要大量计算,这就是我选择低级语言的原因。 - Jacco

0

我认为学好一门东西从来不会有坏处。而且对 C 语言的扎实理解肯定会进一步提高你对编程的理解。

即使将来你不会使用这种语言本身,但了解底层发生的事情对你来说是无价之宝。


0
我认为每个程序员都应该掌握C语言中重要的低级概念,如指针和手动内存管理。这可以让你深入了解事物的真实运作方式,并且即使在更高层次的编程中也非常有用。然而,如果你不会经常使用C语言,那么我认为没有必要真正掌握整个语言。例如,我不会花太多时间在标准库或学习如何设计复杂项目的C语言方面。只需专注于关键概念即可。

0

我从BASIC到FORTRAN,然后到Java,现在主要使用PHP和Perl的组合。除了玩弄Apache模块之外,我从来没有真正使用过C。但无论你学习哪种语言,最好的学习方法就是实践。

用一本书来介绍语言,但务必实践学习。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接