初学者该如何选择一门编程语言?

作者: 博客园精华区  更新时间:2020-01-05 17:54:00  原文链接


用心分享,共同成长

没有什么比你每天进步一点点更实在了

本文已经收录至我的github,欢迎大家踊跃star 和 issues。

https://github.com/midou-tech/articles

点关注,不迷路!!!

为什么会出这样一篇文章?

本来想写点最近学习的东西,但是最近好多粉丝再问我一个问题。

image-20200105164345384

于是我决定把我这个过来人的一些建议给到你们,希望大家少一些不必要的迷茫,多花点时间去学习该学习的东西,去做一些重要的事情。

刚开始学习编程的困惑

在刚开始学习语言的时候我也很纠结学什么语言好?这个问题我相信很多人在最开始学习编程的时候都会纠结,到底选择一门什么样的语言才能使自己在千军万马的工作大军中出奇制胜呢?总害怕选错了语言导致自己未来竞争不占优势。

我把各个语言的热度榜拉出来看了。

img
topn10走势

其实看来看去都差不多,主流语言就那些。像极了股票市场的涨跌图,起起伏伏。不过编程语言的起伏波动没那么大。

就这个问题,我还问了一些工作的学长学姐,看看他们这些过来人都有什么样的见解。还好我人缘好,他们都很耐心的给我讲了很多,以下是他们给我的建议。

过来人的一些建议

一个在京东做云计算的学长语重心长的这样和我说,学习语言要看你以后准备做什么? 和你未来工作方向有关。简单列几个未来方向供你参考

  • 如果你想从事和你自己专业(我的专业是电子信息工程)相关的方向工作的话,你可以好好学习C语言,汇编语言。因为你的专业以后工作方向在嵌入式和硬件编程方面较多。嵌入式编程讲究的是嵌入,所以一定要小巧和轻量,C语言符合这个场景需要。

  • 如果未来工作做纯软件的行业的话,你不应该局限于选择怎样的语言,工作需要什么你就学习什么语言,或者说项目需要什么语言你就必须很快学习这个语言,不过在学校学习还是建议学好一门高级编程语言。学好指的是学到精通,精通就不用解释了。你要对语言有所见解,而不是简单会用。

  • 如果你未来想算法一类的工作,你就应该把精力放在算法钻研上,而不是语言本身。

语言只是工具,就好比计算器一样的工具,用计算器算题和设计、制造计算器是完全不一样的。 大多数都是计算器的使用者,而不是设计生产制造者。完成一件事情可以选择很多种工具,就好比学生喜欢科学计算器,仓库老板喜欢那种很大声的简单加减乘除计算器就OK了。

一个阿里的学长告诉我

  • 主流语言随便选
  • 学一门精一门,其他的都是触类旁通
  • 注重工具思想,同时也要注意工具出了问题该如何处理

看了他们对我的话语,我得到的理解是,选择语言之前你要确定好你的未来工作方向(工作还是很宽泛的一个词语,人的一生大致可分为学习、生活和工作三件事,这三件事将伴随我们一生。学习和生活我们都能很好的理解,但是工作这件事大家可能会觉得有些不符合,有些人就是一生不工作,其实不然,"一个人的工作是他在社会中所扮演的角色。"),这样有目标的学习一门语言才能更好的帮助你未来工作,当然同时也不要局限于一门语言,毕竟技多不压身。 求点赞:+1: 求关注:heart:

还有一个问题,当我们不是很明确未来到底从事什么工作方向时,我们可以去找寻下自己的兴趣,其实大学很重要的一点就是找到自己的兴趣方向,尽量让自己的兴趣和自己工作方向相结合,能拿兴趣作为工作方向是再好不过的了。就像两个相爱的人在一起,每天都会是开开心的。如果是因为某些原因让两个没有感情基础的人在一起,那只能靠在一起之后才慢慢培养相爱的感觉。后者固然是不好的,但是为了生活很多人还是被迫选择了后者,趁年轻,趁还有机会,我希望你能选择前者。

当然还有很多其他的学长学姐给了我很多不一样的建议,但是总结下来就如下几点。

  • 找一门和未来工作相关的语言开始学,一定要学到精通。
  • 要有工具思想,语言只是工具,工具是用来解决问题的。我们要做的灵活运用工具,了解工具的特性,顺便如果工具除了出了问题你会修理工具,那就再好不过了。
  • 不要在选择语言上浪费太多时间,而应该在选择工作方向上找到自己的兴趣。
  • 多花时间在工作方向上需要的其他技能上。

结合过来人建议之后我的选择

