Quantcast
Channel: 科學傳播 – PanSci 泛科學
Viewing all articles
Browse latest Browse all 1714

全民學程式真的能提升台灣的「軟」實力嗎?不如讓工程師保留赤子之心吧!

$
0
0
  • 文/Ming|曾經夢想走在文學的道路上,成為一個文人,卻意外撞進理工的世界,最後竟成了軟韌體工程師,但依舊對於自然科學保有好奇心,對社會及環境依舊關心,期望能將工程師的世界與普羅大眾的搭上軌,拉近彼此陌生的距離。

近幾年學程式的風潮盛行,好像不學程式就落伍似的。坊間各種電腦補習班林立、政府也大力推動,甚至連國中、小都要開始推行程式教育;彷彿不會程式,我們就會被這個大環境給淘汰。從大數據、雲端網路再到工業4.0,整個城市似乎都在程式的浪潮當中。矽谷最搶手!IT 新兵訓練營 程式設計夯「客製」課程難度 文學系也學大數據「高教深耕」教部規劃50%大學生學程式設計資訊教育從小紮根!「不插電」學習法 幼稚園學程式語言」……,這樣的新聞資訊,在這幾年來多的可怕,但我們靜下來思考與分析,這樣的熱潮與推行真的能改變我們電腦科學素質與精神嗎?

台灣的電腦科學素質好嗎?好像也還不錯吧!曾經號稱「電腦王國 」,目前市面上也有幾家國際知名的電腦大廠,例如:宏碁、華碩……等,在電腦硬體產業的發展,倒也頗有幾分樣子,但電腦科學,只有硬體嗎?那軟體上的發展呢?咦!好像沒甚麼印象!似乎不太清楚,到底電腦科學的靈魂「軟體」我們發展的如何呢?

台灣的電腦科學發展史

我們可以先回過頭來,快速地回顧一下台灣的電腦科學發展史。電腦於 1940 年代被發明,於 1960 年代開始商業普及,而台灣也在同一個時期將電腦引入台灣。 1970 年代,由有「中文電腦之父」之稱的朱邦復先生創造了倉頡輸入法,這是兩岸三地最早普及的型碼輸入法。而在 1983 年更完成了直到了今天,我們依舊在仍然可能會使用的—「大五碼」(Big5)。

簡單來說「大五碼」就是電腦編碼裏頭,專門收錄中文的字元集。英文最常見的就是ASCII碼,但英文只有26個字母,再加上一些符號,所以編碼很簡單;相比之下,中文字的編碼複雜太多了,所以早期的中文系統很亂,各家有各家的編碼方式,造成很多應用軟體是不能互通,這個概念很像現在微軟和蘋果的作業系統常常軟體不互通的感覺。因此在台灣能在電腦發展初期,就發展出一套統一的編碼方式,這其實是一件很厲害的事情!

另外,宏碁於 1981 年發表了「小教授一號」,這是一款針對 Zilog Z80 微處理器所開發的訓練用電腦,也因為我們很早開始了電腦科學的發展,所以台灣在電腦科學一直存在一定的影響力。

時間到了 1990 年代,那是台灣大補帖盛行的年代,也是台灣電腦軟體最鼎盛的年代,在台北光華商場你很容易可以看到電腦相關的書籍,當時電腦旋風剛席捲全台,電腦遊戲盜版採用大補帖的情況非常嚴重(這當然不是好事,但也代表很夯)。

這也正是台灣軟體最興盛的時期,當時還創立了幾款列為中文世界史上經典的 RPG 遊戲,例如大名鼎鼎的「仙劍奇俠傳」,就是那個後來被寫成小說、改編成電視劇以及不斷再版的「仙劍」,在當時出現的還有另一個並駕齊驅的「軒轅劍系列」,後來也是被中國大陸改編、拍成電視劇。在當時的電腦還是 DOS 作業系統的年代,台灣的遊戲軟體實力可以稱得上是中文世界的霸主。

中文世界史上經典的RPG遊戲,大名鼎鼎的「仙劍奇俠傳」。圖/作者電腦遊戲擷取

而在 1998 年的時候,一隻由台灣開發名叫「CIH」的電腦病毒冒了出來,且在後來的幾年更造成全球無數的電腦遭受感染,引發一場軒然大波。CHI 病毒,因為被設定在 4 月 26 日,剛好與車諾比核災的時間相同,所以也被稱為「車諾比病毒」。

source:Wikimedia

這隻病毒可以說是台灣軟體實力巔峰的證明,當年由台灣大同工學院(現在的大同大學)資工系的學生陳盈豪所開發,當初開發的目的只是單純的想證明,那時很多防毒軟體都號稱可以百分百防毒的謊言(就是這麼單純的原因),卻因為陰錯陽差的意外讓這款病毒造成全球的大感染。這隻病毒最厲害的地方在於他除了能破壞電腦硬碟,也會造成資料的毀壞、還能攻擊電腦的 BIOS (可以把 BIOS 想成電腦的心臟),造成整台電腦根本開不了機,必須更換晶片才行。這是史上第一隻會因為讓電腦中毒,而害得電腦需要維修硬體的電腦病毒,你能想像嗎?因為軟體寫出來的幾行程式碼,造成整台電腦幾乎報銷,如果沒有對整個電腦系統軟、硬體架構有通透的了解,是不可能辦到的

電腦科學的發展需要怎樣的環境?

