※ 引述《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