第一门编程语言选什么好?

作者: 程序员联盟 | 来源:发表于2017-09-15 19:43 被阅读4017次

    作者 谢恩铭 转载请注明出处
    公众号「程序员联盟」(微信号: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 行业可是薪资很不错的,而且未来前景绝对不堪忧,毕竟人工智能还要我们来编写和操控。

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

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


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

    相关文章

      网友评论

      • 修行的女子:感觉都好难,不喜欢写
        程序员联盟:@AI谢 Python 不难,真的
      • 走在冷风中热热发抖的人:我之前在学校学的c,后来去了公司要求c++,可是我学起来还是觉得困难啊。困难就算了,慢慢学问题还不大,还要被vs折磨。😭我还有救吗? @程序员联盟
        程序员联盟:@七倩 Visual Studio 个人不太喜欢。还是 JetBrains 出的 IDE 比较好。当然有救,是你还不够努力,加油。编程又不是什么需要很高智商才能掌握的事情,熟能生巧,天道酬勤。
      • b14a0906669a:正在学c学完 准备转java
        程序员联盟:@我的世界_baa1 挺好
      • yuxuanhibou:现在面向对象是主流也是未来,c这种依靠指针的面向过程语言弊病太多,连个垃圾回收机制都没有,除了你做嵌入式之外其他方面很少用,给电梯或者小机器人玩具写个上下楼的或者跳舞的程序有个什么意思,现在的服务器端很少有用c或c++开发的,google开发的go语言适合服务器端或大数据开发,效率很高,代码简洁才是未来,看看市面上的开发岗吧,c语言工程师简直就是珍惜动物,老古董了,没人用这玩意了。。。
        程序员联盟:@yuxuanhibou Java 和 Go 不错
      • pnews88:其实建议初学者选择JAVA做为入门语言,现在编程讲究的是面向对象,而JAVA真正具有此方面的特点。
        程序员联盟:也有道理
      • RunningBun:个人认为语言只是工具,重要的是编程的思想。其实初学的话不必太纠结语言之间的优劣,每种语言都有自己的优势和不足。挑一个适合自己目前学习环境的语言就行,重要的是锻炼自己的逻辑思维。思想才是决定你是码农还是软件工程师的关键。
        程序员联盟:@RunningBun 先入门再谈思想。那你第一门入门语言就选 HTML,SQL 就好啦...
      • wenyu7980:c++除非用到,否则不建议学,学习曲线太缓,看到模板的时候,就放弃了
        程序员联盟:@它山之石1990s 第一门语言不建议学 C++
      • 4e5898ca95f5:个人认为…现在选择java更优于c
        c的市场越来越小,而目前编程市场都是以各种网站,app,小程序为主 ,底层语言使用率越来越低。如果你没有做嵌入式,做底层开发的需求,那干吗要去学一个用不上的语言?java早已经成为国外计算机专业主修课程,而c并不是,这说明编程语言的趋势,更高级化…并且需要学习并不容易,学 c 难免很多入门的人会被难倒…但他们不知道其实大多数编程语言没有这么难以理解…所以建议新手选择java…另可参考网易云课堂,浙大计算机翁教授的语言选择介绍!
        程序员联盟:@谢军 Java 也是不错的,而且 Java 也没有一般认为的那么慢
      • LARYYCHEN__:个人觉得,每种语言都有其对应长处,比方说涉及内核、底层的东西,C就是比其他语言优势明显,涉及业务模型复杂、对速度要求非常高的场景,那C++就是一个很好的选择,像服务器、通信设备这些。语言只是一种工具,我们在解决不同的问题的时候,要善于利用不同的工具:smile:
        程序员联盟:也有道理:blush:
        LARYYCHEN__:@程序员联盟 所以,还是需要什么学什么吧:joy:
        程序员联盟:@LARYYCHEN__ 有道理。不过这里是说第一门语言学什么。
      • 不喜欢夜雨天:Python其实并不简单。。。。PHP是真的简单。
        Python要你的思维很清晰的
        程序员联盟:@iGeneral 算简单了
      • 鬼马双星:了js不更容易入门吗?
        程序员联盟:@鬼马双星 JS 就算了
        不喜欢夜雨天: @鬼马双星 服气
      • ffbe3ff227d8:要去学最有前途的Pascal:stuck_out_tongue_winking_eye:
        程序员联盟:那你「拍死」我算了:stuck_out_tongue_closed_eyes:
      • 随风而行之青衫磊落险峰行:学会c/c++,走遍天下都不怕 😎
        程序员联盟:@随风而行之青衫磊落险峰行 那是,其他都相对比较简单了
      • 832e12948ccc:学了c,其他语言都easy
        程序员联盟:@老去的幼稚8023 除了 C++(开个玩笑) :stuck_out_tongue_closed_eyes:

      本文标题:第一门编程语言选什么好?

      本文链接:https://www.haomeiwen.com/subject/pgresxtx.html