學(xué)了十幾種編程語(yǔ)言后,我有哪些感受?
大家好,我是魚皮。
學(xué)編程 5 年多了,我學(xué)過(guò)十幾種編程語(yǔ)言,比如 C、C++、Java、Python、JavaScript、Go、PHP、C#、SQL、Scala 等。

乍一聽(tīng)好像挺厲害的,但事實(shí)上,學(xué)過(guò)的語(yǔ)言很多,熟練的就那么幾個(gè)。很多語(yǔ)言學(xué)完之后,不寫就忘了,就好像從來(lái)沒(méi)有學(xué)習(xí)過(guò)一樣。
那我為什么要學(xué)這么多編程語(yǔ)言?學(xué)了這么多語(yǔ)言對(duì)我有哪些好處和壞處?到底應(yīng)不應(yīng)該學(xué)多門語(yǔ)言呢?
下面分享一下。
為什么學(xué)這么多編程語(yǔ)言?
回顧我學(xué)語(yǔ)言的過(guò)程,無(wú)非就是四個(gè)原因:感興趣、學(xué)校讓學(xué)、找工作混飯吃、還有就是項(xiàng)目要用。
老實(shí)說(shuō),光跟著學(xué)校學(xué),基本就會(huì)好幾種語(yǔ)言了。
先說(shuō)興趣,我在高中時(shí)就很想做自己的網(wǎng)站,只不過(guò)那會(huì)兒是用什么 Front Page,Dreamweaver 拖拖拽拽就搞定了(應(yīng)該沒(méi)有多少同學(xué)用過(guò)吧)。所以上了大學(xué),我第一個(gè)自學(xué)的就是前端,對(duì)應(yīng)的語(yǔ)言就是 HTML、CSS、JavaScript 三件套。

再說(shuō)說(shuō)學(xué)校教的,首當(dāng)其沖是 C 語(yǔ)言。不過(guò)很可惜,我學(xué)的一塌糊涂,最后寫了個(gè)圖書管理系統(tǒng)(其實(shí)就是個(gè)小黑框)就畢業(yè)了。
之后呢開(kāi)始學(xué) C++,因?yàn)楦杏X(jué)跟學(xué)校課堂學(xué) C 語(yǔ)言時(shí)沒(méi)學(xué)到啥,所以這次我選擇上網(wǎng)自學(xué)(比如看圓臉妹妹的 C++ 課堂等)。大概學(xué)了一個(gè)月左右,寫了一點(diǎn)簡(jiǎn)單的桌面程序。然后我就開(kāi)始學(xué) Java 了,因?yàn)槁?tīng)說(shuō) Java 好找工作,好混飯吃。

剛開(kāi)始學(xué) Java 就是學(xué)基礎(chǔ)語(yǔ)法,直到學(xué)完我都不知道為啥 Java 好找工作,感覺(jué)能做的事和 C++ 差不多。直到后來(lái)學(xué)了企業(yè) Java 開(kāi)發(fā),接觸了 Spring 之類的框架。我才感嘆到,Java 真香!于是我決定在后臺(tái)開(kāi)發(fā)這條路上堅(jiān)持走下去,后來(lái)也學(xué)了 SQL(結(jié)構(gòu)化數(shù)據(jù)查詢語(yǔ)言)、Scala 等編程語(yǔ)言。
然后我本來(lái)以為今后再也不會(huì)用 C++ 了,但聽(tīng)說(shuō)算法競(jìng)賽、保研機(jī)試啥的都是它,所以后來(lái)就拿 C++ 刷了幾百道 OJ 題目,打死也沒(méi)想到最后畢設(shè)還是拿這玩意做了個(gè)圖像處理程序。

再聊聊其他語(yǔ)言。我大一學(xué) Python,只是為了完成一個(gè)數(shù)據(jù)抓取 + 可視化項(xiàng)目,聽(tīng)說(shuō)用 Python 簡(jiǎn)單、做的快,就學(xué)了幾天,就搞定了;學(xué) Golang 是因?yàn)楫?dāng)時(shí)在實(shí)驗(yàn)室搞區(qū)塊鏈,有個(gè)框架是用的 Go 語(yǔ)言;學(xué) C# 也是因?yàn)樵趯?shí)驗(yàn)室有個(gè)桌面端項(xiàng)目要用。
對(duì)了,還有 PHP,聽(tīng)說(shuō)它是世界上最好的語(yǔ)言我就學(xué)了。不得不說(shuō),用 PHP 開(kāi)發(fā)確實(shí)很爽,但很遺憾,如今大公司基本不用。

