編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發(fā)論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應(yīng)用程序中,總有一些計算機語言優(yōu)于其他語言。下面是幾種用于編寫游戲的主要編程語言的介紹及其優(yōu)缺點。希望這篇文章能幫助你做出決定。
1、C語言
如果說FORTRAN和COBOL是第一代高級編譯語言,那么C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創(chuàng)建的,它功能更強大且與ALGOL保持更連續(xù)的繼承性,而ALGOL則是COBOL和FORTRAN的結(jié)構(gòu)化繼承者。C語言被設(shè)計成一個比它的前輩更精巧、更簡單的版本,它適于編寫系統(tǒng)級的程序,比如操作系統(tǒng)。在此之前,操作系統(tǒng)是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統(tǒng)級代碼移植成為可能的編程語言。
C語言支持結(jié)構(gòu)化編程,也就是說C的程序被編寫成一些分離的函數(shù)呼叫(調(diào)用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代碼”代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當(dāng)結(jié)構(gòu)化方案非常復(fù)雜時才建議使用。
正由于它的系統(tǒng)編程根源,將C和匯編語言進行結(jié)合是相當(dāng)容易的。函數(shù)調(diào)用接口非常簡單,而且匯編語言指令還能內(nèi)嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優(yōu)點:有益于編寫小而快的程序。很容易與匯編語言結(jié)合。具有很高的標(biāo)準(zhǔn)化,因此其他平臺上的各版本非常相似。
缺點:不容易支持面向?qū)ο蠹夹g(shù)。語法有時會非常難以理解,并造成濫用。
移植性:C語言的核心以及ANSI函數(shù)調(diào)用都具有移植性,但僅限于流程控制、內(nèi)存管理和簡單的文件處理。其他的東西都跟平臺有關(guān)。比如說,為Windows和Mac開發(fā)可移植的程序,用戶界面部分就需要用到與系統(tǒng)相關(guān)的函數(shù)調(diào)用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。
用C語言編寫的游戲:非常非常多。
資料:C語言的經(jīng)典著作是《The C Programming Language》,它經(jīng)過多次修改,已經(jīng)擴展到最初的三倍大,但它仍然是介紹C的優(yōu)秀書本。一本極好的教程是《The Waite Group“s C Primer Plus》。
2、C++
C++語言是具有面向?qū)ο筇匦缘腃語言的繼承者。面向?qū)ο缶幊蹋蚍QOOP是結(jié)構(gòu)化編程的下一步。OO程序由對象組成,其中的對象是數(shù)據(jù)和函數(shù)離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序“建筑材料”堆在一起(至少理論上是這樣)。比如說,有很多的GUI和數(shù)據(jù)庫的庫實現(xiàn)為對象的集合。
C++總是辯論的主題,尤其是在游戲開發(fā)論壇里。有幾項C++的功能,比如虛擬函數(shù),為函數(shù)呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序?qū)⒆兊帽认嗤δ艿腃程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數(shù)等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結(jié)論的爭論。
我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發(fā)生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。
優(yōu)點:組織大型程序時比C語言好得多。很好的支持面向?qū)ο髾C制。通用數(shù)據(jù)結(jié)構(gòu),如鏈表和可增長的陣列組成的庫減輕了由于處理低層細節(jié)的負擔(dān)。
缺點:非常大而復(fù)雜。與C語言一樣存在語法濫用問題。比C慢。大多數(shù)編譯器沒有把整個語言正確的實現(xiàn)。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數(shù)可移植性用戶界面庫都使用C++對象實現(xiàn)。
使用C++編寫的游戲:非常非常多。大多數(shù)的商業(yè)游戲是使用C或C++編寫的。
&n
業(yè)務(wù)咨詢:932174181 媒體合作:2279387437 24小時服務(wù)熱線:15136468001 盤古機械網(wǎng) - 全面、科學(xué)的機械行業(yè)免費發(fā)布信息網(wǎng)站 Copyright 2017 PGJXO.COM 豫ICP備12019803號
南雄市 | 河南省 | 昂仁县 | 交口县 | 安康市 | 响水县 |