分享:
▲
▼
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並使用它來寫程式,從而節省一大堆的時間,不過使用這種方法有兩個弊端:
‧你將錯過那些在遊戲中可能是更有效的資料建模方式。 ‧不用馬上開始學習 OO 編程,但可能要強制你改掉最終必須忘掉的編程壞習慣,這一點請相信我。
最大的商業遊戲,包括第一人稱射擊遊戲很多並沒有使用C++。但是,這些程式的作者即使使用老的C的格式,他們通常堅持使用面向物件編程技術。如果你只想學C,至少要自學OO(面向物件)編程技術。OO是仿真(遊戲)的完美方法,如果你不學習OO,你將不得不〝辛苦〞的工作。
[ 此文章被icehawk在2006-12-10 11:15重新編輯 ]
|