精華區beta Programming 關於我們 聯絡資訊
※ 引述《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