教孩子寫遊戲:什麼是作業系統?它和程式語言有什麼關係?

2020-12-10 我是遊戲小胡

「學」的部分

首先我們來簡要了解一下,什麼是作業系統。

計算機被發明出來之後,是可以直接使用的,因為計算機的功能就是快速計算嘛!和普通計算器的區別,就是計算機的計算都是二進位的而已。所以,最早發明計算機的目的就是為了科學計算。然而,隨著當時的使用人員(程式設計師)慢慢的深入,發現數學計算可不僅僅是數學計算,很多其他的內容都可以轉化成數學計算。

也是從那個時候開始,我們才真正明白,數學為什麼是基礎科學,因為世界上幾乎所有的事物都可以轉化成數學計算。最早的時候,程式設計師們解決了屏幕顯示的問題,成功把顯示轉化成了數學計算。後來,隨著研究的深入,各種各樣的模擬都變成了數學計算。隨著計算機的功能被開發得越來越多,程式設計師們發現了一個非常嚴重的問題:

計算機功能太多太複雜了,一個人想從零開始學習,可能需要花費半輩子的時間,實在是太耗時間了。

但是,計算機的這些功能都具有劃時代的意義,可不能因為難學就拋棄掉。

後來,程式設計師們真的想到了一個折中的辦法:設計一個中間程序,把使用計算機功能的那些非常繁瑣的、晦澀難懂的部分提前寫好,這樣,這個複雜難用的功能一下子就簡化了。

這個中間程序就是作業系統最初的形態,它把所有紛繁複雜的東西提前處理好了,讓我們可以非常方便地使用計算機那強大的功能。隨著時間的推移以及程式設計師們的經驗累積,人們越發覺得這個中間程序的重要性,如果沒有這個中間程序,他們眼前的計算機就是一臺大型的廢鐵了(因為他們並不懂這個中間程序的具體編寫過程)。

計算機是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的系統功能。

總而言之,作業系統幫我們解決了非常紛繁複雜的計算機功能轉化數學計算的難題,可即便如此,我們要在這個相對「簡單」的平臺上開發新的功能,也是非常不簡單的。

「習」的部分

別看這節課好像在講故事,但這個故事對於編程的理解有著很強的幫助作用。所以,一定要帶著孩子好好學習,最好讓孩子能轉述這個「故事」。

