『壹』 自學程序員的學習順序和課程都是什麼
展開全部
基礎課程包括:計算機硬體基礎、計算機網路基礎、操作系統、計算機組成原理、計算機體系結構、資料庫原理、軟體工程、離散數學、演算法設計與分析、數據結構、編譯原理
編程語言可以根據需要選擇,底層開發人員必學:匯編語言、c、c++;web應用表示層開發人員:html、xml、javascript、jsp(或asp,php)等;普通應用程序開發:c++、vb、.net(其中包括多種語言,可根據現有基礎選擇)、java等。
如果你是學生,或者如果你有充足的時間。我建議你仔細的掌握下面的知識。我的建議是針對那些希望在IT技術上有所成就的初學者。同時我還列出了一些書目,這些書應該都還可以在書店買到。說實在的,我在讀其他人的文章時最大的心願就是希望作者列出一個書單。
大學英語——不要覺得好笑。我極力推薦這門課程是因為沒有專業文檔的閱讀能力是不可想像的。中文的翻譯往往在猴年馬月才會出來,而現在的許多出版社乾脆就直接把E文印刷上去。學習的方法是強迫自己看原版的教材,開始會看不懂,用多了自然熟練。吃得苦下得狠心絕對是任何行業都需要的品質。
計算機體系結構和匯編語言——關於體系結構的書遍地都是,而且也大同小異,倒是匯編有一本非常好的書。《80x86匯編語言程序設計教程》(清華大學出版社,黑色封面,楊季文著)。你需要著重學習386後保護模式的程序設計。否則你在學習現代操作系統底層的一些東西的時候會覺得是在看天書。
計算機操作系統原理——我們的開發總是在特定的操作系統上進行,如果不是,只有一種可能:你在自己實現一個操作系統。無論如何,操作系統原理是必讀的。這就象我們為一個晶元製作外圍設備時,晶元基本的工作時序是必需了解的。這一類書也很多,我沒有發現哪一本書非常出眾。只是覺得在看完了這些書後如果有空就應該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術內幕之類吧)。
數據結構和演算法——這門課程能夠決定一個人程序設計水平的高低,是一門核心課程。我首選的是清華版的(朱戰立,劉天時)。很多人喜歡買C#版的,但我覺得沒有必要。C#的語法讓演算法實現過程變得復雜多了,而且許多老師喜歡用模塊這一東西讓演算法變得更復雜。倒是在學完了C版的書以後再來瀏覽一下C#的版的書是最好的。
軟體工程——這門課程是越到後來就越發現它的重要,雖然剛開始看時就象看馬哲一樣不知所雲。我的建議是看《實用軟體工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟體設計任務(不管是練習還是工作)以後再來回顧回顧,每次都會有收獲。
Windows 程序設計——《北京大學出版社,Petzold著》我建議任何企圖設計Windows 程序的人在學習VC以前仔細的學完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的後面讀。
在這本書中,沒有C++,沒有GUI,沒有控制項。有的就是如何用原始的C語言來完成Windows 程序設計。在學完了它以後,你才會發現VC其實是很容易學的。千萬不要在沒有看完這本書以前提前學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經用它作為教材進行授課。可見其重要。
上面的幾門課程我認為是必學的重要課程(如果你想做Windows 程序員)。
對於其它的課程有這樣簡單的選擇方法:如果你是計算機系的,請學好你所有的專業基礎課。如果不是,請參照計算機系的課程表。如果你發現自己看一本書時無法看下去了,請翻到書的最後,看看它的參考文獻,找到它們並學習它們,再回頭看這本書。如果一本書的書名中帶有「原理」兩個字,你一定不要去記憶它其中的細節,你應該以一天至少50頁的速度掌握其要領。盡可能多的在計算機上實踐一種理論或者演算法。
你還可以在CSDN上閱讀到許多書評。這些書評能夠幫助你決定讀什麼樣的書。
『貳』 程序員對學習過的知識要怎麼復習
最近一個月,我在准備面試。以前工作的時候忙,沒來得及追根究底,趁這次面試的機會好好的研究了java底層原理,感覺很有成就感。忙了一個月,有些學習上的心得,記錄一下:1、分解知識再復雜的知識也是由一個個單一的知識點組成,分解它們,逐一攻克。比如說jvm虛擬機,可以分為公享區域(堆、元空間)和私有區域(棧、程序計數器、本地方法區),棧裡面又有很多棧幀,棧幀又可以分為局部變數表,操作數棧等等。2、用思維導圖做好存檔思維導圖就好像一個個房間,A房間將JVM,B房間講gc,假設你學了jvm相關的內容,就把這些知識存檔到jvm那個房間。3、不求甚解作為一個要通過技術改變世界的碼農,怎麼允許自己不求甚解呢?不是不求甚解,而是暫時的不求甚解,因為有些底層原理,我們很難一下子弄明白,比如spring源碼,那怎麼辦?今天看一遍,不是很懂;明天再看一遍,懂一點了;後天再看一遍,恍然大悟,這是一個循序漸進的過程。4、努力回憶我趁每天早上跑步的半小時,努力回憶學過的知識,因為已經做過思維導圖了,所以回憶相對比較輕松。此外還有晚上睡覺時,也是回憶知識的絕好時間,以至於我常常失眠到一兩點。一旦發現某些知識回憶不起來,立馬打開電腦復習,這種經過努力回憶的知識點,記得更牢,理解更深刻。5、努力實踐無論你怎麼努力,總有一些你不知道的知識點,如果你覺得准備得差不多了,那趕緊去面試。我之前把面試看成被面試官虐的過程,被面試官問得啞口無言,因此心驚膽戰,但昨天一個電話面試,讓我喜歡上了面試,因為我把面試當成朋友間的技術聊天,相互學習而已,即便有一些問題沒答上來。我很慶幸,面試官啟發了我。掛完電話之後,趕緊補上不會的知識。
作者:把大象裝進冰箱
鏈接:https://www.jianshu.com/p/bfbfac6bafb5
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。
最近一個月,我在准備面試。以前工作的時候忙,沒來得及追根究底,趁這次面試的機會好好的研究了java底層原理,感覺很有成就感。忙了一個月,有些學習上的心得,記錄一下:
1、分解知識
再復雜的知識也是由一個個單一的知識點組成,分解它們,逐一攻克。比如說jvm虛擬機,可以分為共享區域(堆、元空間)和私有區域(棧、程序計數器、本地方法區),棧裡面又有很多棧幀,棧幀又可以分為局部變數表,操作數棧等等。
2、用思維導圖做好存檔
思維導圖就好像一個個房間,A房間將JVM,B房間講gc,假設你學了jvm相關的內容,就把這些知識存檔到jvm那個房間。
3、不求甚解
作為一個要通過技術改變世界的碼農,怎麼允許自己不求甚解呢?
不是不求甚解,而是暫時的不求甚解,因為有些底層原理,我們很難一下子弄明白,比如spring源碼,那怎麼辦?今天看一遍,不是很懂;明天再看一遍,懂一點了;後天再看一遍,恍然大悟,這是一個循序漸進的過程。
4、努力回憶
我趁每天早上跑步的半小時,努力回憶學過的知識,因為已經做過思維導圖了,所以回憶相對比較輕松。此外還有晚上睡覺時,也是回憶知識的絕好時間,以至於我常常失眠到一兩點。一旦發現某些知識回憶不起來,立馬打開電腦復習,這種經過努力回憶的知識點,記得更牢,理解更深刻。
5、努力實踐
無論你怎麼努力,總有一些你不知道的知識點,如果你覺得准備得差不多了,那趕緊去面試。我之前把面試看成被面試官虐的過程,被面試官問得啞口無言,因此心驚膽戰,但昨天一個電話面試,讓我喜歡上了面試,因為我把面試當成朋友間的技術聊天,相互學習而已,即便有一些問題沒答上來。我很慶幸,面試官啟發了我。掛完電話之後,趕緊補上不會的知識。
『叄』 軟考復習計劃(軟設)
更多軟考經驗請到一起軟考網(http://www.17rk.com)查看.
以下貼一篇別人過軟體設計師的文章你看下.希望對你有所幫助.
《經驗談:軟體設計師考試如何應考?》http://www.17rk.com/viewthread.php?tid=1075
操作系統和資料庫是程序員和軟體設計師每年的必考內容,從1987年到2005年春季軟考都少不了它們的身影。
近年來,程序員和軟體設計師大綱雖做了一些大的改動,但操作系統部分變動並不是很大,上午分值多是1到5分之間,下午是不確定出題,也就是可能會出到,也可能沒有。但不可大意,如2004年秋季下午題的第四題就是道操作系統題。
另外,在出題形式上更趨於具體的分析,而不再是純粹的概念題。如PV原語操作就比較多偏向於對生產者/消費者問題的解答。大綱所列知識點雖不能全部都涉及到。不過再通過我們對歷年題型的綜合分析後(特別是1995到2005春季),可以明確的是操作系統方面的題目,一般集中在進程,存儲管理和作業管理這幾個方面。1998年到2000年這幾年的操作系統,有很多是重復出題,而且都集中在上面說的幾個方面。希望各位考生在復習時把主要精力放在主要知識點上。
資料庫在程序員和軟體設計師的出題中比重不小。分值上午一般會有5分左右,下午有和軟體工程結合出題,或者與UML聯合出題的情況。這種結合多是考查ER模型到關系模式的轉換,以及用SQL來建立關系模式,2005年春季考試上下午都有資料庫的題,且下午是獨立題目。而且我們思達網校的老師一致認為這是考生朋友們應該牢牢抓住分數的部分。具體的重點是很清晰的,ER模型和關系模式之間的轉換,關系代數,關系演算,範式,SQL語言(查詢的比重較大)。復習時應注意掌握以上這些知識點。
面向對象和UML是新大綱的新要求,可以參考的並不多。不過對概念的考查火力比較強,考生很不容易在面對對象方面的眾多概念中拿到分,這就要求考生朋友們一定要注意平時在復習時就把這些內容有意加強記憶。UML是在下午題中出現,從2004年春季考到2005年春季考的下午試題中發現出題UML的火力點多在對各種靜態圖和動態圖。
為了讓同學們更好地進行考前復習順利拿到軟體工程、計算機網路和專業英語部分的理想考分,在此給同學們談一些體會和方法:
軟體工程部分:
軟體工程部分一般來說上午和下午都有題,是比較重要的模塊。上午一般有5分左右,下午一般有一個大題15分。
上午的題側重於識記的,原來一道題有五個小題,即就考相關知識點的五個小問題,現在的趨勢是把五個小題分散成五個獨立的選擇題,就相當於多考了幾個知識點了,所以說考察的知識點增多了,且具有一定的綜合性,提高了應考的要求。所以在以後的復習和做題中應對題中所涉及的知識點有明確的認識,即你知道考的是哪方面的點,在此基礎上強化和吃透,做到舉一反三。上午的知識點主要是熟悉軟體開發的過程、一些基本的開發設計方法及控制管理開發過程的規范等。(考程序員的同學就只有上午的題,考軟設的同學還有下午的題)
下午的軟體工程題型比較固定,一般多為DFD或業務流程圖,還有有時候是的程序流程圖,這部分是我們必須得13分左右的題,現在重要談一下該類題涉及的知識點FD或業務流程圖,及相應的應試方法:業務流程圖與DFD圖性質和作用類似,都是系統分析時產生的邏輯模型(功能模型,結構化設計和面向對象化設計都包括的重要部分,為後面建立E-R概念模型,系統設計做好穩定的信息模型基礎),即描述系統的輸入數據、處理功能、輸出數據,功能模塊間及對應部門之間的信息流動關系。業務流程圖比DFD圖要粗略一些,DFD描述的數據流更細致(如輸入、輸出和存儲的數據、同層模塊間的數據交互及處理環節間的信息交互等)和功能更具有層次性(自頂向下,逐層分解),它更接近計算機處理流程,更容易將該業務流程轉化為計算機軟體實現的流程;業務流程圖側重描述某一業務功能的實現過程及相關的數據和處理,是一種大概的信息流描述方式,要進行細化和深入構建,才能最終轉化為DFD數據流圖,進而轉化為(更接近)計算機軟體處理業務流程。針對這類型題:一、了解其該業務實現的功能及各個處理環節的處理功能,二、各個處理環節包括的輸入、輸出(重點是新增的)數據,三、處理環節之間的數據(或文件)匹配,即處理模塊輸入輸出數據(文件)的(或上下)平衡,有時要延伸到最後的輸出或前面幾步的輸入等,才能確定該處理的輸入和輸出數據的平衡匹配,直到反復驗證文件或其包括的數據項使得各個處理環節間匹配和平衡,即沒有發生干涉或矛盾,同時,要識別其中的關鍵字及考慮數據項冗餘程度和處理效率等問題。同學們可以用相應的題來進行體會和感覺,學會不斷從題中、從其答案中總結出一些做題的規律和技巧,一旦相似的題出現後,就一觸即發了。
計算機網路部分:
該部分題一般出現在上午,一般是5分左右,同軟體工程上午的題一樣,大題分散成了幾個獨立小題,增加了考點和綜合度。該部分識記和理解的較多,特別是ISO/OSI七層參考模型、對應的通信協議、通信設備、TCP/TP體系、區域網技術、網路安全技術、Internet的新應用技術及IP劃分等。深刻理解ISO/OSI七層參考模型、對應的通信協議和TCP/TP體系等思想和原理。注意一些網路方面新的發展和應用技術,如XML、SOAP、J2EE/JSP/SERVLET、B/S結構的應用等,有了相關知識背景,對專業英語也是很有幫助的。同學們時間緊,通看書後,直接做題,在題中體會和感覺,進一步掌握這些知識點,摸索出考察知識點的規律。
參考資料:http://www.17rk.com
『肆』 誰能給我一個自學程序員的課程表
如果想軟體開發
離散數學 操作系統 網路技術 計算機組成原理 資料庫技術 數據結構
C/C++ vc++ windows程序設計 多媒體技術
如果學偏硬的話 還要學 匯編程序設計 單片機 電子技術
以下是XX大學本科計算機系教材:
計算機導論
計算機電路基礎
資料庫系統概論
信號與系統
演算法分析與設計
計算機組成與結構
硬體描述語言及應用
復變函數
數字邏輯電路課程設計
數字電路與邏輯技術
離散數學
數據結構
數據結構課程設計
電子CAD實訓
面向對象程序設計
資料庫開發課程設計
微機介面課程設計
計算機圖形學
人工智慧導論
匯編語言與微機介面
操作系統
多媒體技術
計算機網路
VC程序設計
資料庫開發技術
單片機原理及應用
Linux操作系統
常用網路組建與維護
Java程序設計
單片機課程設計
編譯原理
通信概論
軟體測試技術
計算機控制技術
MATLAB
DSP原理及應用
WEB開發技術
軟體工程
嵌入式系統開發及應用
智能機器人技術
計算機綜合應用課程設計
數據採集與處理
建議你買本書,書比網上的電子版教程好的多,如計算機屆超級權威教授 譚浩強 老先生寫的《C語言程序設計(第三版)》,全國發行了700萬冊,可以說是學C語言的人必看的書,我們大學就用這本書,很適合自學,通俗易懂
建議你學習其它計算機知識時也看他的書,他出的書很多,涵蓋面廣,每一本都很經典
這里有他的教程word版下載
http://www.longtengwang.com/Soft/UploadSoft/down/c/%CC%B7%BA%C6%C7%BFC%D3%EF%D1%D4%BD%CC%B3%CCWord%B0%E6.rar
另外,機械工業出版社的 計算機叢書系列也相當經典,全是翻譯國外經典教材,國外計算機發展早,水平比國內高很多,看這些教材事半功倍,推薦(美)Al Kelley Ira Pohl的《C語言教程第4版》
學習程序語言要持之以恆,不浮躁
『伍』 程序員考試有上機題嗎
程序員考試有上機題。
程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、高級程序員、系統分析員,系統架構師,測試工程師五大類。
崗位職責
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對
程序員
小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
『陸』 對於程序員,該如何將工作和生活時間合理安排呢
雖然是一個實習生,但是也要有緊迫感。10年前我才出來擼代碼的時候,都是時刻擔心被炒。畢竟公司不是慈善機構,對我們都有考核期。你要盡快把需求,介面文檔把業務邏輯走一遍。
『柒』 尋程序員復習計劃.
一看你就沒經驗
考試的時候不考太難的
主要注意編程風格就可以了
一定要注意風格
如果程序錯誤而你風格好你有一分拿,如果風格不好程序正確你一分也沒有
總之,注意風格就好
別害怕
你行地
一點也不難
祝你成功!!!
『捌』 如何自學成為程序員
如何學習自學編程的方式最好的莫過於在網路上面查找資源。
目前,網路上電腦資源多不勝數。其中有很多都是基礎到精通的視頻教程。通過視頻講解。讓你明白重點知識。你通過查找一套適合自己的視頻。然後看完是基本。
這里推薦幾個可以在線學習的好網站:慕課、極客學院、傳智播客、如朋網、網易公開課等等做筆記在進行看視頻的過程中,一定注意要記筆記。
對視頻中重點的部分進行截圖,並加以文字解釋。就形成了自己的筆記。這些筆記對於你來說很重要。通過記筆記的形式,你就不需要重新觀看視頻了。只需要復習的時候查看筆記就夠了,這樣就大大的節約了時間。
下面介紹一個記筆記的好軟體:CherryTree多練習代碼在視頻中講解的代碼,我認為你至少需要自己寫三遍以上。在寫代碼的時候,就用到了上面寫的筆記了。通過看筆記截圖,即可自己慢慢摸索寫出來代碼。當然練習到一定程度,就需要你適當的做個項目。鞏固自己的知識。
程序員必備技能
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課。
網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合。
編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。
在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
『玖』 請教有經驗的程序員,關於初學者學習編程的問題
編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。
1、C語言
如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。
C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。
正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。
缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。
移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。
用C語言編寫的游戲:非常非常多。
資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group's C Primer Plus》。
2、C++
C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。
C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。
我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。
優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。
使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。
資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。
最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。
優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適於心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最後,在1996年,Borland發布了它的「Visual Basic殺手」— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優點:易學、平台相關的運行(Dephi)非常好。
缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。
移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無返顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual Basci 1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經過六個版本,Visual Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。
優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已准備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。
移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。
優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。
缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。
使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。
8、創作工具
上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。
「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用 3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。
多數創作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優點:快速原型 — 如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。
缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。
移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。
使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、結論
你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。
『拾』 軟考(程序員)哪裡有比較詳細的復習資料
考試日期: 2006年5月20日
9 : 00-11 : 30 基礎知識
14 : 00-16 : 30 應用技術
報名時間: 2006年2月15日— 3月17日
此次報名全部採用網上報名、網上繳費、網上上傳照片的方 式,要求報考人員提前到招商銀行、中國工商銀行、中國建設銀行網點辦理 網上支付卡。報考人員在規定的時間內登錄北京市人事考試網 (網址: www.bjpta.gov.cn ,下同) ,點擊首頁「網上報名」欄目,按照北京地區 2006 年上半年計算機技術與軟體專業技術資格 ( 水平 ) 考試網上報名系統規定的程序和要求,在網上提交報名信息、 上傳本人照片並通過招商銀行、中國工商銀行、中國建設銀行的網上支付卡直接繳納報考費用。報考人員網上繳費成功後,方可在網上列印申報表並按照規定貼好本人照片 ( 2004年以後拍攝的證件照,尺寸規格:34mm×45mm,與上傳照片一致) , 在第一場考試時,交監考員並領取報名費用發票。
凡已在網上報名並成功繳費的報考人員可於 2006年5月11日至5月18日登錄北京市人事考試網下載列印准考證,憑此准考證、申報表和本人身份證明( 身份證、機動車駕駛執照、軍官證、護照 )原件,在規定時間、地點參加考試。
考試大綱和教材出版信息見 www.ceiaec.org/ 資格考試 / 教材目錄。