听了过来人的建议之后,这几句经典涌上我的心头 "林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。"

我的工作方向是后端开发,我也比较喜欢后端开发,加上大学本来就会开设C语言和C++语言。于是我很顺理成章的选择了C语言作为我的编程入门首选语言。

现在作为过来人说说吧。

  • 从学术研究上看,编程语言语法都差不多。

  • 从原理上看,编程语言都类似,对一门编程语言掌握到透彻后,再学习其它编程语言可以触类旁通。

  • 针对的是学习能力较强的人。有一定基础之后,可以快速的学习另一门技术。

选择语言没必要那么纠结,但是编程入门我首推C语言,既有低级语言的高效,又有高级语言的抽象。C语言有很多特性,比如小巧,对操作系统很友好特别是linux操作系统(不要害怕linux,你工作以后100%会接触linux,不管你从事互联网什么行业,你都会或多或少的接触到linux),运行速度快,支持汇编级别优化,可移植性好等等其他特性。当然也有缺点,比如开源框架少、不是很适合写业务系统,面向对象支持不是很好。C语言作为入门语言会有助于你去了解操作系统的运行原理,内存控制原理,对这些的了解有助于你学习其他任何高级编程语言。至于学完C语言之后,你不用纠结接下来学什么,接下来毫不犹豫用C语言把数据结构与算这本书学完并实现常用的数据结构与算法。

说下为什么学完C语言一定要去学习数据结构与算法,有以下几点原因。

  • 趁热打铁,刚好巩固C语言的语法和一些特性。
  • 数据结构与算法是一门必修课,与未来从事什么方向无关(不要拿一些特殊职业出来钻牛角尖奥)。

为什么我首推C语言作为编程入门的语言,而不是其他语言,并不是我觉得其他语言怎么的。除了以上说到的C语言的特性之外,还有一个很重要的原因,C语言几乎是所有计算机专业和相关专业都会开设的课程,作为入门语言,学习成本小,和同学、老师交流起来方便。这些因素会促使你很快学精C语言。

学完这些之后,你需要学习和你未来方向相关的技能了,比如未来是做前端、后台、算法、AL等大领域里面的小领域。扯远了:grin:,继续说选语言的事,作为一个过来人很正式的告诉你,你需要学好一门面向对象语言即可,其他的语言只需要在工作中用到的情况下花几天时间就可以搞定,或者现学现用。因为你只要把握了一门C语言+一门面向对象的高级语言,其他语言的学习会触类旁通,学习成本会非常小。 学通 了C语言,意味着你对变量类型、逻辑结构、函数栈、内存模型,程序编译原理、汇编级别优化都会掌握(看我的关键词"学通",不是简单的学个hello world)。学完一门面向对象的高级语言,意味着你对面向对象的三大特性(继承、封装、多态)、抽象、设计模式有了很好的把握,这个时候工具使用已经到了很熟练的状态了,可以试着用工具去创造内容了,比如去 github 找几个项目练练手,或者用编程解决日常生活中遇到的问题。 求点赞:+1: 求关注:heart:

只要你是方向上没错,选择语言很so easy。

img

我总结了一份C语言的知识点思维导图,后期的文章会写一写关于C语言中的难点内容,比如程序的编译运行原理、函数栈调用过程、指针、内存管理等。github上有我的写作大纲,喜欢的可以star 和 issues。github: https://github.com/midou-tech/articles 。大家在看的过程中遇到任何问题都可以给我发mail:2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com 我会每周三和周六的时候回复大家的邮件问题(工作繁忙,自己也需要沉淀,多理解下)。

C语言知识点思维导图

我喜欢那些闪光的东西,比如冬日的雪花,天上的星星,还有你的眼睛。

都看到这里了,奋斗中的你还不为同行点个赞, 求点赞:+1: 求关注:heart:

求点赞:+1: 求关注:heart:

龙跃十二更多精彩文章:

学习linux命令,看这篇2w多字的命令详解就够了

HTTP就是这么简单

Redis基础

顶级程序员工具集

二十多个免费高清图片素材网站送给你

如果有人想发文章,我这里有偿征稿(具体细则请微信联系),欢迎投稿或推荐你的项目。提供以下几种方式投稿

  • 去我的github提交 issue: https://github.com/midou-tech/articles

  • 发送到邮箱: 2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com

  • 微信发送: 扫描下面二维码,公众号里面有作者微信号。

精选文章都同步在公众号里面,公众号看起会更方便,随时随地想看就看。微信搜索 龙跃十二 或者扫码即可订阅。

image-20191230233730073