天天看點

第1章《啟蒙》. 1.開始下一節: 什麼是計算機

第1章《啟蒙》. 1.開始下一節: 什麼是計算機

學習程式設計很難。

這行業的技術結構是這樣的——

相對不變的知識都挺難搞的。比如計算機原理、作業系統原理、編譯原理等,比如網絡協定、算法演繹等,再比如邏輯思維、設計模式等等。相對容易搞定的知識都挺大坨的。一堆一堆,典型的“知識爆炸”,然而程式設計語言各立山頭,各種工具層出不窮,專業術語更是像天天上的星星一樣多,初學者想搞清重 點,難。

是以,可以做這樣一個比喻:你今天晚上說,“我要學習程式設計”,次日一醒突然發現自己生活在沙漠裡,每一顆沙粒都是知識點,你需要在這當中淘出金子,于是你淘啊 淘啊,終于淘到了幾顆發光的東西,然而堅韌的你還是淘不不下去了,為什麼? 因為好渴。那麼,水在哪裡? 在地下800米深處。

看來,開工之前最好能找到前人(也許是先烈)留下的“尋寶圖”才好。可是這一行挑書不僅是智力活,還是體力活。市場此類書籍不但汗牛充棟,而且良莠不齊,就說你現在手上拿着的這本書,是好是壞誰知道呢?

說到買書,在這行想靠一本書就完現“從入門到精通”,那真是妄言。肯定要買好多本的。你是想花大錢買本正版,還是要昧着良心看盜版,前者讓自己變窮,後者讓别人破産,怎麼選擇? 好一個艱難的決定。

學習程式設計很難,如果你想要學習的程式設計語言偏偏又是 C++ ,那就更難了。你剛大聲說我要學習 C++ ,邊上就會有一衆人搖頭歎氣;此時你又不小心露出一本中國人寫的教材,一衆人這下向要拍案而起了!

作為作者,我希望《白話 C++》能夠陪伴 C++ 初學者教材至少730天的路途,或者更遠一點,直到你找到更合适的夥伴。是以我在努力保留必須的知識點的前提下, 将書寫得更加通俗易懂,但也要在此小心翼翼地發問:

“你真的要學習 C++ 嗎?”

如果你猶豫了,請合上書頁,把書輕輕地放回書架,就當什麼也沒有發生。有時放手也是一種選擇。

咦? 你居然還在看! 那就是說,你已知學習 C++ 的艱難但還是要堅持。接着, 尋找盜版書籍的,出門左拐影印店,目送您的背影漸行漸遠,我的心情你懂的。

