学编程 5 年多了,我学过十几种编程语言,比如 C、C++、Java、Python、JavaScript、Go、PHP、C#、SQL、Scala 等。
乍一听好像挺厉害的,但事实上,学过的语言很多,熟练的就那么几个。很多语言学完之后,不写就忘了,就好像从来没有学习过一样。
那我为什么要学这么多编程语言?学了这么多语言对我有哪些好处和坏处?到底应不应该学多门语言呢?
下面分享一下。
为什么学这么多编程语言?
回顾我学语言的过程,无非就是四个原因:感兴趣、学校让学、找工作混饭吃、还有就是项目要用。
老实说,光跟着学校学,基本就会好几种语言了。
先说兴趣,我在高中时就很想做自己的网站,只不过那会儿是用什么 Front Page,Dreamweaver 拖拖拽拽就搞定了(应该没有多少同学用过吧)。所以上了大学,我第一个自学的就是前端,对应的语言就是 HTML、CSS、JavaScript 三件套。
再说说学校教的,首当其冲是 C 语言。不过很可惜,我学的一塌糊涂,最后写了个图书管理系统(其实就是个小黑框)就毕业了。
之后呢开始学 C++,因为感觉跟学校课堂学 C 语言时没学到啥,所以这次我选择上网自学(比如看圆脸妹妹的 C++ 课堂等)。大概学了一个月左右,写了一点简单的桌面程序。然后我就开始学 Java 了,因为听说 Java 好找工作,好混饭吃。
刚开始学 Java 就是学基础语法,直到学完我都不知道为啥 Java 好找工作,感觉能做的事和 C++ 差不多。直到后来学了企业 Java 开发,接触了 Spring 之类的框架。我才感叹到,Java 真香!于是我决定在后台开发这条路上坚持走下去,后来也学了 SQL(结构化数据查询语言)、Scala 等编程语言。
然后我本来以为今后再也不会用 C++ 了,但听说算法竞赛、保研机试啥的都是它,所以后来就拿 C++ 刷了几百道 OJ 题目,打死也没想到最后毕设还是拿这玩意做了个图像处理程序。
再聊聊其他语言。我大一学 Python,只是为了完成一个数据抓取 + 可视化项目,听说用 Python 简单、做的快,就学了几天,就搞定了;学 Golang 是因为当时在实验室搞区块链,有个框架是用的 Go 语言;学 C# 也是因为在实验室有个桌面端项目要用。
对了,还有 PHP,听说它是世界上最好的语言我就学了。不得不说,用 PHP 开发确实很爽,但很遗憾,如今大公司基本不用。
坏处
看到这,肯定有同学说了:会这么多编程语言,那不是无所不能,肯定很爽吧!
但事实上,编程语言学多了,也让我有了一定的烦恼。
因为每种语言在数据类型、语法和 API 上都有一定的差别,所以会的语言多了后,我时常陷入混乱,把语法给记混。尤其是学 Go 语言的时候,这玩意和其他语言的语法差别贼大,简直让我怀疑人生,大家可以感受一下:
Go 和 Java 语法对比
我在工作中,又要写 Java、又要写 JavaScript,所以就老是搞混,在 Java 中写 JavaScript 的函数,在 JavaScript 中 new Java 的对象。再加上我白天工作用 Mac,晚上下班用 windows,开发工具的快捷键也不一样,我真的要疯了!
所以有的时候,我真的很想专注地去写一门语言。
但是,学了这么多语言后,我变秃了,也的确变强了!
所以下面分享下学习多门语言的好处。
好处
首先,我发现自己摸清了学习语言的套路,无非就是数据类型、流程控制、函数对象和一些特性,因此学新的语言变得越来越轻松快速。比如我之前没有学过 Kotlin,但后来工作中要让我重构 Kotlin 的代码,我没花额外时间去学习,也基本也都能看懂。
我学到了更多的设计思想、了解了每种语言更适合做什么,比如什么是解释型语言和编译型语言,有什么区别,又该如何选择。
我看代码时再也不用被语言所束缚,基本啥都能看懂,大家在交流编程语言时,我也有了更多的发言权,啥都能聊两句,也不用再因为争论 “什么是最好的编程语言” 而跟别人打架了。
此外,我在开发时有了更多的选择。比如处理 Excel 表格,如果我只会 Java,那只能用 Java 相关类库,不够方便;但因为我也会 Python,就有了更多类库可以选择,几行代码就搞定了,效率拉满。
最重要的,也正是学了更多的语言后,我才找到了最适合自己的语言,从前端转到了 Java 后端。
建议
看到这儿,大家觉得有必要学多门编程语言么?
我觉得,技多不压身,会的语言肯定是越多越好。
虽说可能会有点混乱,但是现在编辑器的语法校验功能都很强大了,所以哪怕语法输错了,也能很快纠正过来。还有一种方法就是,干脆就别去记忆语法,熟能生巧。
不过千万要记住,无论你想学多少种语言,都要先重点学好一门。一方面是深入理解一门语言后,再学别的就很简单了;另一方面是时间有限,把所有语言都学的很好是不现实的,毕竟编程领域中,语言只是一部分,还有太多技术、工具、方法、思想要学了。如果什么语言都草草地去学、浅尝辄止,那面试的时候一定会吃大亏!
-----------------------------------