Re: 軟體設計、物件導向、職銜、科系認同、錢,以ꐠ…
※ 引述《tinlans ( )》之銘言:
: ※ 引述《milochen (16/100天自我觀察)》之銘言:
: : 其實活在台灣的資訊裡,很多都會迷失掉
: : 話說自己也是在科技大學畢業後,在當兵時,
: : 剛好想說有機會會面臨找工作的問題,又聽說某某公司考C++是用英文的
: : 所以也來讀英文,順便去看看國外在討論問題時,他們的重心在那邊。
: : 接著才發現,不對耶!! 跟之前認知差距好大, 有非常大的不對勁。
: : 以前大學時代學校教的就是一個main.cpp打天下,反正老師也只知道說
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
: 這種科大教授太不應該,普大還說得過去,科大教授還這樣真的說不過去,
: 無奈的是科大教授普遍都沒有應當「傳授實務經驗」的自覺,
: 不過再扯下去恐怕又會進入邪惡的政治議題了。
: 我科大時代的老師也沒有教這種東西,
: 同學跟學弟都是到大三開始做專題才來問我的,
: 當時他們才真正知道區分「宣告」跟「定義」的重要性,
: 之前都以為我強調這個只是在吊書袋。
: 另外,The C++ Programming Language 這本書大概在第十章的地方,
: 就會講到分多個 .C (泛指 .C .cpp .cxx) 跟 .H (泛指 .h .hpp .hxx) 的方法,
: 不會的最好盡早學起來。
我唸書就學會這招,不過還真的一堆人都不知道...囧rz
: 另外,也應該盡早學會 DLL 或 shared object 應用在 OO 上的技巧,
: 一大堆人到了進去業界才知道 executable file 只要看到 base class,
: 就能直接透過 dynamic binding 機制 call 到 dynamic library 中
: derived classes 內的 virtual functions,
: 而反過來說,
: 當 dynamic library 內的 source code 不可見,
: 但其 header files 提供 base classes 的定義式時,
: 使用 library 的人就可以透過繼承機制去 reuse 現有但不可見的 code。
: 只不過,書很少會講這種東西,
: 也不會有講 OO design pattern 的書跟你說 factory 可以配這東西玩。
我在 COM 寫過類似的東西,不過又如何呢?只不過被微軟擺了一道
全部作成一顆 .exe 我還省事,搞個 DLL 還會版本衝突啥一堆的,
user: 爽到你甘苦到我
: : "反正你就是要 #include <iostream>" 才能開始寫,然後會寫遞迴程式的人
: 從這角度來看,
: 你們老師還不錯,
: 我大學老師教的是 #include <iostream.h>。
: 然後同學之間流傳著兩岸之間不知道是誰開始的鬼講法:
: #include <iostream.h> 不用 using namespace std; 所以比較方便,
: 而 #include <iostream> 就要寫所以比較麻煩。
: : ,其程式功力在班上就可以排行前幾名了。但也也是一直到了大學
: : 因為我也是發現怎麼技職跟一般大學又有不對勁(就是類似台灣跟國外)
: : 所以有一段時間去摸高中學的集合論裡面講的function為何,所以到後來才真的搞懂
: : 到底遞迴是怎麼一回事,才算是有個完整的了解。若要說真的全盤通,
: 我印象裡國中就會講到 function 的意義,
: 不過大學離散裡應該也會講到才對。
: 外國大學常把離散當成 CS 基礎科目之一,
: 也是這個道理,
: 以 UCSD 的 CS 來說,
: 離散的課程代號就是 < 100,
: 像是 CSE 20 這樣,
: 屬於 lowerdivision,
: lowerdivision 很接近台灣所謂的「通識課程」。
個人偏見:這種東西搞不懂也沒什麼關係
至於程式功力,我還不滿18歲看到國中生劉燈有辦法寫出
.txt 轉 .exe 秀中文就知道自己有多渺小了
: : 也已經是在當兵的時候了。
: : 不經感嘆,雖然同樣都是努力,不過在台灣就是很容易接受到錯誤的資訊與情報
: : 在我當兵時,曾經有人說「失敗的人講的話永遠不可採信,只有成功的人說的話才算數」
: : 她的道理在於「因為失敗的人之所以失敗,是因為他跟本就搞不清楚自己失敗在那」
: : 在台灣,如果平時不多作功課,主動的去接觸世界上的成功人事(不能僅限於台灣)
: : ,多吸收成功人事的觀點,所謂的看書不是去看他們的自傳,因為這種會出書的東西
: : 說穿了就是為了在討好普遍的觀眾,自傳千萬不可看,而是要與他們親身交談去作了解。
: 我是認為失敗者的話雖不可全盤採信,
: 卻有一定的參考價值,
: 如果區分能力夠的話,
: 曾經風光一時但最後失敗的失敗者,
: 某些經驗也是可以參考的,
: 只是聽的人必須要具備一定的判斷能力。
: 這個說法倒是跟你說的沒有衝突,
: 就當成是一種補充吧,
: 免得使某些人有因人廢言的錯覺。
: : 以前高職的時候,每一天至少都會花三個小時以上在作coding,不過不是for job
: : 只是純碎因為 想到什麼東西,就可以寫出那個東西,因此而感到興奮。
: : 退伍出來工作也半年了,前三個月跟不會作系統分析的人作系統分析
: : (感觸是不知道那一天才能遇見真的SA,來作有用的SA,很多SA本身程式設計概念
: : 都還停留在procedural,然後號稱自己物件導向分析)
: 我在外面的時候也碰過很多這種人,
: 學校的學生頂多是因為「不知現實環境」而講出天真的話,
: 在業界工作的人和學校教授就很愛「號稱自己會xxx」,
: 從誠實的角度來講我倒覺得學生在這方面好多了。
: 工程跟商業不同的地方就在於,
: 很多東西會和不會都騙不了人,
: 隨便聊個三四句話就能知道這個人是不是半桶水或不懂裝懂,
: 所以真的不要隨便亂虎爛,
: 哪怕是虎爛技術強到神乎其技,
: 在資深工程人員面前也不過是個小丑罷了。
本公司幾個天王能力都遠超過我,但是他們的共識是
市場比技術重要(一堆11x各位的老學長)
: : 等到後三個月在作C++開發以後,才發現其實物件導向分析是什麼
: : 自己真的也是完全都不知道。
: : C++ 怎麼寫呢?? 寫了三個月才發現, 打從底子來說,自己跟本就是不會C++的人。
: : 應該要來整個全部重新學習,否則一直拿著錯誤的舊觀念再繼續學下去的話,
: : 跟本就不可能有學好的一天。
: : 但是說實在的,如何安排一個好的流程,來學好C++,自己其實也不知道到底要看什麼
: : 書,或者如何的來規劃。這方面的資訊可能版上很多,但其實自己也不知道那個才是
: : 對的,那個是可以follow的方向。所以真的要學習,就是一直作開發,有問題就發問。
: : 也別無其它辦法了。
: 進入業界以後才開始學會痛苦得多,
: 因為 C++ 就算是時間超多的學生大概也是得花個 2 年時間才行,
: 在業界的時候私人時間少,
: 看書的時間都斷斷續續的,
: 學習成效會取決於個人的記憶能力極限,
: 所以我反而不建議工作環境用不到的業界人士去花時間學,
: 在業界還有很多屬於在業界應該學習的東西,
: 在什麼階段以學什麼東西為優先是比較恰當的態度,
: 不然可能會因此而拖累到別人,
: 也會影響到自己給同事及上司的觀感。
: 如果說是工作上會用到的話,
: 那就只能拼了。
業界要有人重視才行,業界最重視的還不是學歷
就算C++耍的比別人精最後發現人家C都不太熟
薪水比你多一萬還不是幹得要死
台清交電資碩士才是王道,C++?等考上再學吧,
用實力證明自己很行這條路很苦的!
: : 像高職對於作硬體設計方面有一套很完善的流程,可以讓你好好學之後,會對整個
: : 設計非常清楚。而一般大學特別是在數位邏輯設計實務上特別不行,這時不得不佩服
: : 當初在歸劃這個學硬體設計的課程時,竟然可以把這麼複雜的東西,整理到
: : 國中數理程度的就能夠容易上手。這真的是相當不簡單的一件事。
: 現在的高職被改到很慘了,
: 已經沒我們當初讀的時候這麼王道,
: 歷史地理也被插入高職課程,
: 排擠掉了專業課程和實習課程,
: 電子學也剩下兩學期而非四學期了。
: 不過補習班老師的水準依然很夠力,
: 雖然鼓勵補習不是一件好事,
: 但補習班老師會認真思考「教學方法」,
: 而非傳統觀念所認知的「解題技巧」,
: 當初我補習班老師就從觀念開始打通,
: 從 BJT 到 FET 的計算全部只要背一條公式就能貫通,
: boolean 代數化簡完全不用卡諾圖直接在式子上消等等的,
: 學校的實習老師也屬於觀念推導型的,
: 強調會歐姆定律就可以處理實務上的一切問題。
: 而你所說的數位邏輯電路,
: 我覺得透過實習去抓感覺很重要,
: 將化簡後的代數式直接接成電路跑出來,
: 可以獲得成就感以及對理論的信任感 (這在類比電路上也是一樣),
: 在現在實習課被砍成這樣的狀況下,
: 多數學生所會的只剩下解題而已,
: 這還真的是蠻遺憾的。
: 其它的因為最後都會扯到邪惡的政治議題,
: 就不再講下去了。
我是硬體的東西學的太差才去跑軟體的,結果多年後又回到EE領域,
唉唉~
當年一堆人聊天也是講EE唸的好誰要來唸CS!?
: : 不過不知道像要學軟體開發的話,不知道有沒有這種一連貫的流程。如果真有就好了:(
: : 以C++來說,其實台灣應該本來有很好的環境可以培養,
: : 因為有聊到一位在西安那邊的人,碩士畢業後有去作軟體開發工作
: : Design Pattern是他們最基本在用的術語,他們的認知裡這是需要經驗但很好用的東西
: 把前人的智慧和心血丟在一邊,
: 本來就是很不好的行為,
: 有豐富工程經驗的人應該都能深深體會到這點,
: 其實台灣也有不少這種人存在,
: 只不過這是 % 數的問題,
: 所以台灣這種公司以及員工在「數字」上顯得較少。
: 加上對岸人口直接導致的菁英篩選率,
: 競爭意識也比台灣來得更加強烈,
: 自然而然就會演變成你聽到的這樣。
這種東西為什麼不受重視?
講難聽一點,我見過一堆領了不少股票賺了幾百萬上千萬的,
他們的電腦裡還不是一堆盜版軟體
唯有台灣社會認同軟體的價值, design pattern 才會被認為是
一門真正的學問
又或者說台灣軟體哪天創造的價值不輸給硬體,學校的軟工教授
的地位就不輸給搞半導體那票人時, design pattern才會被認為
是既愛迪生發明燈泡之後最偉大的發明
不過以台灣的淺碟文化,算了吧!
: : ,他們的認知裡認為,作程式設計的人,不能不會這本書。他們也很喜歡侯捷,因為
: : 大陸那邊的人其實英文並不是很好,翻譯的書藉對他們的學習帶來很的幫助,所以
: : 像侯捷翻譯的書,對他們來說實在是太有幫助了。後來想想,
: : 台灣的技術還沒被大陸覆蓋掉??,覺得還滿不可思議的
: : 後來想想可能是因為台灣的企業界所保有的 硬體設計 經驗知識
: : 是大陸那邊一時還無法取代的關係。
: 就我目前觀察到的是,
: 軟體方面對岸也尚未能覆蓋台灣,
: 原因不是在於工程方法,
: 而是賣弄小聰明這點台灣商人經驗比較豐富,
: 但小聰明究竟能撐得了多久,
: 還值得慢慢觀察。
: 在工業界,
: 商人的嘴炮得以實現奠基於工人的工程能力,
: 一旦工程能力到達極限,
: 嘴炮也會膛炸,
: 現在只不過是極限未到罷了;
: 而商業界則不在此討論範圍。
大陸有夠大的內需市場來培養本土軟體公司,台灣嘛..
政府宣佈刪減IT預算你看有多少公司跑出來哭爸,
可見得有多少公司是靠政府標案過日子
扣掉這些公司,還有幾家公司是真正做出夠水準的軟體
外銷賺錢?再對比台灣本土CS畢業生人數,各位能不擔心嗎?
不過也是見過不少人吃政府奶水吃得爽爽就是了
: : Google 跟 MS 在大陸徵才,月薪也只有給二萬元人民幣,
: : 位於北京中國科學院 ,一個少年班的,26歲拿到博士,可以自己一個人獨立開發
: : distributed virtual machine,薪水我有點忘了,好像月薪一萬還兩萬人民幣。
: : 什麼是少年班? 沈向洋 就是少年班的,
: : 反正 少年班 是 算是一種很猛的天才特殊教育 XD
: : 這些都是大概自己透過因緣際會的關係,實際獲得的一些小情報
: : 然後一方面又看到自己的C++,跟本就是直接稱的上「不會C++」還比較貼切
: 我看過北京 Intel 的 compiler 工程師寫出的 code,
: 雖然是 C++ 寫的但是跟不會 C++ 沒啥兩樣,
: 之所以沒慘死是因為當初 SGI 的人寫得好;
: 你說的 Google 跟 MS 徵到的人其能力我也見識過,
: 論平均程度的話,
: 對岸軟體方面的工程能力跟 10 年前的台灣不會差很多,
: 所以會開那種價位徵才我倒是覺得頗合情合理的。
: 對岸的超強技術份子有些集中在中央軍委搞的國防科學技術大學,
: 過去在跟(嗶----)合搞 C4ISR 系統時有去做過大量交流,
: 深深發覺到我們的中正理工學院和國防科技人才根本是個(嗶--),
: 但是這也是正常現象,
: 雙方投入的資金差太多了。
但是台灣半導體有國際水準?為何軟體是這種水準??
: : 說真的自己跟本不知道 繼承 要如何使用
: : 頂多只知道 用 concrete class去繼承 abstract class而己
: : 而且我只會用像大大您說的 像這樣子的寫法
: : class Derived {
: : ItemBase *first;
: : ItemBase *second;
: : ItemBase *third;
: : ...
: : };
: : 很多以前在金石堂買的C++書,所說的那個繼承,到最後都會發現
: : 為什麼都用不起來。到底繼承的精隨在那邊,
: 在於要定義一個 family 的時候,
: 不過必須先理解 Dependency Inversion Principle (DIP) 再下手,
: 以免出現慘案。
: 前面提到的 reuse 純 binary 形式的 library 也是一例。
: : 現在想想還真的不知道何時才需要concrete class 去繼承 concrete class。>"<
: 盡量不要這樣搞,
: 其實我發現一堆 MS 環境的 IDE 在自動 generate source code 時,
: 都已經擺明是用合成方式 reuse 元件了,
: 結果一堆奇怪的小朋友明明常年都在用,
: 卻都沒有得到啟發,
: 問他們為什麼都跟我說有看到但沒去想那麼多。
: : 很糟糕,繼承它有這麼多的規範,有friend,protect,public,private什麼的
: : 以前都從書亂看看來的,現在等真的上戰場時,發現怎麼都不知道怎麼用
: : 而且之所以用,也常常只是為了要讓 在 語法 合法, 而 語意 上常常是無意義的
: 以非正規角度來說,
: 這些東西是「為同事和後輩著想」用的,
: 只要思考出發點是在這裡,
: 就比較不會感到迷惑。
: 如果你有閒的話,
: 可以打開 CVS 的 web-front 追蹤看看,
: 你的同事過去用你的東西有沒有發生過什麼問題,
: 這是對於比較內向的人蠻實用的技巧,
: 不過前提是所待的團隊有正確的 CVS 使用觀念。
: 另外,能加上 const 的地方就盡量加上 const,
: 尤其是 member functions 的 prototype 後面那個,
: 只是要 traverse container 的 iterator,
: 最好也是用 container_type::const_iterator,
: 不要為了一時方便自己而造成整個 team 的負擔,
: 遺憾的是聽不進去的人就是聽不進去。
: 這些東西跟 OO 其實比較無關,
: 這種封裝的概念在純 C 時代就有了,
: 也就是 static 跟 extern 在 global space 上的用法,
: static 在 module 上有 private 的意涵,
: 而 extern 在 module 上有 public 的意涵。
: 至於 protected 和 friend 則是支援 ADT paradigm 的程式語言,
: 為求效能和方便性上的變通所做出來的。
: 如果你不知道我在說啥,
: 可以請教一些 80 年代就在公司工作的前輩。
: : 其實還蠻想要把以前學的C++ 概念重新刷掉,
: : 整個把自己當作白紙從新來學 。 但又不知道
: : 該如何去判斷 那個 書可學,那個書不可學。
: : 或者那個書適合,那個書不適合看。
: 可以從 C++ 的兩本聖經本下手,
: 如果想重頭的話,
: 不過如前所述,
: 因為你現在已經在業界,
: 個人建議是有需要才學。
: : 見笑了 >"<
把C學好就很夠用了,在台灣會好幾種程式語言還不如
去多學幾種MCU,MPU
旁邊的老人跟我抱怨現在願意寫asm的人越來越少,拜託連C都
越來越少人會,結果一堆廠商找不到熟C的人,真是太爆笑了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.33.4
討論串 (同標題文章)
CSSE 近期熱門文章
PTT數位生活區 即時熱門文章