原文:Exercise 0: The Setuphtml
譯者:飛龍git
在這一章中,你將爲C語言編程配置好你的系統。一個好消息是對於全部使用Linux或者Mac的人,你的系統是爲C語言編程而設計的。C語言的創造者也對Unix操做系統的創造作出了貢獻,而且Linux和OSX都是基於Unix的。事實上,安裝工做會很是簡單。程序員
對於Windows上的用戶,我有一個壞消息:在Windows上學習C很是痛苦。你能夠在Windows上編寫C代碼,這並非問題。問題是全部的庫、函數和工具都和其它的C語言環境有些詫異。C來自於Unix,而且和Unix平臺配合得比較好。恐怕這是一個你並不能接受的事實。github
然而你並不須要爲此恐慌。我並非說要徹底避免Windows。然而我說的是,若是你打算已最短的時間來學習C,你須要接觸Unix並適應它。這同時也對你有幫助,由於懂得一些Unix的知識,也會讓你懂得一些C編程的習慣,以及擴充你的技能。macos
這也意味着每一個人都須要使用命令行。嗯,就是這樣。你將會進入命令行而且鍵入一些命令。不要爲此感到懼怕,由於我會告訴你要鍵入什麼,以及結果應該是什麼樣子,因此你實際上會學到不少東西,同時擴充本身的技能。編程
在多數Linux系統上你都須要安裝一些包。對於基於Debian的系統,例如Ubuntu你須要使用下列命令來安裝一些東西:vim
$ sudo apt-get install build-essential
上面是命令行提示符的一個示例。你須要接觸到能輸入它的地方,找到你的「終端」程序而且運行它。接着,你會看到一個相似於$
的Shell提示符,而且你能夠在裏面鍵入命令。不要鍵入$
,而是它後面的東西。xcode
下面是在基於RPM的Linux系統,例如Fedora中執行相同安裝工做的方法:編輯器
$ su -c "yum groupinstall development-tools"
一旦你運行了它,它會正常工做,你應該可以作本書的第一個練習。若是不能請告訴我。函數
在 Mac OSX上,安裝工做會更簡單。首先,你須要從蘋果官網下載最新的XCode
,或者找到你的安裝DVD並從中安裝。須要下載的文件很大,要花費很長時間,因此我推薦你從DVD安裝。同時,上網搜索「安裝xcode」來指導你來安裝它。
一旦你安裝完XCode,可能須要重啓你的電腦。你能夠找到你的中斷程序而且將它放到快捷啓動欄中。在本書中你會常常用到中斷,因此最好將它放到順手的區域。
對於Windows用戶,你須要在虛擬機中安裝並運行一個基本的Ubuntu Linux系統,來作本書的練習,而且避免任何Windows中安裝的問題。
譯者注:若是你的Windows版本是Win10 14316及以後的版本,能夠開啓Ubuntu子系統來獲取Linux環境。
對於程序員來講,文本編輯器的選擇有些困難。對於初學者我推薦他們使用Gedit
,由於它很簡單,而且能夠用於編寫代碼。然而,它在特定的國際化環境中並不能正常工做。若是你已是老司機的話,你能夠選用你最喜歡的編輯器。
出於這種考慮,我打算讓你嘗試一些你所在平臺上的標準的用於編程的文本編輯器,而且長期使用其中你最喜歡的一個。若是你已經用了Gedit而且很喜歡他,那麼久一致用下去。若是你打算嘗試一些不一樣的編輯器,則趕快嘗試並選擇一個。
最重要的事情是,不要糾結於尋找最完美的編輯器。文本編輯器幾乎都很奇怪,你只須要選擇一個並熟悉它,若是你發現喜歡別的編輯器能夠切換到它。不要在挑選它和把它變得更好上面花不少時間。
這是亦能夠嘗試的一些編輯器:
Linux和OSX上的Gedit
。
OSX上的TextWrangler
。
能夠在終端中運行並幾乎在任何地方工做的Nano
。
每一個人均可能選擇一款不一樣的編輯器,這些只是一部分人所選擇的開源編輯器。在找到你最喜歡的那個以前,嘗試其中的一些,甚至是一些商業編輯器。
IDE,或者「集成開發工具」,會使你變笨。若是你想要成爲一個好的程序員,它會是最糟糕的工具,由於它隱藏了背後的細節,你的工做是弄清楚背後發生了什麼。若是你試着完成一些事情,而且所在平臺根據特定的IDE而設計,它們很是有用,可是對於學習C編程(以及許多其它語言),它們沒有意義。
注
若是你玩過吉他,你應該知道TAB是什麼。可是對於其它人,讓我對其作個解釋。在音樂中有一種曲譜叫作「五線譜」。它是通用、很是古老的曲譜,以一種通用的方法來記下其它人應該在樂器上彈奏的音符。若是你彈過鋼琴,這種曲譜很是易於使用,由於它幾乎就是爲鋼琴和交響樂發明的。
然而吉他是一種奇怪的樂器,它並不能很好地適用這種曲譜。因此吉他手一般使用一種叫作TAB(tablature)的曲譜。它所作的不是告訴你該彈奏哪一個音符,而是在當時應該撥哪根弦。你徹底能夠在不知道所彈奏的單個音符的狀況下學習整首樂曲,許多人也都是這麼作的,可是若是你想知道你彈的是什麼,TAB是毫無心義的。
傳統的曲譜可能比TAB更難一些,可是會告訴你如何演奏音樂,而不是若是玩吉他。經過傳統的曲譜我能夠在鋼琴上,或者在貝斯上彈奏相同的曲子。我也能夠將它放到電腦中,爲它設計所有的樂譜。可是經過TAB我只能在吉他上彈奏。
IDE就像是TAB,你能夠用它很是快速地編程,可是你只可以用一種語言在一個平臺上編程。這就是公司喜歡將它賣給你的緣由。它們知道你比較懶,而且因爲它只適用於它們本身的平臺,他們就將你鎖定在了那個平臺上。
打破這一循環的版本就是不用IDE學習編程。一個普通的文本編輯器,或者一個程序員使用的文本編輯器,例如Vim或者Emacs,能讓你更熟悉代碼。這有一點點困難,可是終結果是你將會熟悉任何代碼,在任何計算機上,以任何語言,而且懂得背後的原理。
譯者注:和Python不一樣,使用編輯器和命令行編寫並編譯C語言存在依賴配置問題。對於Python這種腳本語言,項目中文件之間的全部依賴都存在於代碼中,命令行中只須要運行
Python
,解釋器便於自動加載依賴。可是在C的Makefile中你須要手動配置.c
文件的依賴,若是文件多於5個會很是麻煩。對此你須要找到一種通用的解決方案,或者仍是直接使用IDE。