從上面我們可以看到,台灣在電腦軟體科學上的發展曾是如此的輝煌,不僅僅是電腦硬體的成功才造就的所謂的「電腦王國」,軟體也是曾經有過一片天空的。但為何在最近的十幾年間,除了硬體產業能代表科技業,台灣的軟體業似乎就只能沾著科技業的邊緣、在那裏載浮載沉;為何電腦科學發展到了今天,似乎開始越來越無力,還成了必須由政策來大力推廣的情境呢?

如果電腦科學的興盛,是一棵欣欣向榮的大樹,電腦硬體就是樹木的主幹和樹枝,軟體技術就是那些茂盛的葉子,而開花結果就像是能夠銷售的產品;那現在我們的這棵電腦科學樹,似乎開不了花、結不了果、葉子似乎也長得不太好,這到底是什麼原因造成的呢?我們也許應該集中探討關於培養軟體所需要的土壤到底是什麼,讓我們回到整個問題最根本的因素:是什麼樣的環境才能造就興盛的軟體科技產業,是什麼樣的因素才能驅使人們創造出舉世驚人的軟體作品?

Google首頁搜尋欄位輸入「do a barrel roll」,會看到網頁開始翻轉。圖/Google 網站擷取

不知道大家是否有注意到目前最大的搜尋平台「Google」,常常會在特定的節日動不動就搞一堆有的沒的「驚喜」,有的時候是有趣的動畫,偶爾還會伴隨簡單的遊戲。除此之外,Google 也在他的搜尋引擎藏著幾個「彩蛋」。比如說,現在請在你的 Google 首頁搜尋欄位輸入「do a barrel roll」,應該會看到你的網頁開始翻轉,這是因為任天堂有一款遊戲「星戰火狐 64」,其中一個技能是快按Z 或 R 兩下,就可以翻滾的快速飛轉彈開子彈,所以你如果搜尋「 Z or R twice」效果其實是一樣的!「Zerg Rush」是「星海爭霸」裏頭一種快速複製去攻擊敵人的一種蟲,因此在首頁搜尋欄輸入「Zerg Rush」,你會看到你的網頁開始被吃掉了。如果你於圖片搜尋欄位輸入「Atari Breakout」,則會出現一個復古的打磚塊遊戲。

圖片搜尋欄位輸入「Atari Breakout」,會出現一個復古的打磚塊遊戲。圖/Google 網站擷取

到底 Google 搞這些有的沒的事情,有什麼原因嗎?如果你仔細探究,你會發現答案竟然只是因為這樣很好玩,這看起來也許很幼稚的原因。難道你認為只有 Google 才做這種事嗎?只有現在才這樣做嗎?不!大名鼎鼎的微軟也做過這種事,最著名的彩蛋,莫過於微軟的 Microsoft Excel 2000 隱藏了一個賽車遊戲 Dev Hunter,除此之外,我們現在常用的壓縮軟體「WinRAR」裏頭的也藏有也許大家認為毫無意義的彩蛋(如下圖,如在「關於WinRAR」的那本書,給他點兩下,那本書會掉下去)
。做這些事情的基本原因就是因為他很有趣,他很好玩,這也是許多軟體設計師的起心動念,台灣 90 年代的軟體啟蒙,也是這樣開始的。

圖 / 作者提供

回頭我們再來探討,本文一開始要重新思索的問題,怎樣才是提升電腦科學的環境,培養軟體人才的重要養分呢?從上述這些例子中我們可以歸納觀察出,不管是目前國外軟體人、還是早期國內的軟體人,這些人之所以會投入軟體的開發、熱衷於電腦科學,不外乎在於電腦是一個很有趣的東西。就是因為他很好玩,不管你是想開發它來玩遊戲,或是拿來開發病毒(當然好孩子不應該這樣),最根本的驅使因素,都是那最原始的頑皮與童趣的吸引力,電腦就是一個好玩的東西!因為他很好玩、很有趣,所以才有這麼多人願意投入,也因為這樣才會創造出有價值並吸引人的產品。

今天我們的新政策,竟然開始要把它納入必要的課程,而又讓許多非電腦資訊背景的老師們,教我們的學生如何寫程式,如何學習電腦科學,把它當成我們八股考試的一環,填鴨教育的一個課程,這樣電腦科學還能在我們的環境下,保有它那最初「有趣」的動機與本質嗎?這樣的推行,到底是在幫我們「提升」軟體環境,還是摧毀我們的軟體人才呢?

要讓我們的軟體土壤繼續發芽,請先保有你的赤子之心吧!圖/By PublicDomainPictures @ Pixabay

們無法輕易的改變政策,但我們可以先改變自己,電腦科學最讓人流連忘返的地方,就是他自由自在地發揮你的想像力與創造力,利用「程式」把你內心的想法創作成作品,而且這個作品是可以很直接地與大眾互動的,當人們無法自由地發揮你的想像力和創造力的時候,即便你學會寫程式,也就只是拿到一個無用的工具,這樣的培養並不會造就更好的軟體人才,也不會提升我們的軟體實力,不論你是希望培養孩子擁有程式語言能力的家長,還是正在教授資訊相關科學的老師,又或者只是自己想要成為程式設計的追夢人,都請先讓自己變成一個有趣的人,改變自己以及影響你周圍的人,要讓我們的軟體土壤繼續發芽,請先保有你的赤子之心吧!

參考資料

 

The post 全民學程式真的能提升台灣的「軟」實力嗎?不如讓工程師保留赤子之心吧! appeared first on PanSci 泛科學.


Viewing all articles
Browse latest Browse all 1714

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>