小木偶的網頁


為何要學程式設計?

可以列出幾點理由:

最近幾年 ( 西元 2015 年左右 ),世界部分國家開始積極推動中小學的程式設計 ( Coding ) 課程。甚至當時的美國總統歐巴馬還親自錄製短片來鼓勵美國人學寫程式,美國教育部也因此通過 STEM 法案,將電腦科學納入中小學正式課程中。其他如歐盟國家、新加坡、韓國等也都已著手推動中小學的程式教學。這股學程式的潮流,正一波波在世界各地蔓延。中華民國自然也不例外,自從 108 課綱開始後,原本國中的「自然與生活科技領域」取消了,把「自然」與「生活科技」分開,把「資訊科技」和「生活科技」合併成為「科技領域」。總言而之,學寫程式,已經是世界潮流了。

電腦軟體,不論是大自 Windows、Android、iOS 等作業系統,或是手機上的 Naver LINE、Google Chrome 等即時通訊軟體或瀏覽器,甚至是小到在瀏覽器上所用的各式各樣的 App 等軟體,全都是程式,都需要人去設計的。科技越是進步,程式設計的人才也需要更多,越是會寫程式,賺錢的機會越多。換句話說,為了錢,也應該去學程式設計。可以參考「學程式 Q&A,從完全不懂到學會,需要多長時間?

大部分的人,如果懂點程式設計,將有助於提升工作效率。例如,EXCEL 不是僅僅能列表而已,它還能做邏輯運算,如果懂得程式設計的人,就能用它提升效率。同樣的狀況也是如此,懂得 HTML 程式設計的人,能輕易設計出網頁,並與人互動,架設網站,販賣產品。也就是說,並非每個人學程式設計的目的,都是要當工程師,設計出大程式來;而是能解決你工作上或生活上的問題,提升效率;甚至有時程式出錯了,也能修正;或是把別人的程式,修改成適合自己用的。

第四項理由是,寫程式可以幫助我們「省錢」。玩電腦,如果不寫程式,我就不知道還有什麼更省錢的方式了,玩電腦遊戲要花錢,而且還得不斷的花錢買遊戲,尤其是線上遊戲,使用者被剝了四層皮 ( 網路費、軟體、點數、生命 ) 而不自知;玩硬體,那更花錢了;燒錄?你燒了那麼多軟體、音樂、電影,真的值得收藏嗎?有時間靜下心來欣賞嗎?燒錄來源有沒有違法?這些可能是常燒錄的人需要考慮的。只有寫程式,僅需很簡單的配備,就可以藉由寫程式消磨一兩個星期,其成就感更勝於電腦遊戲,而且別人不會,我卻會,你說還有那一項比寫程式更值得「玩」下去?

想想美國為何能成為資訊大國?而我們只能做代工?美國吃大魚大肉,我們只吃殘羹剩飯。這是因為我們的基礎,程式設計,不如人太多了。在以前的時代,學電腦的人 ( 包含辦公室的小姐 ) 都必須學程式設計。但是曾幾何時,現在的人所謂的會用電腦,只是用網路聊天、查資料、下載 MP3、打電動等。這些只不過拿別人已寫好的程式來用而已,別人的程式有什麼限制,您就無法使用該功能。現在的人所謂學電腦,好像只變成學組裝電腦、學 Word、學Excel等,少聽說學習程式設計。若我國還想在資訊界出人頭地,程式設計絕對是非常重要的一環。如果很多人學程式設計,必定會有出類拔萃之人,有超越常人的點子,能大幅提升我國軟體工業水準,增進國力。

由以上五點來看,學習程式設計,絕對是必要的!


這個網頁有那些內容

既然學寫程式設計不可避免,那要怎麼入門呢?首先要先了解「什麼是程式設計」?對於不了解程式設計的人來說好像很難解釋得清楚什麼是「程式」。此處,小木偶舉幾個例子說明。所謂程式,就像你把電腦打開,在 Windows 作業系統左向方的「開始」按一下,選擇「 Microsoft Word」。電腦就會執行「Word」,你就能做文書處理;如果你選擇「CD 播放程式」,那麼你就可以聽到由光碟機所放出來的音樂。「Word」、「CD 播放程式」都是程式;而你在「Word」堜瓵擗J的文章,光碟片上的音樂都稱為資料。我們可以說程式是處理資料的方法,程式設計就是人們依照資料要如何處理,一步一步的把處理的過程依一定的規則寫進電腦,而後電腦就會按照我們原先規劃好的步驟處理資料。

