作者:
deo2000 (800IM)
2013-01-11 18:32:39今天去面試的時候,公司先拿了一張C語言考卷給我寫,
先承認,我不是每題都會寫,而且還不小心用到VB的語法 (% 用 Mod)
主管看了我寫的那幾題,問我:「你寫的是C語言嗎?」「是阿,請問有哪個語法錯了嗎?」
他先告訴我C沒有 Mod,才發現自己用錯 (我當助教教了整學期VB,有時候會在VB行末打";")
不過他說,他知道這是取餘數
但是下面這行又讓他更疑惑
(N Mod 2)&&(敘述式1,敘述式2); /*誤用Mod前面已經解釋過*/
我解釋,如果N是奇數,就執行敘述式1,2,
敘述式1,2都是在做幾何運算,幾何運算的結果最後要return出去
「&&是在做邏輯判斷啊,你怎麼會拿來計算?」
「我沒看過這種寫法,你是第一個這樣寫的!」
然後我一直跟主管解釋左右括號的運算順位不同,IDE會最佳化可以不用if等等的
「你這是C++的語法吧!C complier不會過」
我又解釋,我都把這樣的東西寫到8051裡面,這一定是C的語法
已經不知道怎麼解釋了,當下真的很難堪
「這個逗號是什麼? C有這樣寫的嗎?」
我又說那是把兩個不同敘述式隔開,不用換行,而且都會執行
以前去面試我為了Demo專題都會帶NB,一定當場拿出來跑給主管看,
這次是騎單車去,加上又是美商,
所以我只帶專題報告和大學成績單,結果根本連拿出來的機會都沒有
「如果"&&"compiler會過,我再叫你來」
然後我灰頭土臉的回來了
我想可能真的是自己的問題,所以回來第一件事情就是打開 keil 3 寫了51測試程式
RI&&(('L'==SBUF)&&(P1=~P1,RI=0));
結果這行compiling竟然過,而且MCU能按照UART收到的指令執行
我想精明的外商主管絕對不可能弄錯的,一定有堅強的程式實力和經驗才能幹到這個位子
這一定是:
1. 我的51都從實驗室的垃圾堆裡面撿來用的,可能被之前的學長燒壞了
2. 全華圖書的光碟有問題,竟然給我盜版的keil
3. AMI臨時人事凍結,主管不好意思直接叫我滾回家,讓我演一場知難而退的戲
AMI 真是一家為人著想的好公司呢!
作者: ngu770502 2013-01-11 18:41:00
寫Code 要寫得讓人看得懂,可維護性也很重要
作者: ngu770502 2013-01-11 18:42:00
除非是要調效能,不然用太刁鑽或冷門的寫法會被當垃圾= =
作者:
s8013011 (Sandra)
2013-01-11 19:19:00你沒反問主管C的&&要怎寫
作者:
apap (Ap)
2013-01-11 19:26:00主管回去發現真的會過 就再叫你來啦 不要太悲觀了 囧
作者:
pinkowa (pinkowa)
2013-01-11 19:29:00你不應該回嘴的,有些只是看你的心態而已,就算真的會過,
作者:
pinkowa (pinkowa)
2013-01-11 19:30:00發現你真的有料,也會認定你難帶...(主觀強)
作者:
s8013011 (Sandra)
2013-01-11 19:34:00不去也罷 下一間
作者:
qmomo (肥毛)
2013-01-11 20:10:00團隊合作是溝通 > coding, 總覺得你很酸
作者: garynetlier 2013-01-11 20:14:00
請問最佳化的說法是您自己判斷還是改參數做過實驗呢?
作者: silentence (小飛號:號:) 2013-01-11 20:14:00
原PO事後的吐槽也要酸 嘖嘖
作者: silentence (小飛號:號:) 2013-01-11 20:31:00
有人
作者: wsxokmty (黑色怪物) 2013-01-11 20:53:00
好特別的寫法 RI&&..... 那邊
作者:
stosto (樹多)
2013-01-11 21:04:00很多人這樣寫吧....至少我研究所就看過不少
他只是一間假美商而已..薪水低到靠北 去那邊幹嘛...
作者:
jlhc (H)
2013-01-11 21:07:00樓上研究所這樣寫跟出去是兩回事.....
作者:
WolfLord (呆呆小狼 N )
2013-01-11 21:11:00那我寫的CODE那位先生一定發瘋:P
作者:
deo2000 (800IM)
2013-01-11 21:23:00樓上教的,我沒看過short code,不過您介紹了我就有興趣看
作者: Huskycat (好友都養貓ㄌXD) 2013-01-11 21:30:00
如果你有談到錢的話應該就不會想去了吧
除了討論語法 還有其他的嗎? 止討論這個擺明不想用你吧
作者: beggerchou (廣三愛你哦~) 2013-01-11 21:43:00
效能最佳化怎麼不寫組語呢?
作者: leav (耶羅窖獸) 2013-01-11 21:54:00
C語言標準並沒有保證&&左右的執行順序,所以有潛在風險...
作者: leav (耶羅窖獸) 2013-01-11 22:00:00
而且業界有在要求coding style,這行應該會被lint tool抓出來
作者: DarkWanderer (捨己存道) 2013-01-11 22:02:00
不,C語言標準有保證順序
作者: DarkWanderer (捨己存道) 2013-01-11 22:03:00
"&& operator guarantees left-to-right evaluation"
印象中AMI的考題都蠻基本的,可以用可讀性較高的寫法會比較好
作者:
stosto (樹多)
2013-01-11 22:11:00編譯技巧 在研究所與出去外面工作是一樣的 觀念正確就可以
作者:
stosto (樹多)
2013-01-11 22:12:00寫出這種語法,不過現在也很多人不會在意這種事情因為編譯器實在做得太好
作者:
stosto (樹多)
2013-01-11 22:13:00有很多人看不起研究所的程式碼,殊不知現在業界一堆比研究所編譯技巧與習慣還差的...
作者:
zhi5566 (協志 5566 最棒)
2013-01-11 22:18:00你可以跑沒用 換個編輯器就掛了 像你這種標準寫法 要找錯
作者:
zhi5566 (協志 5566 最棒)
2013-01-11 22:22:00就是一行一行找 最佳化 2的倍數沒人在用MOD.....
作者:
zhi5566 (協志 5566 最棒)
2013-01-11 22:25:00另外現在ARM粉強大 CODE寫的清楚明白好維護才是重點
作者:
yoco315 (眠月)
2013-01-11 22:39:00沒用你是正確的,寫這種code的隊友我會想打他
作者:
manlike ( )
2013-01-11 22:55:00高手都是用 && || , if else 都是越少越好~
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:05:00
你這寫法 有bug的話 不容易看出問題在哪 因為通通塞在
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:06:00
同一行 一行裡還包兩個運算式 不容易trace
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:11:00
另外code寫的短 不代表他執行的快 你要看編譯出來的組語數量 跟 指令的速度 很多東西complier甚至都幫你最佳化
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:12:00
完了 不管你有沒有用這些小技巧 編譯出來的組語都會一樣
作者:
cphe (魔鬼藏在垃圾筒裡)
2013-01-11 23:25:00code寫得難懂不代表技巧高明,可以多多trace別人寫的code看多了,你大概就能分辨什麼樣的code才是高手寫的
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:32:00
另外這麼在乎速度 你的判斷奇偶也可以改成 (N&1) 用mod
作者: eterbless (守護之翼) 2013-01-11 23:34:00
AMI一年到頭都在徵人..是都增不完?
作者: ohha0221 (蛋笨是的唸來過倒) 2013-01-11 23:39:00
這種含除法運算的 是快不了哪去的
作者:
b6byc (oopp)
2013-01-11 23:40:00這間挺奇怪的,時常徵人.
作者:
a1e (我上了賊船了囧)
2013-01-11 23:48:00&& complier不會過才是見鬼了吧....
作者:
caca117 (caca)
2013-01-12 00:09:00你的寫法是沒有問題, 但是你有考慮過這份工作所寫的code
作者:
caca117 (caca)
2013-01-12 00:10:00並不是只有你一個人用嗎? 這樣子的寫法 可讀性差!也不方便debug! 或許你更適合自己一個人獨自完成的工作!
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:20:00其實,SHORT CODE是完全合法甚至才是真正原生的C語法,
作者:
caca117 (caca)
2013-01-12 00:20:00以下我是從網站中看來的 我覺得還不錯 分享一下不要覺得寫到別人看不懂才能證明自己的功力高深.寫大家都看不懂的東西誰都會但是寫到每個人都可以看得懂就真正是一門大學問了。
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:21:00樓上一堆指責SHORT CODE的人其實只能說根本不懂C,事實上係現在很多所謂的正統CODE都是為了寫給人看才變成這個樣
作者:
caca117 (caca)
2013-01-12 00:22:00樓上 你隨便去找一份coding style都會叫你不要這樣子寫
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:22:00子的。而事實上,在撰寫MCU或基層OS時,這些壟長式語法
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:23:00都無法產生最精簡有效的OP CODE。ANTI這種程式碼不如多去
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:24:00了解這些SHORT CODE為什麼會產生,甚至為什麼原生C是這
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:25:00個樣子的。 不懂機器怎麼運作是現代軟體教育很大的盲點
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:26:00機器適用機器的方式運作的,而不是人類思維。強迫CPU用
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:27:00人類的思維運作的結果就是RAM永遠不夠大,CPU永遠不夠快
作者:
caca117 (caca)
2013-01-12 00:27:00如果你想用機器的思維來寫code 你乾脆寫0101000010100
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:28:00當人能用Z80做NAS時,你得用ARM你的產品在起跑點就輸人家了。 TERMWORK的基礎是整個TERM水準要一致,既然水準一致
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:29:00說看不懂,或無法閱讀,那就只剩藉口了。
作者:
caca117 (caca)
2013-01-12 00:30:00所以說 你搞錯這份工作寫的code要給誰看除了你的team之外 OEM ODE 公司內部的人也都會看
作者:
caca117 (caca)
2013-01-12 00:31:00全部加起來大概上千人以上 你要全部的水準都一樣?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:31:00其實AMI的反應只能說AMI的BIOS是軟體豬,無效能可言
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:32:00CACA:BIOS LEVEL的產品,要不就是作TOOL給客人,要不就
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:33:00是客人自己要有高階工程師看得懂,你把CODE寫得很肥沒效率,只為了客人根本不會去看或喝咖啡加減看而去犧牲掉的
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:34:00BIOS應該有的效能,這樣的產品算是好產品嗎?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:35:00要交給客人的應該是詳細的說明文件,讓客人看了能跟得上而不是為了三角貓客人去犧牲產品的品質。
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:36:00當全世界用你code的客人都很三腳貓的時候,那就要寫到他懂了
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:37:00CAC:你可以問樓主,我的確會在C裡面夾ASM,甚至直接夾
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:38:00OPCODE。
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:39:00COMIPA:只要你能提供夠方便的TOOL人家不會想讀你的CODE的
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:40:00那你問intel幹嘛做reference code好了,為啥不給支tool了事
作者:
caca117 (caca)
2013-01-12 00:41:00最好BIOS就做到只要打幾個勾勾 不需要去研究code就把project做好!
作者:
caca117 (caca)
2013-01-12 00:42:00如果你做得到的話 保證你可以幹掉三家BIOS Vendor!
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:42:00大陸那間算進來有四家..XD
WolfLord 看你的推文 你應該是沒看過EFI BIOS code
作者: chihtapien (我無言了......) 2013-01-12 01:24:00
這不是在寫考卷嗎 又沒規定要怎麼寫 怎麼扯這麼遠
作者:
yoco315 (眠月)
2013-01-12 02:14:00TERM WORK 害我笑出來...
作者:
askacis (ASKA)
2013-01-12 02:25:00原PO有查過這樣的寫法翻成ASM的時候比一般寫法省幾條指令?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:30:00pega5566:看過又如何?沒看過又如何?重點是濫用資源的
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:31:00產品競爭力會如何吧?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:32:00askacis:好的程式不只要CODE最小,還要最快又最穩
作者:
patoo (完了完了 要變砲灰了 )
2013-01-12 02:32:00這種CODE累的是接手的人...
作者:
askacis (ASKA)
2013-01-12 02:36:00我剛用gcc試了一下,兩種寫法翻出來的ASM是一樣的
作者:
askacis (ASKA)
2013-01-12 02:37:00這樣犧牲可讀性的寫法真的有比較好? 我也寫過MCU,也知道
作者:
patoo (完了完了 要變砲灰了 )
2013-01-12 02:38:00bios我不知道 不過firmware我從來沒看過這種coding style
作者:
askacis (ASKA)
2013-01-12 02:38:00一些最佳化性能的寫法,可是太不一般的code style很難維護
作者:
patoo (完了完了 要變砲灰了 )
2013-01-12 02:40:00有時候CODE是你一個人寫的 以後要讀的可不只你一個啊...
作者:
cobrasgo (人魚線變成鮪魚線,超帥)
2013-01-12 02:45:00我比較想知道這種寫法是從哪學來的?
作者:
askacis (ASKA)
2013-01-12 03:09:00另外原PO不覺得除了用%之外還有更好的方法嗎:)?
作者:
javatea (齁齁)
2013-01-12 04:50:00阿是多厲害? 面試完還在這邊酸主管 要酸就明著酸 拐彎抹角
作者:
caca117 (caca)
2013-01-12 05:50:00一個不懂BIOS的人 和他朋友在這邊大放厥詞 效能差
作者:
caca117 (caca)
2013-01-12 05:52:00乾脆說BIOS是賣貼紙的! 客戶都不會去看code改code
作者:
caca117 (caca)
2013-01-12 05:55:00難道從Legacy(ASM)轉換成UEFI(C)開發是錯的 大家都去吃屎你和你朋友最厲害了~ 可以抱著這樣子的心態繼續去找工作吧
作者:
caca117 (caca)
2013-01-12 06:06:00對BIOS有興趣的人可以去網路上搜尋EDK2 有整套source code
作者:
kikichou (下個月爆忙)
2013-01-12 09:22:00爛, 你這種人那位主管不要你是對的,你根本搞不請重點在那
作者:
kikichou (下個月爆忙)
2013-01-12 09:23:00你以為團隊只要你一個人嗎? 看你整個行為就是心高氣傲
作者:
kikichou (下個月爆忙)
2013-01-12 09:24:00下一位
作者: Dexterity (Cogito ergo sum) 2013-01-12 10:28:00
你這樣子不只造成自己工作團隊的困擾
作者: Dexterity (Cogito ergo sum) 2013-01-12 10:29:00
也對其他OEM廠的工程師造成困擾呀
作者: satonoo (Moskos) 2013-01-12 11:54:00
面試被電就上來討拍 我看你還是繼續當學生就好
作者: Minilogo 2013-01-12 14:17:00
這是&&的short circuit吧,有看過這種寫法
作者: atobela (尼瑪蛋蛋麵) 2013-01-12 14:33:00
這篇文好酸...
這寫法真的難維護,而且現在cpu的速度,這樣寫真的沒意義
作者:
xvid (DivX)
2013-01-13 04:09:00AMI應該很高興不用維護你的code和作你的同事
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-13 04:55:00請相信你的compiler
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-13 05:10:00short code沒有不好,只是這場合又必為了這事情起衝突?
作者:
OnlyRD (里巷人)
2013-01-13 14:33:00在現代的compiler下這樣寫沒有意義,編譯出來是一樣的.
作者:
OnlyRD (里巷人)
2013-01-13 14:55:00用comma expressions也不是好習慣,很容易埋bug,也沒比較快
作者:
ccd1006 (吸血鬼)
2013-01-13 22:07:00AMI應該很高興不用維護你的code和作你的同事
作者:
sym30 (看熱鬧...)
2013-01-14 02:22:00是很厲害沒錯, 不過OEM的工程師可能會幹譙在心裡.
作者:
sym30 (看熱鬧...)
2013-01-14 02:24:00你忽略了這份工作的立場了, 你寫得code是要給人看的.
作者:
sym30 (看熱鬧...)
2013-01-14 02:25:00不是自己在實驗室裡面追求效能用的.
作者:
sym30 (看熱鬧...)
2013-01-14 02:26:00追求效能與code的精簡以外, 也要考慮到客戶的能力與可讀性.
作者: juiljji (木頭) 2013-01-14 11:20:00
不是請你來作最佳化運算的,而且你寫的有快嗎?每種CPU指集也不一樣,你有比較行喔?
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:30:00自以為寫得短就是好程式嗎...你離開公司後要叫誰來維護
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:31:00人家不care效能的地方硬是要用難懂的code來加強效能 反
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:32:00而造成維護的成本增加 公司幹嘛這樣自作孽
作者: stanley3298 2013-01-14 16:06:00
重點已經不是程式正不正確的問題了
作者: stanley3298 2013-01-14 16:07:00
你要思考濃縮原始碼有無意義 以及如何推銷自己
作者:
kirchize (起落是無常)
2013-01-14 16:31:00朝聖推
作者:
ppit (無所謂極限只有劃地自限)
2013-01-14 17:08:00來朝聖!
作者: pengpluto (暱稱) 2013-01-14 21:20:00
朝聖XD
作者:
wonwonlaw (汪汪æ¼)
2013-01-14 21:55:00朝聖!
作者:
abcdeffg (ä½ å¿«æ¨‚æˆ‘ä¹Ÿå¿«æ¨‚)
2013-01-14 23:03:00來朝聖 台灣主管容不下大佛的 您還是自己創業吧
作者: Axcic (GLASS SKIN) 2013-01-15 00:01:00
不會寫code的應該是你沒錯
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-15 03:13:00其實稍微看了一下您以前作過得論文跟研究,您真的很強了
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-15 03:16:00但是就像Goodliffe跟Joel的強調,readbility重要太多了
作者: kkoala (Shong) 2013-01-15 21:57:00
compiler 是有在做事情的 :)_
這篇的重點是主管認為他寫的程式的錯的 又不是批評可讀
性的問題 一堆人因為看不慣這篇的酸 而把矛頭指向作者