Re: [請益] 年紀大的人適合進來這行嗎?
※ 引述《sedgewick (三分熟的鬧鐘)》之銘言:
: 事後我問他, 為什麼會定義成 DATA_SET_SIZE*4 這麼大的 storage size?
: 他的答案也很妙:「提高安全係數. 」
:
: 所以實際上程式員並不確定他會用到陣列的哪個部分. :D
:
: 推 uid88:程式寫成這樣,code review怎麼會過?
: → sedgewick:整個事件的原因在於程式員的基礎知識有缺陷...
說到 code review 也有很有趣的事情.
我曾經遇過某個超級程式員.
英文非常破爛, 常常拼出莫名其妙的錯別字.
譬如會把 signal 拼成 single 之類的.
長一點的那是必敗無疑...
譬如 multicore_dispatcher 這種本來就很糊塗的字眼.
問題是他的產能是別人的十倍...
結果我就遇上其他的程式員跟我抱怨「能不能請他換一本正常的字典」.
因為錯久了, 大家都要跟著一起習慣那些怪字.
每個人都在擔心發生程式功力提升不多, 英文卻整個毀了之類的慘案.
偏偏又不能用 code review 卡住他.
他寫得更多、更快, 而且絕大部分情況都沒有問題.
寫到五維陣列都不會錯(這可以讓 99% 的 reviewer 消化不良. )
純粹就程式邏輯而言, 被派去 review 的人都不會比他好...
你手上就是生不出第二個可以「趕上他的進度並修正他的工作」的人.
他只是不會拼字而已! :P
因此大家允許他使用一個很白爛的 house rule.
int xxx;
int xxxx;
int xxxxx;
這種命名方式──我說的是 global variable naming convention!!
而且要有三個 x 以上... 當然用 a, b, y 之類的也無妨.
之後的悲劇嘛......大家可以猜猜看.
某天有個 xxxx 莫名其妙地被改掉.
當然第一個猜測都是, 「馬得這傢伙又拼錯字了. 」
但是很奇怪, 所有針對 xxxx 的存取都是正確的.
可是它就是在某些不知名的時刻會被改掉.
而且還是老問題, 只要加掛神器 gdb 的時候又一切正常.
最後查出來的結果嘛............勉強算是拼錯字.
只是他拼錯的不是 xxxx, 而是 xxx.
在某一個不起眼的角落, 有一個長得像這樣的東西...
*((someptrtype *)&xxx + 1) = 20;
這裡面的 xxx 其實應該是 xx (昏倒了沒?)
被誤寫成 xxx 的 xx 是一個 local pointer...
偏偏還有個 global 的咚咚也叫 xxx, 是一個簡單的 type int....
所以在某些 compiling condition 的情況下...
這個
&xxx + 1
會指到下一個 global variable 的位址, 也就是我們的苦主 xxxx.
到現在我還是不太確定要如何預防這一類的錯誤.
甚至我不太確定 valgrind 這種工具有沒有辦法完全識破這種錯誤.
說它是高級錯誤也不對, 明明只是拼錯字.
說它是低級錯誤嘛...
平庸一點的程式員隨便亂寫 pointer expression 那是當得一塌糊塗.
不會有什麼「明明程式跑得好好的, 就是結果怪怪的」這種.
因為連跑起來的機會都沒有.
話說這個 bug 印象中找了一個禮拜.
為了處理它, 還把整個 multi-thread 全部翻修成 single-thread.
當然是............沒用.
越高明的程式員, 犯下的錯誤越危險; 所以應該雇用猴子就好(誤).
--
新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.223.182
※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1396086929.A.A27.html
推
03/29 18:29, , 1F
03/29 18:29, 1F
→
03/29 18:34, , 2F
03/29 18:34, 2F
→
03/29 18:35, , 3F
03/29 18:35, 3F
→
03/29 18:35, , 4F
03/29 18:35, 4F
→
03/29 18:36, , 5F
03/29 18:36, 5F
推
03/29 18:40, , 6F
03/29 18:40, 6F
→
03/29 18:43, , 7F
03/29 18:43, 7F
推
03/29 18:50, , 8F
03/29 18:50, 8F
推
03/29 18:52, , 9F
03/29 18:52, 9F
→
03/29 18:57, , 10F
03/29 18:57, 10F
推
03/29 19:50, , 11F
03/29 19:50, 11F
推
03/29 19:56, , 12F
03/29 19:56, 12F
推
03/29 19:57, , 13F
03/29 19:57, 13F
→
03/29 19:57, , 14F
03/29 19:57, 14F
→
03/29 20:02, , 15F
03/29 20:02, 15F
→
03/29 20:03, , 16F
03/29 20:03, 16F
→
03/29 20:04, , 17F
03/29 20:04, 17F
→
03/29 20:04, , 18F
03/29 20:04, 18F
→
03/29 20:05, , 19F
03/29 20:05, 19F
→
03/29 20:05, , 20F
03/29 20:05, 20F
→
03/29 20:07, , 21F
03/29 20:07, 21F
→
03/29 20:07, , 22F
03/29 20:07, 22F
→
03/29 20:08, , 23F
03/29 20:08, 23F
推
03/29 20:11, , 24F
03/29 20:11, 24F
→
03/29 20:15, , 25F
03/29 20:15, 25F
→
03/29 20:16, , 26F
03/29 20:16, 26F
→
03/29 20:16, , 27F
03/29 20:16, 27F
→
03/29 20:18, , 28F
03/29 20:18, 28F
→
03/29 20:19, , 29F
03/29 20:19, 29F
推
03/29 20:20, , 30F
03/29 20:20, 30F
→
03/29 20:22, , 31F
03/29 20:22, 31F
→
03/29 20:32, , 32F
03/29 20:32, 32F
→
03/29 20:35, , 33F
03/29 20:35, 33F
→
03/29 20:54, , 34F
03/29 20:54, 34F
→
03/29 21:00, , 35F
03/29 21:00, 35F
→
03/29 21:01, , 36F
03/29 21:01, 36F
→
03/29 21:01, , 37F
03/29 21:01, 37F
推
03/29 21:15, , 38F
03/29 21:15, 38F
推
03/29 21:36, , 39F
03/29 21:36, 39F
→
03/29 21:38, , 40F
03/29 21:38, 40F
→
03/29 21:53, , 41F
03/29 21:53, 41F
→
03/29 21:54, , 42F
03/29 21:54, 42F
推
03/29 22:15, , 43F
03/29 22:15, 43F
推
03/29 22:26, , 44F
03/29 22:26, 44F
→
03/29 22:26, , 45F
03/29 22:26, 45F
→
03/29 22:27, , 46F
03/29 22:27, 46F
推
03/29 22:34, , 47F
03/29 22:34, 47F
→
03/29 22:34, , 48F
03/29 22:34, 48F
推
03/29 22:43, , 49F
03/29 22:43, 49F
→
03/29 22:58, , 50F
03/29 22:58, 50F
推
03/29 23:02, , 51F
03/29 23:02, 51F
→
03/29 23:12, , 52F
03/29 23:12, 52F
→
03/29 23:16, , 53F
03/29 23:16, 53F
→
03/29 23:17, , 54F
03/29 23:17, 54F
→
03/29 23:17, , 55F
03/29 23:17, 55F
→
03/29 23:17, , 56F
03/29 23:17, 56F
→
03/29 23:59, , 57F
03/29 23:59, 57F
→
03/30 00:19, , 58F
03/30 00:19, 58F
→
03/30 00:21, , 59F
03/30 00:21, 59F
→
03/30 00:22, , 60F
03/30 00:22, 60F
推
03/30 10:22, , 61F
03/30 10:22, 61F
推
03/30 11:25, , 62F
03/30 11:25, 62F
→
03/30 11:55, , 63F
03/30 11:55, 63F
→
03/30 11:57, , 64F
03/30 11:57, 64F
→
03/30 11:58, , 65F
03/30 11:58, 65F
→
03/30 11:59, , 66F
03/30 11:59, 66F
→
03/30 14:35, , 67F
03/30 14:35, 67F
→
03/30 14:35, , 68F
03/30 14:35, 68F
→
03/30 16:03, , 69F
03/30 16:03, 69F
→
03/30 22:11, , 70F
03/30 22:11, 70F
推
03/31 16:57, , 71F
03/31 16:57, 71F
推
03/31 23:08, , 72F
03/31 23:08, 72F
推
04/02 01:34, , 73F
04/02 01:34, 73F
討論串 (同標題文章)