我有兴趣学习C。我读过了 凯瑞, ,我什至在 R 和 Python 中做了一些简单的 C 扩展工作。对于使用 C 语言做更实质性的事情,什么是有价值的项目想法?任何好的在线资源,类似于 深入Python?特别是,资源集中在已经了解较新语言并试图学习 C 的程序员(其中提到“在 C 中询问数组的长度是无意义的,你这个懒惰的 Pythonista”)。

我的背景:

数学/统计、Python、R 中的日常编程,主要围绕自然语言处理、算法等。

有帮助吗?

其他提示

几年前,我的一位朋友问我同样的问题:“我如何学习C?”我告诉他要写一个设备驱动程序。

想象一下,当他真正做到这一点时,我感到很惊讶。

有点偏离主题,但既然你提到你的背景是在数学和统计学中你应该尝试在项目欧拉。有200多个数学/统计相关问题可供解决。此外,一旦您找到解决方案,您可以查看问题论坛,了解其他人如何解决相同的解决方案。非常方便看到其他人如何解决问题......以及开机的乐趣!

www.projecteuler.net

我和你有相似的背景。我使用 Python 为我的博士研究以及网络编程进行大量数学和数据分析。不同之处在于我是在 90 年代首先学习 C 的。

如果您可以为 Python 编写 C 扩展,那么我想说您对 C 的优点有很好的把握。在我看来,当今的 C 最适合做两件事:

  • 编写与硬件交互的低级软件。
  • 编写执行重复、乏味、CPU 密集型工作的代码(数学、XML 解析等)...也许作为高级语言的扩展。

当然,许多高级应用程序也是用 C 语言编写的,特别是在我发现的 Linux 下,但在很大程度上,这些应用程序并不是真正用 K&R 的“基本”C 语言或标准库编写的。相反,他们使用 Glib、wxWindows、Apache Portable Runtime 等框架,这些框架都使用某种面向对象的结构或约定,并且通常抽象出 C 的一些基本内存管理细节。

所以我认为让你的 C 技能变得有用 在当今的编程语言环境中 主要是做低级工作,或者熟悉这些高级框架之一。我个人非常喜欢 Glib 和 GTK 库,因为它们使用了非常 动态的 面向对象的模型(很像 Python),而不妨碍您使用 C 的低级功能。

您可以为简单的语言编写解释器。使用flex / bison。使它多线程等。这很有趣,往往会运用指针。我为学校项目写了类似的东西:一个简单的基于堆栈的语言,有两个不同的垃圾收集器,TwoSpace和并发版本。那很有趣。并且可以作为比“hello,world”更大的第一个c程序!

退房学习C很难,这是一本免费的电子书,它带你通过很多C代码和练习的例子,以便你学习。

http://c.learncodethehardway.org/

在日常工作中查找或定义问题并强制自己使用C而不是Python来解决问题。这将迫使你学习语言,同时将问题与你通常做的相提并论。

实现虚拟机(例如JVM)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top