如今越來越多的人開始學習編程,尤其是年輕人和在校的學生,他們希望通過學習編程,在未來找一份不錯的工作。但是另一個問題隨之出現:目前世界上有著幾百種編程語言,我應該學哪個?如何選擇“正確”的編程語言進行學習?我所學的語言日后能否成為我獲取好生活的保障?這些問題成為了很多初學編程的人最大的困惑,甚至還有一些已經學習編程一段時間的人,也開始思考這個問題,他們甚至開始質疑自己當初的選擇。
在這個問題上,很多人都曾經給出了他們都看法,每個人的看法也都不盡相同。但是在我看來,這個問題都答案其實非常簡單:
那就是 JavaScript。
當然,如果你還沒有學過代數,那就先學Scratch這個語言。
也許有的人要開始反駁我了,他們認為學習哪種語言,應該取決于你想開發什么樣的軟件。事實也的確如此,但是我現在所說的,是學習編程的基礎。關于開發什么軟件應該選擇哪些語言,我會在后面慢慢解釋。我現在先闡述下為何我認為JavaScript是必學的編程語言。
首先我想簡單的說一下我的編程學習之旅。我第一次接觸學習編程,是在上小學的時候,那時候我學習了一種類似Scratch的簡單編程語言,這個語言的名字是Logo。上初中的時候,在學習了代數之后,我又接觸了另一個編程語言:Basic。就像這個語言的名字一樣,它讓我了解到了計算機編程的一些基本知識。上了高中之后,我又在計算機課上學習了另一種名叫Pascal的編程語言。
雖然Pascal這種語言很有趣,但是我發現很少有人用它來編寫真正的軟件,而且它的作用也并不強大,于是我對它失去了興趣,也暫時遠離了編程學習。升入大學之后,我嘗試著繼續學習編程,于是開始學習C語言,但是坦白說那時候我的興趣都在生物學上(我上大學時的專業),所以很快又一次放棄了編程學習。我真正又一次重燃對編程學習的興趣,是在讀研究生的時候,在這期間我學習了Ruby,而且開始自己嘗試編寫網頁應用。
而直到近期,在經歷了多年的應用開發工作之后,我才真正體會到了JavaScript的重要性。隨著網頁瀏覽器變的越來越強大,人們開始希望瀏覽器能夠為我們提供桌面電腦級的使用體驗。對于網頁應用開發人員來說,JavaScript這種語言成為了他們的核心技能,而且其作用越來越明顯。
如今,對于初學編程的學生,我建議你們先要學好代數(數學老師們,代數對于編程人員來說非常重要!)。之后直接學習JavaScript。代數和JavaScript的組合,能夠讓我們認識計算機科學的基礎,并且明白如何進行軟件編寫工作。另外這種語言非常實用,你在日后的實踐中,還可以使用JavaScript編寫大量的程序。
接下來學點什么?
在學會JavaScript之后,如果你還想學點其他點編程語言,那就要取決于你想編寫什么樣的軟件了。如果你自己還不確定未來的發展方向,那就看一看下面我列出的這些語言,之后對它們進行一些基本的了解,看看自己對哪些語言感興趣。
如果你不想針對網頁和移動設備編寫程序,那么你下一個要學的語言也許是Java或是C語言。(其實很多網頁和移動設備應用開發人員也在使用Java,這意味著如果日后你改變主意了,你還有轉型的余地。)
注意不要混淆Java和JavaScript。在計算機科學教育世界,Java已經成為了全球高校的標準編程語言。這是一種重量級語言,被廣泛采用,它的功能十分強大,幾乎可以用在任何地方。在掌握了Java之后,你就可以繼續學習Groovy、Scala和Clojure等其他語言,來開發各種軟件產品。
而C語言也是一種被廣泛采用等計算機編程語言,大多數操作系統都使用C語言作為基礎。在學習了C語言之后,你可以繼續學習C++,這個語言能夠幫你開發出更多優秀的軟件,也能夠為學習其他編程語言打下良好的基礎。
如果你想開發移動應用的話,尤其是針對蘋果的iPhone和iPad等設備開發應用,你應該學習蘋果剛剛推出的Swift,目前這個語言還處于beta版。
而如果你想針對安卓設備開發應用,那么你應該繼續研究Java。
如果你想做網頁開發,那就先不要在Java、C和Swift等語言上下功夫了,你應該直接去學習HTML和CSS。首先你要先學習如何在瀏覽器中建立簡潔的UI;之后你的目標就是使用JavaScript來豐富用戶體驗(UX)。
如果你對網頁布局十分感興趣,而且你還有著一定對視覺設計知識,那么可以通過努力讓自己在未來成為一名“前端UI/UX網頁開發人員”。在這種情況下,你應該認真鉆研CSS和它的拓展語言Sass。另外,你對JavaScript和HTML語言的熟練度也應該要過硬。是的,前端工程師要掌握多種編程語言,這也是優秀的前端工程師和出色的UI/UX難求的重要原因之一。如果你選擇了這條路,而且掌握了所需的所有知識,那你就成為了一個炙手可熱的人才,每一家互聯網企業都會爭相追逐你。
如果你的興趣在于將大量都數據放在自己都網頁上,那么你應該要成為一名“網頁開發人員(Web Developer)”。要成為一名優秀的網頁開發人員,你應該掌握Java、C#、Ruby、Python和JavaScript等語言中的至少一種。這些語言中,每一種語言都有自己的網頁開發框架;至于你需要使用哪一種語言,這取決于其他大量的因素,我們在此不進行展開討論。無論你選擇哪一種語言,它都會教會你如果將數據庫中的數據進行儲存,而且還會要求你使用SQL等其他語言。
在所有這些語言中,Java有一個非常成熟的社區,而且我之前提到過,它幾乎可以用來做所有事情。而且學會Java的另一個好處,就是如果你日后需要轉型,針對安卓系統開發應用,你所掌握的Java技巧將能夠為你提供幫助。
C#則能夠將你帶入微軟的世界,你一定知道,微軟的操作系統是目前用戶最多的桌面操作系統。這意味著學會C#,你能夠為絕大多數互聯網企業工作。
對于初學者來說,Ruby要比Java和C#等語言簡單,也更容易入門。但是這種語言將把你的職業生涯限定在網頁應用開發上。因此,如果你是一位創業者,并不想依靠開發軟件為生,但是又想掌握一種編程語言,那么Ruby非常適合你。
Python與Ruby在功能上非常類似,但是在處理復雜任務方面,Python具有一定的優勢。但是在入門困難程度上,Python又要高一些(其實這并不一定是件壞事)。但是相比于其他語言,Python還是比較容易理解的,而且Python有一個非常穩定的用戶社區,這對于初學者來說非常重要。當你在學習過程中碰上了一些自己難以解決的問題,一個穩定的用戶社區將為你提供寶貴的幫助。
最后,如果你一直在研究JavaScript,它也能夠讓你獲得足夠優秀的后端技巧(后端工作現在正變的越來越重要,這方面的人才也非常稀缺)?,F在的網頁應用中使用了大量的JavaScript代碼,這意味著所有的網頁開發人員都需要掌握JavaScript這種語言。JavaScript正在成為行業內都“通用語言”。
無論你決定走哪條路,都應該盡快的嘗試用所學的語言開發軟件
有太多的初學者在最初的向導階段就放棄了,因為剛一上來的無知和困惑讓他們產生了巨大的挫敗感。使用別人開發的軟件非常簡單,而當他們需要自己從頭開始開發一個軟件的時候,其難度就會陡然而升。
解決這個問題當最好方法,就是自己想一個有趣的軟件創意,然后開始將這個創意變成真正的軟件。如果你想使用Ardunio來打造一個有趣的感應器或是機器人,那就立刻實施(其間它將迫使你學習C或是C++)。如果你想針對iPhone開發一個應用,那就先想好這個應用的樣子和功能,然后開始在網上搜集各種指導和資源(開發iPhone應用需要你學習Swift)。如果你想開發一種優秀的網頁應用,那么就立刻行動,并且在多個設備上進行測試(你將需要學習HTML和CSS)。
最后需要指出的是,編寫代碼實際上是一種藝術,只是大部分人都沒有意識到這一點。在成為一名專業的開發人員之前,需要你進行多年的學習和練習。在開始學習之前,首先你要找到一個優秀的開發人員社區,并且參與其中,多與其他人討論,遇到問題的時候也應該勇于提問,獲得別人的指導和幫助。這樣做的好處,是能夠保證你以正確的方式學習正確的編程語言。
另外,如果你想走這條路,你就應該確保自己獲得正規的教育。如果你有機會考取某所大學的計算機科學專業,你就應該毫不猶豫的進行申請,并且最終取得學位。而且在畢業之后如果有繼續深造的機會,也應該進行繼續學習。如果你是一位在職人員,想利用業余時間學習編程,那么網絡上諸多的在線課程能夠成為你優秀的學習資源。如果你身邊有其他的朋友也在學習編程,你們應該成立學習小組,相互切磋,讓其他人來評論你的開發成果,讓他們幫助你達成自己的目標。
想學Swift語言可查看:
Swift視頻教程
Swift語言教程
本文作者Will Little是Code Fellows公司的聯合創始人兼CEO。該公司位于西雅圖,它是一家編程學習服務公司,他們的服務是一個為期8周的開發加速器項目(Development Accelerator)。他們承諾從這個項目畢業的學員都能夠找到一份擔任開發人員的工作。如果學員在畢業6個月內沒有找到工作,就可以獲得學費的全額退款。Will在蘇黎世聯邦理工學員取得了生物工程博士學位,并于2005年開始職業生涯,此前曾任網頁開發人員,后開始創業生涯。
新聞熱點
疑難解答