鵬哥帶你學編程-引子
1 汪大哥,您好!我有一個創業方面的想法,從來沒有跟別人說過,但我信任你,我想和你合作,你負責編程就可以了,其他的都交給我來做,前景很不錯然後巴拉巴拉。。。。
2 本人姓x,我家孩子生於x年x月x日x時,急需個能合八字調運的好名字,最好能朗朗上口、意境深遠,希望3天之內孩子出院之前能給我,謝謝你了!
3 您好,我現在正在自學編程,希望老司機能帶帶我怎麼做國外的共享軟體,十分感謝!
每次看到這類問題我都覺得好有趣,這些人真是不拿別人當外人兒啊:)你說句話倒是輕鬆,這事別人可是要花大量的實實在在的時間才能做出來的!n我對待這類事有個原則,個性化的需求不會幫著做,但共通性的能一次就幫助到很多人的那種事情可以選擇性的去幫忙。
不光對網友這樣,對生活中的很多朋友我也是這樣的,沒辦法。總會遇到一些這樣的朋友或同學,很輕鬆的跟我說:「大鵬,幫我編個xx軟體(做個xx網站)吧,改天請你吃飯!」尼瑪,我只能胸有激雷而面若平湖:「走,我現在就請你喝酒去!」把他灌醉了,給他解釋下。
不過,回想一下,編程對於自己的幫助確實是非常大,讓自己一個國企的窮屌絲,也能買得起房、買得起車、存得下錢了。如果光靠那點兒國企大鍋飯的死工資,我去,不敢想像。
我記得上大學時,我們老師手裡有個地球化學方面的科研項目,他有大量的excel數據需要處理,找了我和另外一個同學幫他整理,工作量看起來很大,我為了偷懶編了上百行的vba代碼批量處理,一下就減少了80%的工作量,那天我們老師高興壞了,喝了八瓶啤酒。
參加工作以後,我剛開始是在野外做地震勘探採集項目的技術員,每天要給各個施工班組出任務書,收工以後還要將工作量的完成情況繪圖在雙狐軟體上面,工作量排得滿滿的,晚上也睡得很晚。我為了偷懶半個月時間裡睡得更晚將大部分流程都做成了軟體,然後之後的工作就輕鬆了很多很多。
後來靠做國內外的共享軟體和affiliate改變生活的事情就不多說了。
總之,我是切切實實的感受到了學會編程的諸多好處,我想,網路上還有很多很多跟我之前一樣是窮屌絲的朋友,他們對生活抱著熱切的企望,也願意付出努力去改變現狀,很想學一些編程技能來改善自己的生活或者至少多一項技能增加自己的職業籌碼。由此,我準備寫一系列的文章來引導這些沒有基礎的朋友們掌握一些編程技能,這是一件可以幫助到很多人的事情,所以願意花一些時間和精力去做。
很多人一聽到別人問怎麼學編程就扔過來了一個書單,《C語言》,《數據結構》,《離散數學》,《資料庫》,《編譯原理》,《操作系統》,《計算機組成原理》,《計算機網路》。然後問的人買了一大堆書放在那裡,翻了幾頁,然後就永遠的放在那裡了,這是典型的學習不得法。
我的畢業設計雖然是一套軟體系統,但其實我是非科班出身,學的是地質專業。所以我的學習經驗對很多非科班出身的人很有借鑒意義。我也會盡量用淺顯易懂的語言來引導大家。
還是老一套,學習之前先和大家說一下學習思路的問題。我覺得學習最大的問題在於興趣,「興趣是最好的老師」。
那麼如何才能對編程產生持續的興趣呢?
這就需要在學習過程中懂得創造即時的正向反饋!nn什麼是即時的正向反饋呢?
說白了就是在較短時間裡能有好的正面效果反饋來激勵自己。(打個不太恰當的比方,每次海豚表演完以後,馴獸員都會給他喂一條小魚。)nn為什麼很多人痴迷於遊戲?因為在玩遊戲時,玩家很容易得到即時的正向反饋!打一個怪,就得到了一些經驗,殺一個boss就得到了一件裝備,遊戲人物升一級自身屬性就得到了提高pk變得更厲害。而在現實生活中,學了很多東西,似乎在自己身上並沒有發現明顯的改變,所以似乎讓人覺得,遊戲比真正的生活有趣,於是痴迷於虛擬的世界中不可自拔。
就拿編程來說,在沒有任何實際編程經驗的前提下,首先就埋頭學大量的大部頭著作比如:數據結構與演算法,計算機原理,資料庫原理,軟體工程思想,面向對象思想等等。結果,光看書就看了很長時間,一個小軟體還不會編,就逐漸喪失了對編程的興趣。我身邊就有好幾個計算機專業的朋友,對編程都不怎麼熱愛也不擅長。
怎麼創造即時的正向反饋呢?
1 設定小的目標,那種只要稍微墊墊腳就能實現的小目標。
不要一上來就想著要做語音識別、神經網路、3D大型遊戲這些大軟體。從通過編程滿足很小的功能需求來入手,比如一個下午或幾天就能搞定,搞定後會帶來成就感。nn2 完成小的目標後,馬上(即時)給自己一個小小的獎勵(正向)。
把自己當做小孩子一樣,完成小目標後讓自己能夠做一會兒自己最喜歡做的事情,也可以自己誇獎自己幾句「某某某,你竟然沒有半途而廢,漂亮的完成了,你太棒了!You are strong,not虛胖!You can donanything!」。nn3從實際工作生活入手,從提高工作效率或創造生活小驚喜小情趣入手。
目標不光要小,還要有實用性,不然搞定後雖然當時會帶來成就感,但也只是當時得到了正向反饋,由於沒有實用價值或以後很少用,然以後就沒有持續性了。所以要設定並實現那種具有可持續實用性的小目標。nn
比如工作中要修改數萬個文本文檔,並且修改的內容存在一定的規律性,如果手工修改可能需要好多人修改好多天,而你花了幾個小時的時間編了一個小軟體,一點運行按鈕,咔咔咔,幾分鐘,就解決了,給同事們工作帶來了極大的方便。那樣的話,不光你自己當時得到了成就感,以後的日子裡還會由於再次使用或同事的反饋而帶來一定的持續性正向反饋。
比如,生活中,你給自己的愛人朋友專門做一個小作品,她也會很感動的。當年,我追我媳婦兒的時候就用過這一招,她是個金庸迷,還寫了很多武俠人物相關的詩詞,我幫她把所有詩詞配上古典畫面、配上古典音樂和笑傲江湖曲-琴簫合奏做成了一個動畫flash,發過去後,她對我的印象分那是嗖嗖往上冒+1、+1、+1啊。
4 慢慢提高目標,滿足更多更難的需求,開始學習更多的進階課程。
剛開始可能只會自動化辦公操作或者操作個文本文件、文件夾之類的,慢慢的你會發現,要實現有些功能你得會操作二進位文件、會調用各種類庫,數據量大的時候演算法的優化能對程序的性能帶來巨大的改變,數據關係複雜的時候原來用資料庫是如此的方便,將數據圖形化3D化後是如此的直觀。然後你就會主動的開始去啃那些厚本厚本的計算機書籍,那時,你才會真正看的懂,原來各種技術的出現都是植根於現實的需求,原來那些經典的計算機書籍確實很經典!nn好了,方法和思路都說完了,該行動了,下面是計劃目錄。
一 從office編程開始。(學好了可以大大提高辦公效率)
二 C#的世界。 (學好了可以編出絕大部分軟體)三 C++的世界 (科學計算類軟體必備)四 HTML& HTML5標記語言 n(網頁的基礎語言)五 CSS樣式表 (優化網頁表現的語言)
六 PHP (一種開源的Web開發語言)七 資料庫(Sql server和Mysql) (主流的資料庫)八 三維可視化(opengl) (主流的3D圖形程序介面)九 Linux (主流的自由的非Win操作系統)其實,只要你深入掌握一門語言之後,其他語言的學習就會變得很簡單。萬事開頭難,所以要有一個深入淺出的開始。
下一篇 鵬哥帶你學編程-(一 從office編程開始)從函數切入
推薦閱讀:
※如何學習編譯原理中的純理論?
※std::array初始化代碼編譯出現too many initializers錯誤的原因?