作者jackyu (孫權)
看板Soft_Job
標題Re: [請益] 有關學習程式語言
時間Sun Jun 19 22:40:54 2011
※ 引述《iman00b (I'm a n00b)》之銘言:
: 你說的沒錯, 程式語言就是工具而已, 但是很多人連工具都用不好.
: 我的觀念是工欲善其事, 必先利其器, 基本的程式語言技巧是第一
: 個要掌握的, 其次, 要熟悉所你使用的編程工具.
: 別被一些只會說 domain knowledge 的嘴砲給騙去, 正是因為他們
: 連基本的工具都掌握不好, 才會拿 domain knowledge 來說嘴.
: 以網路來說, 如果你能把基本工具用到熟, 你覺得再去學 tcp/ip
: 會很難嗎? 如果你能看得懂 ethernet driver 裡面一堆指標指來指
: 去的 descriptor, 難道你沒辦法把網路封包給搞懂嗎?
: 我不相信一個連 C 都不熟的人, 能看懂 arp table 是怎樣實現的.
: 萬丈高樓平地起, 勿在浮沙築高台, 要想成為梓人傳裡的梓人, 請
: 先把基本功練好.
domain knowledge不是嘴砲, 有結構性的知識怎麼會不好?
或許閣下異於常人, 神經的認知介於自然語言和電腦語言之間
覺得變數, 指標, 迴圈, callback會比英文好懂
有domain knowledge不看才是傻子
敝公司每當合併一個小公司後, 最怕他們的產品年代久遠, 沒有文件
有design doc, 有domain knowledge的書當然先看啊~~
code是懂最多的老師,但是也是教最爛的老師, 此話不假
而且說實在學C快還是學domain knowledge快?
我覺得學C快多了
所以很多人會說程式技巧不重要, 重要的是domain knowledge
因為他們所在的公司有很嚴謹的develop process
arch的東西交給SD, RD要review architecture和proto spec
(所以doamin knowledge就會比coding技巧重要)
之後按敲定的文件去設計你的程式和實作, 寫好後也會有code review
這時候程式語言相關的細節和技術在senior RD的狂電下,一個月後就學會了
而覺得coding技巧重於domain knowledge的
通常是公司比較喜歡讓RD 硬幹, open source兜起來先會動就好
過不過的了certify再說, 也沒有長遠develop engineering的打算
: 老實說, 這家考的一點都不細節, 我碰過難更多的, 像有的題目是
: 給你一個程式, 考你變數 compiler 後的輸出, 但其實是要考你知
: 不知道什麼樣的變數最後會放在 stack 或 bss 裡, 以及 stack
: 的操作是怎樣的.
話說...這些是coding技巧嗎? 這不就是system program 的domain knowledge?
stack和process initialization binary的實作換個CPU或OS就差很大了
這個好像是C再好也學不來的喔...
亦或是...你定義的程式技巧, 涵蓋了compiler實作和OS?
那...那大家可以左轉了...
相信很多只學C或C++的,但是對OS著墨不多的
要他們了解stack overflow 為何是嚴重的安全漏洞, 會非常雞同鴨講
: 如果你要在業界工作, 就請拿出業界的 pro 水準, Devil lives in
: the details. 這些細節就是用來鑑定專業跟業餘的主要差異.
: 說一下我的答案, 第一題 compiler 可能會警告你轉型問題, 但你
: 應該要有一個觀念, 所有的型別都是人為定義的, 對機器來說只有
: bit 的差異跟 big endian, little endian 的不同而已.
: 所以在 C 裡面 char 你要想成是 int8 (bit field). 這也是所謂
: 的 C laguage data model. 在不同位元的作業系統, 某些型別會
: 有不同的 bit field, 如 32 bit 與 64 bit 的 int, long 等等,
: 有興趣請自己去找資料.
以下太多吃光光
我覺得你在講的也都是domain knowledge就是
因為C一直是一個離不開系統的特例
純就程式技巧, 可以拿JAVA或scripting language來舉例
這時後你就知道doamin knowledge是key point了
題外話...話說寫JAVA轉寫C在code review也是場災難...
我就看過:
int foo() {
int a = 20;
char url[a];
int i = 0;
...
for (i = 0; i < sizeof(url); i++) {....}
}
然後修bug就像修幹一樣流血又流汗 (因為不只一個....)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.102.107
推 Ting1024:這編譯就有問題了吧 XDDD 06/19 22:44
→ iincho:兩邊都很重要吧,只是實務上碰到講coding不重要的通常 06/19 22:52
→ iincho:另一邊也不大行...這應該是比較大的問題.... 06/19 22:52
→ jackyu:阿有些人都不看warning的啊..XD 06/19 23:00
→ TonyQ:實務上講 coding 重要的也不一定型啊... 06/19 23:24
→ TonyQ:基本上跟環境有關吧 06/19 23:24
→ gname:看到這範例的第一想法: 這啥鬼東西....= = 06/20 00:27
推 dickjas:其實這篇有講出重點~coding技巧只是再展現個人虛榮心 06/20 11:17
→ dickjas:大型公司最忌諱的就是很愛現自己程式技巧的人~~ 06/20 11:18
→ i386:展現程式技巧不是寫讓人看不懂的東西,而是寫出讓人容易看得懂 06/20 12:51
→ i386:的東西阿~~ 06/20 12:51
→ james732:我想coding技巧跟展現虛榮心是兩回事 06/20 13:11