精華區beta Programming 關於我們 聯絡資訊
※ 引述《milochen.bbs@ptt.cc (邪樹豬鹿)》之銘言: > 之前對開發環境不熟的時候 > 都是用VC6 在寫。自從一直在上面寫又搞不定之後 > 真的是對template有點恐懼。。。 VC6 出現的年代是 1998 年之前, 本身對標準的支援就不強, 不過印象中裝到 service pack 6 還是多少以後, 有些東西是有改善才對, 但我不確定, 只知道很多人裝了 VC6 都會不知道要去裝 service pack。 > 後來一個多月前,在可以遠端連線到主機linux後, > 我開始學linux的環境,不過必須要使用 g++的version 3.3.5 作開發。 > 也聽了大大您的建議,我今天又再次寫這template > 於是果然compile就過了。 > 因為網路底層都受限只能用 g++ 3.3.5。 不太懂上面這句話的意思。 就我所知, 除了 ABI 的問題之外應該跟 g++ 幾版沒有關係, 也就是說你可能用到只有 binary 而且是由舊版 g++ 編譯出來的第三方函式庫, 不然幫主機安裝新版的 gcc/g++ 來開發程式並不會有什麼問題。 > 所以我想要請教一下,g++ 3.3.5 是不是寫template其實就夠了? 其實是很夠用了, 差異不會大到哪裡去。 > 還是說有沒有比較紮實的學法,譬如可能是直接下去看compiler的source code之類的 沒有必要, 除非你本來就剛好會。 > 因為這g++ 3.3.5會跟我之後開發系統的路上,將有好一陣子(二年多)的開發 > 不過一方面我又不知道該怎麼摸索,要怎樣才能夠從一個 只會把C++程式寫的很呆板人 > 進化成可以去實際了解C++ Compiler,並且好好發揮之。我認為這很重要。 > 現在以小弟C++的程度與background,其實我也不知道 適合每個人的方式都不同, 所以其實我自己也不知道, 但是先寫一套小有規模的系統出來, 再一一利用所學去改善獲取經驗, 是我比較建議的做法。 如果從來沒有用 C++ 寫過小有規模的系統, 建議就直接拿 The C++ Programming Language 或 C++ Primer 這兩本書有講的東西, 搭上標準的 C++ library(可能的話希望你能搭 boost 這套 library), 就直接下去寫是最單純的, 雖然寫出來會平平無奇而且架構爛爛的, 但是之後慢慢套上其它進階書籍講的東西, 會比較有心得, 知道哪些錯誤自己真的有犯到, 知道哪些細節自己真的沒有注意到。 > 到底現在去了解C++ Compiler 或者 是深入了解 ISO/IEC 14882 不知到底合不合適。 個人建議, 至少 C++ Primer 這本書裡面沒有一行是看不懂是最基本的, 我之所以只建議 C++ Primer 的原因是它本身性質介於教科書跟規格書之間, 它注重的地方跟 The C++ Programming Language 不太一樣, 整本看熟要掌握 C++ 語言的基礎設施就輕而易舉了, 尤其 overloading 跟 template argument 推導等東西一定要看熟, 不過不必記起來沒有關係, 這些會影響到你將來看 compiler error messages 的能力。 瞭解 C++ compiler 是必要的, 但是不需要去看 source code, 像是 inside the C++ object model 或是剛剛講的 C++ Primer 等書, 裡面提到的那種程度其實就相當夠用了, 許多沒有正式修習 compiler 理論的人乍看之下會以為那些是 compiler 領域的知識, 但其實它們還只算是 C++ programmer 必備的基礎知識之一。 另外就是在進階書籍上, 會提到的 RVO (Return Value Optimization) 或叫 NRV (Named Return Value), 這種最佳化技術已在目前現有的 compiler 上被相當普遍的實作出來, 所以建議你也先複習一下以免到實作時對一些怪事有所困惑。 > 以前高職的時候其實就已經第一次碰過C++了, > 不過後來卻問題出在自己不知道,要如何的安排與規劃才能把C++學好。 > 當然您講了一些寫code的態度,我才恍然大悟,發現原來以前寫code的態度是錯的 > 然怪會學不好。 > 由於也很想要在這二年多的開發計劃中,因為是使用C++的, > 所以自己想要徹底的好好把C++學好,但除了買了一堆大家所推薦的書以外, > 事實上發現自己對於這方面,「探索該如何才能專精C++」這檔事,還是處於 > 東摸西摸的摸索方式,也搞不清楚自己到底有沒有偏差或錯誤的學習態度。 C++ 因為語言機制豐富而且自由度高, 要專精得花上很多時間, 但其實訣竅跟學純粹的 OOPL 並不會差距太大, 也就是不能只是像傳統印象那樣拼命寫就好了, 必須在適當的時機去看一些進階書籍, 這樣才有可能變得很專精。 簡而言之就是不能忽略書本, 必須要好好讀書。 > 像大大這樣子能夠把自己的觀念、方法 與 技巧 分享出來 > 對於像我這種在摸索階段的,真的是大有幫助,因為可以少走幾步錯的路 > 而也因為有大大分享的經驗,才使得晚輩我可以有更佳的學習效果。 > 感謝^____________^y -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-223-213.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 [修改]tinlans:61-230-223-213.dynamic.hinet.net 06/11/30 20:54:35