我想了解編程的概念,編程我沒有接觸過 但是我很想學 那位老師指點一下啊 小弟在次感謝啊 對編程挺感興趣的,但是從來沒有接觸過,如果我現(xiàn)在想去學習的話...
在某些應用程序中,總有一些計算機語言優(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語句,不過它的功能被限制了,僅當結(jié)構(gòu)化方案非常復雜時才建議使用。
正由于它的系統(tǒng)編程根源,將C和匯編語言進行結(jié)合是相當容易的。函數(shù)調(diào)用接口非常簡單,而且匯編語言指令還能內(nèi)嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優(yōu)點:有益于編寫小而快的程序。很容易與匯編語言結(jié)合。具有很高的標準化,因此其他平臺上的各版本非常相似。
缺點:不容易支持面向?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é)的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數(shù)編譯器沒有把整個語言正確的實現(xiàn)。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數(shù)可移植性用戶界面庫都使用C++對象實現(xiàn)。
使用C++編寫的游戲:非常非常多。大多數(shù)的商業(yè)游戲是使用C或C++編寫的。
資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經(jīng)熟知C,那么試一下《Teach Yourself C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼“我該使用哪門語言”之后最經(jīng)常被問及的問題。很不幸,不存在標準答案。你可以自學C并使用它來寫程序,從而節(jié)省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向?qū)ο蟮闹R,因為它可能在你的游戲中使得數(shù)據(jù)建模更有效率的東西。
最大的商業(yè)游戲,包括第一人稱射擊游戲很多并沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向?qū)ο缶幊碳夹g(shù)。如果你只想學C,至少要自學OO(面向?qū)ο螅┚幊碳夹g(shù)。OO是仿真(游戲)的完美方法,如果你不學習OO,你將不得不“辛苦”的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關(guān)的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那么簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術(shù)讓東西變得更易于使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰(zhàn)士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鐘要調(diào)用數(shù)千次,因此,盡可能的簡潔將有助于提高游戲的性能。而從C里調(diào)用匯編寫的函數(shù)是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫“匯編”。把匯編語言翻譯成真實的機器碼的工具叫“匯編程序”。把這門語言叫做“匯編程序”這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發(fā)。
優(yōu)點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現(xiàn)的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適于心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設(shè)計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什么商業(yè)游戲是完全用匯編開發(fā)的。不過有些游戲使用匯編完成多數(shù)對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找芯片的文檔。網(wǎng)絡(luò)上如Intel、AMD、Motorola等有一些關(guān)于它們的處理器的資料。對于書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設(shè)計的,因為他對于FORTRAN和COBOL沒有強制訓練學生的結(jié)構(gòu)化編程感到很失望,“空心粉式代碼”變成了規(guī)范,而當時的語言又不反對它。Pascal被設(shè)計來強行使用結(jié)構(gòu)化編程。最初的Pascal被嚴格設(shè)計成教學之用,最終,大量的擁護者促使它闖入了商業(yè)編程中。當Borland發(fā)布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,并具有優(yōu)秀的內(nèi)置編輯器和調(diào)試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉(zhuǎn)向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最后,在1996年,Borland發(fā)布了它的“Visual Basic殺手”— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由于不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的“聰明”代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優(yōu)點:易學、平臺相關(guān)的運行(Delphi)非常好。
缺點:“世界潮流”面向?qū)ο蟮腜ascal繼承者(Modula、Oberon)尚未成功。語言標準不被編譯器開發(fā)者認同。專利權(quán)。
移植性:很差。語言的功能由于平臺的轉(zhuǎn)變而轉(zhuǎn)變,沒有移植性工具包來處理平臺相關(guān)的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關(guān)的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易于學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的“空心粉式代碼”。當回憶起B(yǎng)ASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環(huán)境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環(huán)境的許可權(quán),并把它作為Visual Basci 1.0發(fā)布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結(jié)構(gòu)化了,行號也被去除。實際上,這門語言與那些內(nèi)置于TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經(jīng)過六個版本,Visual Basic變得非常漂亮。用戶界面發(fā)生了許多變化,但依然保留著“把代碼關(guān)聯(lián)到用戶界面”的主旨。這使得它在與即時編譯結(jié)合時變成了一個快速原型的優(yōu)異環(huán)境。
優(yōu)點:整潔的編輯環(huán)境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已準備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態(tài)連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調(diào)用Windows的API程序非常笨拙,因為VB的數(shù)據(jù)結(jié)構(gòu)沒能很好的映射到C中。有OO功能,但卻不是完全的面向?qū)ο蟆@麢?quán)。
移植性:非常差。因為Visual Basic是微軟的產(chǎn)品,你自然就被局限在他們實現(xiàn)它的平臺上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉(zhuǎn)變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業(yè)性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設(shè)計用于嵌入程序的可移植性“小C++”。在網(wǎng)頁上運行小程序的想法著實吸引了不少人的目光,于是,這門語言迅速崛起。事實證明,Java不僅僅適于在網(wǎng)頁上內(nèi)嵌動畫 — 它是一門極好的完全的軟件編程的小語言。“虛擬機”機制、垃圾回收以及沒有指針等使它很容易實現(xiàn)不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續(xù)篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向?qū)ο缶幊蹋贘ava里寫非面向?qū)ο蟮某绦蚓拖褚赑ascal里寫“空心粉式代碼”一樣困難。
優(yōu)點:二進制碼可移植到其他平臺。程序可以在網(wǎng)頁中運行。內(nèi)含的類庫非常標準且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網(wǎng)上數(shù)量巨大的代碼例程。
缺點:使用一個“虛擬機”來運行可移植的字節(jié)碼而非本地機器碼,程序?qū)⒈日嬲幾g器慢。有很多技術(shù)(例如“即時”編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經(jīng)過慎重考慮,雖然被正式廢除,但為了保持向后兼容不得不保留。越高級的技術(shù),造成處理低級的機器功能越困難,Sun為這門語言增加新的“受祝福”功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平臺上不穩(wěn)定。
使用Java編寫的游戲:網(wǎng)頁上有大量小的Applet,但僅有一些是商業(yè)性的。有幾個商業(yè)游戲使用Java作為內(nèi)部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關(guān)于Java新聞的最好去處。
8、創(chuàng)作工具
上面所提及的編程語言涵蓋了大多數(shù)的商業(yè)游戲。但是也有一個例外,這個大游戲由于它的缺席而變得突出。
“神秘島”。沒錯,賣得最好的商業(yè)游戲不是使用以上任何一門語言編的,雖然有人說“神秘島”99%是使用 3D建模工具制作的,其根本的編程邏輯是在HyperCard里完成的。
多數(shù)創(chuàng)作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數(shù)工具使用一些拖拉式的流程圖來模擬流程控制。很多內(nèi)置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優(yōu)點:快速原型 — 如果你的游戲符合工具制作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創(chuàng)造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網(wǎng)頁上發(fā)布很多創(chuàng)作工具生成的程序。
缺點:專利權(quán),至于將增加什么功能,你將受到工具制造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創(chuàng)作工具無法完成的。某些工具會產(chǎn)生臃腫得可怕的程序。
移植性:因為創(chuàng)作工具是具有專利權(quán)的,你的移植性以他們提供的功能息息相關(guān)。有些系統(tǒng),如Director可以在幾種平臺上創(chuàng)作和運行,有些工具則在某一平臺上創(chuàng)作,在多種平臺上運行,還有的是僅能在單一平臺上創(chuàng)作和運行。
使用創(chuàng)作工具編寫的游戲:“神秘島”和其他一些同類型的探險游戲。所有的Shockwave游戲都在網(wǎng)絡(luò)上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易語言
★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設(shè)計和程序流程編碼。★中文語句快速錄入。提供多種內(nèi)嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規(guī)范強制代碼格式轉(zhuǎn)換,任何人編寫的任何程序源代碼格式均統(tǒng)一。★參數(shù)引導技術(shù),方便程序語句參數(shù)錄入。★無定義類關(guān)鍵字。所有程序定義部分均采用表格填表方式,用戶無需記憶此類關(guān)鍵字及其使用格式。★命令格式統(tǒng)一。所有程序語句調(diào)用格式完全一致。★語法格式自動檢查。自動檢查并提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。鼠標停留立即顯示相關(guān)項目提示。編程時提示語法格式,調(diào)試時提示變量當前內(nèi)容,隨時按下F1鍵可得到與當前主題相關(guān)詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發(fā)環(huán)境。集界面設(shè)計、代碼編寫、調(diào)試分析、編譯打包等于一體。★學習資源豐富。詳細的幫助文件、數(shù)十兆的知識庫、數(shù)萬用戶的網(wǎng)上論壇、教材已出版發(fā)行……
10、結(jié)論
你可能希望得到一個關(guān)于“我該使用哪種語言”這個問題的更標準的結(jié)論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適于快而小的程序,但不支持面向?qū)ο蟮木幊獭++完全支持面向?qū)ο螅欠浅碗s。Visual Basic與Delphi易學,但不可移植且有專利權(quán)。Java有很多簡潔的功能,但是慢。創(chuàng)作工具可以以最快的速度產(chǎn)生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什么樣的游戲,并選擇對你的游戲支持最好的語言。“試用三十天”的做法成為工業(yè)標準是件好事情。
西廖18226434118: 您好、我最近準備辭去工作去學編程、但我對編程這詞的字面意思都不了解.我只是覺得網(wǎng)絡(luò)時代里編程的發(fā)展空間很大所以才準備去學習編程.你能解釋下編程具體詳細的概念嗎?謝謝! -
富縣工件: ______ 首先,如果你想學編程.最好去專業(yè)的培訓學校學習.當然這只是建議.具體看個人的情況.編程分很多種編程.有嵌入式,安卓.IOS 等等.不過基礎(chǔ)都是C語言.如果你想學習編程.最好先了解一下C語言.這樣對于你入門有很大的幫助.
西廖18226434118: 想自學一下編程,做些程序.應該學什么作為計算機入門 -
富縣工件: ______ 按以下步驟進行 1、想清楚你學編程到底是要干嘛? (1)應付考試:那沒啥說的,花幾百塊買套教程照著學.習題全做一遍基本就OK了. (2)學著玩:建議還是別學. (3)想當程序員或者希望能借此更好地完成工作,那么請看第2步. 2、首先...
西廖18226434118: 怎樣才能最快的認識編程?另外給些編程術(shù)語讓我更好的了解編程吧55,看書都看不懂555...
富縣工件: ______ 任何東西的學習都是循序漸進而不可能一蹴而就的,要認識編程你可以嘗試去閱讀源代碼(看不懂不要緊),去品味隱藏在其中的邏輯性和問題求解的規(guī)范性,你也可以嘗試去領(lǐng)悟編程在日常生活中的作用(如:紅黃綠燈系統(tǒng),計算器,電梯系統(tǒng)等)慢慢想,總會有結(jié)果的;至于編程術(shù)語(變量,運算符,字符類型,字符大小,函數(shù)庫(類庫),面向?qū)ο?面向過程,面向切面等...),希望對你有所幫助.
西廖18226434118: 一個從來沒學過編程的人該怎么學編程? -
富縣工件: ______ 其實編程序的精華在于數(shù)學思想的運用,也就是算法.編碼的工作其實是比較低級的.當然了,對于外行來說,你怎么看都很神的. 我建議你不要學,如果你真的要學編程序就應該現(xiàn)在多注重數(shù)學的學習.英語也得會點. 如果你非要學,建議學Basic,可以考慮VB
西廖18226434118: 想學電腦編程,但是對編程一竅不通.我該從何學起? -
富縣工件: ______ 最近很多人都在問如何學習編程.我覺得學習編程最重要的是入門,如果你入門的時候有一個好的方法和思路,打下比較扎實的基礎(chǔ),對今后的編程工作是很有益處的.即使在學習新的編程語言也無所謂,因為它們有很多相通之處,可以相互借...
西廖18226434118: 應該如何自學編程
富縣工件: ______ 對于一個沒有接觸過編程的初學者來說的話,建議你的學習順序是:第一,c語言基礎(chǔ)(不需要學太多,只需要了解編程的基本邏輯,學到指針就可以不學C了)第二學習一些簡單的數(shù)據(jù)庫,例如MySQL,同樣也是了解一下簡單的SQL語句就可以,不容太深入.至于JAVA c#就是把前面兩個了解了后再決定選哪一種,只要有一定的邏輯思維能力了,再學其他的語言都是比較容易的.
西廖18226434118: 怎樣編程?誰能教教我?
富縣工件: ______ 編程的概念很廣,看你要學什么,往哪方面發(fā)展. 一般學了一門語言之后,學習另外一門是很容易的是,現(xiàn)在我所接觸到的語言多的是,c,c++,html,xml,matlab,javascript,vbscript,vb,vhdl等,但是最喜歡,也最擅長還是c 因為我的方向是接近硬件...
西廖18226434118: 本人想自學編程 -
富縣工件: ______ 學習編程已經(jīng)不再是少數(shù)計算機專業(yè)人員的事情了,就如同計算機深入到我們生活的每一個角落一樣,學習編程的人也是越來越多.由于現(xiàn)在網(wǎng)絡(luò)信息資源豐富,大多數(shù)人都選擇了自學.我自幼自學編程十余年,多少積累了一些經(jīng)驗和方法,...
西廖18226434118: 想學編程從哪開始?? -
富縣工件: ______ 建議學習面向?qū)ο蟮木幊?至少現(xiàn)在是主流了解面向?qū)ο蟮囊恍┗镜母拍?以:繼承、封裝、多態(tài)為主線進行學習.面向?qū)ο髸峁┖芏嗟念悗?這些不一定都用的上,但是你了解了基本概念學這些類庫就...
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語句,不過它的功能被限制了,僅當結(jié)構(gòu)化方案非常復雜時才建議使用。
正由于它的系統(tǒng)編程根源,將C和匯編語言進行結(jié)合是相當容易的。函數(shù)調(diào)用接口非常簡單,而且匯編語言指令還能內(nèi)嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優(yōu)點:有益于編寫小而快的程序。很容易與匯編語言結(jié)合。具有很高的標準化,因此其他平臺上的各版本非常相似。
缺點:不容易支持面向?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é)的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數(shù)編譯器沒有把整個語言正確的實現(xiàn)。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數(shù)可移植性用戶界面庫都使用C++對象實現(xiàn)。
使用C++編寫的游戲:非常非常多。大多數(shù)的商業(yè)游戲是使用C或C++編寫的。
資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經(jīng)熟知C,那么試一下《Teach Yourself C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼“我該使用哪門語言”之后最經(jīng)常被問及的問題。很不幸,不存在標準答案。你可以自學C并使用它來寫程序,從而節(jié)省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向?qū)ο蟮闹R,因為它可能在你的游戲中使得數(shù)據(jù)建模更有效率的東西。
最大的商業(yè)游戲,包括第一人稱射擊游戲很多并沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向?qū)ο缶幊碳夹g(shù)。如果你只想學C,至少要自學OO(面向?qū)ο螅┚幊碳夹g(shù)。OO是仿真(游戲)的完美方法,如果你不學習OO,你將不得不“辛苦”的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關(guān)的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那么簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術(shù)讓東西變得更易于使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰(zhàn)士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鐘要調(diào)用數(shù)千次,因此,盡可能的簡潔將有助于提高游戲的性能。而從C里調(diào)用匯編寫的函數(shù)是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫“匯編”。把匯編語言翻譯成真實的機器碼的工具叫“匯編程序”。把這門語言叫做“匯編程序”這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發(fā)。
優(yōu)點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現(xiàn)的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適于心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設(shè)計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什么商業(yè)游戲是完全用匯編開發(fā)的。不過有些游戲使用匯編完成多數(shù)對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找芯片的文檔。網(wǎng)絡(luò)上如Intel、AMD、Motorola等有一些關(guān)于它們的處理器的資料。對于書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設(shè)計的,因為他對于FORTRAN和COBOL沒有強制訓練學生的結(jié)構(gòu)化編程感到很失望,“空心粉式代碼”變成了規(guī)范,而當時的語言又不反對它。Pascal被設(shè)計來強行使用結(jié)構(gòu)化編程。最初的Pascal被嚴格設(shè)計成教學之用,最終,大量的擁護者促使它闖入了商業(yè)編程中。當Borland發(fā)布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,并具有優(yōu)秀的內(nèi)置編輯器和調(diào)試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉(zhuǎn)向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最后,在1996年,Borland發(fā)布了它的“Visual Basic殺手”— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由于不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的“聰明”代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優(yōu)點:易學、平臺相關(guān)的運行(Delphi)非常好。
缺點:“世界潮流”面向?qū)ο蟮腜ascal繼承者(Modula、Oberon)尚未成功。語言標準不被編譯器開發(fā)者認同。專利權(quán)。
移植性:很差。語言的功能由于平臺的轉(zhuǎn)變而轉(zhuǎn)變,沒有移植性工具包來處理平臺相關(guān)的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關(guān)的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易于學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的“空心粉式代碼”。當回憶起B(yǎng)ASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環(huán)境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環(huán)境的許可權(quán),并把它作為Visual Basci 1.0發(fā)布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結(jié)構(gòu)化了,行號也被去除。實際上,這門語言與那些內(nèi)置于TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經(jīng)過六個版本,Visual Basic變得非常漂亮。用戶界面發(fā)生了許多變化,但依然保留著“把代碼關(guān)聯(lián)到用戶界面”的主旨。這使得它在與即時編譯結(jié)合時變成了一個快速原型的優(yōu)異環(huán)境。
優(yōu)點:整潔的編輯環(huán)境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已準備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態(tài)連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調(diào)用Windows的API程序非常笨拙,因為VB的數(shù)據(jù)結(jié)構(gòu)沒能很好的映射到C中。有OO功能,但卻不是完全的面向?qū)ο蟆@麢?quán)。
移植性:非常差。因為Visual Basic是微軟的產(chǎn)品,你自然就被局限在他們實現(xiàn)它的平臺上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉(zhuǎn)變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業(yè)性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設(shè)計用于嵌入程序的可移植性“小C++”。在網(wǎng)頁上運行小程序的想法著實吸引了不少人的目光,于是,這門語言迅速崛起。事實證明,Java不僅僅適于在網(wǎng)頁上內(nèi)嵌動畫 — 它是一門極好的完全的軟件編程的小語言。“虛擬機”機制、垃圾回收以及沒有指針等使它很容易實現(xiàn)不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續(xù)篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向?qū)ο缶幊蹋贘ava里寫非面向?qū)ο蟮某绦蚓拖褚赑ascal里寫“空心粉式代碼”一樣困難。
優(yōu)點:二進制碼可移植到其他平臺。程序可以在網(wǎng)頁中運行。內(nèi)含的類庫非常標準且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網(wǎng)上數(shù)量巨大的代碼例程。
缺點:使用一個“虛擬機”來運行可移植的字節(jié)碼而非本地機器碼,程序?qū)⒈日嬲幾g器慢。有很多技術(shù)(例如“即時”編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經(jīng)過慎重考慮,雖然被正式廢除,但為了保持向后兼容不得不保留。越高級的技術(shù),造成處理低級的機器功能越困難,Sun為這門語言增加新的“受祝福”功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平臺上不穩(wěn)定。
使用Java編寫的游戲:網(wǎng)頁上有大量小的Applet,但僅有一些是商業(yè)性的。有幾個商業(yè)游戲使用Java作為內(nèi)部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關(guān)于Java新聞的最好去處。
8、創(chuàng)作工具
上面所提及的編程語言涵蓋了大多數(shù)的商業(yè)游戲。但是也有一個例外,這個大游戲由于它的缺席而變得突出。
“神秘島”。沒錯,賣得最好的商業(yè)游戲不是使用以上任何一門語言編的,雖然有人說“神秘島”99%是使用 3D建模工具制作的,其根本的編程邏輯是在HyperCard里完成的。
多數(shù)創(chuàng)作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數(shù)工具使用一些拖拉式的流程圖來模擬流程控制。很多內(nèi)置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優(yōu)點:快速原型 — 如果你的游戲符合工具制作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創(chuàng)造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網(wǎng)頁上發(fā)布很多創(chuàng)作工具生成的程序。
缺點:專利權(quán),至于將增加什么功能,你將受到工具制造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創(chuàng)作工具無法完成的。某些工具會產(chǎn)生臃腫得可怕的程序。
移植性:因為創(chuàng)作工具是具有專利權(quán)的,你的移植性以他們提供的功能息息相關(guān)。有些系統(tǒng),如Director可以在幾種平臺上創(chuàng)作和運行,有些工具則在某一平臺上創(chuàng)作,在多種平臺上運行,還有的是僅能在單一平臺上創(chuàng)作和運行。
使用創(chuàng)作工具編寫的游戲:“神秘島”和其他一些同類型的探險游戲。所有的Shockwave游戲都在網(wǎng)絡(luò)上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易語言
★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設(shè)計和程序流程編碼。★中文語句快速錄入。提供多種內(nèi)嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規(guī)范強制代碼格式轉(zhuǎn)換,任何人編寫的任何程序源代碼格式均統(tǒng)一。★參數(shù)引導技術(shù),方便程序語句參數(shù)錄入。★無定義類關(guān)鍵字。所有程序定義部分均采用表格填表方式,用戶無需記憶此類關(guān)鍵字及其使用格式。★命令格式統(tǒng)一。所有程序語句調(diào)用格式完全一致。★語法格式自動檢查。自動檢查并提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。鼠標停留立即顯示相關(guān)項目提示。編程時提示語法格式,調(diào)試時提示變量當前內(nèi)容,隨時按下F1鍵可得到與當前主題相關(guān)詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發(fā)環(huán)境。集界面設(shè)計、代碼編寫、調(diào)試分析、編譯打包等于一體。★學習資源豐富。詳細的幫助文件、數(shù)十兆的知識庫、數(shù)萬用戶的網(wǎng)上論壇、教材已出版發(fā)行……
10、結(jié)論
你可能希望得到一個關(guān)于“我該使用哪種語言”這個問題的更標準的結(jié)論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適于快而小的程序,但不支持面向?qū)ο蟮木幊獭++完全支持面向?qū)ο螅欠浅碗s。Visual Basic與Delphi易學,但不可移植且有專利權(quán)。Java有很多簡潔的功能,但是慢。創(chuàng)作工具可以以最快的速度產(chǎn)生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什么樣的游戲,并選擇對你的游戲支持最好的語言。“試用三十天”的做法成為工業(yè)標準是件好事情。
相關(guān)評說:
富縣工件: ______ 首先,如果你想學編程.最好去專業(yè)的培訓學校學習.當然這只是建議.具體看個人的情況.編程分很多種編程.有嵌入式,安卓.IOS 等等.不過基礎(chǔ)都是C語言.如果你想學習編程.最好先了解一下C語言.這樣對于你入門有很大的幫助.
富縣工件: ______ 按以下步驟進行 1、想清楚你學編程到底是要干嘛? (1)應付考試:那沒啥說的,花幾百塊買套教程照著學.習題全做一遍基本就OK了. (2)學著玩:建議還是別學. (3)想當程序員或者希望能借此更好地完成工作,那么請看第2步. 2、首先...
富縣工件: ______ 任何東西的學習都是循序漸進而不可能一蹴而就的,要認識編程你可以嘗試去閱讀源代碼(看不懂不要緊),去品味隱藏在其中的邏輯性和問題求解的規(guī)范性,你也可以嘗試去領(lǐng)悟編程在日常生活中的作用(如:紅黃綠燈系統(tǒng),計算器,電梯系統(tǒng)等)慢慢想,總會有結(jié)果的;至于編程術(shù)語(變量,運算符,字符類型,字符大小,函數(shù)庫(類庫),面向?qū)ο?面向過程,面向切面等...),希望對你有所幫助.
富縣工件: ______ 其實編程序的精華在于數(shù)學思想的運用,也就是算法.編碼的工作其實是比較低級的.當然了,對于外行來說,你怎么看都很神的. 我建議你不要學,如果你真的要學編程序就應該現(xiàn)在多注重數(shù)學的學習.英語也得會點. 如果你非要學,建議學Basic,可以考慮VB
富縣工件: ______ 最近很多人都在問如何學習編程.我覺得學習編程最重要的是入門,如果你入門的時候有一個好的方法和思路,打下比較扎實的基礎(chǔ),對今后的編程工作是很有益處的.即使在學習新的編程語言也無所謂,因為它們有很多相通之處,可以相互借...
富縣工件: ______ 對于一個沒有接觸過編程的初學者來說的話,建議你的學習順序是:第一,c語言基礎(chǔ)(不需要學太多,只需要了解編程的基本邏輯,學到指針就可以不學C了)第二學習一些簡單的數(shù)據(jù)庫,例如MySQL,同樣也是了解一下簡單的SQL語句就可以,不容太深入.至于JAVA c#就是把前面兩個了解了后再決定選哪一種,只要有一定的邏輯思維能力了,再學其他的語言都是比較容易的.
富縣工件: ______ 編程的概念很廣,看你要學什么,往哪方面發(fā)展. 一般學了一門語言之后,學習另外一門是很容易的是,現(xiàn)在我所接觸到的語言多的是,c,c++,html,xml,matlab,javascript,vbscript,vb,vhdl等,但是最喜歡,也最擅長還是c 因為我的方向是接近硬件...
富縣工件: ______ 學習編程已經(jīng)不再是少數(shù)計算機專業(yè)人員的事情了,就如同計算機深入到我們生活的每一個角落一樣,學習編程的人也是越來越多.由于現(xiàn)在網(wǎng)絡(luò)信息資源豐富,大多數(shù)人都選擇了自學.我自幼自學編程十余年,多少積累了一些經(jīng)驗和方法,...
富縣工件: ______ 建議學習面向?qū)ο蟮木幊?至少現(xiàn)在是主流了解面向?qū)ο蟮囊恍┗镜母拍?以:繼承、封裝、多態(tài)為主線進行學習.面向?qū)ο髸峁┖芏嗟念悗?這些不一定都用的上,但是你了解了基本概念學這些類庫就...