Soft_Job 板


LINE

建議可以看看《C How To Program》, 它的範例程式碼品質不錯, 文字說明也夠多, 多做練習題可以幫助你理解語意. 不過有個觀念需要釐清的是: C 語言程式是跑在抽象機器 (abstra- ct machine) 而不是實體機器上 (只存在想像的虛擬機器), 所以它 和你的應用偏底層與否其實沒什麼關係. C 語言規範了抽象機器的 行為, 並且要求編譯器的輸出在實體機器上的執行結果要和抽象機 器相同 (5.1.2.3/1). 增加這層抽象化可以確保程式碼可攜, 只是撰寫時需多留意這個觀 念, 避免將實體機器的屬性嵌進程式碼裡. 如 sizeof 運算子是對 物件大小資訊的封裝; 但如果喜歡「從做中學」: printf("sizeof(int) is: %zu\n", sizeof(int)); // (possible) output // sizeof(int) is: 4 因此得到「int 大小為 32 bits」的結論, 那就本末倒置了. 這類 錯誤結論反而會讓你遇到更多 undefined behavior, 影響學習成效 ; 而偏底層應用則是需要活用 implementation-defined behavior. 《C How To Program》一書最強調的就是可攜性, 這點和語言設計 理念相同, 基本上把這本讀熟就能具備工作需要的語言知識. 你反 而得花更多時間去補充領域知識 (domain knowledge). - References ISO/IEC 9899:202x (E) (N2596) http://open-std.org/jtc1/sc22/wg14/www/docs/n2596.pdf C99 Rationale http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf -- [P1389R1] Standing Document for SG20: Guidelines for Teaching C++ to Beginners https://wg21.link/p1389r1 SG20 Education and Recommended Videos for Teaching C++ https://www.cjdb.com.au/sg20-and-videos --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.156.253 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1627155123.A.D23.html
1F:推 nicetw20xx: 謝大大分享 07/25 07:02
2F:推 MoonCode: 07/25 09:12
3F:推 xoy232: 感謝 07/25 09:25
4F:推 brianhsu: 資料型別在不同的機器或實作上會有不同大小這點真的很煩 07/25 10:20
5F:→ brianhsu: …XD 07/25 10:20
6F:推 saitoh: 所以才有int32_t int64_t啊 07/25 10:41
7F:→ labbat: 搞int32_t和int64_t又脫離抽象層變成實體層啦 07/25 12:37
intN_t 主要是給予 bit-pattern 的保證, 而且編譯器也可以選擇 用軟體支援如 __int128 的操作, 所以還是足夠抽象的.
8F:→ krusnoopy: 我看不出來那本書有最強調可攜性耶 至少文字上很少 07/25 12:45
9F:→ krusnoopy: 後面還塞一堆C++ 不知道現在還有沒有 07/25 12:46
10F:推 CoNsTaR: C 語言強調自己是運作在假想機器上,怎麼有種智能障礙者 07/25 17:17
11F:→ CoNsTaR: 強調自己是用智力來學習的感覺... 07/25 17:17
12F:→ CoNsTaR: 錯是沒錯啦 orz 07/25 17:17
13F:推 lturtsamuel: 因為很多人真的以為c可以完全翻譯成組語 07/25 21:49
14F:→ lturtsamuel: 其實在現代編譯器作用下 就算是c語言你也不容易猜到 07/25 21:50
15F:→ lturtsamuel: 背後被生成什麼組語了 07/25 21:50
16F:→ lturtsamuel: 忽略bit數本來就是錯誤的抽象啊...變數的corner case 07/25 21:53
17F:→ lturtsamuel: 本來就該在寫的時候被考慮 它也是程式邏輯的一部分 07/25 21:53
int 等型別的抽象化已經做夠足了, 如極值 (INT_MAX), 位元數 (INT_WIDTH) 等, 可以在大多數情境下使用. 因為這裡不是專板提 太多就失焦惹.. 0rz
18F:→ taipoo: 謝謝分享 07/25 22:10
※ 編輯: loveme00835 (118.233.156.253 臺灣), 07/25/2021 23:08:11
19F:→ leolarrel: 我也不認同"C 語言強調自己是運作在假想機器上". 07/26 16:00
20F:推 brianhsu: C 是有某種程度的抽象話,但這年頭說假想機器或 abstrac 07/26 18:33
21F:→ brianhsu: t machine,我第一個會想到的是 JVM 或 LLVM 這類的東西 07/26 18:33
22F:→ brianhsu: 。 07/26 18:33
23F:→ lturtsamuel: c有llvm後端ㄚ 07/26 20:30
24F:推 wei115: 其實是新機器為了讓C語言跑更快,所以設計的像C的假想機器 07/26 20:45
25F:→ wei115: 不然早期處理器設計百花齊放 07/26 20:46







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP