以文本方式查看主題 - 曙海教育集團論壇 (http://www.hufushizhe.com/bbs/index.asp) -- WinCE應(yīng)用開發(fā) (http://www.hufushizhe.com/bbs/list.asp?boardid=35) ---- 如何學(xué)編程 (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=35&id=1801) |
-- 作者:wangxinxin -- 發(fā)布時間:2010-11-26 9:30:30 -- 如何學(xué)編程 如何學(xué)編程,這是一個老話題,是一個老生常談的話題。百度一下,找到相關(guān)網(wǎng)頁約195,000篇(2009.11.15),除了重復(fù)的文章外,足以知道多少人在問,多少人在談,但是還有多少人迷茫? 關(guān)于這個問題自然是仁者見仁,智者見智。如果你在網(wǎng)上百度一下和編程相關(guān)內(nèi)容,一定會看到:Visual Basic 、Delphi 、C、C++、VC++、匯編語言、Visual Foxpro 、SQL Server、Oracle、DB2、Sybase、Power Builder、Java、J2SE、JavaEE、JavaScript、PHP 、ASP(ASP.NET) 、JSP 、ISAPI 、NSAPI 、CGI、VS2005/VS2008 等等(這些有語言、數(shù)據(jù)庫或者開發(fā)工具)。 這些不是全部,如果你在網(wǎng)上問該怎么學(xué)呢?有讓你從C語言開始學(xué)的,也有讓你從Pascal開始學(xué)的,也有讓你從VB開始學(xué)的,也有讓你直接學(xué)習(xí)C#的,更有讓直接學(xué)Java的……,網(wǎng)友的熱心反而讓你更是一頭霧水,很難知道誰對誰錯。 實際上如果是學(xué)習(xí)一門入門語言,任何一個都夠了,區(qū)別僅在于入門的難與易。但是倘若作為“就業(yè)”之本,僅有一門語言基礎(chǔ)顯然不夠,欲知后事,請接著往下看: 一、學(xué)習(xí)目的與軟件企業(yè)招人要求 (一)準備從事軟件開發(fā)職業(yè):無論你是一個在校大學(xué)生也好,還是一個已經(jīng)在職但準備轉(zhuǎn)行也罷。 1、首先,最好了解一下軟件的開發(fā)模式:C/S模式、B/S模式。 C/S模式:我們看到的一些客戶關(guān)系管理、進銷存軟件、醫(yī)院管理系統(tǒng)。顯著特點需要在電腦上裝一個軟件才能使用。可以使用語言有:VB、Delphi、PB、VC++等。多用于局域網(wǎng),但也有不少用于互聯(lián)網(wǎng)(典型的有QQ等)。 B/S模式,也稱WEB開發(fā):網(wǎng)上銀行、163與126電子郵件、網(wǎng)上納稅等。只需要瀏覽器就可以了。可以使用語言有:VB Script(ASP)、C#(ASP.NET)、JAVA(JSP)、PHP等。多用于互聯(lián)網(wǎng),但也有不少用于局域網(wǎng)。 2、其次,你看一下軟件企業(yè)都招什么樣的人。 除了個別領(lǐng)域,不難看到目前主要分為兩大陣營:.NET陣營和JavaEE陣營。兩大體系都非常不錯,不要看網(wǎng)上互相攻擊的那些無聊文章。在后面我會談到,這只是工具。 看看用人單位要求:這才是你真正的學(xué)習(xí)導(dǎo)向。 .NET體系 (1)計算機相關(guān)專業(yè)大專或本科學(xué)歷,二年以上.NET開發(fā)工作經(jīng)驗; (2)熟練C#語言、.net平臺,vs2005,vs2008開發(fā)環(huán)境;熟練C/S,B/S結(jié)構(gòu)軟件,有相關(guān)項目經(jīng)驗。 (3)熟練運用SQL Server數(shù)據(jù)庫設(shè)計與開發(fā),熟悉存儲過程及觸發(fā)器,有過大批量數(shù)據(jù)處理與優(yōu)化經(jīng)驗; (4)精通ASP.NET、WebService進行相關(guān)的開發(fā),有HTML、XML、JavaScript經(jīng)驗者優(yōu)先; (5)良好的團隊開發(fā)意識,較強的溝通、學(xué)習(xí)能力,認真負責(zé)的工作態(tài)度。 .JavaEE體系 (1)計算機相關(guān)專業(yè),大專或本科學(xué)歷,具有1年以上相關(guān)工作經(jīng)驗; (2) 要求精通Java語言,精通JavaEE技術(shù)框架,熟悉SPRING、HIBERNATE、STRUTS、WEBWORK、MVC架構(gòu),熟悉Weblogic,jboss,Tomcat等應(yīng)用服務(wù)器,并可做應(yīng)用部署及調(diào)優(yōu); (3)對網(wǎng)絡(luò)系統(tǒng)有相當?shù)睦斫猓煜racle/SQL-Server/Sybase等數(shù)據(jù)庫,可以熟練的使用PL/SQL語言進行存儲過程和函數(shù)等的編寫; (4)熟悉UML建模技術(shù)優(yōu)先,熟悉現(xiàn)代軟件項目管理優(yōu)先,英語技能較好者優(yōu)先; (5)具有編寫需求說明書、設(shè)計說明書等軟件開發(fā)相關(guān)文檔的能力; (6)思路清晰,工作規(guī)范,良好的執(zhí)行能力、較強的團隊協(xié)作精神和高度的責(zé)任心; (7)2年以上軟件開發(fā)工作經(jīng)驗。 .其他 諸如單片機、PLC等也很多。 ―――――――――――――――――――――――――――――――――――― 不難看出,近年來盡管學(xué)歷一路飆升,但是軟件企業(yè)卻仍然定位是大專或者本科學(xué)歷,但是都要求有項目經(jīng)驗(對此,你將來當了老板會更明白,你也不愿意替別人作嫁衣)。 選擇一個體系作為你的目標很重要,無論是.NET還是JavaEE都行,千萬不要什么都學(xué),最終卻什么都不懂。 另:你在網(wǎng)上也許看到很多這樣的建議,學(xué)習(xí)C語言、C++ For Dos(面向?qū)ο蟮乃枷胗肈OS就足夠了)、C For Windows、C++ For Windows(MFC),我是這樣一路學(xué)過來的,更知道其中的艱辛。但是我更堅信按照這個建議,更多人的不到山頂就放棄了。并不是學(xué)美術(shù)的一定都要成為畫家,做廣告設(shè)計也是挺有意思的一件事。 (二)純粹的編程愛好者 這個我沒有太多的發(fā)言權(quán),只要你認為怎么適合你都行。 二、關(guān)于文化基礎(chǔ): (一)數(shù)學(xué):很多人都談到要有高數(shù)、離散、線性等基礎(chǔ)。但如果你做的只是一個網(wǎng)站后臺、普通的管理系統(tǒng),那么也許有高中的數(shù)學(xué)知識足夠了。 (二)英語:入門學(xué)習(xí)編程不需要過四、六級,高中英語基礎(chǔ)學(xué)習(xí)編程沒有一點問題。但是還是希望英語你能夠更上一層樓。道理很簡單,原因有二: 1、如果你英語不好,不可能等你過了六、八級再學(xué)編程,可以邊學(xué)編程邊學(xué)英語,畢竟英語高手≠編程高手。即使先用拼音作為變量名,先學(xué)會編程也是好的,但最好能用英文命名。請看一個表名Yybrdab(拼音首字母),你再看一個表名Yiyuanbinrendanganbiao(拼音全拼),再看表名PatientFiles(英文縮寫),你有什么看法呢?Yybrdab很難猜,Yiyuanbinrendanganbiao全拼太長了,英文命名PatientFiles是不是更容易理解一些, 2、畢竟國外在軟件開發(fā)方面比我國先進不少,有時你查閱的是英文資料,如果你的英語好自然會助你一臂之力。 三、語言是工具、功夫在詩外 你想一下,一個知名作家,不會用電腦而是用普通的鋼筆寫文章、甚至是鉛筆,一個打字員每分鐘在電腦打一百字以上,那么誰寫的文章好呢?編程語言也一樣,你應(yīng)聘工作時說:我會VB、Delphi、JAVA、C#等等,但是什么樣的項目也做不出來,和那個打字員有什么區(qū)別呢? 李白的《靜夜思》我們每一個字都認識,是否每一個人都能寫得一首好詩呢?我們知道一個演員、一個作家、一個詩人必須要具備更多的生活閱歷與歷練才能演出好作品、寫出好文章、寫出好詩,我們程序員又何嘗不是呢? 當然能夠用好工具則能更好的為你服務(wù),作家能夠用電腦寫文章,估計效率更高一些,你選擇正確的編程語言,至少會讓你如虎添翼,但千萬不要認為你學(xué)的是比較流行的語言而對別人學(xué)的可能不入時的語言而不屑一顧,你的道行修得越高才會知道高手并不是都寫在臉上,你會有更好的心態(tài)去學(xué)習(xí),明白人外有人,天外有天,自己實在微不足道。 知識是無窮的,但我們生命是有限的,所以我們應(yīng)該在有限的生命里學(xué)習(xí)更有用的知識應(yīng)用到實踐中來。學(xué)習(xí)編程是為了更好解決我們工作和生活中的問題,而不是讓你成為紙上談兵的軍事家。 四、如何學(xué)習(xí)? 就像武術(shù)一樣,門派如此之多,很難一下都告訴你。我也從一個門派說起吧,就從.NET體系(B/S模式)說吧。 (一)打基礎(chǔ) 勿在沙丘上建浮雕! 避免眼高手低,切忌急功近利! 你可能要學(xué)習(xí)的有以下內(nèi)容:Dreamweaver、HTML/XHTML、CSS、JavaScript、XML、SQL SERVER、VS2005/VS2008與IIS設(shè)置、C#、WebForm(ASP.NET)、Ajax。 1、Dreamweaver:可能沒有人會把它和編程聯(lián)系起來,我們更多的認為它是做網(wǎng)頁用的(網(wǎng)頁三劍客之一),的確是這樣,之所以我列出來,是希望你如果做B/S模式開發(fā),它做界面有時比VS2005/VS2008好的多,這可能要引出你可能還要懂點Photoshop。門面也很重要,它會讓你的程序增色不少,不見得你進的公司都會給你配一個專業(yè)美工。 2、HTML/XHTML:超文本標記語言/擴展超文本標記語言,盡管聽起來是個“語言”,但嚴格來說,它確實不是語言,只是一堆標簽而已。在瀏覽器上點右鍵,“查看源文件”,里面有不少類似HTML、TABLE、TR、TD等,這些都是HTML的一部分。懂了它你會更明白將來Javascript腳本語言放在哪。 3、CSS:層疊樣式表,它常常和HTML、Javascript結(jié)合起來做出更絢麗和大方的界面。 4、JavaScript:這是客戶端的腳本語言,你可能還不能一下子理解什么是客戶端、什么是服務(wù)器端,這都沒有關(guān)系。你一定見過很多網(wǎng)站顯示今天是:xxxx年xx月xx日,大多數(shù)就是用Javascript做的,曾記得1998年,一個朋友問我是不是每天晚上要把網(wǎng)頁上傳一遍,我奇怪問他為什么?(他那時不懂腳本編程),他說日期每天都要變的。也許今天很多人看了都是笑話(但他現(xiàn)在已經(jīng)是高手了)。 5、 XML:擴展標記語言,盡管它與HTML名字很相似,但骨子里面的東西卻大不一樣,如果讓我說有什么用還真得想一想怎么給你說,但將來你一定會明白,它真的很有用。 6、SQL SERVER:數(shù)據(jù)庫,你去銀行取錢,你的信息存在哪呢?就是在數(shù)據(jù)庫中。所以如果你開發(fā)的是管理系統(tǒng),那么數(shù)據(jù)庫是非常有用的。還有Oracle、DB2,這些你只要懂一個就行了,它們都是相通的。盡管數(shù)據(jù)庫系統(tǒng)往往是幕后英雄,紅花尚需綠葉襯。 7、VS2005/VS2008與IIS設(shè)置:前者是搭建C#運行的集成環(huán)境IDE,后者則是學(xué)習(xí)ASP.NET的環(huán)境搭建。 8、C#:這是一門真正的語言,微軟比爾·蓋茨靠basic起家,直到現(xiàn)在.NET框架中都有VB.NET語言,但C#則更是其推薦語言,如果你懂點C++或者Java學(xué)習(xí)一定會很輕松,沒有也沒有關(guān)系,很重要的語言啊。 9、Asp.NET:.NET體系不僅可以開發(fā)B/S模式的程序,還可以開發(fā)C/S模式的程序或者手機WinCE上的程序,當然Asp.NET則是指B/S模式開發(fā)。 10、Ajax:你一定有過在網(wǎng)上注冊過,發(fā)現(xiàn)有的是在你填入用戶名尚未登錄就提示有重復(fù)的登錄名,而有的直到你提交后才提示,你輸入的東西可能還要重新輸入,這就是前者利用了Ajax的妙用。 上面列出的十項是不是已經(jīng)嚇住你了,如果你感覺太多了,不妨先學(xué)第6、8、9項,其余的放到后面再學(xué)也可以。 紙上得來終覺淺,絕知此事要躬行。 ——陸游 學(xué)習(xí)每一門都要理論與實踐相結(jié)合,不要認為這個簡單那個簡單,一看都明白,做起來眼高手低,唯有實踐才能有更深的體會。看看書做做題,這個時候你僅僅學(xué)會了造句而已,還要參考一些優(yōu)秀的文章和代碼,模仿著寫才能真正的提高。 大多數(shù)人學(xué)習(xí)主要還是靠自學(xué)的,但學(xué)習(xí)方法還是至關(guān)重要的,有的人喜歡從第一頁一頁頁往后翻,一種可能是堅持下來了,最后可能會“頓悟”,還有一種可能每次都是看前面幾十頁,不信你可以看一下,你的多少本書都是開了個頭,從側(cè)面看前面黑乎乎的(不是你手臟),而后面卻是嶄新的。最終也未能攻克。放棄了重新?lián)炱鹪俜艞墶?br/> 我推薦一種方法先囫圇吞棗,你想一下你做的第一道菜是如何做出來的(從沒有做飯經(jīng)驗的朋友是沒有……),難道是一字不拉地研究了一遍菜譜嗎?NO,這就對了,計劃做什么樣的一道菜,然后挑相關(guān)章節(jié)選讀,有些難以讀懂的章節(jié)暫時跳過去,等以后再回來讀,你應(yīng)該有這種體會,剛開始看時很難的東西,過一段時間再看卻變得如此易解。注意我說的是先囫圇吞棗,想成為廚師還是要好好研究菜譜了。但往往是萬事開頭難,等你熟悉了就可以在業(yè)界內(nèi)為解決實際問題而結(jié)交高手的時候了。絕不會像BBS中許多問的傻呆問題了。 學(xué)而不思則罔,思而不學(xué)則殆。 ——孔子 你在學(xué)習(xí)任何一門編程語言一定學(xué)過循環(huán)與條件,你會讓電腦計算1+2+3+…+100也是會用循環(huán)了;先給x賦值為9,會讓電腦判斷x的值大于5輸出“大于”,否則輸出“小于”,也是你會了。 但是如果你模擬一下銀行取款的過程:在ATM上可以有機會輸入三次密碼,如果密碼正確則可以進行取錢操作,密碼錯誤提示重新輸入,一旦超過三次則卡被吞掉,相信你的功力已經(jīng)提升了不少,而且感覺編程與現(xiàn)實并不遙遠。 (二)仿照真實項目 經(jīng)過基礎(chǔ)知識的修煉,也許你已經(jīng)感覺自己差不多了,滿懷信心的去應(yīng)聘工作,結(jié)果卻碰壁了,問你有項目經(jīng)驗嗎?你一臉的委屈:沒有上過班則沒有項目經(jīng)驗?沒有項目不能上班?是不是陷入兩難境地?你可能說我在你們這實習(xí)吧,不要工錢都可以,你會發(fā)現(xiàn)這個機會對方一般都不會給你,別怨天尤人了,求人不如求己! 實際上現(xiàn)在網(wǎng)上已經(jīng)有很多試用版,你完全可以比葫蘆畫瓢,你能真正的做一個項目,對前面知識的理解和運用一定會更上一個臺階! (三)提升 不登高山,不知天之高也;不臨深溪,不知地之厚也。——荀子 我們看電視,看到高手總是殺人于無形,編程也一樣,經(jīng)過第二階段,這回你可能已經(jīng)躊躇滿志了,呵呵,一不小心又碰壁了,但也許你幸運的找到了一份工作,這是軟件企業(yè)急著用人,看你“孺子可教”,收留了你。如果不要你,一點也不奇怪,是別人比你優(yōu)秀! 比如,添加一個客戶,你是不是在頁面上畫了幾個文本框和按鈕,然后再按鈕上寫了個事件就提交到數(shù)據(jù)庫了,能夠做得出來固然比不會要好,但是你面向?qū)ο罅藛幔刻嗵嗟娜藢W(xué)的是面向?qū)ο蟮恼Z言,但是寫的卻是面向過程的程序。關(guān)于學(xué)習(xí).NET體系的不妨看一下伍迷先生的《戲說面向?qū)ο蟪绦蛟O(shè)計C#版》、《大話設(shè)計模式》,我與伍迷先生不認識,沒有替他推銷圖書之意,只是他的創(chuàng)作與我心有戚戚焉,挺適合入門或者進階者。然而由于很多面向?qū)ο笠约败浖こ獭㈨椖抗芾怼⒃O(shè)計模式之類的書籍過于深奧,或者國內(nèi)有些為了評高級職稱而胡拼亂湊的狗屁書籍,讓更多人忘而卻步。 能不能更上一層樓,那就看你的造化了! 不經(jīng)歷風(fēng)雨,哪能見彩虹! 五、學(xué)習(xí)編程的捷徑 我們做任何事情都喜歡找捷徑,世上根本沒有捷徑!實際上不走彎路就是捷徑! 我的這篇文章就是力爭讓你避免或少走彎路,也就成為了捷徑。 當然加入我們的QQ群(95472365)也是一個不錯的方法! 或者到“跟我學(xué)編程”網(wǎng)站轉(zhuǎn)轉(zhuǎn)也許有一個意外的收獲! 六、成功和失敗的唯一區(qū)別,就是堅持與否 “想起來一件有意思的事情,上大學(xué)時,到了晚上11點就關(guān)燈,我是很喜歡看書,就跑到男廁所去看看技術(shù)方面的書籍,唉想想那時候的確是苦了一點兒,不過沒有當時的努力,怎么可能就有今天的我呢,雖然比上不足,比下還是蠻有余的,知足常樂,何必跟自己過不去呢。” 這是從網(wǎng)上看到的一位,與我當年頗為相似。不過似乎我比他幸運一些,圖書館里面老書居多,平時省吃儉用買一些書,盡管父親告訴我:孩子,買書只管買,不要為了學(xué)習(xí)舍不得花錢!所以過早的學(xué)習(xí)了C語言、數(shù)據(jù)結(jié)構(gòu)(那時候教學(xué)語言Pascal幾乎一統(tǒng)天下),有一次去圖書館借一本新書,圖書館管理員認為我看不懂,就是不借給我(當時恨透她了,這個老太太,太可惡了)。我固執(zhí)地說可以看懂,這位老師說明天你來一下,第二天接到了一份試卷,所幸我答的不錯,后來我借書幾乎不限本數(shù),因為老師知道書的資源不多,總是借給需要的學(xué)生和老師,那種恨瞬間變?yōu)橐环N感動。 再后來,由于前面打的基礎(chǔ),班主任(輔導(dǎo)員)把我推薦給了我們學(xué)校一名權(quán)威,這是一名我們當時只能仰視的學(xué)者,自己比較愚笨,此后得到導(dǎo)師一年有余的指導(dǎo),平生受益匪淺。自此我也幾乎是在宿舍熄燈后才從教研室回到宿舍,故而在靜謐的晚上經(jīng)常有繁星或明月相伴,工作這么多年則很少看到星星,很懷念大學(xué)那段時光。 |