「學」的部分
首先我們來簡要了解一下,什麼是作業系統。
計算機被發明出來之後,是可以直接使用的,因為計算機的功能就是快速計算嘛!和普通計算器的區別,就是計算機的計算都是二進位的而已。所以,最早發明計算機的目的就是為了科學計算。然而,隨著當時的使用人員(程式設計師)慢慢的深入,發現數學計算可不僅僅是數學計算,很多其他的內容都可以轉化成數學計算。
也是從那個時候開始,我們才真正明白,數學為什麼是基礎科學,因為世界上幾乎所有的事物都可以轉化成數學計算。最早的時候,程式設計師們解決了屏幕顯示的問題,成功把顯示轉化成了數學計算。後來,隨著研究的深入,各種各樣的模擬都變成了數學計算。隨著計算機的功能被開發得越來越多,程式設計師們發現了一個非常嚴重的問題:
計算機功能太多太複雜了,一個人想從零開始學習,可能需要花費半輩子的時間,實在是太耗時間了。
但是,計算機的這些功能都具有劃時代的意義,可不能因為難學就拋棄掉。
後來,程式設計師們真的想到了一個折中的辦法:設計一個中間程序,把使用計算機功能的那些非常繁瑣的、晦澀難懂的部分提前寫好,這樣,這個複雜難用的功能一下子就簡化了。
這個中間程序就是作業系統最初的形態,它把所有紛繁複雜的東西提前處理好了,讓我們可以非常方便地使用計算機那強大的功能。隨著時間的推移以及程式設計師們的經驗累積,人們越發覺得這個中間程序的重要性,如果沒有這個中間程序,他們眼前的計算機就是一臺大型的廢鐵了(因為他們並不懂這個中間程序的具體編寫過程)。
計算機是1946年誕生的,一直到70年代末,計算機的體型才變得比較小(差不多小衣櫃大小),也是這個時候,計算機得到了大量的普及,各大研究機構都有一臺計算機,可是,這個中間程序卻越來越不盡如人意:計算機的功能越發展越多,而中間程序的編寫難度是很高的。
所以,70年代末的時候,世界上終於出現了計算機系統了,也就是所謂的作業系統。
作業系統比上面的中間程序要更加完善:中間程序只是為了讓我們更方便使用計算機,而作業系統不僅能方便使用計算機,還具有無限的擴展性!
什麼是無限的擴展性呢?因為作業系統把所有的計算機功能分類整理,只實現了那些最最基礎的功能,然後以這些基礎功能為背景,再去開發新的功能。
這種打完基礎再創造的方式,一直到了微軟的DOS系統出來後,才被利用得淋漓盡致。你可以這樣理解:
假設計算機一共有100個基礎功能,這些基礎功能都是控制計算機某個硬體的功能,比方說控制CPU或者是內存的功能。雖然這些功能看起來很簡單,可是,要用數學的方法來實現這些功能是非常不容易的,況且這個數學只是二進位的加法而已。拿DOS系統來說,它包含了這100個基礎功能的所有機器語言代碼。作為一個程式設計師,只需要熟悉這100個基礎功能怎麼用,就能寫出各種各樣的擴展程序了。比方說,我們要編輯文字,程式設計師就用這100個功能給我們寫了一個DOS版本的文字編輯程序。
所以,從DOS系統開始,計算機的程式語言就已經和計算機的作業系統綁定了,因為所有的計算機基礎功能都是作業系統給的,如果程式語言和作業系統分開,那麼,程式設計師就需要自己編寫計算機的那些基礎功能。比方說,和作業系統綁定的程式語言要在電腦屏幕上顯示一張圖片是非常簡單的,可能一個函數調用就解決了。如果程式語言和作業系統分開,那想要顯示這張圖片,程式設計師就需要把圖片變成數字,把顯示控制變成數字,把屏幕也變成數字,而這些內容,都是非常高深的內容,99.9%的程式設計師都不知道該怎麼辦。
和作業系統綁定的程式語言已經非常方便了,程式設計師為什麼非要單獨寫程序呢?
所以,現在的計算機程式語言,基本上都是和作業系統綁定的。比方說,Windows下有專門的程式語言,Unix下有專門的程式語言,蘋果公司的Mac系統下也有專門的程式語言。不僅僅是電腦,各種可攜式「電腦」也有自己的程式語言,比方說手機啊、掌上遊戲機啊、各種各樣的遊戲主機啊等等。
我們用的最多的就是Windows系統,所以,這個課程用到的C++語言是Windows系統下的。這也是為什麼,我們推薦使用微軟公司的Visual Studio。畢竟Windows是他們寫的,他們製作的C++集成開發環境能最大程度地使用Windows的系統功能。
總而言之,作業系統幫我們解決了非常紛繁複雜的計算機功能轉化數學計算的難題,可即便如此,我們要在這個相對「簡單」的平臺上開發新的功能,也是非常不簡單的。
「習」的部分
別看這節課好像在講故事,但這個故事對於編程的理解有著很強的幫助作用。所以,一定要帶著孩子好好學習,最好讓孩子能轉述這個「故事」。