麦步社区-论坛

标题: 【转】没学过C语言的代价 [打印本页]

作者: jones    时间: 2016-11-22 13:34
标题: 【转】没学过C语言的代价
C语言确实显得有些老旧。最近一版权威性的C语言还是1988年发布的;在接近30年的时间里,这个语言的作者一直都没有对它进行过更新,可见它有多过时了。现在,一说到必须有所了解的编程语言,大家都会想到Rust、Go或是Clojure,却很少有人会想到C语言。

但是我的同事Myles和我都不是追求潮流的人,因此我们坚持让所有学生都熟练掌握C语言。

之所以要求学生学习这门古老的编程语言,我们有下面4个理由:

 在湾区的web和移动初创企业之外的地方,C语言依然是一个被广泛应用的编程语言;
 许多现代编程语言都受到了C语言的影响;
 C语言能让你像计算机一样思考;
 在编写软件的时候,你现在所使用的大部分工具,都是使用C(或C++)语言所开发的。
对于第一条理由,如果你就是想在湾区的web或是移动初创企业找一份工作的话,你可以忽略它。但是第二条原因是你无法回避的。而大多数工程师,都应该重视第三条理由,要想做好计算机工作,你就必须要理解计算机的思考方式。对于第四条理由,它也是非常难以忽略的。

掌握C语言,意味着你可以更好的理解你所使用的各种工具。例如,对于web开发者来说,他们必须要透彻的理解浏览器、操作系统以及所使用的各种语言,而这一切都是以C语言为基础的。

我们的大多数学生,在使用直译式语言的时候,都会同时使用那些用C语言所编写的流行的实施工具。我们经常做这样一个联系:让学生们编写一个Python字节码解释器,从而让他们更好的理解堆栈式机器和直译式语言;在进行这个练习的时候,学生需要仔细阅读CPython的部署。另外,ruby的实施参考也是用C语言编写的,还有大部分JavaScript部署,他们是用C++编写的。

在学习hashmaps和动态数组的时候,我们有两种方式:第一,自己进行部署,使用一种能让我们具体对内存布局进行思考的语言;第二,阅读相关优秀的部署实例。学生要想理解Python列表或是ruby数组的工作方式,我们同样有两种方式:第一,让他们从头自己编写一个版本;第二,阅读标准库部署的资源——在没有接触过C语言的情况下,要想彻底理解这些概念,基本上是不可能的事情。

如果不掌握C语言,要想了解操作系统也会变得更加困难。我们现在所使用的大部分操作系统,都是用C语言编写的,C语言的标准库与syscall接口紧密相连,而且大部分与操作系统相关的概念都需要你先熟
作者: sure    时间: 2016-11-22 14:13
谭浩强!!!
作者: 水月梦    时间: 2016-11-22 16:38
双十一买了C Primer Plus这本书,准备自学C语言
作者: 步往康来    时间: 2016-11-22 16:54
写得很内行,可惜我看到书就头晕,英语和C语言,对我来说是睁眼瞎,这辈子是学不会了
作者: jones    时间: 2016-11-22 17:06
水月梦 发表于 2016-11-22 16:38
双十一买了C Primer Plus这本书,准备自学C语言

像计算机一样思考
作者: jones    时间: 2016-11-22 17:07
步往康来 发表于 2016-11-22 16:54
写得很内行,可惜我看到书就头晕,英语和C语言,对我来说是睁眼瞎,这辈子是学不会了 ...

学了有好处,不学没坏处
作者: cw2549    时间: 2016-12-13 11:02
借了本 明解C语言,但是看到指针那时就看不下去了,默默的把书还给了图书馆。
作者: jones    时间: 2016-12-13 14:00
cw2549 发表于 2016-12-13 11:02
借了本 明解C语言,但是看到指针那时就看不下去了,默默的把书还给了图书馆。 ...

只看没用,变看边写程序。
作者: cw2549    时间: 2016-12-13 15:12
jones 发表于 2016-12-13 14:00
只看没用,变看边写程序。

里面有练习题的但是真心看不进去
作者: jones    时间: 2016-12-13 16:14
cw2549 发表于 2016-12-13 15:12
里面有练习题的但是真心看不进去

练习题没吸引力,直接做表盘
作者: ciyou    时间: 2016-12-13 16:49
除了Go另外两个都没听过的C党飘过
作者: niuniumm    时间: 2016-12-13 17:21
不错,真是太棒了!





欢迎光临 麦步社区-论坛 (http://203.195.186.190/) Powered by Discuz! X3.2