作者CsCdanNix (丹尼克斯ㄟ巨大火球)
看板C_and_CPP
標題[問題] C規格書的閱讀方式
時間Sun Mar 11 19:56:39 2018
大家好,第一次在這發文,請多多指教~
我之前在上過jserv大大的線上課程時,
聽到宅色夫極力推薦寫C的人都該先去讀讀規格書,搞懂C的真正內容
於是我就印了一本C11的comittee draft(n1570),決定把Library章節之前的讀完。
但是讀到40頁的時候,我發現雖然我在C上面自認有一定的基礎,也做過一些開發。但是規
格書中很多地方很難光從文字去理解它的內容,想要看一些實際的例子,但卻找不到資源(
也怕找到錯的),也怕自己用錯的方式測試。
再加上像jserv老師所講的,C的設計哲學是為了Unix而寫的。但是我對於concurrency以及
Linux kernel方面也不太熟,在規格書上讀到這方面的內容都直接讀過去。
想要請教一下各位大大,我想要真正讀懂規格書,該如何下手,或有什麼輔助的資源呢?
感謝各位以及jserv大大的貢獻!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.1.16
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1520769402.A.D6D.html
1F:→ Hazukashiine: 把字典拿來啃的概念? 03/11 20:29
2F:→ Hazukashiine: 我都隨便看看有個印象 03/11 20:30
3F:→ Hazukashiine: 要用的時候再仔細看 03/11 20:30
4F:推 TWkobe: 他的意思是叫你常常查 不是直接拿來看 03/11 20:42
可是jserv在寒假直播上課的時候,我記得他是建議把Lib章節以前一百多頁看完ㄝ
5F:→ Lipraxde: 你要步入zzss2003的後塵嗎? 03/11 21:07
我會把重點放在如何應用上面,所以在找能夠給例子的輔助資源。
※ 編輯: CsCdanNix (110.26.1.16), 03/11/2018 21:10:41
※ 編輯: CsCdanNix (110.26.1.16), 03/11/2018 21:21:30
6F:→ loveflames: programmer跟language lawyer是不同的 03/12 00:23
7F:→ MOONRAKER: 噗 zz同學果然不負眾望成為底部 03/12 03:23
8F:→ MOONRAKER: jserv很厲害 但是這個建議照著硬幹實在太不健康 03/12 03:26
9F:→ MOONRAKER: 這種東東即使寫很久也不一定能全懂 比較像C語言體檢 03/12 03:32
10F:→ loveflames: zz的例子是? 03/12 07:21
11F:推 Archier: zzss怎麼呢? 03/12 12:34
12F:→ Caesar08: 對程式有一定興趣與了解後,再考慮是否要讀規格書 03/12 12:35
13F:→ Caesar08: programmer跟language lawyer是不同的 03/12 12:35
14F:推 jaid: 我是覺得規格書本來就不是給一般人讀的 真的要唸還是要夠厚 03/12 13:39
15F:→ jaid: 的底子 03/12 13:39
16F:→ notBeing: 試著利用規格書來回答你對C語言的疑問:為什麼可以,為 03/12 16:15
17F:→ notBeing: 什麼不行 03/12 16:15
我想zzss大也有自己學習的方式吧~
看完各位大大的建議我想我應該就先念過去有個印象不要鑽牛角尖,著重在實際有應用的方面,等到之後火侯到了真正碰到問題再來仔細看囉!
感謝各位的回應~~
※ 編輯: CsCdanNix (110.26.1.16), 03/12/2018 18:47:59
※ 編輯: CsCdanNix (110.26.1.16), 03/12/2018 18:48:32
18F:→ littleshan: C 是為了開發 Unix 系統而設計的 03/12 21:12
19F:→ littleshan: 那個年代 (197x) 還沒有 Linux 03/12 21:12
喔抱歉寫混了,已修正!感謝~
21F:→ remember: jserv十多年前的文章,小弟不否認從他的心得發表可以學 03/12 23:59
22F:→ remember: 到不少東西 03/12 23:59
23F:→ remember: 但是他當時的文章常常有種自傲參雜自卑的感覺,看起來心 03/13 00:01
24F:→ remember: 情頗複雜,常會覺得幹嘛這樣 03/13 00:01
25F:→ remember: 規格書可以解釋為什麼 static variable 為什麼初始值會 03/13 00:04
26F:→ remember: 是 0 XD 03/13 00:04
哦哦酷ㄝ~看到了jserv成長時期的文章
27F:→ tinlans: 規格書主要是給專門教 C 語言的老師、發明程式語言的學者 03/13 16:43
28F:→ tinlans: 還有我們這種做 compiler 的人讀的。一般人大都是有疑義 03/13 16:44
29F:→ tinlans: 才會去查,但通常也是查得一頭霧水。因為它是 bottom-up 03/13 16:44
30F:→ tinlans: 從細節開始往上講,但是查閱的時候通常是 top-down,然後 03/13 16:45
31F:→ tinlans: 因為 top-down 的時候不知道各種細節名詞,就會很痛苦。 03/13 16:46
32F:→ tinlans: 因此才會出現「應該要把規格書讀過一遍」這種建議吧... 03/13 16:46
33F:→ tinlans: 至於 jserv 這人給的建議,只能說正規訓練方式不是這樣, 03/13 16:48
34F:→ tinlans: 他本身成長的路線比較崎嶇,不一定每個人都要走這陡坡 03/13 16:49
35F:→ tinlans: 要啃那本書,基本上也是要修完資工大學部主科,包括作業 03/13 16:51
36F:→ tinlans: 系統、系統程式、程式語言(非程式設計)、編譯器等等的, 03/13 16:52
37F:→ tinlans: 才會比較有感。jserv 本人有走另外的路線先摸過差不多的 03/13 16:52
38F:→ tinlans: 東西,所以他碰到的時間點才剛好可以直接讀吧。 03/13 16:52
39F:→ tinlans: static variable 初值是 0 應該讀 APUE,古早時期程設常 03/13 16:55
40F:→ tinlans: 用的課本之一,那邊就會講 C 程式的 runtime environment 03/13 16:56
41F:→ tinlans: 板上一直有人大推的那本程式設計師的自我修養也是該在讀 03/13 16:58
42F:→ tinlans: 規格書之前讀的。我不確定是 jserv 有少講前提條件還是你 03/13 16:58
43F:→ tinlans: 少看,就像某樓講的,這樣讀其實不健康。 03/13 16:58
45F:推 s0914714: jserv是說有些人喜歡在那try老半天,得到結果很開心 03/13 17:23
46F:→ s0914714: 可是有可能是未定義行為或者是跟編譯器有關 03/13 17:25
47F:→ s0914714: 這時候直接翻規格書是最快途徑 03/13 17:25
48F:→ s0914714: 如果只懂皮毛 翻規格書其實沒啥用拉 03/13 17:26
49F:→ tinlans: 這說法跟原 po 第三行寫的出入有點大啊 XD 03/13 18:46
首先,再次感謝各位大大的回應,尤其是tin大抽空回了很多~
我又重回去審視了一下jserv大大的意思,先將連結影片放在下面:
你所不知道的 C 語言:開發工具和規格標準篇 (2017-05-16)
https://goo.gl/PK4AmK
就課堂中他在58分、1時59分跟2時11分所講的,我的理解是因為現在資訊太發達,網路書本太多錯誤資訊,
所以他希望大家在查閱時要學會「溯源」,盡量找尋第一手資料去比對,以免錯誤理解,
所以才會有期望大家都去讀讀規格書的這句話。
當然也因為jserv比較多在處理效能跟driver方面,有很深的基礎來讀規格書,而我沒有,
所以學習方式也不一樣。jserv自己也說參照其他書籍比較好讀。
我自己也有在處理硬體方面,我想我應該還是會把規格書看過一遍(第七章前面短短一百多頁),
配合其他書籍(descent大也有推薦一些)閱讀,不會把它當主要的學習用具而太過鑽研。
以後在讀其他書的時候也比較會有印像可以拿來對照,也可避免書上有錯誤。隨著的功力深了也能理解更多了。
大概醬,如果有錯的理解請各位指教~
※ 編輯: CsCdanNix (140.115.202.113), 03/13/2018 21:10:46