作者 谢恩铭。转载请注明出处。
原文:http://www.jianshu.com/p/c2b85495cea6
内容简介
- 前言
- 建议
- 入门推荐
- 分析
- 总结
1. 前言
现在 IT 行业越来越火爆,许多朋友都愿意入门「挨踢」,噢,不,当程序员。
那么问题来了,对刚接触这个领域的新人来说,选什么语言作为第一门语言呢?这是很关键的问题,因为这很可能决定了这位新人是「从入门到继续」还是「从入门到放弃」。
2. 建议
我推荐:或者从 C 语言入门,或者从 Python 入门。当然,也不排除从 Java 入门。
这里又得分情况来说:
如果你只是想用编程来完成一些简单的任务,目标不是深入技术,那么选 Python。有很多好处,入门快,成就感来得快,高效好用。
如果你要深入编程,想成为技术专家,那么选 C 语言。
如果你还不清楚自己的未来发展方向,那请先弄清自己想要做什么再来学编程。如果实在是前路迷茫,懵懂未知,那么从 C 语言入门。因为你把 C 语言学了,你会发现 Python 入门太简单了;反之不然。
3. 入门推荐
如果你选 Python 作为第一门编程语言,请看我的 最近迫切应学的编程语言 这篇文章,说的就是 Python 的好处和入门建议。
如果你选 C 语言作为第一门入门语言,虽然开始会有些「疼痛」,但是至久必成为你的帮助。请看我的 《C语言探索之旅》 系列教程来入门。也可以看《C Primer Plus》这本书来入门。
4. 分析
总结一下 C 语言作为第一门编程语言的好处:
1. 基础深厚
现在你看到的大部分编程语言都是借鉴了 C 语言或者用 C 语言写成的,比如 Java,C++,C#,Python,Go,JavaScript,Objective-C,Swift,PHP,Perl,等等。
几乎所有的操作系统都用到了 C 语言,比如 Windows,Unix,Linux,macOS,iOS,Android,等等。
可以说,C 语言影响了全球的计算机系统和网络。改编《指环王》的经典台词就是「One language to rule them all」(意思是“一门语言统领其他语言”)(《指环王》原来的诗是「One ring to rule them all」(意思是“一枚戒指统领其他戒指”))。
当然了,C 语言最初是用 B 语言写的,但今天却几乎没有人在用 B 语言了。可见 C 语言的飞跃,其源码设计之精良。
当时的程序员(如 C 语言之父 Dennis Ritchie 丹尼斯.里奇)真的是超级厉害,我这种程度实在连远眺都看不到他们的项背啊。
2. 难度适中
C 语言比 Python,Java 之类难入门,但是比 C++ 简单很多。
我觉得 C++ 不适合作第一门编程语言,太复杂,东西太多,基本就是「从入门到放弃」。要学 C++ 最好等入门编程之后。当然,如果你一定要用 C++ 作为第一门编程语言,我也没资格反对。
相比之下,C 语言的难度适中,也没有那么可怕。最让人害怕的指针、位运算(嵌入式里面比较多左移右移,需要数学功底还可以,不然那些十六进制,二进制会让人头晕的)、自定义数据结构、内存分配什么的,其实也还好,熟能生巧。
3. 嵌入式的主要语言
C 语言在嵌入式领域算是举足轻重了,特别是涉及到比较底层的嵌入式,当然你说 Python 也可以用于树莓派这样的开发板,但是你不会 C 语言的话,一般去应聘嵌入式的工作还是比较困难的。
现在这个时代,随着可穿戴设备和其他设备日益普及,嵌入式的前景肯定不错。
我个人认为:人工智能和嵌入式(物联网)是之后比较火热的领域。
要入门和提高嵌入式,可以参看我的这篇文章:什么是嵌入式编程?如何入门和提高?
4. 理解计算机
作为程序员,如果你想要进阶为高级甚至伟大乃至史诗级别的程序员,一定得对计算机原理,编译原理等等有所了解。
C 语言虽然也算是高层语言,但相对于 Python,Java 等,C 语言更接近底层。
入门了 C 语言,你会对计算机的内存、寄存器等原理有一定了解(推荐之后阅读 《深入理解计算机系统》 这本书,里面的示例代码是用 C 语言写的)。
如果有时间,最好也入门一下汇编语言,可以参看我写的文章:学习汇编对编程有什么帮助?如何学习
我学生时代就是先学了 C 语言,然后跟着清华大学王爽老师的《汇编语言》(那时是第二册,现在已经是第三册了吧)学了汇编,特别浅显易懂,写得很棒。学完之后,发现对内存,位移,寄存器等等操作都有了拨云见雾的认识,会感觉自己慢慢地领悟了编程。
5. 学完 C 语言后学其他语言会很快
这点我深有体会,我自从借 C 语言入门了编程之后,后面再学习 Java,PHP,C++(还是有点疼痛的,谁让 C++ 这么庞杂...),Python,Kotlin,等等就很容易了。
因为经过 C 语言的磨砺,你的编程思维能力已经比较不错,关于数据结构和算法等可以通过做练习和个人项目来进行。
当年我一开始接触 C 语言,感到比较难,就退避了,改去学 Java,结果也不得要领。直到我后来转而去用 C 语言入门编程,学会了 C 语言之后,学 Java 变得顺风顺水。
之后你如果要进阶 C 语言,推荐看看《C专家编程》,C 语言之父写的《C程序设计语言》(不是谭浩强那本《C语言程序设计》,那本不推荐看),《C陷阱和缺陷》,中国人写的《C语言深度解剖》。读完这些,做完里面的练习,你的 C 语言的水平就已经很不错了。
当然了,如果你不是做嵌入式等对 C 语言水平要求比较高的领域,那没必要把 C 语言学那么深。
借助 C 语言入门编程之后可以学学 Java,Python,Kotlin,Go 语言(Go 语言被称为 21 世纪的 C 语言)等比较被看好的语言。
当然,PHP 这样「世界上最好的语言」也是比较简单的。PHP 的语法和 C 语言比较类似,毕竟 PHP 的解释器是用 C 来写的嘛。
5. 总结
有一点需要注意,就是学习编程语言,千万不要贪多而不精。应该先学精一门语言,之后再去涉猎其他的。
毕竟编程语言之间,基本的逻辑,条件语句,循环语句,类或结构体,都是互通的。一般来说,一通则百通。
有些朋友可能一门编程语言还没入门或精通呢,就想要蜻蜓点水般去学新的语言,这样最后什么也不能精通。
祝大家还没入门编程的可以早日入门,已经入门的技术日益精进(需要学学面向对象思维,架构,设计模式,数据结构和算法,等)。
要知道现在 IT 行业可是薪资很不错的,而且未来前景绝对不堪忧,毕竟人工智能还要我们来编写和操控。
好了,我去继续学习了,下次见~
才疏学浅,文章中若有错缪或漏说的,欢迎留言指正补充。我也会更新文章。谢谢!
我是 谢恩铭,终生学习者。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」