壞處
看到這,肯定有同學(xué)說(shuō)了:會(huì)這么多編程語(yǔ)言,那不是無(wú)所不能,肯定很爽吧!
但事實(shí)上,編程語(yǔ)言學(xué)多了,也讓我有了一定的煩惱。
因?yàn)槊糠N語(yǔ)言在數(shù)據(jù)類型、語(yǔ)法和 API 上都有一定的差別,所以會(huì)的語(yǔ)言多了后,我時(shí)常陷入混亂,把語(yǔ)法給記混。尤其是學(xué) Go 語(yǔ)言的時(shí)候,這玩意和其他語(yǔ)言的語(yǔ)法差別賊大,簡(jiǎn)直讓我懷疑人生,大家可以感受一下:

我在工作中,又要寫 Java、又要寫 JavaScript,所以就老是搞混,在 Java 中寫 JavaScript 的函數(shù),在 JavaScript 中 new Java 的對(duì)象。再加上我白天工作用 Mac,晚上下班用 windows,開(kāi)發(fā)工具的快捷鍵也不一樣,我真的要瘋了!
所以有的時(shí)候,我真的很想專注地去寫一門語(yǔ)言。
但是,學(xué)了這么多語(yǔ)言后,我變禿了,也的確變強(qiáng)了!

所以下面分享下學(xué)習(xí)多門語(yǔ)言的好處。
好處
首先,我發(fā)現(xiàn)自己摸清了學(xué)習(xí)語(yǔ)言的套路,無(wú)非就是數(shù)據(jù)類型、流程控制、函數(shù)對(duì)象和一些特性,因此學(xué)新的語(yǔ)言變得越來(lái)越輕松快速。比如我之前沒(méi)有學(xué)過(guò) Kotlin,但后來(lái)工作中要讓我重構(gòu) Kotlin 的代碼,我沒(méi)花額外時(shí)間去學(xué)習(xí),也基本也都能看懂。
我學(xué)到了更多的設(shè)計(jì)思想、了解了每種語(yǔ)言更適合做什么,比如什么是解釋型語(yǔ)言和編譯型語(yǔ)言,有什么區(qū)別,又該如何選擇。
我看代碼時(shí)再也不用被語(yǔ)言所束縛,基本啥都能看懂,大家在交流編程語(yǔ)言時(shí),我也有了更多的發(fā)言權(quán),啥都能聊兩句,也不用再因?yàn)闋?zhēng)論 “什么是最好的編程語(yǔ)言” 而跟別人打架了。

此外,我在開(kāi)發(fā)時(shí)有了更多的選擇。比如處理 Excel 表格,如果我只會(huì) Java,那只能用 Java 相關(guān)類庫(kù),不夠方便;但因?yàn)槲乙矔?huì) Python,就有了更多類庫(kù)可以選擇,幾行代碼就搞定了,效率拉滿。
最重要的,也正是學(xué)了更多的語(yǔ)言后,我才找到了最適合自己的語(yǔ)言,從前端轉(zhuǎn)到了 Java 后端。
建議
看到這兒,大家覺(jué)得有必要學(xué)多門編程語(yǔ)言么?
我覺(jué)得,技多不壓身,會(huì)的語(yǔ)言肯定是越多越好。
雖說(shuō)可能會(huì)有點(diǎn)混亂,但是現(xiàn)在編輯器的語(yǔ)法校驗(yàn)功能都很強(qiáng)大了,所以哪怕語(yǔ)法輸錯(cuò)了,也能很快糾正過(guò)來(lái)。還有一種方法就是,干脆就別去記憶語(yǔ)法,熟能生巧。
不過(guò)千萬(wàn)要記住,無(wú)論你想學(xué)多少種語(yǔ)言,都要先重點(diǎn)學(xué)好一門。一方面是深入理解一門語(yǔ)言后,再學(xué)別的就很簡(jiǎn)單了;另一方面是時(shí)間有限,把所有語(yǔ)言都學(xué)的很好是不現(xiàn)實(shí)的,畢竟編程領(lǐng)域中,語(yǔ)言只是一部分,還有太多技術(shù)、工具、方法、思想要學(xué)了。如果什么語(yǔ)言都草草地去學(xué)、淺嘗輒止,那面試的時(shí)候一定會(huì)吃大虧!
以上就是本期分享。我是魚皮,點(diǎn)贊 + 在看 還是要求一下的,祝大家都能心想事成、發(fā)大財(cái)、行大運(yùn)。

往期推薦
