常??吹椒切畔⒈尘暗呐笥褑柟こ處煟何易罱雽W(xué)寫程序!該怎么入門?
通常他們會(huì)得到很多糟糕的答案:「先了解演算法」、「先弄懂資料結(jié)構(gòu)」、「先認(rèn)識(shí)物件導(dǎo)向」。
這些答案都?jí)蛟愀饬?,但最糟糕的答案莫過于「從C/C++開始入門」。
(我看過最扯的建議是「去找C++?Primer?Plus來看」。這本磚頭書絕對(duì)不適合一般人自學(xué))
照著以上建議去做的朋友,大概會(huì)在兩周之內(nèi)就得到滿滿的挫折感,然后認(rèn)為自己「果然不適合寫程序」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入programming領(lǐng)域。
這些建議真是害人不淺。
信息相關(guān)科系,是因?yàn)橐永m(xù)到之后的資料結(jié)構(gòu)、作業(yè)系統(tǒng),所以大一從C/C++開始入門會(huì)比較連貫、才能完整學(xué)一次計(jì)算機(jī)的基本知識(shí)。
而這些想學(xué)coding的朋友,大部分只是這兩種情況:
A.最近覺得寫網(wǎng)站好酷,想試試看自己能否寫個(gè)blog、或是個(gè)人網(wǎng)頁
B.對(duì)工作上某些人工流程不滿意,想試試看自己能否學(xué)寫程序、用電腦解決問題
他們的愿望僅此而已,并沒有打算成為計(jì)算機(jī)專家、黑客,實(shí)在沒有必要從C/C++入門。
就像點(diǎn)火一樣,先從零星的火苗開始、小心保護(hù)不要讓它熄滅,接著慢慢加?xùn)|西進(jìn)去、讓火焰慢慢成為大火。學(xué)習(xí),除了知識(shí)/技能之外,培養(yǎng)成就感與熱情也是很重要的。而從C/C++入門,會(huì)讓正要萌芽的小火苗直接消滅殆盡。
我對(duì)程序設(shè)計(jì)入門的建議很簡單。
如果你是狀況A,去學(xué)PHP&MySQL,先弄一個(gè)丑丑網(wǎng)頁出來就可以了。
如果你是狀況B,去學(xué)Python,先弄一個(gè)能執(zhí)行、能顯示幾個(gè)文字的程序就可以了。
一般人想到程序通常只想到「圖形化界面」,如果能寫出一個(gè)有界面的小玩意會(huì)非常有成就感。
那樣的話,學(xué)PHP來寫個(gè)網(wǎng)站、直接就是界面,絕對(duì)有趣;學(xué)Python很快就能把玩內(nèi)建的tkinter函式庫、做出按鈕做出選單,樂趣無窮。
話雖如此,你到市面上找PHP或是Python的書,大概還是會(huì)落得「滿滿的挫折感然后正式放棄」的下場。
別擔(dān)心,這不是你的錯(cuò),是那些書寫得不夠好。沒有一本是真正的程序設(shè)計(jì)入門書。
那些書只想著給你知識(shí)/技能,沒有想到要培養(yǎng)你的成就感、保護(hù)你的熱情。
要找書的話,我只建議兩本。
狀況A,去找歐萊禮的「深入淺出PHP與MySQL」(Head?First?PHP?&?MySQL)。
狀況B,去找歐萊禮的「深入淺出程序設(shè)計(jì)」(Head?First?Programming)。
國外的在線開放課程也可以考慮。
Coursera的
人人都懂的編程課(Python)
(https://www.coursera.org/course/pythonlearn)
學(xué)習(xí)編程:基礎(chǔ)
(https://www.coursera.org/course/programming1)
麻省理工的
Introduction?to?Computer?Science?and?Programming
A?Gentle?Introduction?to?Programming?Using?Python
全部都是用Python入門。
我對(duì)程序設(shè)計(jì)入門的建議就只有這樣。你不需要知道什么演算法、資料結(jié)構(gòu)、物件導(dǎo)向。
什么狗屁名詞都不需要知道。那大多只是工程師下意識(shí)地想讓你覺得他們很厲害而已。
你只要想辦法寫出一個(gè)會(huì)動(dòng)的程序就可以了。所有偉大的東西都是這樣開始的。
Q1:但是狀況A還要面對(duì)HTML/CSS耶..好像很難?
每個(gè)技能深入下去沒有不難的。但是HTML/CSS要入門實(shí)在不怎么難。
就從隨便寫幾個(gè)表單或按鈕、弄個(gè)丑丑的靜態(tài)網(wǎng)頁出來開始吧。
Q2:我是工程師,我能怎么幫助朋友?
幫他們搞定環(huán)境設(shè)定吧!幫他們把最基礎(chǔ)卻又最給新手挫折感的環(huán)境給設(shè)定好!讓他們能用記事本跟幾個(gè)小工具就開始寫code!給他們成就感!
Q3:那寫手機(jī)app呢?你怎么沒提到?
我覺得手機(jī)app還滿難入門的,實(shí)在給不出有建設(shè)性的建議。不知道。不過,上面的連結(jié)也許有一些手機(jī)相關(guān)課程,不妨試試?
文章來自轉(zhuǎn)個(gè)彎日誌