精華區beta CSSE 關於我們 聯絡資訊
※ 引述《tinlans ( )》之銘言: : 鑑於個人前陣子培養的新習慣: : 延伸原主題過三步換標題以減輕原 po 心理壓力。 : 所以先換標題, : 不過我不是教授也不是從商的, : 標題下得不好就請見諒。 : ※ 引述《lg31cm (我住5F)》之銘言: [恕刪] 其實活在台灣的資訊裡,很多都會迷失掉 話說自己也是在科技大學畢業後,在當兵時, 剛好想說有機會會面臨找工作的問題,又聽說某某公司考C++是用英文的 所以也來讀英文,順便去看看國外在討論問題時,他們的重心在那邊。 接著才發現,不對耶!! 跟之前認知差距好大, 有非常大的不對勁。 以前大學時代學校教的就是一個main.cpp打天下,反正老師也只知道說 "反正你就是要 #include <iostream>" 才能開始寫,然後會寫遞迴程式的人 ,其程式功力在班上就可以排行前幾名了。但也也是一直到了大學 因為我也是發現怎麼技職跟一般大學又有不對勁(就是類似台灣跟國外) 所以有一段時間去摸高中學的集合論裡面講的function為何,所以到後來才真的搞懂 到底遞迴是怎麼一回事,才算是有個完整的了解。若要說真的全盤通, 也已經是在當兵的時候了。 不經感嘆,雖然同樣都是努力,不過在台灣就是很容易接受到錯誤的資訊與情報 在我當兵時,曾經有人說「失敗的人講的話永遠不可採信,只有成功的人說的話才算數」 她的道理在於「因為失敗的人之所以失敗,是因為他跟本就搞不清楚自己失敗在那」 在台灣,如果平時不多作功課,主動的去接觸世界上的成功人事(不能僅限於台灣) ,多吸收成功人事的觀點,所謂的看書不是去看他們的自傳,因為這種會出書的東西 說穿了就是為了在討好普遍的觀眾,自傳千萬不可看,而是要與他們親身交談去作了解。 以前高職的時候,每一天至少都會花三個小時以上在作coding,不過不是for job 只是純碎因為 想到什麼東西,就可以寫出那個東西,因此而感到興奮。 退伍出來工作也半年了,前三個月跟不會作系統分析的人作系統分析 (感觸是不知道那一天才能遇見真的SA,來作有用的SA,很多SA本身程式設計概念 都還停留在procedural,然後號稱自己物件導向分析) 等到後三個月在作C++開發以後,才發現其實物件導向分析是什麼 自己真的也是完全都不知道。 C++ 怎麼寫呢?? 寫了三個月才發現, 打從底子來說,自己跟本就是不會C++的人。 應該要來整個全部重新學習,否則一直拿著錯誤的舊觀念再繼續學下去的話, 跟本就不可能有學好的一天。 但是說實在的,如何安排一個好的流程,來學好C++,自己其實也不知道到底要看什麼 書,或者如何的來規劃。這方面的資訊可能版上很多,但其實自己也不知道那個才是 對的,那個是可以follow的方向。所以真的要學習,就是一直作開發,有問題就發問。 也別無其它辦法了。 像高職對於作硬體設計方面有一套很完善的流程,可以讓你好好學之後,會對整個 設計非常清楚。而一般大學特別是在數位邏輯設計實務上特別不行,這時不得不佩服 當初在歸劃這個學硬體設計的課程時,竟然可以把這麼複雜的東西,整理到 國中數理程度的就能夠容易上手。這真的是相當不簡單的一件事。 不過不知道像要學軟體開發的話,不知道有沒有這種一連貫的流程。如果真有就好了:( 以C++來說,其實台灣應該本來有很好的環境可以培養, 因為有聊到一位在西安那邊的人,碩士畢業後有去作軟體開發工作 Design Pattern是他們最基本在用的術語,他們的認知裡這是需要經驗但很好用的東西 ,他們的認知裡認為,作程式設計的人,不能不會這本書。他們也很喜歡侯捷,因為 大陸那邊的人其實英文並不是很好,翻譯的書藉對他們的學習帶來很的幫助,所以 像侯捷翻譯的書,對他們來說實在是太有幫助了。後來想想, 台灣的技術還沒被大陸覆蓋掉??,覺得還滿不可思議的 後來想想可能是因為台灣的企業界所保有的 硬體設計 經驗知識 是大陸那邊一時還無法取代的關係。 Google 跟 MS 在大陸徵才,月薪也只有給二萬元人民幣, 位於北京中國科學院 ,一個少年班的,26歲拿到博士,可以自己一個人獨立開發 distributed virtual machine,薪水我有點忘了,好像月薪一萬還兩萬人民幣。 什麼是少年班? 沈向洋 就是少年班的, 反正 少年班 是 算是一種很猛的天才特殊教育 XD 這些都是大概自己透過因緣際會的關係,實際獲得的一些小情報 然後一方面又看到自己的C++,跟本就是直接稱的上「不會C++」還比較貼切 : 抄完這些東西之後就什麼也沒補充了, : 然後初學者,包括自以為 C++ 都學通了的人就真的被耍到, : 真的有什麼想要 reuse 的東西就給它「繼承」下去, : 譬如說,Derived 這個 class 想 reuse ItemA、ItemB、ItemC 這三個 classes 的功能, : 而 ItemA、ItemB、ItemC 都繼承了 BaseItem, : 他們就真的這樣寫下去: : class Derived : public BaseA, public BaseB, public BaseC { : ... : }; : 首先遇到的問題有可能是需要 virtual 繼承的問題, : 不過這個跟他們解釋過以後普遍還覺得 ok 可以接受; : 但是他們程式寫到後來 (接近 UI 那一面的時候), : 突然想到可能需要依 user 輸入來改變要 reuse 的 classes, : 也就是用其它事先繼承自 BaseItem 並已實作的現成 classes 來替代。 : 然而這些人的腦袋被教科書誤導已深, : 在歷經一番 code 亂改亂 try 都得到 error messages 之後, : 直接丟出一句「C++ 怎麼沒有支援動態繼承啊?」, : 這時他們用 OO 寫 code 的意願就逐漸大大的被動搖了, : 因為他們發現事實沒有想像中以及書中所說的完美, : 腦袋裡都想著(嗶--)的怎麼這麼麻煩,林(嗶--)花在解決這 error 的時間, : 早就用舊方法寫完了,OO 這東西怎麼看起來簡單用起來這麼複雜啊。 : 要是好心跟他們說其實應該用合成的方式而不是亂用繼承, : 也就是: : class Derived { : ItemBase *first; : ItemBase *second; : ItemBase *third; : ... : }; : 這樣的方式來 reuse, : 就可以達成他們當初打算用「動態繼承」所想要達成的目的, : 結果你猜猜看絕大多數的人是啥反應? : (嗶--)!那當初叫林(嗶--)花那麼多時間學繼承怎樣用是要衝三(嗶--)! : 這樣寫不是還要林(嗶--)多寫一堆(嗶----)東西去轉 call members 裡的東西!? : (嗶--)你的 OO!(嗶--)背回去寫 C 還比較快!學這三(嗶--) OO 浪費林(嗶--)時間! : 差不多就是這類型的反應, : 我也不諱言, : 走到這一步還沒把 OO 甚至是整個 C++ 扔掉的, : 在我目前為止看過的人裡面差不多是總數的 4%, : 但我前面也說過這個 % 數只是一種假象, : 是大家都高學歷、人人有大學讀、校校都有資X系才造成的假象, : 全世界是有幾個國家會像台灣這樣的? : 以台灣這種人口數量和產業種類和來說,有這幾 % 就夠多了; : 好了為了避免進入邪惡的政治議題,這裡也是點到為止。 說真的自己跟本不知道 繼承 要如何使用 頂多只知道 用 concrete class去繼承 abstract class而己 而且我只會用像大大您說的 像這樣子的寫法 class Derived { ItemBase *first; ItemBase *second; ItemBase *third; ... }; 很多以前在金石堂買的C++書,所說的那個繼承,到最後都會發現 為什麼都用不起來。到底繼承的精隨在那邊, 現在想想還真的不知道何時才需要concrete class 去繼承 concrete class。>"< 很糟糕,繼承它有這麼多的規範,有friend,protect,public,private什麼的 以前都從書亂看看來的,現在等真的上戰場時,發現怎麼都不知道怎麼用 而且之所以用,也常常只是為了要讓 在 語法 合法, 而 語意 上常常是無意義的 >"< 其實還蠻想要把以前學的C++ 概念重新刷掉, 整個把自己當作白紙從新來學 。 但又不知道 該如何去判斷 那個 書可學,那個書不可學。 或者那個書適合,那個書不適合看。 見笑了 >"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.146.217 ※ 編輯: milochen 來自: 125.225.146.217 (01/08 02:20)
nvfp:推自傳不看比較好 XD 兩年前我也開始有這種感覺 01/08 10:32
nvfp:另外C++的話 我很喜歡一本講vc 紅皮 封面是一個微笑老頭的 01/08 10:37
nvfp:前半本講基本觀念講得還蠻深入的 01/08 10:38
nvfp:www.books.com.tw/exep/prod/booksfile.php?item=0010017035 01/08 10:49
nvfp:就是這本, 前面有很大篇幅用完整例子講基本觀念 01/08 10:50
sniffing:他的書都太詳細,以致於很容易讓人半途而廢 XD 01/10 00:32