这是一个比较有争议的话题,知乎上有很多神回复,提出这个问题,也是对我自己的一次灵魂拷问。

C语言和 Python 是编程语言界的两个极端,从不同的语言入手学习,就是选择了两条不同的学习路径。
C语言 VS Python
我们先从不同角度对比一下C语言和 Python。

  1. 执行效率
    C语言执行效率极高,堪比汇编语言;Python 执行效率极低,而且没法提速。

Python 和C语言在执行效率方面存在数量级差距,一个是电瓶车,一个是高铁。注意,我说的是数量级差距,不是倍数差距。

不过现在的计算机硬件性能已经刚刚的了,一个程序 1ms 执行完还是 10ms 执行完,对用户来说没有什么影响,所以很多应用层面的开发(网站、APP、客户端程序等)不是那么关注执行效率。
2) 模块
所谓模块,就是别人已经替你封装好的功能,你可以直接拿来使用,不用再重复造轮子。

Python 模块非常丰富,大部分常用功能都可以找到对应的模块,而且很有可能不止一个;C语言基本没有什么模块,想要什么都得自己开发,或者把别人写好的代码拿过来改改。

如果说 Python 的模块是一块绿洲,那么C语言的模块就是一片荒漠。

导致C语言模块少的主要原因有两个:
C语言不适应当下的计算机时代,很难开发出网站、APP、客户端软件、爬虫、数据分析程序、机器学习模型等实用的功能,所以也没人去开发相关的模块。
C语言诞生于计算机的早期,官方没有模块管理工具,导致开发生态不好,不仅模块少,而且很难查找和鉴别优质模块。
3) 开发效率
所谓开发效率,就是你实现一个功能所用的时间;时间越少开发效率越高,反之亦然。

C语言代码要求严格,必须注意很多细节,而且它自带的模块极少,简直就是荒漠,所以实现一个功能时往往需要写很多代码。

Python 语法宽松,格式优雅,不用在很多细枝末节上浪费时间,而且 Python 自带了丰富的模块,你想要大部分常用功能都可以找到,调用一下接口就 OK,所以很快就可以捣鼓出一个实用的功能。
4) 实用性
C语言是一种低级语言,更倾向于底层开发,比如操作系统、网络协议、算法、驱动、单片机/嵌入式等。说白了,C语言就是用来搞基建的,大部分初学者都用不上。

C语言号称什么都能干,但是很多人学了之后却什么都做不了,只能在“黑黑的屏幕”上输出一句 Hello World,这有什么卵用。

Python 是一种高级语言,更倾向于应用层开发,比如网站、运维工具、批处理工具、办公自动化、大数据处理程序、机器学习模型等。说白了,Python 就是利用C语言搭建好的基建来做业务,这非常贴近初学者。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英): muli9881 【教程/工具/方法/解疑】

Python 的实用性降低了初学者的入门门槛,更容易获得满足感,秀一波自己的学习成就。
5) 前景+钱景
不要抗拒不要狡辩,大数据和人工智能是未来的发展趋势,也是国家的大战略。你可以不上车,但是不能看不见。不上车是不得已,看不见是认知偏差。

Python 在机器学习和数据处理方面有天然的优势,如果想搭上时代的顺风车,成为风口中的那头猪,那就一定要学 Python。错过 Python,就错过一个时代。
我的建议
虽然C语言在应用开发层面干不过 Python,但是C语言诞生于计算机蓬勃发展的初期,计算机的很多基础组件都是用C语言构建的,包括操作系统、算法、协议、驱动、接口、编译器、浏览器等。可以毫不夸张地说,C语言就是现代软件产业的基石。

作为一个程序员,如果不了解C语言,那基本可以断定就是不了解计算机和操作系统,只能雾里看花,但是看不明白。至于是否影响职业发展,我不好下结论,因为有很多不太了解C语言的 Java 程序员年薪百万。

我自己也是如此,作为 Web 前端程序员,以前我也不了解C语言,对计算机和操作系统也是一脸懵逼,如果不是运营了C语言中文网,我大概率也不会深入学习C语言。

很多大佬总是在劝说初学者从C语言入手,他们觉得C语言是计算机的内核,能让初学者收获很多。其实我不太认同这种说法,并不是所有人都能从学习C语言的过程中汲取营养。
如果你有编程基础,那么学习C语言能深入理解计算机和操作系统,能让你获得质的飞跃,和别人拉开差距。
如果你是一名初学者,那么计算机和操作系统就是天书,不但难以理解,而且不知道有什么用,学起来非常枯燥,简直就是一场煎熬,时间久了,你可能都被劝退了。

对于初学者,尤其是还在纠结学习哪种编程语言的读者,我的建议是先学习 Python,做出一些实用的小玩意,获得成就感,等到对软件有一些比较深入的了解了,再去学习C语言,这个时候才能有的放矢,学以致用。

获得成就感是非常重要的,它是你坚持学习的强大动力。

学习编程不是一场百米赛跑,而是一场马拉松,谁能坚持下来,谁才能获得胜利。在这个过程中,如果你能不断给别人秀一下你的软件,并得到别人的认可,那你就有源源不断的动力。

更多推荐

C语言和Python,哪个更适合入门?