回顾我学语言的过程,无非就是四个原因:感兴趣、学校让学、找工作混饭吃、还有就是项目要用。
老实说,现在计算机专业的同砚,光跟着学校学,基本就会好几种语言了吧。
先说兴趣,我在高中时就很想做自己的网站,只不过那会儿是用什么 Front Page,Dreamweaver 拖拖拽拽就搞定了(应该没有多少同砚用过吧)。以是上了大学,我第一个自学的就是前端,对应的语言就是 HTML、CSS、JavaScript 三件套,当时的目标就是到场学校的网站建设工作室,能来点儿外快。
那会儿真是青涩啊,手里拿了本 HTML 5 入门教程,感觉拥有了整个世界。现在回想起来,只觉得头顶凉飕飕的~
再说说学校教的语言,当时我们刚入学第一个接触的是 C 语言,现在似乎很多学校改成了直接讲 C++?
可惜的是,我当时并不开窍,心思也不在学习上,以是学的一塌糊涂,最后写了个能在小黑框里运行的图书管理系统就毕业了。
之后我开始学 C++,因为感觉跟学校课堂学 C 语言时没学到啥(也大概是我比较菜),以是这次我选择上网自学(比如看圆脸妹妹的 C++ 课堂)。大概学了一个月左右,写了一点简朴的桌面步伐,我就放弃 C++ 了,转战 Java。一方面是听说 Java 好找工作,好混饭吃;另外一方面当时我大概对学习新语言有点上瘾,就想着多尝试尝试。
刚开始学 Java 就是学基础语法,直到学完我都不知道为啥 Java 好找工作,感觉能做的事和 C++ 差不多。直到后来学了企业 Java 开发,也就是 Java Web,接触了 Spring 之类的框架后,我才感叹到:“Java 真香!”
于是我决定在后端开发这条路上坚持走下去,后来也去学了 SQL(结构化数据查询语言)、Scala 等编程语言。SQL 但是后端步伐员的基本功,大家可以用我做的 免费 SQL 刷题网站 多练练。
然后我本来以为以后再也不会用 C++ 了,但听说算法角逐、保研机试啥的都是它,以是后来就拿 C++ 刷了几百道 OJ 题目。还有个戏剧性的事,打 s 我也没想到最后我的毕设还是拿 C++ 做了个图像处理步伐,当时花了一些时间专门学习 OpenCV。
看到这,肯定有同砚说了:会这么多编程语言,那不是无所不能,肯定很爽吧!
但事实上,编程语言学多了,也让我有了肯定的烦恼。
因为每种语言在数据类型、语法和 API 上都有肯定的差别,以是会的语言多了后,我时常陷入混乱,把语法给记混。尤其是学 Go 语言的时候,这玩意和其他语言的语法差别贼大,简直让我怀疑人生,大家可以感受一下:
我刚开始做全栈开发的时候,又要写 Java、又要写 JavaScript,以是就总是搞混,在 Java 中写 JavaScript 的函数,在 JavaScript 中 new Java 的对象。再加上我白天工作用 Mac 电脑,晚上下班用 Windows,开发工具的快捷键也不一样,感觉像是带了痛苦面具。
以是有的时候,我真的很想专注地去写一门语言。
但是,学了这么多语言后,我变秃了,也简直变强了!
以是下面分享下学习多门语言的好处。
学多门编程语言的好处
首先,我发现自己摸清了学习语言的套路,无非就是数据类型、流程控制、函数对象和一些特性,因此学新的语言变得越来越轻松快速。比如我之前没有学过 Kotlin,但后来工作中要让我重构 Kotlin 的代码,我没花额外时间去学习,也基本也都能看懂。因为说着实的,绝大多数代码都是 if ... else ... for 构成的业务逻辑。
我学到了更多的设计头脑、了解了每种语言更得当做什么,比如什么是解释型语言和编译型语言,有什么区别,又该如何选择。
我看代码时再也不用被语言所束缚,基本啥都能看懂,大家在交流编程语言时,我也有了更多的发言权,啥都能聊两句,也不用再因为争论 “什么是最好的编程语言” 而跟别人打架了。