为什么知乎上有的人不推荐 C 语言入门?

逛了很多帖子都不推荐 C 语言入门,这是为什么?本人准大一新生,正在看 C primer plus...
关注者
4,411
被浏览
3,386,047

529 个回答

很大原因在于C入门不容易有成就感。

比如Python,学一阵子就可以搞出一些酷炫的东西了,这往往让初学C的人艳羡。

不过这里面也有两方面问题要指出来:

  1. Python之所以让开发者欲罢不能,很大程度上就来自于它丰富的第三方库,而学习这些Library的使用似乎从来都是玩Python的人一上手就会接触的;反观C入门,也不是说它就不能搞酷炫的东西,只不过现在大多C的入门教程从头至尾头文件都只引入<stdio.h>,你能指望一个DOS下的黑框炫上天?所以说如果学习方法得当,初学C也可以做出一些有意思的小玩意,给自己增加一些自信心和成就感。推荐一个教程:香蕉地--C语言入门了离学会编程还远吗?
  2. 虽然初学者对自己的程序是否跑的足够快并不是那么在乎(Python比C慢得多)。但试想,如果像题主一样现在还在上学阶段,原本有大把的时间可以去弄清楚指针、内存管理等一些较为底层的知识,就因为一味地追求所谓的炫酷而没有抓住机会,工作之后真还能静下心去学习这些理论吗?事实是C玩的溜的人转战Python,第一次听说GC这个概念会爽歪歪,而一开始学习Python的人再去学C,第一次听说Stack和Heap的概念会一脸懵逼。

所以,如果你还是不愁吃穿的上学阶段,学C也没什么不好的,像c primer plus这种经典到“啰嗦”的书工作之后还真不一定有时间去潜心研读;

如果你面临就业或已经工作,选择Python吧,毕竟都在喊人生苦短还是有道理的。

这是一个类似于,学武功是先练《少林基本功》还是直接练《辟邪剑法》的问题。


首先,会提出这个问题的人大部分是还未接触到编程的,可能出于对这行的“钱景” 或是 对行业的“酷炫性”产生的兴趣,想要通过自学来入行。


这里就出现了分支,如果你只是有兴趣,想要做出一些东西来验证你的想法的话,可能《 Python 》《PHP》这样的编程语言比较适合你。目的性不是很强的学习,很容易因为畏难,无法解决问题就选择放弃,所以建议还是选择简单一些,并且能马上看到结果的语言来学习比较好。


这类编程语言就类似于编程界的《辟邪剑法》,你可以不懂底层,没有基本功也能很快让你上手,做出你印象中程序的样子,这样可以更好地提升你的兴趣并且解决你的问题。


如果你是出于对这行的“钱景”,想要未来在这行扎根,并且有不错的发展的话,应该不至于因为难而放弃吧?所以以C语言入门还是不错的。


之所以说C语言不那么适合入门,无非是因为:

C语言接近底层, 会让你厌倦无意义的基本概念,而且做不出酷炫的东西,并且对于大多数人来说,C语言在以后工作中基本用不上。


C语言是面向过程的(这里不用争论C语言也能实现面向对象,先收好40米大刀,我是友军),所以抽象程度相对较低,更像是需要一拳一腿练习的《少林基本功》,所以搞清楚,学C语言的目的,是为了扎实的基本功,为了更方便以后的学习。


当然,这里并不是指C语言简单,而是说C语言更像是武功的基础。

《 Python 》这样的语言也许一上来就能直接舞一套《辟邪剑法》,但是如果对于体内真气走向不清晰的话,一旦出问题就容易走火入魔,更甚至是只有厉害的剑招,没有雄厚的内力支撑,这样的后果就是,一旦江湖再出现什么厉害的武功,你就只能感叹一句“*****”,然后加入争夺秘籍的队伍中,否则只能沦为后辈的垫脚石。


而C语言就是要你清楚体内每一根经脉的走向,真气汇聚的走向,这确实很不爽。尤其是同样初学的人已经能够用《 Python 》指点江山,动不动就在你身边放个剑气啥的。


但是相信我,只要熬过这个坎,别特么说是《辟邪剑法》了,你就是心情大好想要打一套降龙十八掌,发一套六脉神剑,也只会感叹一句,他娘的,天下武功果然是殊途同归啊,这就是高手和宗师的区别,也是个人价值的体现。



《 Python 》这种语言,有个两三年其他语言经验之后,想学的话,一两周就能快速上手,而C语言这样的语言,你搞五年《 Python 》,难度对你来说都低不了多少,还是一个学习的过程。


天下武功出少林(此少林取自金庸大师的少林,和这个少林没毛关系),对于编程语言更是如此,C语言作为始祖级的语言,肯定有缺点,但是这种讲究一拳一脚的练武方式,是普通人成长为宗师最佳的方式之一。


你看江湖,一会来个辟邪剑法,一会来一个九阴白骨爪,偶尔降龙十八掌还来跑个龙套,但是我少林(同上)武功依然屹立不倒,这也就是为什么我说要先学C语言,然后才考虑C++或Java还是Python还是PHP的原因,哈哈。


最后有一句话,我们共勉。


学习有提高效率的方法, 但是绝对没有捷径可言。


想好好练功,不如你先点个赞,然后关注我,我们细细探讨如何?

有困惑的小伙伴们也可以私信~