星期二, 8月 25, 2009

Compile Hell

整個星期的工作進度落後
最進專案修正的部份大多是常用的介面函式以及基礎的類別
每次Update其他同事的code下來一編譯就要20分鐘
(C++這種落後的語言大概只剩下寫系統以及可憐的寫遊戲的人再用吧)
加上因為是基礎的元件 改到出問題 要找bug除了難度高 要花的時間更多
壓力真是很大

而PairProgramming 最忌諱這種事情 因為一耽誤就是兩個人的時間
除了Unit Test不好寫以外 C++要落實XP真是難度很高

到底什麼時候 C++這種上一個世紀的語言才會被淘汰...
千錯萬錯都是微軟不在XP內建.NET 以及Vista的失敗...


PS.最近寫工具都用C# 除了compile速度只要一兩秒
Reflection、XMLSerialize、自動Refactory、強大的IDE支援、如DataGrid DockPanel等強大無比的介面元件 再再都證明了程式語言不就應該是用走在時代的最前面的技術嗎? C++實在落後到令我感到悲哀

12 則留言:

  1. 會不會是你同事的code裏面用了太多include在header裏面了? 以前我們也有遇過compile time的問題, 後來把一些inlucde從.h移到.c++後, 連engine加game code在Pentium 4上做full rebuild通常不會超過10分鍾, 一般的incremental build頂多兩分鍾就解決, 等最久的通常是data build

    不知道C# compile到byte code和native code的時間差別如何, 不過C/C++給compiler許多low level optimization的空間, 有些console system廠商提供的compiler會花不少工夫在hardware specific的optimization, 也有一些compiler可能10年都沒有revise過, 這也有可能是造成compile時間長短不一的原因之一

    回覆刪除
  2. 會不會是你同事的code裏面用了太多include在header裏面了?
    ----的而且確(港漫) 畢竟這個專案寫了七八年中途換手一堆人 include 亂七八遭也很正常

    C# compile到native code???
    ----why

    low level 的最佳化...
    ----稍具規模的線上遊戲由於系統架構大 光要做AP層級的最佳化都沒時間了 而且AP層級的最佳化通常都是最有效的甚至改一段邏輯可以加快一倍的速度 low level的最佳化所增加的效率其實還是有限 (作遊戲主機可能就需要了)
    當然這一切都是我的角度啦

    回覆刪除
  3. 筆誤~ 真想挖個洞把頭鑽進去~
    面壁思過中~

    我原本的意思是:
    C# compile到byte code和[C++ compile到byte code (in .Net)以及compile到]native code的時間差別

    原來你們是寫線上遊戲 這樣我了解嘍
    最佳化的priority的確很不同
    C#的優勢就很明顯了 尤其是在server side方面 對吧

    回覆刪除
  4. R2D2兄: 一般如果了解事實的話用.NET就不會用C++寫 而一般標準C++編譯時間跟C#比大概...無法用倍數來形容了吧...C++編譯用分鐘來算 C#編譯用秒來計算...

    現在線上遊戲除了工具 大多的人都還是不敢用C# 畢竟做遊戲的人大多不熟C#(我是有用C#做過線上麻將) 等我中彩劵我就開一間公司用C#作遊戲溜呵呵

    回覆刪除
  5. c#寫過一陣子~
    個人小小感想,c#好用c++早就被淘汰了.
    為什麼一些商業引擎 還是要用c++ ??
    儘管c# 的code夾雜其中 但是還是無法讀當一面阿 其中原因 我想你這麼資深一定懂得XDDDD 加油阿 最近我們也剛添購了分散式的Build系統 不然unreal script都快搞死我們了XD 還好分散式Building還蠻利害的XD 共同勉勵 加油!!

    回覆刪除
  6. 不同的語言以及各支援的library不同,可以做的事也差很多。

    Rich的考量在於快速開發,當然選定一個寫起來快速又好除錯的語言為首要目標。以C++來講,程式品質的控管相對來講重要語多,C++光是Leak、AccessViolation、Concurrency Access等等問題就搞死一堆對C++一知半解的程式設計師了,又如何能在很快速的時間在反應時間這麼短的線上遊戲市場中存活呢?

    回覆刪除
  7. 另外再提一點:

    光中一個彩券可能還開不了一間像樣的軟體公司 >XD

    回覆刪除
  8. Hihi阿比兄:
    我知道你的懷疑點 因為大多數人跟你的想法一樣 所以自然就少溜
    不過"用過"跟"真的知道怎麼用"可是有一段不小的距離喔...呵呵 我畫面裡的那位同事以前也跟你一樣的想法 跟我PP寫了一個月的C#後也對它的功能非常讚賞

    Richard: 謝謝幫我補充 我想大家都知道我們是同一派的 呵呵 彩劵不夠喔 我可不想在做"大"型MMO 或者是買那麼好的引擎 所以資本應該不用那麼多啦

    回覆刪除
  9. 我也被c#荼毒過一陣子 很多地方是我欣賞的 但是像我這種老一輩的 常常寫一些 希奇古怪的東西 c++ 還是我的最愛拉XD VC6.0這種古董 大概也只有我還不太喜歡升級的吧XDDDDDD

    回覆刪除
  10. ps. 如果我的想法跟那麼那麼多人一樣 阻礙了c#的發展 那我改天要登報抱歉一下了QQ

    回覆刪除
  11. 阿比兄 : 呵呵 我知道能夠掌握底層運作的那種感受 這也算是兩種不同的領域 同樣是工程師也有信仰的分別 工具只要用的好就是好工具溜 呵呵

    回覆刪除
  12. PS.雖然是這樣說 我還是忍不住喜歡批評C++呀 :-P

    回覆刪除