相關焦點

  • 遊戲引擎是什麼?它與遊戲和程式語言是什麼關係? - 麥大麥
    其實不需要遊戲引擎也能製作遊戲,比如C#,VB這些的都能用來製作遊戲,不過過程極為複雜,甚至製作一款連連看這類的小遊戲都得花費大量的時間和精力。後來為了減少遊戲工作者的工作量,那些遊戲製作的前輩們就將他們先前設計過的程序做成一個又一個的程序包整合起來成為了一種隨時方便後續遊戲工作者調去的工具,這就是遊戲引擎。
  • 圖形化少兒編程能教給孩子什麼?
    去年參加了全國信息技術標準化技術委員會的青少年編程之圖形化編程標準制定第一次會議,大家就圖形化編程到底要培養孩子什麼能力展開探討。會議主要觀點有兩種:一種是延續傳統編程的「數據結構+算法」思路,強調複雜的數據結構和算法的應用;另一種是要考慮圖形化編程的特點,強化面向對象的概念。少兒編程是個新鮮事物,社會上對此是一窩蜂的熱,但大家都是摸著石頭過河。
  • 如果你想培養孩子編程,該選擇什麼工具和程式語言好呢
    基礎工具的選擇,筆者認為Scratch是一個好工具,Scratch是MIT研發並開放的一個兒童圖形化編程的工具平臺。可以在web上進行操作和分享,也可以下載到計算機本地。它的來頭可不小,是美國麻省理工學院開發的少兒編程的平臺,如果你不了解,可以百度了解一下這個平臺。這個平臺的優點非常明顯,構成程序的命令和參數通過積木形狀的模塊來實現。用滑鼠拖動模塊到程序編輯欄就可以了。
  • 教孩子寫遊戲:計算機語言那麼多,為何3D遊戲編程偏愛C++語言?
    「學」的內容:在充分理解了計算機是個什麼玩意兒之後,不用我說你都知道,想要寫程序,就要用到計算機語言。通過上節課我們可以知道,電腦是有非常多強大功能的,可是,電腦自己並不會用它自己的強大功能,需要我們通過一定的方式告訴電腦,你應該如何使用。
  • 手機上的安卓作業系統是什麼語言編程?免費開源?碼農給你解釋
    安卓手機的作業系統使用起來非常便利,以高度自由,開源的特性,深受用戶和軟體開發者的喜愛。可以看到現在國內的手機,90%以上都是Android系統,剩下10%的蘋果系統,由於封閉的系統越來越不適應潮流,眾多果粉也面臨大面積倒戈的跡象。
  • 7種教孩子的程式語言
    當孩子們不使用計算機的時候,甚至有很多卡片可以用來學些Scratch編程概念。這使得Blockly成為一個可視化的編輯器,而不僅僅是一種對孩子友好的程式語言。        一邊在屏幕上將積木連接起來編程,一邊可以同時切換為其他的程式語言而查看程序的基本語法,這使得Blockly成為教不同年齡範圍的人(包括孩子和那些年輕時候沒有接觸過Scratch的成年人)學編程的理想語言。
  • 程式語言與並發性之間到底有沒有關係?
    網友子子叔:java跑來跑去需要虛擬機,java虛擬機是用什麼語言寫的你不知道嗎?  網友尼古拉斯曉哲:java底層是用什麼實現的?還不是C和C++嗎?你用Java做成本要高不知道多少倍好不啦!  那麼,問題來了:程式語言和並發性之間到底有沒有關係?可以說一門程式語言在語言層面支持並發性嗎?這裡的並發性又指什麼呢?
  • 少兒遊戲編程:孩子學習遊戲編程有哪些好處?
    我相信,在不久的將來,計算機科學將和數理化科學一樣,變成一門必學的基礎課程。計算機融入生活的當今社會,的的確確是方便了所有的人,可是,計算機給我們帶來方便的同時,也讓一部分人陷入了頭疼之中。其中最頭疼的一部分人就是家長了:似乎真的沒有什麼有效的辦法來引導自己的孩子不沉迷手機遊戲。
  • Python,你到底是什麼程式語言?
    之前說了很多Python的一些基本認識,那今天,我們來聊聊,她到底是什麼程式語言:python是什麼程式語言程式語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什麼意思呢
  • 教孩子寫遊戲:3D遊戲編程離不開矩陣,我們要如何理解矩陣?
    雖然說,我們不需要對矩陣有非常深入的理解,但是,這並不代表著我們可以不學矩陣。這麼說吧,如果你對矩陣一無所知,那麼,整個3D遊戲編程你是學不懂的。你可以靠著強大的記憶力把本課程的代碼記住,並且也能通過自己的摸索寫出類似的3D遊戲來,但是,你對其中的原理是不理解的,將來想要寫功能更強大的3D遊戲,就純粹是天方夜譚了。
  • 詳解:少兒編程學什麼?它和成人編程教育有何不同?
    幾年前,學好編程還只是多個省市的中高考的加分項,就算孩子不學,其他科目的成績優異,也不至於影響升學。但近年來,編程教育課程逐步由加分項升級為中高考必考科目。在近幾年的高考題中,都有編程的身影。即便有政策驅動和新教改加持,仍有不少家長存疑:孩子又不當程式設計師,沒必要學編程;編程那麼枯燥難懂,孩子玩心重肯定沒法靜下心來學……本文將詳解少兒編程學什麼,它與成人編程教育有何不同?少兒編程學習真的枯燥嗎?一、少兒編程學什麼?
  • Unix和Linux作業系統有什麼區別?
    僅僅是因為自己寫的遊戲「StarTravel」無法玩了。因為當時貝爾實驗室研發Multics系統已經宣告失敗。所以,這位大神就找了一臺報廢很久的老爺機PDP-7小型機。注意,這個報廢小型機和我們現在的小型機完全不是一個概念。這個小型機有1個房間那麼大。他不僅在這臺機器上開發出了作業系統內核,還將自己的遊戲重寫了一遍。
  • 推薦 | 陪孩子一起學編程,這6本少兒編程書值得一看
    近年來,由於相關國家政策的引導,少兒編程能力成為家長和學校比較注重培養的能力。但是對於大多數家長來說,由於對編程領域不甚了解,除了為孩子報名編程課之外,很難對孩子的編程學習有什麼幫助。 閱讀年齡:3-9歲 嚴格來說,這本書並非教孩子編寫代碼,而是向孩子傳達一種計算機的思維模式,這種思維模式的理解,對孩子以後認識編程、接受編程會有很大的幫助,除了編程,計算機思維在生活中的其他領域也將產生非常重要的幫助作用。
  • 教孩子寫遊戲:稍微深入了解一下DirectX
    遊戲編程和其他編程不同的地方在於,遊戲編程對程式設計師的要求更高。說一句不太好聽的話:一般的編程都有例子可以「抄」。我相信,很多人都在網上看過類似這樣的段子:A:最近好累,寫程序寫得頭大!B:累?寫程序不都是複製粘貼嗎?
  • 當孩子學編程時他們在學什麼
    爸爸媽媽們一聽焦慮了,趕緊給孩子報班。各種圖形化編程、機器人編程,孩子們玩得很開心,家長看著也挺滿意。但也有善反思的家長會發現:好多編程課,和教孩子畫出賞心悅目圖畫的美術課一個路數,關鍵是要有漂亮的結果能讓家長發朋友圈,孩子到底從中學到了什麼卻很難說清楚,教育機構鼓吹的「編程思維」又是怎麼一回事也很難體會出來。
  • 編程和樂高機器人啥關係、編程啟蒙怎麼做……| 逃媽說編程(下)
    編程者不需要手動寫代碼,只需要將操作界面上的指令方框拖到主界面,並且對指令框做一些參數設置就好。這種拖拽式的程式語言有很多種,比如Scratch、Hopscotch以及國內的編程貓,前面提到的樂高機器人,用的也是拖拽式的程式語言。
  • 少兒編程從什麼語言開始?
    其一是完成編程指令。例如,編程模塊設置的前進、後退、旋轉、避障等功能,機器人讀取後可運動。另一種是提升互動,機器人可以播放音樂、講故事等,來衍生編程之外的功能,讓機器人攜帶的內容更加豐富。實物編程的課堂,地圖是標配。地圖和故事情節的聯繫,使得這個看似枯燥的編程課,在孩子的世界多了一抹明亮的色彩。        Matatalab中,有循環的概念,函數概念的啟蒙。
  • 學C語言和學C++它有毛關係嗎?
    」C和C++到底是什麼關係?首先C++和C語言本來就是兩種不同的程式語言,但C++確實是對C語言的擴充和延伸,並且對C語言提供後向兼容的能力。對於有些人說的C++完全就包含了C語言的說法還是有點彆扭的。
  • 什麼是Python語言,Python語言可以用來做什麼?
    你可能已經聽說過很多種流行的程式語言,比如非常難學的C語言,非常流行的Java語言,適合初學者的Basic語言,適合網頁編程的JavaScript語言等等。那Python是一種什麼語言?首先,我們普及一下程式語言的基礎知識。
  • 你知道孩子為什麼要學編程,少兒編程有什麼用嗎?
    什麼是少兒編程?是通過編程遊戲啟蒙、可視化圖形編程等課程,培養學生的計算思維和創新解難能力的課程 ,學了少兒編程可以潛移默化對語文,數學,英語,科學影響。少兒編程幾歲開始學比較好?12+歲:代碼程式語言學習1孩子可以開始學習一門真正的程式語言,比如Python,初步學習算法、數據結構、面向對象編程,嘗試編寫軟體。也可以接觸一些硬體編程,比如用Arduino做個小機器人等等。少兒編程到底在學什麼?