發信人tinlans.bbs@whshs.cs.nccu.edu.tw (汀),
看板Programming
標 題Re: 想找人組Modern C++ Design讀書會
發信站政大狂狷年少 (Fri Dec 1 05:12:54 2006)
轉信站ptt!ctu-reader!ctu-gate!news.nctu!newsfeed.nthu!news.cs.nthu!WHSHS
※ 引述《StubbornLin.bbs@ptt.cc (Victor)》之銘言:
> 老實說,我有時候在想,我們這樣地鑽研種語言某些特性
> 這樣真的好嗎?
沒有需求就不需要勉強鑽研,
但必須理解有這樣的事物存在,
當遭遇非碰不可的情形時才不至於毫無頭緒可言。
> Template的強大是不可否認的
> 感覺上好像是某種強大的魔法
> 說真的,任何程式設計師,都會想要掌控這樣強大的魔法
> 但是從各種奇幻小說裡面可以看到
> 通常為了追求強大的魔法,總是會走火入魔
> (像伊利丹之類的 XD)
我是對小說沒什麼概念啦,
不過常寫程式的人會有這種慾望是必然的,
但有沒有能力和環境真的去操作又是另一回事。
寫熟了以後其實也會發現沒有那麼神奇,
真的實用的部分比起一些展示用的花招來說其實很少,
有些真正稱得上是神奇的東西在實際使用時,
也都被封裝起來看不太到了,
到頭來最神奇的東西只不過是拿來打底用的。
> Template的鑽研是否走火入魔了?
> Template真的是救世主嗎?
> 我們這樣地依賴Template
> Template又Depend on Compiler
> 但是Complier卻又常常追不上最新的標準,以及新的用法
其實也還好,
照目前標準 5 年一小動 10 年一大動(還不知道會不會實現)來看,
要追上去並不會太困難,
至於 export 的支援問題則是來自於前文所提的守舊派人士災難,
不過這牽涉到 system programming、compiler、OS 等專業領域很難一語道盡。
> 而Template在Compile時通常都很吃力
> 更吃力的是Template式的遞迴被發明
> 同時帶來的是Compile時間的加長
然而卻省下了 runtime 的時間,
不過也增加了 runtime 所需的 memory 空間,
對有以空間換時間此一需求的人來說,
它是可以拿來救命的東西。
> 除此之外還有各種語言特性的依賴
> 來實作出某些功能,而這些特性對一般人來說
> 通常都不知道有這樣的特性
> 我認為這樣的編程需要的水準,需要對C++的各種特性有很細微的了解
> 光是一個Template的特性就非常瑣碎,語法、編譯器實作的過程、編譯器的限制...
我倒是覺得,
要拿工具做一件事,
對工具本身能夠徹底瞭解,
是一項專業和負責的表現,
也是一種職業道德。
讀高職時,
實習課的老師也有再三叮嚀過類似的話,
並感嘆現在搞工程的人怎麼都亂七八糟。
> 如果說程式碼是包裝給別人用的其實是沒什麼關係
> 但是如果需要給別人看的,別人是否也能看懂你到底在寫什麼?
事實上如同前面所述,
神奇的部分早就都被封裝起來了,
外層露出來的通常都是常見到不行的 design patterns 之 template 變形版,
有 sense 的 OO programmer 一看就會懂。
> 如果沒有能夠支援的編譯器怎麼辦?
這年頭會發生這種事的機會不大,
通常會在這種環境執行程式,
那當初就不可能接受你用 C++ 來寫,
不然就是在開發的初期就會知道使用的編譯器版本很老舊,
那自然在開發過程中就會避免使用。
> 一個語言會有各種革命性的突破,就像詩、詞、現代詩那樣
> 也如同藝術那樣,我不是反對新的事物
> 而是我在想,我們在使用新的東西時,是否有考濾到會失去什麼
> 這樣做是不是超過了?
其實也跟前面講的一樣,
你只是被一些華麗的展示用程式碼誤導了,
實務上並不會這麼奇特而難以使用。
> 然而,時代會改變
> 也許編譯速度慢的問題,在速度越來越快的硬體的支援下
> 再也不是問題,而Compiler也跟上了標準的腳步
> 阿...只是抱怨一下= ="
> 這些新的東西吃腦力資源的程度還真不小....
老實說,
這已經是有 10 年左右歷史的舊東西,
只是搭船和飛機來台的時間看似比較短而已,
而且受到國內短視近利商人居多的影響,
需要用上此類技術的軟體工業實在不多,
另一個問題就是守舊派人士的禍害。
> 光是Template遞回就很複雜了...
> 突然會懷疑自己真的能控制這頭怪物嗎?
寫程式時桌上必定要有紙筆,
紙筆帶動思路活性的能力遠比把字敲進電腦來得強,
就我所知有非常多 programmer 桌上都沒有紙筆,
就算有也只是擺著好看的(我自己是一個月可以寫掉兩本計算紙),
這是非常糟糕的一件事,
多利用紙筆,
這種東西推個幾次就變成直觀了。
有個很大的禁忌就是把思考的東西敲到電腦裡去,
然後盯著在那邊發呆看半天,
這個錯誤絕對不可以犯,
否則一天下來浪費掉的時間是超乎想像的可觀,
一個月下來別人 3 天可以做完的事你做了 30 天,
千萬不要以為我這樣說很誇張,
這還是比較保守的說法,
我看過太多太多了。
> 在這樣懷疑的過程中就會去挑它的毛病= =|
> 聽說C++好像又有新的標準要出來
> 新的東西出那麼快,舊的都還沒學完
> 真是... 囧rz
其實也不必擔心太多,
頂多有問題的語言機制改一改,
方便的語言機制加一加(不一定是方便人,有時是方便 compiler),
然後動一動函式庫而已吧,
當初 C89 到 C99 的變更其實也都差不多是這樣。
--
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"的狂狷不馴;屬於年少的輕狂色彩 ◎
推 pinglunliao:推「寫程式時桌上必定要有紙筆」這句 140.130.34.88 12/01 08:28
推 meltice:很多大學教C++的教授都不一定會C++吧 210.64.13.208 12/01 12:33