作者 谢恩铭 转载请注明出处
公众号「程序员联盟」(微信号:ProgrammerLeague )
原文:http://www.jianshu.com/p/c2b85495cea6

内容简介


  1. 前言
  2. 建议
  3. 入门推荐
  4. 分析
  5. 总结

1. 前言


现在 IT 行业越来越火爆,许多朋友都愿意入门「挨踢」,噢,不,当程序员。

那么问题来了,对刚接触这个领域的新人来说,选什么语言作为第一门语言呢?这是很关键的问题,因为这决定了这位新人是「从入门到继续」还是「从入门到放弃」。

2. 建议


我推荐:或者从 C 语言入门,或者从 Python 入门。

这里又得分情况来说:

  1. 如果你只是想用编程来完成一些简单的任务,目标不是深入技术,那么选 Python。有很多好处,入门快,成就感来得快,高效好用。

  2. 如果你要深入编程,想成为技术专家,特别是做嵌入式这样对技术要求比较高的行业,那么选 C 语言。

  3. 如果你还不清楚自己的未来发展方向,那请先弄清自己想要做什么再来学编程。如果实在是前路迷茫,懵懂未知,那么从 C 语言入门。因为你把 C 语言学了,你会发现 Python 入门太简单了;反之不然。

3. 入门推荐


  • 如果你选 Python 作为第一门编程语言,请看我的 最近迫切应学的编程语言 这篇文章,说的就是 Python 的好处和入门建议。

  • 如果你选 C 语言作为第一门入门语言,虽然开始会有些「疼痛」,但是至久必成为你的帮助。请看我的 《C语言探索之旅》 来入门。

4. 分析


当年我大学时才接触编程,但一直没入门(可以参看我的经历:关于我)。

总结一下 C 语言作为第一门编程语言的好处:

  1. 基础深厚

现在你看到的大部分编程语言都是借鉴了 C 语言或者用 C 语言写成的,比如 Java,C++,C#,Python,Go,JavaScript,Objective-C,Swift,PHP,Perl,等等。

大部分操作系统也用到了 C 语言,比如 Unix,Linux,Windows,Mac OS X,iOS,Android,等等。

可以说,C 语言影响了全球的计算机系统和网络,改编《指环王》的经典台词就是「One language to rule them all」(意思是:一门语言统领其他语言)(《指环王》原来的诗是「One ring to rule them all」(意思是:一枚戒指统领其他戒指))。

当然了,C 语言最初是用 B 语言写的,但今天却几乎没有人在用 B 语言了。可见 C 语言的飞跃,其源码设计之精良。

当时的程序员(如 C 语言之父 Dennis Ritchie 丹尼斯.里奇)真的是超级厉害,我这种程度实在连远眺都看不到他们的项背啊。


  1. 难度适中

C 语言肯定比 Python,Java 之类难入门,但是比 C++ 简单很多。

我觉得 C++ 不适合作第一门编程语言,太复杂,东西太多,基本就是「入门到放弃」,要学 C++ 最好等入门编程之后。当然你要学我也没资格反对。

相比之下,C 语言的难度适中,也没有那么可怕。最让人害怕的指针,位移(嵌入式里面比较多左移右移,需要数学功底还可以,不然那些十六进制,二进制会让人头晕的),自定义数据结构,内存分配什么的其实也还好,熟能生巧。


  1. 嵌入式的主要语言

C 语言在嵌入式领域算是举足轻重了,特别是涉及到比较底层的嵌入式,当然你说 Python 也可以用于树莓派这样的开发板,但是你不会 C 语言的话,一般去应聘嵌入式的工作还是比较困难的。

现在这个时代,随着可穿戴设备和其他设备日益普及,嵌入式的前景肯定不错。

我个人认为:人工智能和嵌入式是之后比较火热的领域。

要入门和提高嵌入式,可以参看我的这篇文章:什么是嵌入式编程?如何入门和提高?


  1. 理解计算机

作为程序员,如果你想要进阶为高级甚至伟大乃至史诗级别的程序员,一定得对计算机原理,编译原理等等有所了解。

C 语言虽然也算是高层语言,但相对于 Python,Java 等,C 语言更接近底层。

入门了 C 语言,你会对计算机的内存、寄存器等原理有一定了解(推荐之后阅读《深入理解计算机系统》这本书,里面的示例代码是用 C 语言写的)。

如果有时间,最好也入门一下汇编语言,可以参看我写的文章:学习汇编对编程有什么帮助?如何学习

我那时就是先学了 C 语言,然后跟着清华大学王爽老师的《汇编语言》(那时是第二册,现在好像已经是第三册了吧)学了汇编,特别浅显易懂,写得很棒。学完之后,发现对内存,位移,寄存器等等操作都有了拨云见雾的认识,会感觉自己慢慢地领悟了编程。


  1. 学完 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 语言比较类似。

5. 总结


有一点需要注意,就是学习编程语言,千万不要贪多而不精。应该先学精一门语言,之后再去涉猎其他的。

毕竟编程语言之间,基本的逻辑,条件语句,循环语句,类或结构体,都是互通的。一般来说,一通则百通。

有些朋友可能一门还没入门或精通呢,就想要蜻蜓点水般去学新的语言,这样最后什么也不能精通。

祝大家还没入门编程的可以早日入门,已经入门的技术日益精进(需要学学面向对象思维,架构,设计模式,算法等)。

要知道现在 IT 行业可是薪资很不错的,而且未来前景绝对不堪忧,毕竟人工智能还要我们来编写和操控。

好了,我去继续学习了,下次见。

才疏学浅,文章中若有错缪或漏说的,欢迎留言指正补充,我也会更新文章,不胜感激。谢谢!


我是 谢恩铭,在巴黎奋斗的软件工程师。
我创建了程序员联盟的 知识星球,欢迎加入。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」