天天看點

《C程式設計新思維》一導讀

《C程式設計新思維》一導讀

c程式設計新思維

is it really punk rock

like the party line?

它真的是朋克搖滾麼,

就像政治路線?

——選自wilo的歌曲“too far apart(遙遠)”

c就是punk rock

c僅有為數不多的關鍵詞,并且顯得略微粗糙,但是它很棒[1]!你可以用c來做任何事情。它就像一把吉他上的c、g和d弦,你可以很快就掌握其基本原理,然後就得用你的餘生來打磨和提高。不了解它的人害怕它的威力,并認為它粗糙得不夠安全。實際上它在所有的程式設計語言排名中一直都被認為是最流行的語言,是以根本不需要任何企業或組織花錢去推廣它。

這門語言已經有40年的曆史了,可以說已經進入了中年。創造它的人是少數對抗管制的人,遵從完美的punk rock精神;但那是20世紀70年代的事情了,現在它已曆盡滄桑,成為社會的主流。

當punk rock變成主流的時候人們會怎樣?在其從20世紀70年代出現後的幾十年裡,punk rock已經從邊緣走向中心:the clash、the offspring、green day和the strokes等樂隊已經在全世界賣出了幾百萬的唱片(此處僅作有限的舉例),我也在家附近的超市裡聽過被稱為grunge的一些精簡樂器版本的punk rock分支。sleater-kinney樂隊的前主唱還經常在自己那個很受歡迎的喜劇節目中諷刺punk rocker音樂人。對這種持續的進化,一種反應是畫一條界限,将原來的風格稱為punk rock,而将其餘的東西稱為面向大衆的粗淺的punk。傳統主義者還是可以播放來自20世紀70年代的唱片,但如果唱片的音軌磨損了,他們可以購買數位修複的版本,就像他們為自己的小孩購買ramones牌的連帽衫一樣。

外行是不明白的。有些人聽到punk這個詞腦海裡就勾畫出20世紀70年代并不具有的景象,經常的曆史錯覺就是那個時代的孩子們真的在做什麼不同的事情。喜歡欣賞1973年iggy pop 的黑膠唱片的傳統主義者一直是那麼興趣盎然,但是他們有意無意地加強了那種punk rock已經停滞不前的刻闆印象。

回到c的世界裡,這裡既有揮舞着ansi’89标準大旗的傳統主義者,也有那些擁抱變化,甚至都沒有意識到如果回到20世紀90年代,他們寫的代碼都不可能被成功編譯與運作的人。外行人不會知道個中緣由。他們看到從20世紀80年代起至今還在印刷的書籍和20世紀90年代起至今還存于網上的教程,他們聽到的都是堅持當年的軟體編寫方式的、死硬的傳統主義者的言論,他們甚至都不知道語言本身和别的使用者都在一直進化。非常可惜,他們錯過了一些好東西。

這是一本打破傳統并保持c語言punk精神的書。我對将本書的代碼和1978年kernighan和ritchie出版的書[2]中的c标準進行對比毫無興趣。既然連我的電話機都有512m位元組記憶體,為什麼還在我的書裡花費章節講述如何為可執行檔案減少幾k的位元組呢?我正在一個廉價的紅色上網本上寫這本書,而它卻可以每秒運作3 200 000 000條指令,那為什麼我還要操心8位和16位所帶來的一個操作的差異呢?我們更應該關注如何做到快速編寫代碼并且讓我們的合作者們更容易看懂。畢竟我們是在使用c語言,是以我們那些易讀但是并沒有被完美優化的代碼運作起來還是會比很多繁瑣的語言明顯地快。

第一部分 開發環境

<a href="https://yq.aliyun.com/articles/91664">第1章 準備友善的編譯環境</a>

<a href="https://yq.aliyun.com/articles/91664">1.1 使用包管理器</a>

<a href="https://yq.aliyun.com/articles/91668">1.2 在windows下編譯c</a>

<a href="https://yq.aliyun.com/articles/91682">1.3 庫的路徑</a>

<a href="https://yq.aliyun.com/articles/91708">1.4 使用makefile</a>

<a href="https://yq.aliyun.com/articles/91717">1.5 以源檔案利用庫</a>

<a href="https://yq.aliyun.com/articles/91722">1.6 以源檔案利用庫(即使你的系統管理者不想叫你這麼做)</a>

<a href="https://yq.aliyun.com/articles/91740">1.7 通過本地文檔來編譯c程式</a>

第2章 調試、測試和文檔

第3章 打包項目

第4章 版本控制

第5章 和諧共處

第二部分 語言

<a href="https://yq.aliyun.com/articles/91751">第6章 玩轉指針</a>

<a href="https://yq.aliyun.com/articles/91751">6.1 自動、靜态和手工記憶體</a>

<a href="https://yq.aliyun.com/articles/91762">6.2 持久性的狀态變量</a>

<a href="https://yq.aliyun.com/articles/91791">6.3 不使用malloc的指針</a>

第7章 可以忽略的c文法

第8章 障礙和機遇

第9章 文本

第10章 更好的結構

第11章 c語言的面向對象程式設計

第12章 庫

後記

術語表

歡迎來到異步社群!

繼續閱讀