其他的人們———啊不,居然就隻剩下你一個? 君請随我右轉,進得一小屋,屋内有一魔鏡煜煜生輝,鏡裡有一個“人”,這是一個具有借助本書學習 C++ 基礎條件的人,一個幻影人,讓我們一起看着他

  • 一桌一椅一PC,裝的是 Windows 10,有寬帶。(反面:“真的不能用小霸王學習機?Windows XP 總行吧?”);
  • 書中提到網站“第2學堂”,雖無網址,但他打開Firefox,輕喚“谷哥”,不在;于是改呼“度娘”,很快在浏覽第2學堂。(反面:我對網站沒什麼興趣,但我想上網“人肉”作者的三圍資料……)
  • 書中又說要下載下傳某開源軟體,他上了網站,找到“download”的連結,書中又提到要“Nightly builds”版本,他找到了連結,在下載下傳的過程中,順手用線上辭典翻譯了這個“Nightly builds“。(反面:我不懂英語,身為堂堂正正的聯合國五大常任理事國之一的國民,學習程式設計為什麼要用外文軟體?)
  • 又不知什麼原因,他打開系統某個檔案夾熟練地将一堆檔案移動到另一個地方。“是移動而非複制…… ”他自言自語,并認真地做了确認。(反面: “秘書啊,過來一下……”)
  • 他在檔案夾中,按下 Ctrl-F 熱鍵,找到某個擴充名為 .exe 或 .dll 的檔案,右鍵點選快速地做了些什麼操作……他細細地檢視檔案屬性,嘟囔了一句 我明明剛剛修改了它啊?”(反面:“Ctrl-F?沒有這個鍵啊?”)
  • 有人問他:你的機器和作業系統是32位的還是64位?他要麼是知道,要麼開始上網查相關資訊。(反面:“最讨厭這些滿嘴專業術語就愛裝的人了”)
  • 放下電話,他小心翼翼地打開 C 盤,找到 Windows目錄,把書中要求的某個檔案複制過去。這時電腦提示他有權限問題,他愉快地做出了決定。(反面:“這麼危險的操作,不玩了!”)
  • 他從電腦前站了起來,轉頭、扭腰、壓腿;還打了個簡短的電話,電話交流中滿是問候,看得出他很關心電話另一頭的人。(反面:“我一坐六小時,沒事。”)
  • “請在 Windows控制台進入該目錄……”,書中就這麼說了,可是“控制台”是什麼東西?又如何切換目錄?他了解一本講程式設計的書無法事事從基礎講起,是以默默在搜尋資料,他有了答案,試着按下“小旗鍵”同時按R鍵,再輸入cmd……然後他在學習Windows控制台的常用的指令。(反面:“什麼破書,一件小事都說不清楚!”)
  • 他知道“Ctrl+Alt+Delete”組合鍵的作用,如果不知,此時他正在試。此後他很有興緻地和任務管理器打交道。(反面:這有意思嗎?我隻是想學習寫代碼啊!)
  • 他用全部的指頭熟練地在鍵盤上輸入,那些用兩個甚至一個指頭敲字的人, 那不是他,那不是他。(反面:“真正的高手不都是隻用一個指頭操作嗎?”)
  • 鄰居家的電腦越跑越慢,他過去幫忙了。檢視磁盤或記憶體大小,借助工具殺毒除木馬、優化更新系統,女漢子會做的事,他當然也會…… 反正看清了,他不是那種碰到問題就眨巴着一雙大眼充無辜的人(小眼睛也不行)。(反面: “隔壁的女生又不漂亮!”)
  • 他發了封電子郵件。他有QQ、微信,他加入或關注了許多和程式設計有關的群或圈子。(反面:“我什麼都不懂,在裡面說不上話,我不去。”)
  • 他為了有更多的時間學程式設計,就假裝不是很愛玩遊戲。(反面:“不玩遊戲?那是男人嗎?我寫代碼5分鐘,玩遊戲5小時。”)
  • 他偶爾聽到“動态庫”這個詞,于是上網查了查,到 System32 目錄下搜了搜,一堆檔案讓他若有所思,其實他還是不懂。( 反面:我有個學某某語言的兄弟,他也不懂啊! 為什麼要我懂這麼多!”)
  • 他學習書中做螢幕保護的應用例子,終于做出來了,有一點興奮。費了好長時間加入自己的創意,并把程式安裝到父母的電腦上。第二天他接到老媽的電話,問他電腦螢幕上顯示着:“爸媽,我愛你們”是不是因為中毒了? (反面::“我學程式設計是為賺大錢的!别扯這些小資情調行嗎?”)
  • 他聽說過 Linux,也了解“opensource”。當看到書中文字:“Code::Blocks是一套跨系統的、開源的、免費的 C++ 內建開發環境”時,他可能還不知什麼是“Code::Blocks”,也不懂什麼叫“C++ 內建開發環境”,但他會覺得中間那三個“的 ”确實有些吸引人。(反面:扯淡吧?除了“有錢的”,别的能有什麼吸引力?)
  • 他中學英語沒有全部還給老師。當學習上遇到不懂而又必須懂的英語單詞或句子時,他會去查安裝在電腦上的電子辭典。當我說“In”是輸入,“Out”是輸出時,他覺得自然。(反面:“我還是再找找,我一定能找到純漢字程式設計……”)
  • 他有點數學基礎。可以是國中的、高中的或大學的…… 反正在這本書裡,高中的數學知識都碰不上。(反面:“我數學太差,是以我肯定學不好程式設計……買這書,又沖動了……”)
  • 他在生活中不笨,不是騙子經常光臨的對象;也不經常扮演那種自己把自己丢在大街上的角色。還有,或許他并不喜歡多說話,但在别人眼裡他卻是個講邏輯的人。(反面:“老師,我不笨,快點開始教學吧,我着急寫一個計算大獎特碼的程式呢。”)
  • 最後,他有信心、恒心、耐心、細心。無論如何,他能堅持做完第二章裡面的那些瑣碎的“準備工作”(當然,如果因為國外網站下載下傳太慢,請上本書官網(第2學堂)下載下傳書中的所需的軟體包)。(反面:“太TM煩了,程式員這種高端人士為什麼需要幹這麼多雜活?”)
  • 他……(反面:“呸!!學個程式設計給我開這麼多條件!!!作者你失心瘋了吧?你以為你是誰啊?不就是個20年的謝頂了的老碼農嗎?我要退書!)”

魔鏡的光慢慢暗淡,舞台的追光打在你的頭發茂密的頂上,你沉默不語,安靜得像一座雕像大衛……半天,你開口說話了: “我長這麼大,還真頭一回看到這麼啰裡八嗦的書”。 “那麼,你現在還想成為一名 C++ 程式員嗎?” “書都買了,然後還讓你給強行簽名了,你還想讓我怎麼着?”

往下的學習,就讓我們以 C++程式員的全新角度看待眼前這台計算機。聽說C++程式員的眼光自帶X射線效果,用它看計算機,會看到什麼呢?

下一節: 什麼是計算機

一部《紅樓夢》,據說經學家看見“易”,道學家看見“淫”,才子看見“纏綿”,革命者看見“排滿”,流言家看見宮闱秘事……我在讀三年級時翻開《紅樓夢》,看到是一堆的繁體字。如果現在我以程式員的眼光去“重逛”大觀園,會看到什麼樣的紅樓呢?我不知道,還是來說一說計算機的事吧。

(另外,以上那段有關紅樓的話,真是魯迅說的,為什麼總有人說是我編的?)