對(duì)程序員或編程初學(xué)者來(lái)說(shuō),有哪些最有用或最好的編程語(yǔ)言適宜學(xué)習(xí)? 創(chuàng)業(yè)者Roger Huang將為大家推薦一些編程語(yǔ)言,并分享個(gè)人的經(jīng)驗(yàn)與看法。Huang是一名連續(xù)創(chuàng)業(yè)者,目前他正專注于他的第二個(gè)創(chuàng)業(yè)項(xiàng)目,并給予他人職業(yè)成長(zhǎng)的建議。
有幾個(gè)人曾經(jīng)問我,有哪些最有用或最好的編程語(yǔ)言適宜學(xué)習(xí)?
姑且略過(guò)HTML/CSS不談,我認(rèn)為答案取決于你想通過(guò)編程來(lái)做什么。
要點(diǎn)速覽
-
對(duì)只用一種語(yǔ)言來(lái)構(gòu)建某個(gè)項(xiàng)目的情況而言,Javascript和它的框架是非常有用的。
-
Angular.js可以控制展示給用戶的網(wǎng)站前端。
-
Node.js將作為管理網(wǎng)站所有內(nèi)容的網(wǎng)絡(luò)服務(wù)器。
-
Express.js在前端和服務(wù)器兩者之間運(yùn)行,對(duì)信息的來(lái)去進(jìn)行導(dǎo)向。
MongoDB作為存儲(chǔ)中心,用于存儲(chǔ)從用戶處獲取的數(shù)據(jù)。MEAN(Mongo/Express/Angular/Node)——一個(gè)有助于構(gòu)建你在一個(gè)Web應(yīng)用中所需要的一切東西的結(jié)構(gòu)化框架——是一套目前被大量初創(chuàng)公司所喜好的編程語(yǔ)言。這是一個(gè)完備的組件,它包含了基于單一語(yǔ)言來(lái)Web化地構(gòu)建所有事物的技術(shù)。
我一直在用Egghead.io和Scotch.io來(lái)及時(shí)更新我的Angular.js和MEAN技術(shù)。Egghead的網(wǎng)站內(nèi)容主要集中于有序地組織的教學(xué)視頻。Scotch有一些關(guān)于構(gòu)建Web應(yīng)用的整個(gè)流程的很棒的圖表,包括下面這張解釋MEAN的圖表:
它們都有很棒的教學(xué)視頻,教你如何構(gòu)建精巧的應(yīng)用,例如基本的搜索引擎和新的表單驗(yàn)證方式(以確保若你創(chuàng)建輸入表單,人們的實(shí)際輸入將是有效標(biāo)準(zhǔn)下的值)。通過(guò)使用Angular.js,你可以使一個(gè)網(wǎng)站動(dòng)畫化并使它“動(dòng)”起來(lái),而不需要過(guò)多的設(shè)置。這是非常精巧的一種方式。
Python可讀性和靈活性都非常好,最近它成為大學(xué)院校在教授計(jì)算機(jī)專業(yè)時(shí)選擇的入門語(yǔ)言之一。
對(duì)于玩轉(zhuǎn)數(shù)據(jù)以及用它的共通模塊來(lái)完成各種你以前認(rèn)為不可能的精巧工作來(lái)說(shuō)——例如抓取完整的網(wǎng)頁(yè)和進(jìn)行高級(jí)科學(xué)計(jì)算,Python都是絕佳的。我是在Learn Python上開始學(xué)習(xí)Python的,它非常符合我“ 邊做邊學(xué)”的學(xué)習(xí)風(fēng)格。
Java(以及其他更緊密地與計(jì)算機(jī)硬件交互的語(yǔ)言)對(duì)人類理解來(lái)說(shuō)會(huì)稍難一些,盡管對(duì)于幫助你理解“代碼的實(shí)際運(yùn)行過(guò)程”和“程序員與計(jì)算機(jī)的交互過(guò)程”的絕大部分知識(shí)而言,它們是很棒的。
Java也用于在安卓系統(tǒng)上的移動(dòng)應(yīng)用開發(fā),而這將會(huì)是一直有需求的領(lǐng)域。
如果我們想簡(jiǎn)捷地將知識(shí)轉(zhuǎn)換成金錢,那么,我曾見到業(yè)界對(duì)IOS開發(fā)者有著大量需求,而開發(fā)IOS應(yīng)用所使用的Objective-C和Swift也并不那么難學(xué)習(xí)。
Ruby——尤其是當(dāng)它與Rails一起使用時(shí)——是一種因其并不陡峭的學(xué)習(xí)曲線而被大量初創(chuàng)公司在初創(chuàng)時(shí)所用的語(yǔ)言(事實(shí)上,有一本叫Children's Book for Ruby的書)。
我自己正在學(xué)習(xí)Python以處理數(shù)據(jù);學(xué)習(xí)Javascript和MEAN以創(chuàng)建Web應(yīng)用;以及學(xué)習(xí)Java以對(duì)計(jì)算機(jī)科學(xué)有更深入的理解與構(gòu)建移動(dòng)應(yīng)用。我認(rèn)為這是一個(gè)可用的平衡良好的編程語(yǔ)言組合。
我已經(jīng)有了一組學(xué)習(xí)清單和資源,用來(lái)幫助你我學(xué)習(xí)構(gòu)建杰出作品所需要的東西。但實(shí)際上,這些都不是最好的編程語(yǔ)言。
最適宜學(xué)習(xí)的編程語(yǔ)言——以及如何著手去學(xué)習(xí)它
學(xué)習(xí)如何像一個(gè)程序員那樣思考——學(xué)習(xí)如何通過(guò)簡(jiǎn)潔的代碼來(lái)用數(shù)學(xué)解決問題,絕對(duì)是最適宜學(xué)習(xí)的東西。編程語(yǔ)言會(huì)演進(jìn),它們會(huì)改變,它們會(huì)衰落并不再受歡迎;一個(gè)編程語(yǔ)言社群會(huì)變化成另外一個(gè)。
現(xiàn)在偉大的Web應(yīng)用可能會(huì)在幾十年后被淘汰。不會(huì)改變的是對(duì)人們的邏輯思考和問題解決能力的需求——以及將它們變成在機(jī)器上運(yùn)作的一個(gè)更簡(jiǎn)單的自動(dòng)化流程的需求。
你可以寄希望于一個(gè)事實(shí),那就是隨著時(shí)代不斷發(fā)展,如果你訓(xùn)練解決問題的技能,你將能夠找到最適合你的語(yǔ)言,以及獲得你建立偉大事業(yè)所需要的知識(shí)與金錢。
我已經(jīng)開通了Project Euler,它提供一系列與數(shù)學(xué)和邏輯相關(guān)的編程問題。我在Codecademy workspace上嘗試用Python構(gòu)造整潔的代碼來(lái)解決這些問題。這是一名Google招聘官所提到過(guò)的“一個(gè)學(xué)習(xí)編程的很好的訓(xùn)練步驟”,而我并不懷疑這一點(diǎn)。我感到我的大腦更敏銳了,并對(duì)我的能力更充滿自信——不僅僅是編程能力,還有思考能力。
最適宜學(xué)習(xí)的編程語(yǔ)言最終還是位于編程核心的邏輯,數(shù)學(xué)和問題解決能力。“什么是最適宜學(xué)習(xí)的編程語(yǔ)言”這個(gè)問題并無(wú)對(duì)錯(cuò),只要你理解編程的基礎(chǔ)價(jià)值何在。