如何学习C语言编程

6

我已经使用C语言5年了,因此我确信自己掌握了C语法,但是我不知道如何提高编程技能。

有很多现代语言(如C++、Java)的书籍可以学习重构、模式和软件架构等编程技能。但是没有一本书是用C语言编写的。 书的作者说他/她的书不依赖于语言,但我不这么认为。

我该如何提高我的编程技能?我需要学习现代语言并阅读相关书籍吗? 是否有关于软件设计或编程技能的书是用C语言编写的?


我可以问一下,您为什么只想学习C语言?其他编程语言有更多的工作机会,要在C语言领域找到工作,您可能需要从事一些低级开发或嵌入式开发。 - Brian R. Bondy
我曾经一直从事硬件设备和固件开发工作,直到去年。因此,我没有使用过其他语言。 - gurugio
9个回答

4
我认为只会一种编程语言(无论是哪种语言)的人不应该自称为程序员。你应该尝试尽可能多地了解各种语言(然后可以选择专注于一两种语言),但仅限于一种语言会对自己产生负面影响,这是我的看法。
所以,去学习Java、C#、Lisp、Haskell、Python、Perl、Lua、SQL、Javascript等吧... 可能性的列表是无穷无尽的。

7
只会画画的人不算艺术家吗? - Inisheer
7
当然不是,但是只画红色的人并不是艺术家。 - Dean Harding
4
@codeka说:“我不太确定这是现在的真实情况。现在,很多东西被认为是艺术。” - dreamlax
@dreamlax:嘿,那很有可能... - Dean Harding
1
建议:可以称自己为程序员 -> 可以称自己为优秀的程序员。或者是软件专家。 - Brian R. Bondy
1
@Brian:好的,我稍微修改了措辞,因为我可以看出这可能会冒犯那些只懂一种语言的人 :) - Dean Harding

3

尝试使用C语言解决一些 ACM编程竞赛问题(acm.uva.es)。尝试编写数据结构并以最高效为目标,也就是说尽量少地使用资源来完成目标。


2

一本关于“高级”C编程的优秀书籍是Peter van der Linden的Expert C Programming

您甚至可以获得一个包含有趣面试故事的附录 :)!


1

看起来你的目标是:

如何提高我的编程技能?

然而,你只是在寻找非常具体的东西:

但没有一本书是用C语言写的

在我看来,最重要的编程技能是与语言无关的。

我想建议你开放心态,尝试其他可能性,而不仅仅局限于C语言。

为什么要限制自己只学习C语言呢?如果答案是因为你已经花了5年时间学习它,那么让我告诉你,这些年并不是浪费的。

有没有用C语言编写的软件设计或编程技能方面的书籍?

当然有


我强烈建议你问问自己,几年后你想成为一个怎样的软件开发者,然后发布一个新问题,询问如何实现目标并描述具体的目标。根据你的需求,我们可以帮助你找到正确的方向。
此外,C++和Java在当今也不被认为是最现代的语言。

1
我刚在 Stack Overflow 上发现了一本非常好的关于 C 语言的书籍Expert C,它深入探讨了 C 语言的细节。话虽如此,如果你想学习通用编程技术(而不仅仅是高级 C 语言),我建议你学习另一种语言,比如 Python 或 Java,因为在高级语言中更容易理解算法、数据结构和设计模式等概念。

1
我建议自己阅读任何操作系统代码,例如Linux内核代码,并从应用程序一直追踪到硬件。这样,您不仅可以了解各个软件层中使用的不同数据类型和模式,还可以了解它们是如何实现的。
敬礼, Softy

0

如果你想在保持接近C语言的同时进阶,可以尝试学习C++、Python或Ruby。

这将为你提供编程的不同角度。高级语言提供数据结构和算法,因此你不必像在C语言中那样担心实现它们。这意味着你能够专注于解决问题,而不是连接列表或实现排序。

有许多有趣的关于编程的书籍,你需要超越“编程语言”这个范畴。在网络上寻找软件开发博客。

如果你知道自己想要专注的领域,尝试创建自己的应用程序。

顺便说一句,5年时间还是可以的,你应该能够从零开始,最终得到完全功能的软件。

正如其他人建议的那样,尝试参加一些在线编码比赛或查找示例问题并尝试实现它们。

既然你在这里,请查看http://www.joelonsoftware.com/


0

我认为你需要从自己的想法中编写一些项目,或者可以从互联网上寻求帮助,这可以提高你的编程水平。


0
即使你是一名“硬件设备和固件开发人员”,学习其他编程语言和工具也非常有用。阅读关于不同构建工具(如GNU Automake或CMake)、自动化单元测试和实用编程的文章将有助于你在职业生涯中取得进步,即使你只使用C语言仍然会非常有用。

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