Python 等高级语言盛行,我还有必要学 C 吗

jopen 10年前

知乎上有人邀请我回答类似的问题,由于我擅长 Python,于是特别把这里的标题改为 Python 相关,不伤大雅。


这种问题其实是个好问题,而且这种问题与其他圈子的一些问题是类似的,比如:

物理学
那些牛逼的人,他们不仅细到最微观的量子层面,还宏观到了宇宙层面,看似毫不相干,其实息息相关。

宏观世界的物理规律不断被微观世界的奇妙法则修正,如果不懂微观的那些本质,是很难明白你所面对的宏观体系,比如你拿地球表面上人类可感知的经典物理去描述更宏观的宇宙物理,你会发现大量不可思议没法解释,究其原因就是缺乏微观的更本质了解。

人类学
那些牛逼的人,他们不仅细到最微观的基因层面,还宏观到群体行为层面(比如经济、政治、社交等)。

更牛的是,拉远一看加了个时间维度,结合解剖学、细胞学、分子生物学、遗传学、医学等各种分支学科发展,他们发现了伟大的进化论。

其实我能举一堆类似的例子出来。

回到我们这个计算机科学,首先最底层的电子、计算机结构、指令集、汇编到 C 等等等,C 是极其伟大的发明,最早且最成功面向人类的语言,所以后期大量系统都是基于 C 体系出来的,比如伟大的那些操作系统,还有你现在看到这个回答的底层复杂解析…

我们在不断研究计算机科学各类知识体系时,为了快速入门,我们会倾向于接触那些更人类化更简单的语言,如伟大的 Java、Python、JavaScript 等,甚至到了更智能的时代,我们与计算机的交流真的可能出现完全自然语言,当然这个目前来看难度极大。

我们是否需要学 C,甚至更底层的玩意?其实这和我们所面对的工程场景有关,比如绝大多数工程场景下,Java、Python、JavaScript 工程师绝对不需要去碰 C,他们能把所掌握的这些语言应用得如火纯青已经很难得了。

题外话下:

大家一定要记住,讨论任何语言优劣都应该有对应的工程场景存在,你非得流氓地说 C 就是比 JavaScript 强大,那好,你用 C 去实现 HTML 的 DOM 操作试试…


那我们到底要不要学 C?对于那些探索底层奥秘的你来说,我建议你学,这绝对是一门非常保值的语言,并且不仅要学 C,还应该深度了解计算机那些基础知识、历史八卦(为什么会有计算机这玩意,为什么是图灵,为什么是冯诺伊曼,为什么是二进制,为什么会有 C,为什么有 Internet,为什么有协议,为什么有字符集,为什么有大量标准,为什么为什么为什么!),甚至应该去了解人性,此时你会发现,你的世界观已经远远超越了大多数人,你看待整个计算机体系将拥有更深邃的眼光,而不再是「PHP 就是世界上最强大的语言」这类的人云亦云。

对我来说,我对知识的渴望绝不仅是你想象的这些,我觉得,人那,很多时候就是见识太少,多了后,我这种思考都会了。


我还得补充下,我也没你想象的那样强大,但是一直在努力:)


明天,如果来得及,我会推荐一篇关于计算机语言 PK 的好文章,

来自:http://mp.weixin.qq.com/s?__biz=MzA3NTEzMTUwNA==&mid=208003947&idx=1&sn=350ebc7f541660c7b7f4907f2bc3d012