那麼,程式又是如何製造出來的呢?在電腦中,一般都是用「程式語言」來撰寫程式。電腦語言有數百中之多,常見的有「C/C++」、「BASIC」、「PASCAL」、「Python」、「Java」、「JavaScript」等等。每一種語言都有自己的規則,語法等等;用途也不太一樣,有的易學難精,有的應用甚廣,有的深奧難懂。但是小木偶最鍾情組合語言 ( Assembly Language,大陸上稱匯編 ) ,儘管組合語言已經算是式微的語言,亦即很少人學過,甚至是沒聽過。但是,你卻可以「看見」電腦是如何一步一步的運算資料,你可以想像資料如何在電腦堙u流動」,電腦的 CPU 如何去處理它。

現在使用者佔最大部分的電腦,其 CPU 幾乎是英特爾或超微所出產的,其上的作業系統大部分是 Windows 95/98/98SE/Me/NT/2K/XP/Vista/7/8/8.1/10 等,或是最近幾年越來越紅的 Linux,不論那一廠商的 CPU 或者作業系統,最底下執行的還是 80x86 的機械碼。即使是各位所用的 Word、IE、燒錄程式等等所有軟體,最底下執行的,仍然是機械碼。而任何程式,不論是 C/C++、BASIC 等等,所編譯後所能執行的也是機械碼。而組合語言是最接近機械碼的語言,它幾乎與機械碼是一對一的關係,所以組合語言可說是最「底層」的語言。雖然有人說,不須如此辛苦,寫程式應像堆積木將別人寫好的拿來用就可以了,不需用組合語言,或許這樣的想法也很好。但是學組合語言自有樂趣,能感到你深入電腦內部,一層一層剝開電腦外衣,侵入她內部、檢視她的肌膚,深入她的骨髓、撫摸她的靈魂……,好像有點走火入魔。我想說的是,學習撰寫組合語言程式比 C/C++ 更能訓練您的大腦。假如你想更了解作業系統,沒有比學組合語言更好。有關「學組合語言有什麼用?」的爭論,其實不少,請參考

不論如何,這個網站的內容主要是「用組合語言去設計程式」的教學。因為組合語言與作業系統很有關係,所以小木偶區分成三個主要的部份:

  1. DOS 組合語言:這是在 16 位元的 DOS 作業系統下,用組合語言撰寫程式。
  2. Win32 組合語言:這是在 32 位元的 Windows 作業系統下,用組合語言撰寫程式。
  3. Win64 組合語言:這是在 64 位元的 Windows 作業系統下,用組合語言撰寫程式。

32 位元的 Windows 作業系統包含 Windows 95/98/98SE/Me/NT/2K;而後來的 Windows XP/7/Vista/8/8.1/10 則分成兩種版本,32 位元和 64 位元。


改版

「小木偶的網站」成立至今,竟已二十年了。電腦螢幕已從原來的 19 吋的 CRT 螢幕到現在 24 吋的液晶螢幕;CPU 從單核心的 Pentium 4/Athlon 64 變成現在至少是 6 核心的 Core i9/Ryzen 9;作業系統也從原來 16 位元與 32 位元混合的 Windows 98 到現在純 64 位元的 Windows 10。進步不可謂不大。小木偶因此也想把自己的網頁改版。大致有幾個方向:

  1. 網頁中使用框架的似乎已越來越少,因此改版後改用下拉式選單式。
  2. 螢幕既已變大,字體就該放大些,以利閱讀。
  3. 去蕪存菁,淘汰舊的資料。
  4. 加強更基礎的原理,例如數字系統、除錯等等。
  5. 簡化範例程式。

小木偶想,大概就是朝這個方向做吧!