


推 SKII588: 老人來推 07/10 07:22
推 zanyking: 推,我們那個時候程式設計都是自己學的,老師只負責透過 07/10 07:25
→ zanyking: 考試當學生,我自己學也是後來畢業後去資策會上課然後 07/10 07:25
→ zanyking: 自學的,其實『差在哪?』還得看時間,是現在還是十年後 07/10 07:26
→ zanyking: 答案都會很不一樣 07/10 07:26
我當年那間學店進去的前兩年,資工系只有一個資工背景的老師,其他都電機硬體背景。
唯一一個資工背景的老師剛畢業當完兵出來,專長物件導向,擅長 Visual Basic。
是個很開朗豪邁又愛登山的交大純血土博,本身看起來也是在一邊教一邊學。
這個老師 C 跟 C++ 坦白說不太行,但他很賣力在教學上,對於在學店教學有一套見解。
他認為既然學生程度都跟不上,而且對寫程式沒有興趣,不如不要硬把整本書上完,
而是根據學生總體程度來決定要教多少,起碼把前面基礎部分紮紮實實打穩。
至於程度比較高或者對程式設計特別有興趣的學生,可以日後自己慢慢自修後面的部分。
所以他算是極少數會手把手教學生程式的老師,只可惜他也是新手,在我那屆成效有限。
當年的時空背景是這樣的,教育部不知道為什麼把資訊科跟電子科課程弄得差不多,
所以雖然當時我資訊科出身,但主科還是基本電學、電子學、數位電子學等等的東西。
程式設計的課幾乎沒有,計概教個 Quick Basic,後來勉強有門課教 Visual Basic。
然後數位電子學後半實習因為牽涉到 x86 組語,所以也勉強教了一下。
再來就是實習課,當年已經縮減成一週八堂了,不過也是一週有兩個半天泡在實習工場。
整天在那邊插麵包板,玩電源供應器跟訊號產生器,偶爾意外炸炸電容跟 SCR 等元件。
所以即便是高職資訊科出身,興趣跟背景其實都跟電子科沒太大差異。
國立科大當年只有台科、北科、雲科、高雄第一、高應大,其它都還是技術學院。
這幾間科大的四技部全部都只有電子工程系,沒有資訊工程系,只有私立朝陽科大有。
然後該死的教育部,在聯考也是把資訊科跟電子科併在一個「電子類」組考試。
唯一的資訊工程系也是被夾在眾多電子工程系的志願裡面,分在電子類組裡。
換句話說,我當年的同學幾乎都是高職在讀電子科,只是分數上不了國立科大電子系,
剛好成績落在朝陽科大資工系,又不想去更差學校的電子系,只好勉強跑進來讀資工。
換句話說他們專長就是電子學跟電路實作,研究所志向是電子工程系,根本不想寫程式。
所以他身為唯一一個資工背景的老師,面對只對硬體有興趣的學生,也只能那樣教了。
在那環境,對於極少數真正對資訊工程有興趣的學生,真的就是什麼都靠自學。
不過當年也問了一些在普大資工系唸書的,看起來他們的教法也沒好到哪去,
比起只會隨便亂教還有硬要一學期上完整本書的老師,這老師某方面來說也比較負責。
但是以嚴格角度去審視的話,要說是過份放水讓學生容易 pass 也是可以啦。
雖說那間現在是學店,當年聯考也是要全國排名前 2.9% 才能進朝陽資工,
同學不能說是素質差,只能說沒興趣真的沒辦法,偏偏他們又不願選系不選校。
其實我也明白想要選系不選校有困難,會有來自家長跟學校的壓力。
譬如教育部剛試辦推薦甄試,要先選好學校再考試和面試,學校選定就不能改。
所以當時我跟家人研究了一下,還是決定選有興趣的資工系比較好,
雖然高三模擬考已經穩站班上前兩名 (我們資訊科是竹苗第一志願),
科裡老師對我期待不小,看到我志願寫私立科大,馬上把我叫去辦公室拍桌。
我對當時的印象還頗深刻的,一進去馬上嗆我報這間現在可以馬上開始去玩,不用讀了。
還好科主任後來還算明理,加上家人那邊也事先搞定了,
而且我本來從第二志願高中往高職跳,就已經處理過類似狀況的經驗,
學生跟家長說法一致,意志又表達得很堅定,他也只能揮揮手讓我滾去朝陽了。
如果無法獲得家長支持,選系不選校這種舉動還會有家庭革命的問題。
系上少數對軟體方面有興趣的同學,大都採取自力救濟模式。
省錢的就是去圖書館借書,不省錢的做法就是像我這樣每年回新竹書耕大規模掃書。
我大概一年就過年回新竹老家幾天,然後拿五六千塊去書耕選書搬書回霧峰。
那是侯捷(侯俊傑) 這個譯者還很活躍的年代,當年程式能力主要靠讀他的譯作在強化。
再來就是延續高職時代的習慣,每年讀完歐萊禮全套中文書籍,每年新書全買全讀。
讀這家的書主要是我高職時代還有兼網管,算是另一個興趣,就一路培養起來了。
喜歡微軟平台的同學,當年也有很多微軟的中文叢書,常看到他整天抱著那些磚頭在啃。
雖然一開始是對於師資缺乏還有學校少教這方面很不平衡啦,
但是後來去中字輩學校讀碩,去四大讀博,發現其實全台資工系都差不多。
想想也是,當年科大老師也都是普大出身,課程都複製普大資工系,
他們過去在學校是怎樣修課,當年就是怎樣在任教的地方設計課程,也不意外。
說到底,程式能力在資工系就是要靠自學,靠自己去掌握所有可用的自學資源。
我那年代台中還有揚業可以現場選書,這家在逢甲那邊,後來好像也倒了。
推 joejoe14758: 推 07/10 08:21
推 snaketsai: 推Andes大大m(_ _)m 07/10 08:32
推 yamakazi: 資工系學四年大部份業界用不到啦 我去資策會加上網自學 07/10 08:36
→ yamakazi: 是業界精髓 三個月抵四年 07/10 08:36
是啊,畢竟我還有一個老媽當年特地跑去美國待產把他生下來的堂哥。
我在台灣學店唸書的時候,他在 UCLA 讀電機,交換一下資訊就會發現台灣業界真的慘。
甚至我讀科大前兩年 embedded system 跟 SoC 還沒紅起來的時候,
我跟科大班導說我從高職就立志走 compiler 這條路,他聽到時差點沒從椅子上跌下來。
我記得直到我畢業前,那位老師還是跟我苦苦相勸,說那是一門已經如一灘死水的學問,
台灣業界沒人要,出去跟人家說你專長是 compiler 會找不到工作等等,聽到耳朵長繭。
不過當時的時空背景也的確這樣,即便這東西長在 CS 技能樹最尾端,業界就是用不到。
後來就如同大家知道的各種小型 CPU 設計開始紅起來,這門專業才重新被重視。
但儘管如此,台灣現在也依然沒幾家有這方面專業的需求就是了。
推 snaketsai: 不過以前計圖不是必修,我是資工組畢 07/10 08:42
其實我也有點訝異,只能說時代變遷得頗快。
推 fig498: 感謝認真文 07/10 08:49
推 becca945: 把C當母語的概念 07/10 08:58
推 BigHeadDoggy: 推 07/10 09:10
推 kaitokid1214: 推好文 07/10 09:11
推 BigHeadDoggy: 『其實資工學生上課的時候也很絕望啊』 QAQ 07/10 09:19
→ testPtt: 我想說那些課大家都只求60分 稍微會寫幾百行code就很強了 07/10 09:21
→ testPtt: 畢業有一大半課程會忘光 老師真的要電人大家都不用畢業了 07/10 09:23
我大三開始系上引進了資工專長的老師,真的就是隨便教隨便當。
和高職那些非常懂得怎麼教學生的老師相比,他們相對不用心在教學上。
所以我對於這件事十分不爽,課堂上只要我聽不懂,我就舉手問,我不懂就別想上下去。
私立科大一學期學費要五萬多,我花錢花時間坐在那邊,不是為了聽他們唸書商投影片。
不自己備課準備投影片,拿書商投影片照著唸來上的,我都很賭爛,聽不懂就問給他死。
我大三時因為很多國立技術學院升格科大,學校排名一落千丈,學店化很嚴重。
所以我也知道那些老師為什麼會跑來這裡任教 (家鄉地緣和友情客串等因素除外),
對於不得不來到這學店就隨便教學的老師,我不會讓他那麼輕鬆混鐘點費。
我大四的那年還見識到一大奇景,一年級學弟上機考前在拿著列印出來的程式碼死背。
我沒注意教他們程式設計的老師是誰,怎麼會把程式課教成這樣。
當時已經在忙著準備研究所考試了,沒有辦法再去學弟的班上旁聽瞭解狀況。
推 ian90911: 推優文 07/10 09:35
推 sarafciel: T大推個 其實以前資工組還有組語是必修 我畢業那年好像 07/10 09:41
我有看到交大還有微處理機系統與實驗啊。
以前這個是順便教組語的,只是當然不是 x86。
如果這門課沒有組語我也不太意外,碩班時期就看到很多國外廠商在用 C 和 DSP C。
後來還看到 DSP C 被標準化成 Embedded C,記得是荷蘭那家 ACE 在推很大的玩意。
現代 compiler 研究都集中在各種最佳化演算法,生出來的組語效率越來越強,
在比較先進的系統上手刻組語也不太實際了,BIOS 那邊 UEFI 普及後也是整個 C 化。
推 TitanEric: 本科系淚推 07/10 09:42
推 tataTangQQ: 資工本來就很大部分跟IC設計有關 07/10 09:42
→ tataTangQQ: 現在一堆人只想到寫程式 07/10 09:43
→ sarafciel: 有做一波課程調整 現在這個學程表已經是輕減過的了 07/10 09:43
當然,以前塞那麼多課程根本是要大部分學生跳樓。
現在的小孩子那麼寶貝,繼續那種高壓課程會讓家長去大學抗議吧。
推 Argos: 簡單來說就是資工系教授的問題 07/10 09:44
也不是,只是程式能力在資工系不是主軸,教授覺得那跟裝修電腦一樣是你該自學的。
推 cphe: 組語現在不是必修了嗎?同意t大講的資工系的程式課其實很少 07/10 09:45
→ cphe: 其他專業課程來說,程式就是一個工具…實現的工具而已 07/10 09:45
其實只要學通一個程式語言,學其它的都很快,只是對 library 的熟悉度差異而已。
資工系是個很奇妙的東西,你從一門專業深入到根部,摸隔壁的領域會很快觸類旁通。
程式語言之間姑且還算同領域的東西,基本上你摸熟一個,另一個就是根據差異學習。
把 C++ 學通,TMP 那邊也弄通的話,就算遇到 functional language 也沒在怕了。
現在各種高階語言群魔亂舞,其實也不一定要從 C++ 硬闖了,很多舒服開心的路線可選。
推 vi000246: 好認真的文 07/10 09:46
→ cphe: 會認為讀資工系不重要,那是台灣的現況就是這樣,碼農為主 07/10 09:46
→ cphe: 如果除了基本寫程式卻用不到深入觀念的工作,本科非本科的確 07/10 09:47
→ cphe: 沒有很大差別 07/10 09:47
所以原 po 那種想法我覺得雖然自信過度,但也不是完全沒機會跟本科系的平起平坐。
只是要找到一個對的地方,然後他自身真的夠努力自學吧。
推 tataTangQQ: 寫軟體也就最頂端身價不菲,進豬屎還是主流吧 07/10 09:50
推 gravity067: 哇 鉅細靡遺 認真給推 07/10 09:53
推 BBSealion: 推這篇!講解清楚 07/10 09:55
→ sarafciel: 回去查了一下剩世強哥有開 所以應該是變選修了沒錯 07/10 10:03
→ pttworld: 大學的程式課程是助教在實習課帶的,教授走理論 07/10 10:14
更早期有講師的時代不是這樣,可惜台灣的評鑑制度把講師趕跑了。
推 powenyu: 推大神 07/10 10:19
推 senjor: 看完這篇覺得我在幹嘛,當什麼碼農...Orz 07/10 10:24
推 suninrain: 推~老師上課都是教觀念、基礎的,然後就說下周上傳作業 07/10 10:50
推 anr2: 朝陽同班同學 不得不推 07/10 11:02
推 anr2: 不過時代不一樣,現在學校太多,機會少,學歷還是必要的門 07/10 11:05
→ anr2: 票 07/10 11:05
→ anr2: 只能說這就是人生,相同條件不同時間點,能否發展還是很難 07/10 11:08
→ anr2: 說 07/10 11:08
好久不見,從畢業那天起就沒見過了吧,15 年了。
其實還好,有些在學生時代就嶄露頭角被企業看上的還是不太需要學歷。
只是那樣就有不少運氣成分,就是看上他的企業後來會不會倒,還有發展如何。
在網路和開放原始碼社群積極活動的話,還是很有機會被看上。
當然其實能出國讀 CS 和就業是最理想,台灣產業要升級還有很長的路要走。
花大把時間跟心力讀 CS 結果就業後用不到,其實真的是很可惜的一件事。
推 bnd0327: 認真文推 07/10 11:12
推 senjor: 其實最怕的還是領域不夠專,很困擾 Q_Q 07/10 11:21
當年的說法是資工重視專精,資管重視廣度。
學習階段不要太貪心去無限延伸興趣,鎖定一個目標專精的話,其實很穩。
不斷學習理論和實作,一直反覆渡過各種天險,即使同是資工人也很難搶你飯碗。
資管就偏向雲遊四海增廣閱歷那種性質吧,什麼都要摸一點,會比較有幫助。
兩邊的發展模式差異很大,不要把它們搞混的話,累積的時間會變成資本。
雖然資工最終難免需要跨領域,但那都是先專精單一領域之後的事了。
你把一個領域鑽研到精通,有時候走去隔壁領域只是回頭推開曾經路過的一扇門。
所以一開始真的不要急著四處亂開門,那只會讓你陷入複雜的迷宮之中。
推 lovdkkkk: 推 07/10 11:27
推 eggy1018: 推 07/10 11:48
推 j6309355065: 推 07/10 12:19
推 chongruei: 推個認真文 07/10 13:16
推 bndan: 只想到寫程式那是因為 軟體的世界舞台已經被架起來了..在舞 07/10 14:47
→ bndan: 台上秀的那些人 顯性特性只會看到"寫程式"... 07/10 14:48
推 qwer911: 淚推資工過來人 教授隨便講 作業自己練 07/10 16:46
推 CityRanger: 推 07/10 17:13
推 sharku: 推 07/10 17:22
推 peanut97: 我交大資工的,的確程式都是被要求自學為主 07/10 19:08
推 ku399999: 這回答太強了 07/10 19:59
推 LinuxKernel: 這篇正姐 07/10 19:59
推 Eric0605: 推 07/10 20:01
→ cha122977: 看完圖表後覺得為什麼要修物理/化學/生物 07/10 20:09
推 HowLeeHi: 推!其實我對資工為什麼要學化學生物有點覺得奇怪就是了 07/10 20:34
→ HowLeeHi: 物理如果之後要往電子/電路方面走的話還算是有關係 07/10 20:34
推 senjor: 生物其實在研究所這邊有生物資訊的領域就是 07/10 20:57
→ sarafciel: 物化生是三選一 算是第二個domain knowlegde吧 07/10 21:12
→ sarafciel: 不過裡面跟資工最有關的真的就只有物理啦XD 07/10 21:13
這個雖然讓我有點納悶是不是教育部硬塞的,但硬要冠個理由也不會沒有啦。
我讀科大的時候一年級也有個讀完就用不上的電子物理。
要說是為硬體路線鋪路,高職的電子學和數位電子學就比電子物理關係更密切。
高職電子學曾經也是非常紮實的課程,從 PN 接面材料性質開始講,一路到運算放大器。
最後面還有 AM、FM 那些通訊相關的東西,全部都有教。
但是後來被教育部砍了後半部,取而代之是強塞了一堆國英數歷史地理物理化學。
高職的電工數學也被廢除,微分方程、複立葉、拉卜拉斯那些電路應用全部被砍光光。
拖到大學工數才摸,給不擅長教學的教授上,本來可以躺著過的工數都會變得超痛苦。
有沒有教育學分的老師教學能力差距很大,高中職老師會專心鑽研幫助學生理解的竅門。
但是專心在發論文升等和做計畫賺錢的大學教授並不在意這些,什麼都會被他們教難。
工數和一些像是計組計結之類的重大科目常被排在大二,因為晚學壓縮到學習時間很虧。
現在科大一年級的新生早就連偏微分都不會,電路實作因為實習課被借去上別的不熟,
也完全沒學過運算放大器,矩陣也沒學過,早高中生三年的優勢早已蕩然無存。
我也不知道教育部的官員到底腦袋在裝什麼東西,不過聽說大安高工還有堅持在上就是。
硬是在大一塞一門電子物理,感覺有點像是在補救那些腦殘政策,結果更沒意義。
普大那邊會這樣排課程,往好處想是將原本高中學習的基礎收斂到專精領域的起點去。
但是不是真的有做到這個目的及發揮到這功能,我就不是很清楚了。
推 Harlequin727: 推 07/10 21:44
推 tkhan: 推,只有大一計概教過C,其他的課要寫的程式用的到語言都 07/10 22:12
→ tkhan: 是自己去學,老師只會叫你哪時要交作業.. 07/10 22:12
其實真要強迫老師發揮教學功能也不是不行,就 office hour 殺過去問到底。
當年我班上那個第一名畢業的原 8+9 同學就是那樣問,無論如何就是問到懂為止。
畢竟人家回頭唸書就是為了找好工作養家養老婆小孩,沒學會對他來說是攸關生存的。
那股求知的衝勁我在後來讀的幾間學校都沒見過,很慶幸當年有這樣的同學在班上。
值得留意的是,有些教授雖有風光學歷跟資歷,但是就是不擅長一對多教學。
如果變成一對一教學,他就有辦法把你教好,office hour 真的要善加利用。
本來我都是一副你沒在課堂上把我教會就是你欠我的態度,後來也沒很堅持要課堂上懂。
如果 office hour 問過幾次發現成效不錯,課堂上我也不會那樣問到像在妨礙教學進度。
因為學校理論大都只有教 1/2 到 1/3 本書,所以我也是有去補大碩。
當年台中大碩經理很夠力,是全部科目由名師面授並親自留下來解答問題。
後來幾年才發現那是很奢侈的事,很多縣市的學生只能上 TKB,不見得能問到本人。
黃子嘉過世以後我也不清楚後來去上課的人怎麼學離散的,當年真的是可以隨便問到爽。
有老師可以問到爽其實是非常幸福的事,但無奈很多人當學生的時候不懂。
特別是數學的東西悶著頭研究三週搞不定,老師是可以三分鐘講到讓你懂,差別很大。
推 yenru: 推 07/10 22:23
→ xatier: 寫 compiler 好辛苦捏 07/10 23:04
還好啦,學生時期的前置條件多了一點而已。
有興趣的話那些都不是問題,沒興趣的話的確會過得很慘。
推 sc113943: 我學校組語還是必修啊...超痛苦 07/10 23:36
學組語就是要先認識硬體本身,然後就只是一個口令一個動作,和當兵一樣單純。
你叫它做什麼,它就會做什麼,也不會私下幫你做一些額外多餘的動作 (外部輸入除外)。
上課用的平台太高階的話,可以另外拿 8051 來練,單純很多,頂多再加顆 555。
一些老 BIOS 工程師反而很愛組語,他們覺得 C 是很不受控制的東西。
然後他們可以把 C 寫得很組語,相關產業的朋友給我看過,單 function 到底也常見。
對以寫組語為業的,他們覺得程式不能有任何不透明的地方。
像是 C 寫一行就會變成好多行組語的現象,他們會很沒安全感,像腳踩不到地一樣。
以前也有一段時間在幫這類朋友渡過這個難關,有很多感觸跟心得。
推 w199381: 看完受益良多 真心感謝認真文 07/11 00:19
推 s12358972: 什麼?是學長!推 07/11 01:12
推 jinmin88: 我記得還有修過數位訊號處理 07/11 01:32
推 dannypsnl: 推 07/11 01:46
推 HowLeeHi: 不過C算是最接近asm的高階語言了(或者說中階語言) 07/11 06:09
推 childlike12: 資工科課程像電子科,是因為當時有矽導計劃吧 07/11 06:16
我讀資訊科的時間是 1997 年 6 月,矽導計劃應該是我大三開始才聽到的。
目前任職的這間公司是矽導計劃催生出來的,成立的時間點是 2005 年。
推 HowLeeHi: 題外話,高職資處科也搞得很像商經科會計科… 07/11 06:19
有聽說過,當年有個去高應大讀資管系後來自己開公司的朋友當年是資處科。
他的程式基礎根本就是從國中開始自己打的,學校課程根本沒幫到他什麼忙。
說起來時間過得真快,當年整天在網路上寫東西亂搞的夭壽國中生已經快變中年人了。
推 dapple: 只能推了y 07/11 10:15
推 Ekmund: 離散那段很有感觸啊...很多落入邏輯胡同的東西,龜個幾天 07/11 11:50
→ Ekmund: 都不一定有進展,但實際上往往也是前人走過的某段路,問一 07/11 11:50
→ Ekmund: 下就有了。跟寫程式一樣,不一定每次都要自己重造輪子。 07/11 11:50
我想這就是本科生跟非本科生的最大差別吧,至少有整整四年可以問到爽。
資工人普遍又會讀碩班,讀到碩班發現自己不足之處還能再利用學校資源補回。
學分費砸下去就有整整一學期的時間有老師可以問,
何況有些學校在修滿學分以後再修其它的科目是不用學分費的。
除了專業技能,我也利用了學校通識資源在學生生涯最後階段把英文能力補上了。
雖然從小就靠兒童主日學教的簡單英文勉強看懂 man pages,但意義一直都很模糊。
國中高職的英文雖然有改進閱讀方面,不過高職英文終究是高職英文,太簡單了。
即便學校刻意派高中部老師來上英文課,也增加英文課時數,但難度仍不及國三水準。
我在高中部待的那一年上英文課學到的東西,根本海放高職那三年英文課。
難句結構拆解的部分,我拖到博班才一邊在外面補托福一邊在學校修英文課補回來。
其實長大以後從基礎重新開始學文法就沒以前辛苦了,我也不知道以前我在幹嘛。
自然語言雖然比程式語言複雜不少,但其實也就例外規則比較多而已。
雖然我不知道資策會在上什麼東西,但原 po 說他想靠資策會上課學,我就覺得不錯。
儘管沒有本科生有整整四年時間可以問,但也得知道要問,不懂自己權益的學生太少了。
自己報名去外面上課,只要拿出積極的態度去求教,也不是不能打趴混四年的學生。
→ sarafciel: 回T大 微算機實驗確實有寫組語 不過專門的組語課還會講 07/11 11:50
→ sarafciel: calling convention跟大小端序之類的細節就是 07/11 11:51
這一大堆東西統稱為 ABI (Application Binary Interface) 規格。
一般拿到一顆處理器,它的 ISA 文件或 programming guide 就會寫明。
單一組語課大概最多就學到一個平台的 ABI 吧,換到其它平台就要有舉一反三的能力。
這樣看來大概只能從編譯器的課程補回了吧,編譯器再被拔掉那就比較頭痛。
編譯器課程大都會拿個像是 MIPS 或 ARM 的平台當目的平台,要輸出那個平台的 ASM。
只看必修課的話最後的機會就是在這補了,畢竟 C 跟 ASM 溝通是頗重要沒錯。
不過現在很多人都靠 inline assembly 了,很少人會另外再寫個純組語 function。
→ sarafciel: 儘管compiler越來越強 我還是覺得資工出身的要有高低階 07/11 11:55
→ sarafciel: 通貫的視野跟企圖心 不然寫底層的容易見樹不見林 07/11 11:57
→ sarafciel: 寫高階的容易見林不見樹 07/11 11:57
那是當然,資工出身的在學 C 時就要會去看 compiler 輸出的組語。
我也一直很強調要會分別手動操作編譯器、組譯器和連結器,搞懂那些在幹嘛才叫會。
不過這些東西對大學教授而言似乎都是玩家範疇,不一定會想要教,還是得靠自己。
理想上修完計算機結構,起碼寫一行 C 要知道 datapath 上的訊號怎麼走了。
不過學校教授並不會做出這種要求,自我要求不足的話就會在中間出現知識斷層。
現在工作上偶爾要去看 RTL simulation 的 waveform 來找未預期的 hazard 發生原因。
雖然說直接丟給 HW 看也可以,但是那邊好像隨時都在忙,與其去等不如靠自己。
畢竟跨部門的東西最好先釐清問題責任歸屬,免得最後被抓到是自己的問題丟臉。
某方面來說這類能力反而才是當年資工系成立的意義吧,也就是成為軟硬體之間的橋樑。
就算不能親手解決這類問題,起碼也要有分析和釐清的能力,不然真的就是白讀。
從小到大常聽到很多人會開玩笑說看得懂機械碼的才是真正的專家,
但其實機械碼經過 decoder 分流以後在每條線的流向及 mux 的選徑才是重點。
推 stayfantasy: 推 版大能否分享debug與log日誌使用的心得嗎? 07/11 12:36
這題目太大了,窮舉不知道可以寫幾本書。
推 starzodiac: 是t老師耶 哇! 07/11 13:19
推 pig0038: 感謝分享,推一個 07/11 13:38
推 xatier: 推懂底層要整套編譯組譯連結都要摸一遍 不過小的覺得還是 07/11 15:21
→ xatier: compiler 本身 middle end 到 backend 這段最有趣 XD 07/11 15:22
現在 compiler 領域的主要研究也是在這了,畢竟創造語言這檔事比較沒搞頭。
middle end 和 back end 主要分別在做平台無關和平台相依的最佳化,
裡面通通都是數學、圖論和演算法,資工所考科的東西幾乎都可以砸進去玩。
這領域算是極少數可以所學即所用的東西了,完全不會有大學白讀的感覺。
目前 GCC 7.2 這兩段加起來已經有 300 道左右的最佳化工序。
下 gcc -fdump-tree-all-details -daP -S 可以看到中間的完整流程輸出,
參數裡的大 P 可以在每道 assembly code 上印出對應的 back end 中間碼,
那是一個叫 RTL (Register Transfer Language) 的東西,
去官網找 GCC Internals Manual 可以查到它要怎麼讀。
這指令輸出的 <數字>t.xxx 檔就是 middle end 每一道最佳化的結果,
<數字>r.xxx 檔就是 back end 每一道最佳化的結果,
xxx 是那道最佳化名稱的簡稱,一般會和 -f<xxx> 選項相對應 (偶爾有例外),
man gcc 搜尋一下的話可以看到那道最佳化的作用大概是什麼。
實際上一些 GCC 的 power users 也會看這些東西,它不單是給做 GCC 的人看而已。
因為在 embedded system 上最佳化很受重視,看懂它就可以知道哪個步驟沒做好。
所以 GCC 的 BugZilla 上會看到一些不是做 compiler 的在貼這個回報最佳化問題。
推 Void956: 學長 推一個 C++ 第2母語 XD 07/11 19:29
推 Void956: MSDN 是教我最多東西的老師 07/11 19:33
→ Ekmund: 樓上 那是第一個 未來教最多的就是StackOverflow了 07/11 19:57
推 Void956: 另外可以問一下 現在學那方面的東西比較好拿到較高的薪水 07/11 20:07
→ Void956: 或者是那方面的產業? 07/11 20:07
薪水多寡方面我也沒注意,但這科系出身一般都會喜歡去M之類的不是嗎?
雖然需要點時日,但慢慢上去撐到 E8 或 E9 還是有可觀的數字。
非本科系的話樓下推文說了。
推 asleisureto: 現在喔,當然是學前端,板上一堆兩年破百的前端工程 07/11 21:18
→ asleisureto: 師 07/11 21:18
推 senjor: 我都後悔沒學前端了,幸好還來的及往全端走 (ry 07/11 22:38
推 zonppp: 專業回文...推 07/12 11:50
推 pan1234: 往事歷歷在目,我應該比你早一屆,不過不同校,我是私大資工 07/13 10:52
→ pan1234: 那時唯一有學程式語言的課是大一的計算機概論與大二組語 07/13 10:53
→ pan1234: 大一上老師教pascal(應該沒人聽過),大一下老師教c++ 07/13 10:54
→ pan1234: 因為要教OO,結果出社會大家都在寫JAVA,C#,JS,全得再自學 07/13 10:55
→ pan1234: 不過老師那時就講得很白,他只是教邏輯思考,程式語言其次 07/13 10:56
→ pan1234: 以前不懂,有點年紀與經驗才明白邏輯思考才是最重要 07/13 10:57
→ pan1234: 需要訓練的 07/13 10:57
雖然那老師說的沒錯,只是我覺得他主要是拿來當成合理化自己不學新東西的藉口。
大學教授終究還是教師,吸取新知教育新一代的學生其實還是義務之一。
與其用一些已經用不太到的工具來教育學生,讓學生一邊學觀念一邊學新工具會更好。
→ pan1234: 另外,我上大學前完全不會電腦與寫程式,在大學也大多自學 07/13 10:58
→ pan1234: 學得很辛苦,但是還好基本功夠扎實,之後出社會能跟得上 07/13 10:59
→ senjor: pascal怎麼會沒人聽過~ gwbasic才沒人聽過吧 (X 07/13 12:11
的確不可能沒人聽過,Delphi 本身就是 Object Pascal,養活當年不少五專生。
那個年代會點簡單的 ADO 元件操作資料庫和 Delphi 就能宅在家接案接到吃飽飽。
另一方面,Borland C++ Builder 的 VCL 元件庫也是名噪一時 (以 Delphi 製成),
因為當時微軟推出的 MFC 實在難學門檻高,導致也有不少人靠著 BCB 在謀生。
最低學歷我看過中輟生,被公司用五萬以上薪資雇用去用 BCB 開發資料庫相關程式。
事實上問他們為什麼 sscanf() 裡面變數左邊要放 & 都說不出來,只是依樣畫葫蘆抄。
雖然那個機會跟價碼也是那個年代才有的事情,就好比 90 年代靜態 HTML 每頁幾千元。
推 k387259: 認真文 07/13 13:53
推 HowLeeHi: gwbasic怎麼會沒人聽過,Ballerina,Julia才沒人聽過吧(誤 07/13 15:40
推 bcew: 推解說 07/13 16:12
推 dogalan: 謝謝分享 07/13 17:37
→ xatier: 然而小的只略懂 -mllvm -print-after-all QQ 07/14 17:03
還要加上 -mllvm -debug 才能看得比較清楚喔。
LLVM 的缺點就在於沒像 GCC 那樣拆一個一個檔案給你看,
很多除錯輸出方面也都還不夠成熟。
特別是 back end 那邊沒有一套統一的演算法框架,都是各目的平台各寫各的,
然後也不是每個維護者都會細心去把過程裡的重要資訊輸出,
就會變成等同只有 -print-before-all 和 -print-after-all 的資訊可看。
GCC 常常是只要寫一些 patterns 告訴 back end 說目的平台支援什麼樣的指令,
然後演算法幾乎都是各目的平台通用,只是演算法或演算法內的部分會根據特性做開關。
因此很少聽過 GCC 的 back end 還需要另外特別寫新 pass,
但是卻常常會看到 LLVM 需要針對某個目的平台特別寫一個全新的 pass。
加上 LLVM 是 BSD License 的緣故,某個目的平台就算做出什麼新 pass 也不用放回去。
所以目前放在官方檔案庫的 back end 一直都是相當於入門版的等級,
而所謂的標準版和專業版實質上都暗藏在各家公司內部沒有放上去。
事實上以現在的框架來說,就算真的某個目的平台新寫的 back end pass 被放上去了,
其它目的平台也仍然必須照著那個邏輯重寫一個才行,無法直接使用它。
這也是當前 LLVM back end 的一大缺陷,只是大家都藏私沒去戳到,所以很少人關注。
推 louis117228: 推 07/14 22:26
推 s12358972: 那個交大土博的老師...姓廖? 07/15 04:24
對啊,當年我們班上資工的主要課程幾乎由他一手包辦。
但不得不說他對我們這屆放水放得兇,可能他覺得自己也有沒教好的責任在吧。
畢竟絕大多數主科由他一人扛下太不合理了,他也不可能專長那麼多科目。
具體來說是第六屆進來以後師資才有明確改善,但學生素質當時已經不太行了。
當年長億集團我一入學就是快死的狀態,導致那間私校完全沒有背後財團支援。
那批新進的本科系背景教授現在也沒幾個在了,畢竟薪資和福利實在留不住人。
後來王永慶技術學院升格,下面的統一化工科大又虎視眈眈拼命砸錢,朝陽也備受威脅。
不過剛剛看了一下統一化工科大的資工還是沒超過朝陽,但王永慶科大就超過去了。
※ 編輯: tinlans (122.116.164.123), 07/15/2018 08:21:34
推 ykjiang: 我電機轉資工的,程式確實自學的,要人教幾乎就沒天份的 07/17 10:38
推 dog3810: 推優質好文 09/08 13:09