在日常生活中,,常常會(huì)聽到:“我想學(xué)編程”,,看似簡單的一句話,仔細(xì)分析,,其中的奧妙可不少,。你想學(xué)什么樣的編程,是一個(gè)簡單的Hello World,,還是開發(fā)移動(dòng)應(yīng)用呢,?本文作者Scott Hanselman把這個(gè)問題比喻成選家具,是去宜家還是從種樹開始呢,?并且與大家探討了碼農(nóng),、黑客、程序員,、開發(fā)者和計(jì)算機(jī)科學(xué)家之間的區(qū)別,?下面是筆者對(duì)原文的翻譯。 最近有朋友向我提問:說他想學(xué)如何編寫代碼,,但不知道該如何下手以及該從哪里起步,? 學(xué)習(xí)如何編碼——是去宜家還是從種樹開始? 好比想當(dāng)木工,,你可以選擇從種樹開始,,然后砍樹、打磨,,最終制作家具,。或者,,你也可以直接去宜家,,也可以介于這兩者之間。 直接修改WordPress主題就好比是去宜家,,自己動(dòng)手編寫一個(gè)Web框架就好比種樹,,通常都是因?yàn)闆]有自己喜歡或者現(xiàn)成的“樹”。無論是自己“種樹”還是直接選擇現(xiàn)成的,,你都必須決定自己想要的家具,。 好吧,該從哪里開始,? 每當(dāng)我聽到有人想學(xué)編程時(shí),,我都非常高興,下面這些網(wǎng)站都是非常不錯(cuò)的學(xué)習(xí)資源: · Code.org · Udacity 碼農(nóng),、黑客,、程序員,、開發(fā)者和計(jì)算機(jī)科學(xué)家的區(qū)別? 你可以認(rèn)為這些詞的意思都一樣,。也許你還聽過Geek,、nerd和dweeb,,但知道他們的不同還是非常重要的,。了解這些不同你就可以清楚地知道你到底所屬哪一個(gè)層次: · 碼農(nóng):通常是發(fā)現(xiàn)問題并解決的人,但解決方案并不完美,; · 黑客:通常是底層專家,,技術(shù)過硬,曾深入某領(lǐng)域研究,,并且非常精通,; · 程序員:寫代碼并了解算法,經(jīng)常獨(dú)自專注地工作,; · 開發(fā)者:是真正厲害的多面手,,熟悉多種系統(tǒng)和語言,可以熟練交叉使用,。知識(shí)廣泛的專業(yè)人士,,有良好的溝通和團(tuán)隊(duì)協(xié)作能力; · 計(jì)算機(jī)科學(xué)家:知道并了解計(jì)算機(jī)的工作原理,,精通理論層面,,數(shù)學(xué)達(dá)人。 如果你已經(jīng)接近其中的一個(gè)層次,,你可以想想今后應(yīng)該朝哪個(gè)方向邁進(jìn),。 假設(shè)是Web編程? 在幾年前,,如果有人告訴你想學(xué)編程,,你可能會(huì)編寫個(gè)Hello World程序,或者安裝下Visual Basic,,拖一個(gè)Button控件,,然后用消息框彈出個(gè)Hello World。 這或許就是大家在入門時(shí)遇到的第一個(gè)程序,,作為JavaScript和Web Service入門,,我認(rèn)為這是很好的開端。但關(guān)鍵是,,并不是所有的應(yīng)用程序都是Web應(yīng)用程序,。應(yīng)用程序會(huì)使用來自服務(wù)端的數(shù)據(jù)、發(fā)送通知,、文本,、Email和Tweets等信息,,甚至是一個(gè)非常小的應(yīng)用程序,它也有可能從Web服務(wù)器上調(diào)用一些數(shù)據(jù),。每個(gè)應(yīng)用程序都會(huì)實(shí)現(xiàn)相應(yīng)的功能,,并且應(yīng)用在相應(yīng)的地方。所以你要搞清楚,,你所說的編程是指Web編程還是其它編程,。 現(xiàn)在,如果你想成為一名程序員,,或者更加精準(zhǔn)地說,,你想成為一名高效的Web程序員,那么你就想弄清楚,,當(dāng)用戶在網(wǎng)頁里輸入twitter.com時(shí),,瀏覽器到底做了些什么,原理是什么,?如果你想成為一名木匠,,你就想了解樹是如何長成,如何挑選好的木材,;如果你想成為一名賽車手,,你就想知道引擎的工作原理;亦或者是,,如果你想成為一名管道工,,你就必須知道水源。 你弄清“我想學(xué)習(xí)編碼”的真正含義了嗎,? 問題的根本所在是你到底想從事哪方面的代碼編寫,?網(wǎng)站開發(fā)、網(wǎng)站設(shè)計(jì),、還是編寫移動(dòng)應(yīng)用程序,、還是想編寫一個(gè)小工具、這些都是完全不同的終點(diǎn),,并且它們都會(huì)有很好的入門教程,,如果你想深入進(jìn)去。 · 對(duì)Web開發(fā)感興趣,? 任何相關(guān)“Learn to Code”的網(wǎng)站都非常不錯(cuò) · 對(duì)硬件感興趣,? 可以考慮Raspberry Pi或Arduino · 對(duì)你每天所使用的代碼/歷史代碼很感興趣? · 已經(jīng)通曉一定的技術(shù)但想走的更遠(yuǎn)? 訂閱http:// · 想成為一名很好的多面開發(fā)者,? 閱讀Mike Gunderloy的“Coder to Developer” 寫在最后 對(duì)于想學(xué)編程的人,,他們完全可以從Web編程開始,學(xué)一點(diǎn)JavaScript然后開始編寫Web應(yīng)用程序,。但如果你的興趣愈加濃厚,,你也可以鉆研一些不同的編程領(lǐng)域,,給自己增加更多鍛煉的機(jī)會(huì)和發(fā)展空間。 |
|