- 相關(guān)推薦
自學(xué)編程有哪些方法
自學(xué)編程的方法有哪些?怎么才能開始自學(xué)編程呢?又該從哪里開始進(jìn)行編程呢?小編為大家整理收集了關(guān)于如何自學(xué)編程的方法的相關(guān)內(nèi)容,一起來看看吧!
自學(xué)編程的方法【1】
1、可以考慮先學(xué)習(xí)C. 大多數(shù)時候,我們學(xué)習(xí)語言的目的,不是為了成為一個語言專家,而是希望成為一個解決問題的專家。
做一個有用的程序員,做一個賺錢的程序員。
我們的價值,將體現(xiàn)在客戶價值上,而不是語言寫得好不好看。
C++是C的一個面向?qū)ο蟮慕忉,C++為C擴(kuò)充了大規(guī)模工程應(yīng)用,復(fù)雜的系統(tǒng)結(jié)構(gòu)的組織和掌控方法,但是,我認(rèn)為,C++骨子里還是C的。
畢竟,解決具體問題,每個函數(shù)內(nèi)部,都是用C的方式寫程序,還是面向過程的。
因此,想要學(xué)習(xí)好C++,我的建議,先學(xué)習(xí)C,先學(xué)解決問題的能力,再討論解決大問題的能力。
就是先學(xué)習(xí)怎么走路,再學(xué)習(xí)怎么跑步。
2、學(xué)習(xí)C的過程中,一定要理解結(jié)構(gòu)化編程思維。
為什么呢,我前面有文章說過,軟件語言的發(fā)展過程,就是一個數(shù)據(jù)私有化的過程,大型工程應(yīng)用,強(qiáng)調(diào)高內(nèi)聚,低耦合,模塊化設(shè)計,保持代碼最大的靈活性和安全性。
這是現(xiàn)代工程化開發(fā)的核心和靈魂。
因此,利用C這門語言入門,借此理解結(jié)構(gòu)化開發(fā)思維,可以說是個很方便的路子。
因為C的函數(shù),本來就是為重用做準(zhǔn)備的。
同時,全局變量和cpp內(nèi)部私有變量的差別,其使用原則,這些都能學(xué)到很多結(jié)構(gòu)化開發(fā)思維。
3、開始學(xué)習(xí)C++ C++不難學(xué)的,很多人覺得C++難學(xué),其實是因為它在C之外,又提供了很多的概念,尤其是對象,很難以理解。
不過我經(jīng)過這么多年,把這個問題反而看淡了,我認(rèn)為面向?qū)ο笙鄬γ嫦蜻^程,僅僅是結(jié)構(gòu)化程序設(shè)計的一個具體體現(xiàn),是編譯器提供手段,強(qiáng)迫程序員必須遵循數(shù)據(jù)私有化的一個實例,C++和C的關(guān)系,最核心的莫過于此。
現(xiàn)在我們回到C再看看,如果我們把一個全局變量,寫到一個cpp里面,并且在對應(yīng)的h文件中不聲明,它是不是就只有這個模塊可以使用?它是不是就是私有變量,
以這個理解,類能明白了嗎? 4、學(xué)習(xí)C++的深入技巧 C++在類的基礎(chǔ)上,經(jīng)過這么多年的發(fā)展,其實提供了很多深入的概念,看起來很復(fù)雜,其實我看也很簡單。
比如模板,我的理解就是“類的類”,大家說是不是? 既然模板理解了,STL,ATL這些,靜態(tài)模板庫,動態(tài)模板庫,還難理解嗎?就是一大堆類的類,可以借此實現(xiàn)很多應(yīng)用中需要的類,不需要程序員再自己寫而已。
ok,STL都理解了,泛型開發(fā)還難嗎?所謂泛型開發(fā),其實就是我做一個模板,來定義一套算法規(guī)則,但是呢,我希望這個算法規(guī)則,能進(jìn)一步抽象,
對核心數(shù)據(jù)類型不要限死,我把各種數(shù)據(jù)套進(jìn)去,都可以用,這樣,僅算法這部分,我不需要重寫了。
你想想是不是這個道理? 學(xué)到這里,C++和C,其實已經(jīng)差不多了。
再學(xué)語言,就是求全責(zé)備,過于鉆牛角尖了。
5、學(xué)習(xí)應(yīng)用開發(fā) 前面說了,學(xué)習(xí)語言,目的不是讓別人認(rèn)為自己是專家,是為了寫程序賺錢。
因此,語言學(xué)完,要學(xué)習(xí)應(yīng)用開發(fā)。
什么叫應(yīng)用開發(fā)呢,我會一門語言,但是,客戶不懂,客戶說的很直接,在Windows下給我寫個程序,我要什么什么功能。
為啥Windows呢?因為我習(xí)慣。
OK,很多時候,應(yīng)用開發(fā)要尊重客戶習(xí)慣,一般說來,語言這個東東,還是要結(jié)合具體平臺的開發(fā),才能開發(fā)出有意義的應(yīng)用程序賣錢。
那么,一般說來,客戶端是Windows系統(tǒng),服務(wù)器是Linux,這些都是行業(yè)習(xí)慣,嵌入式不好說,各種平臺都有,Palm,S60,Linux,WinCE,等等。
要根據(jù)自己的目標(biāo)客戶來定。
當(dāng)我們選定目標(biāo)平臺后,有一個問題,選什么語言,很多時候,學(xué)生和商用程序員差別就在這里,學(xué)生一般沒得選,自己會啥就用啥唄,企業(yè)里的程序員不會,要先評估需求,看哪個語言更合適,不會的語言,要去學(xué)。
ok,假定我們選了C和C++,那么,我們需要選擇開發(fā)平臺,Windows下不用說了,VC,這是最好用的,Linux下呢,gcc,其他的也差不多。
假如我們開發(fā)VC,并且使用C++,這個時候,才需要考慮學(xué)習(xí)MFC了,因為這是微軟的標(biāo)準(zhǔn)類庫,至少Windows平臺下,它最權(quán)威,你看見沒有,我們從學(xué)習(xí)開始,
走了多少步,才走到MFC?是不是MFC不是學(xué)習(xí)C++上來就必須學(xué)的? 6、學(xué)習(xí)MFC 學(xué)習(xí)MFC,很多人一上來就開始看其體系架構(gòu),看得一頭霧水,那個模塊關(guān)系依賴圖,我到現(xiàn)在都看不懂。
呵呵,其實不是啦,和學(xué)語言一樣,我們學(xué)MFC的目的,也不是希望成為MFC的專家,而是要利用MFC開發(fā)Windows應(yīng)用程序,為我們賺錢。
看見沒?MFC是手段,不是目的,目的是開發(fā)Windows程序。
其實Windows下,有一套很標(biāo)準(zhǔn)的C接口,叫Win32API,這個才是Windows的標(biāo)準(zhǔn)編程核心,因此,學(xué)習(xí)MFC,真實的目的是理解Windows程序開發(fā),建議可以先學(xué)習(xí)Win32API,看來我們又回到C了哈,呵呵。
剛開始學(xué)C有用吧? 7、Win32API 其實Win32APi不難學(xué)的,因為雖然它很大,有很多接口,但不是必須的,我們真正做個簡單的Windows應(yīng)用,其實用不到這么多的。
做個簡單的Dialog,然后實現(xiàn)個功能,你遇到的接口函數(shù),其實絕大多數(shù),就是以后常用的了。
把常用的記熟練,就ok了。
關(guān)鍵是,這個時候要通過WinMain方式,去理解Windows的事件機(jī)制,這是核心,其實說起來簡單得要死。
就是以前你的程序,由于沒有系統(tǒng)支撐,很多事必須自己做,比如檢查鼠標(biāo)和鍵盤輸入,你需要寫個死循環(huán),自己不斷去看,而Windows說,這些事你不要做了,我來做比你好。
你沒事就玩去吧,我把和你相關(guān)的消息放到一個隊列里,就是你的事件隊列,你自己沒事去找找看,有沒有新消息來,有就做事,沒事就玩好了。
很簡單是不? 當(dāng)然,Windows是多任務(wù)操作系統(tǒng),有時候,我們的邏輯需要并發(fā)一些功能,比如說,我在等鼠標(biāo)鍵盤消息的時候,需要再看看打印機(jī)準(zhǔn)備好了沒有,
這里就需要理解并行計算了,這和語言無關(guān),和操作系統(tǒng)無關(guān),這是另外一個話題,這里不多說了,你可以自己找找線程開發(fā)的相關(guān)資料看。
看見沒,為了學(xué)習(xí)好Windows編程,其實我們不僅僅需要學(xué)習(xí)語言,還要學(xué)習(xí)操作系統(tǒng),并行計算原理,內(nèi)存原理,可能有時候還需要學(xué)習(xí)網(wǎng)絡(luò)通信,等很多知識,
所以說,單憑學(xué)習(xí)語言,是成不了商用程序員的,一個合格的程序員,需要理解的東西,太多了,要廣為學(xué)習(xí)。
當(dāng)我們把Win32API,以及基本的窗口化程序設(shè)計理解了,就可以回到MFC繼續(xù)學(xué)習(xí)了。
是不是有點遞歸返回的意思?呵呵。
8、回到MFC 個人感覺應(yīng)該回到VS 原來學(xué)MFC很難的,因為其封裝了太多細(xì)節(jié),很難理解透徹。
不過還好,我們有侯老師的深入淺出MFC,去找本來看看,如何從Win32API的純C編程,改變?yōu)镸FC的C++方式,看這個最快,基本上前6章看完,已經(jīng)會了,這里我就不多說了。
9、COM COM、COM、COM,我最頭疼的COM,呵呵。
COM就是一種遠(yuǎn)程過程調(diào)用,即你請求的代碼是在另外一個進(jìn)程中運(yùn)行的,通過某種通信協(xié)議來回傳遞參數(shù)和結(jié)果。
僅此而已。
DCOM進(jìn)了一步,服務(wù)者可以在另外一臺計算機(jī)上。
在公司開發(fā)中,大家可能各做一塊,如果要合作,Windows下建議多使用COM.(我個人喜歡socket通信哈) 簡單說,COM提供了一種機(jī)制,可以跨進(jìn)程通信,甚至跨機(jī)器通信。
不過,為了傳遞各種類型的參數(shù),COM可謂是無所不用其極,它發(fā)明了智能指針,可以指向任何類型的數(shù)據(jù),同時,為了實現(xiàn)智能指針,
它使用了大量的C++泛型設(shè)計,看見沒,C++的基本功就起作用了,還用到了ATL. 學(xué)習(xí)COM,要注意一個接口的概念。
由于開發(fā)者是不同的人,調(diào)用程序和服務(wù)程序,可能不是同一種語言,OK,不能簡單提供一個C或C++的。
h文件來解答接口,因此,COM提供了標(biāo)準(zhǔn)接口,使用者在程序內(nèi)部,以查詢方式獲得可用接口,進(jìn)而以接口ID調(diào)用。
很累人的。
學(xué)會了COM,就可以多理解一點ActiveX了,那么再學(xué)習(xí)一點dll(動態(tài)鏈接庫)的知識,我們就已經(jīng)可以寫OCX控件了。
一般說來,OCX控件是個很好的設(shè)計,哪都能用,一個軟件的模塊,最理想是開發(fā)成這個樣子,比exe靈活。
10、沒了。
按少林派說法,學(xué)了上述這些,其實已經(jīng)算打過18銅人陣了,已經(jīng)可以下山助明主,掃奸佞,扭轉(zhuǎn)乾坤,解萬民于倒懸了。
不過,關(guān)鍵是你通過上面的過程,是不是已經(jīng)學(xué)會了學(xué)習(xí)的方法,再遇到新的東東,是不是已經(jīng)不難學(xué)了?這大概就是武學(xué)中的悟性了,
有了這個根基,以后只要慢慢修煉,估計20年后,可與天下英雄一較短長了。
自學(xué)編程的方法【2】
學(xué)習(xí)編程已經(jīng)不再是少數(shù)計算機(jī)專業(yè)人員的事情了,就如同計算機(jī)深入到我們生活的每一個角落一樣,學(xué)習(xí)編程的人也是越來越多。
由于現(xiàn)在網(wǎng)絡(luò)信息資源豐富,大多數(shù)人都選擇了自學(xué)。
我自幼自學(xué)編程十余年,多少積累了一些經(jīng)驗和方法,想通過這里給這些初學(xué)的編程自學(xué)者一些個人的建議。
建議一:自學(xué)也需要看書自學(xué)只是說沒有專門的老師手把手教你,并不是說連書本都可以不要了。
有人天天來問我一些很基礎(chǔ)的概念問題,我問他:“這些概念書上不都寫得很明白嗎?”他回答:“我沒有書。”如果沒有書,那么你很難在腦子里形成一個較為整體性的認(rèn)識,所有了解到的知識都是支離破碎的。
且不說大多數(shù)人沒有精力回答你這些問題,即使回答了,很多東西也不是三言兩語就能說清的,很多高手說出來的都是他們自己的理解,這些理解或許很有意味,但也許費(fèi)了你半天的腦子卻怎么也搞不明白。
一本書,即使不是什么經(jīng)典之著,它也可以向你提供一個大體完整的框架,成為你自學(xué)過程中的一個向?qū)А?/p>
這里要說的是:網(wǎng)上電子教程資源豐富,看看無妨,但手中至少應(yīng)有一本印刷的書€€€€畢竟網(wǎng)上的教程魚龍混雜,其作者也許并不精通此道,很難分辨其質(zhì)量好壞。
建議二:學(xué)編程更需要實踐書是有了,可是整天抱著書也不成。
編程最怕的就是紙上談兵,我看到有的初學(xué)者,看完了大半本書,和我說起循環(huán)函數(shù)來頭頭是道,卻連編譯器長什么樣都沒有見過。
真要他寫幾行程序,便是錯誤百出。
我的建議是,無論你涉及編程的時間是多么地短,無論你目前學(xué)到的知識多么地少,你都應(yīng)該不斷地盡自己所能去編寫一些小程序即使是把書上的“Hello, World!”親手輸入進(jìn)去運(yùn)行一遍,都能讓你的編程能力有著極速地提高。
建議三:編程是創(chuàng)造,不是默寫有人甚至打算用題海戰(zhàn)術(shù)來學(xué)習(xí)編程€€€€這完全沒有理解編程的內(nèi)涵。
僅僅通過“欣賞”別人寫的代碼也無法學(xué)好編程。
有一點需要明白:編程是一個創(chuàng)造的過程。
編程的意義在于:通過程序的形式,教計算機(jī)如何去完成一項任務(wù)。
寫代碼只是形式,真正重要的是如何完成特定的任務(wù)。
學(xué)習(xí)別人的代碼固然是很有用的,可以學(xué)習(xí)別人的思想;但是如果僅僅是記憶了一些別人寫好的代碼,就希望能通過拼拼湊湊成為自己的程序,那是基本不可能的。
我的建議是:在自己編寫程序,進(jìn)行創(chuàng)造的過程中,借鑒前人程序中的思想方法€€€€而不是整天處于復(fù)制粘貼的狀態(tài)中。
建議四:好習(xí)慣要從開始做起所謂“不以善小而不為”,等壞習(xí)慣養(yǎng)成了,再改就困難了。
因此,類似寫程序要注意縮進(jìn)、為變量和函數(shù)起有意義的名字、大小寫的使用、行末分號的注意等等,要從一開始做起。
很多人對這些善意的提醒不屑一顧,覺得多此一舉,浪費(fèi)時間。
其實,如果真的能嚴(yán)格地去做,它們反而可以幫你節(jié)省許多時間。
建議五:不必太刨根問底 “打破沙鍋問到底”確實表現(xiàn)了一種鉆研的精神,不過我還是建議初者學(xué),有的時候,不必太刨根問底。
編程的相關(guān)知識都是盤根錯節(jié)交織在一起的,大多數(shù)問題深挖下去會越說越復(fù)雜,對于知識掌握不多的初學(xué)者來說,只能是越來越糊涂。
很多東西,時間長了,隨著知識了解得深入,自然而然會明白。
就像剛剛學(xué)英語的時候,你知道“goodbye”是再見就足夠了,難道非要把這個good和再見的關(guān)系先弄個水落石出嗎?作為初學(xué)者,
最重要的是盡快地能全面地了解整個知識的全貌,在單獨的知識點上,暫時不需要太深入。
可以等知識經(jīng)驗豐富之后,再回頭來研究。
自學(xué)編程的方法【3】
建議一:自學(xué)也需要看書
自學(xué)只是說沒有專門的老師手把手教你,并不是說連書本都可以不要了。
有人天天來問我一些很基礎(chǔ)的概念問題,我問他:“這些概念書上不都寫得很明白嗎?”他回答:“我沒有書。
”如果沒有書,那么你很難在腦子里形成一個較為整體性的認(rèn)識,所有了解到的知識都是支離破碎的。
且不說大多數(shù)人沒有精力回答你這些問題,即使回答了,很多東西也不是三言兩語就能說清的,很多高手說出來的都是他們自己的理解,這些理解或許很有意味,但也許費(fèi)了你半天的腦子卻怎么也搞不明白。
一本書,即使不是什么經(jīng)典之著,它也可以向你提供一個大體完整的框架,成為你自學(xué)過程中的一個向?qū)А?/p>
這里要說的是:網(wǎng)上電子教程資源豐富,看看無妨,但手中至少應(yīng)有一本印刷的書--畢竟網(wǎng)上的教程魚龍混雜,其作者也許并不精通此道,很難分辨其質(zhì)量好壞。
建議二:學(xué)編程更需要實踐
書是有了,可是整天抱著書也不成。
編程最怕的就是紙上談兵,我看到有的初學(xué)者,看完了大半本書,和我說起循環(huán)函數(shù)來頭頭是道,卻連編譯器長什么樣都沒有見過。
真要他寫幾行程序,便是錯誤百出。
我的建議是,無論你涉及編程的時間是多么地短,無論你目前學(xué)到的知識多么地少,你都應(yīng)該不斷地盡自己所能去編寫一些小程序--即使是把書上的“Hello, World!”親手輸入進(jìn)去運(yùn)行一遍,都能讓你的編程能力有著極速地提高。
建議三:編程是創(chuàng)造,不是默寫
有人甚至打算用題海戰(zhàn)術(shù)來學(xué)習(xí)編程--這完全沒有理解編程的內(nèi)涵。
僅僅通過“欣賞”別人寫的代碼也無法學(xué)好編程。
有一點需要明白:編程是一個創(chuàng)造的過程。
編程的意義在于:通過程序的形式,教計算機(jī)如何去完成一項任務(wù)。
寫代碼只是形式,真正重要的是如何完成特定的任務(wù)。
學(xué)習(xí)別人的代碼固然是很有用的,可以學(xué)習(xí)別人的思想;但是如果僅僅是記憶了一些別人寫好的代碼,就希望能通過拼拼湊湊成為自己的程序,那是基本不可能的。
我的建議是:在自己編寫程序,進(jìn)行創(chuàng)造的過程中,借鑒前人程序中的思想方法--而不是整天處于復(fù)制粘貼的狀態(tài)中。
建議四:好習(xí)慣要從開始做起
所謂“不以善小而不為”,等壞習(xí)慣養(yǎng)成了,再改就困難了。
因此,類似寫程序要注意縮進(jìn)、為變量和函數(shù)起有意義的名字、大小寫的使用、行末分號的注意等等,要從一開始做起。
很多人對這些善意的提醒不屑一顧,覺得多此一舉,浪費(fèi)時間。
其實,如果真的能嚴(yán)格地去做,它們反而可以幫你節(jié)省許多時間。
建議五:不必太刨根問底
“打破沙鍋問到底”確實表現(xiàn)了一種鉆研的精神,不過我還是建議初者學(xué),有的時候,不必太刨根問底。
編程的相關(guān)知識都是盤根錯節(jié)交織在一起的,大多數(shù)問題深挖下去會越說越復(fù)雜,對于知識掌握不多的初學(xué)者來說,只能是越來越糊涂。
很多東西,時間長了,隨著知識了解得深入,自然而然會明白。
就像剛剛學(xué)英語的時候,你知道“goodbye”是再見就足夠了,難道非要把這個good和再見的關(guān)系先弄個水落石出嗎?作為初學(xué)者,
最重要的是盡快地能全面地了解整個知識的全貌,在單獨的知識點上,暫時不需要太深入。
可以等知識經(jīng)驗豐富之后,再回頭來研究。
C語言最好了,是面向過程的,初學(xué)一般學(xué)這個.VB雖然直觀,但局限性太大,不推薦
C++\C#\J#都是面向?qū)ο蟮?需要學(xué)習(xí)面向?qū)ο笏枷?最好要有點編程基礎(chǔ)才好.
自學(xué)的話,隨便買本清華大學(xué)出版的之類的書看看就好了,說難不難,說簡單也不簡單
C和C++都是比較早的了,所以使用比較廣泛。
JAVA和C#、J#都是比較新的語言,支持純面向?qū)ο蠹夹g(shù),這些里面JAVA相對應(yīng)用廣泛。
C#次之。
不要問我難嗎,前面說過了:說難不難,說簡單也不簡單。
編程是很枯燥的工作,你最好有心理準(zhǔn)備。
Linux是操作系統(tǒng),就和WINDOWS一樣。
所以在哪個操作系統(tǒng)下編程都和專業(yè)不專業(yè)沒有直接的關(guān)系.
【自學(xué)編程有哪些方法】相關(guān)文章:
瘦身的方法有哪些10-08
減肥方法有哪些10-05
避孕方法有哪些10-05
營銷方法有哪些09-30
記憶方法有哪些學(xué)習(xí)方法10-19
學(xué)習(xí)的好方法有哪些08-23
防止拖延的方法有哪些10-01
自主學(xué)習(xí)的方法有哪些10-09
速讀有哪些方法技巧09-30