笨辦法學C 練習0 準備

2021-09-19 04:46:43 字數 2608 閱讀 9747

原文:exercise 0: the setup

譯者:飛龍

在這一章中,你將為c語言程式設計配置好你的系統。乙個好訊息是對於所有使用linux或者mac的人,你的系統是為c語言程式設計而設計的。c語言的創造者也對unix作業系統的創造做出了貢獻,並且linux和osx都是基於unix的。事實上,安裝工作會非常簡單。

對於windows上的使用者,我有乙個壞訊息:在windows上學習c非常痛苦。你可以在windows上編寫c**,這並不是問題。問題是所有的庫、函式和工具都和其它的c語言環境有些詫異。c來自於unix,並且和unix平台配合得比較好。恐怕這是乙個你並不能接受的事實。

然而你並不需要為此恐慌。我並不是說要完全避免windows。然而我說的是,如果你打算已最短的時間來學習c,你需要接觸unix並適應它。這同時也對你有幫助,因為懂得一些unix的知識,也會讓你懂得一些c程式設計的習慣,以及擴充你的技能。

這也意味著每個人都需要使用命令列。嗯,就是這樣。你將會進入命令列並且鍵入一些命令。不要為此感到害怕,因為我會告訴你要鍵入什麼,以及結果應該是什麼樣子,所以你實際上會學到很多東西,同時擴充自己的技能。

在多數linux系統上你都需要安裝一些包。對於基於debian的系統,例如ubuntu你需要使用下列命令來安裝一些東西:

$ sudo apt-get install build-essential
上面是命令列提示符的乙個示例。你需要接觸到能輸入它的地方,找到你的「終端」程式並且執行它。接著,你會看到乙個類似於$的shell提示符,並且你可以在裡面鍵入命令。不要鍵入$,而是它後面的東西。

下面是在基於rpm的linux系統,例如fedora中執行相同安裝工作的方法:

$ su -c "yum groupinstall development-tools"
一旦你執行了它,它會正常工作,你應該能夠做本書的第乙個練習。如果不能請告訴我。

一旦你安裝完xcode,可能需要重啟你的電腦。你可以找到你的中斷程式並且將它放到快捷啟動欄中。在本書中你會經常用到中斷,所以最好將它放到順手的區域。

對於windows使用者,你需要在虛擬機器中安裝並執行乙個基本的ubuntu linux系統,來做本書的練習,並且避免任何windows中安裝的問題。

譯者注:如果你的windows版本是win10 14316及之後的版本,可以開啟ubuntu子系統來獲取linux環境。

,因為它很簡單,並且可以用於編寫**。然而,它在特定的國際化環境中並不能正常工作。如果你已經是老司機的話,你可以選用你最喜歡的編輯器。

出於這種考慮,我打算讓你嘗試一些你所在平台上的標準的用於程式設計的文字編輯器,並且長期使用其中你最喜歡的乙個。如果你已經用了gedit並且很喜歡他,那麼久一致用下去。如果你打算嘗試一些不同的編輯器,則趕快嘗試並選擇乙個。

每個人都可能選擇一款不同的編輯器,這些只是一部分人所選擇的開源編輯器。在找到你最喜歡的那個之前,嘗試其中的一些,甚至是一些商業編輯器。

ide,或者「整合開發工具」,會使你變笨。如果你想要成為乙個好的程式設計師,它會是最糟糕的工具,因為它隱藏了背後的細節,你的工作是弄清楚背後發生了什麼。如果你試著完成一些事情,並且所在平台根據特定的ide而設計,它們非常有用,但是對於學習c程式設計(以及許多其它語言),它們沒有意義。

如果你玩過結他,你應該知道tab是什麼。但是對於其它人,讓我對其做個解釋。在**中有一種樂譜叫做「五線譜」。它是通用、非常古老的樂譜,以一種通用的方法來記下其它人應該在樂器上彈奏的音符。如果你彈過鋼琴,這種樂譜非常易於使用,因為它幾乎就是為鋼琴和交響樂發明的。

然而吉他是一種奇怪的樂器,它並不能很好地適用這種樂譜。所以吉他手通常使用一種叫做tab(tablature)的樂譜。它所做的不是告訴你該彈奏哪個音符,而是在當時應該撥哪根弦。你完全可以在不知道所彈奏的單個音符的情況下學習整首樂曲,許多人也都是這麼做的,但是如果你想知道你彈的是什麼,tab是毫無意義的。

傳統的樂譜可能比tab更難一些,但是會告訴你如何演奏**,而不是如果玩結他。通過傳統的樂譜我可以在鋼琴上,或者在貝斯上彈奏相同的曲子。我也可以將它放到電腦中,為它設計全部的曲譜。但是通過tab我只能在結他上彈奏。

ide就像是tab,你可以用它非常快速地程式設計,但是你只能夠用一種語言在乙個平台上程式設計。這就是公司喜歡將它賣給你的原因。它們知道你比較懶,並且由於它只適用於它們自己的平台,他們就將你鎖定在了那個平台上。

打破這一迴圈的版本就是不用ide學習程式設計。乙個普通的文字編輯器,或者乙個程式設計師使用的文字編輯器,例如vim或者emacs,能讓你更熟悉**。這有一點點困難,但是終結果是你將會熟悉任何**,在任何計算機上,以任何語言,並且懂得背後的原理。

譯者注:和python不同,使用編輯器和命令列編寫並編譯c語言存在依賴配置問題。對於python這種指令碼語言,專案中檔案之間的所有依賴都存在於**中,命令列中只需要執行python,直譯器便於自動載入依賴。但是在c的makefile中你需要手動配置.c檔案的依賴,如果檔案多於5個會非常麻煩。對此你需要找到一種通用的解決方案,或者還是直接使用ide。

笨辦法學C 練習13 Switch語句

原文 exercise 13 switch statement 譯者 飛龍 在其它類似ruby的語言中,switch語句可以處理任意型別的表示式。一些語言比如python沒有switch語句,因為帶有布林表示式的if語句可以做相同的事情。對於這些語言,switch語句比if語句更加靈活,然而內部的機...

《笨辦法學Python》 第0課手記

2.安裝python後不能識別,powershell顯示無法找到python。輸入以下 environment setenvironmentvariable path env path c python27 user 問題解決,根據 的英文含意推斷出,該 設定了環境變數,並為user新增了pytho...

笨辦法學Python

1.知識點 13節講的主要是module 模組 的概念,常用的語法是from xx import 依託於python強大的模組庫,使得呼叫十分輕鬆,功能十分強悍。argv叫做引數變數,可以理解為乙個包裹,在解包 unpack 的時候,將引數值賦給不同的變數名,其中第乙個變數是 隱藏 的,用來指代檔案...