代码之家  ›  专栏  ›  技术社区  ›  Gregg Lind

我应该如何学习C语言?[闭门]

  •  5
  • Gregg Lind  · 技术社区  · 18 年前

    K & R ,我甚至在R和Python中做了一些简单的C扩展工作。用C做一些更实质性的事情,有什么值得一提的项目想法?任何好的在线资源,类似于 Dive Into Python ? 特别是,资源集中在那些已经了解新语言的程序员身上,他们正在尝试学习C语言(其中提到了“在C语言中要求数组的长度是胡说八道,你这个懒惰的Pythonista”)。

    我的背景:

    8 回复  |  直到 9 年前
        1
  •  15
  •   Robert S.    18 年前

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

        3
  •  4
  •   Inisheer    18 年前

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

    www.projecteuler.net

        4
  •  4
  •   Dan Lenski    18 年前

    如果你能为Python编写C扩展,那么我想说你对C的用途有很好的理解。在我看来,C今天最适合做两件事:

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

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

    主要是做低级工作,或者熟悉这些高级框架之一。我个人非常喜欢Glib和GTK库,因为它们使用的是非常复杂的 面向对象模型(很像Python),而不妨碍您使用C的底层特性。

        5
  •  2
  •   Daren Thomas    18 年前

    school project :一种简单的基于堆栈的语言,具有两个不同的垃圾收集器TwoSpace和一个并发版本。那很有趣。作为第一个比“你好,世界”更大的c程序是可行的!

        6
  •  1
  •   theprole    14 年前

    看看《艰难学习C》,这是一本免费的电子书,它带你通过许多C代码示例和练习来学习。

    http://c.learncodethehardway.org/

        7
  •  0
  •   ctacke    18 年前

    在日常工作中发现或定义一个问题,并强迫自己使用C而不是Python来解决它。这将迫使你学习语言,同时使问题与你通常做的事情相关。

        8
  •  0
  •   JesperE    18 年前