首頁 / 少年科技人雜誌 / 2015年2月號

進入開放原始碼領域的方法

對於還沒有進入『電腦軟硬體工業』的人們而言,很多人並不清楚開放原始碼對目前資訊工業的影響力到底如何?因為很多學校都還是採用商業公司,特別是微軟的解決方案在進行教學。大部分學校的電腦教室也都還是安裝著 Windows ,而非開放原始碼的 Linux。

但是、一但進入資訊工業領域,特別是偏向系統程式的領域,開放原始碼的影響力就會變得非常強大,從底層的 Linux 作業系統、Gcc 編譯器工具鏈、到應用層的 webkit 瀏覽器、Apache, Nginx 伺服器、MySQL, PostgreSQL 資料庫、 Python, Ruby, PHP, Node.js 等開發環境,甚至到整個雲端架構的 OpenStack, QEMU, Docker, Hadoop 等等,還有 google 推出的 android 手機系統等等,都是開放原始碼的天下。

這種情況對於一位還沒進入工業體系的少年科技人而言,可以說是好事也是壞事。好的一面是我們可以透過開放原始碼理解整個資訊工業體系的各種技術,並且從中學習並參與資訊工業的運作。但是壞的一面是,開放原始碼的技術太多,對於剛入門的人而言,很容易會迷失方向而找不到頭緒,相對的比較難以入門。

舉例而言,現在要學習 web 網站的程式設計,我們可以選擇採用 PHP , ASP, Python, Ruby 或 Node.js 等方案,而當你進入這些方案之後,又會發現有更多紛亂的技術並陳在你的面前,於是『歧路之中、又有歧焉』的情況就會讓你難以抉擇,這時很多人就會無所適從了。

以 Node.js 為例,當您想學習此一技術時,就會發現需要學習前端的 HTML/CSS/JavaScript/jQuery/Bootstrap/React.js/Angular.js/Backbone.js 等技術,還有前後兩端的 Express.js/Connect.js/Socket.io 等套件。還有前後端都可以用的 underscore.js/Async.js/Assert/Vows/Mocha 等等,以及用來產生網頁的樣板引擎 jade, ejs ,以及 Redis, MongoDB, CouchDB, Mongoose 等相關軟體,然後還必須了解開放原始碼交換平台 github , google code, sourceforge 等網站,以及最後要上線到雲端的宿主網站 Heroku, Cloud Foundry, Nodester, Amazon EC2 等等服務,這可以說是相當複雜的一個世界。

而且、這些還不是全部!

由於每個人都可以自行創見開放原始碼專案,所以您可以用在 node.js 上建制網站的開源專案恐怕有超過一萬個,我想沒有任何人可以對所有專案都能有深入的了解。

還好、我們並不需要先理解所有的這些才能開始寫程式或建構自己的專案,通常我們會採用『一邊學一邊做』的方式,需要什麼就學什麼,需要哪類專案就去尋找,然後用『吸星大法』納為己用,而不是一開始就學會所有的技術,才開始去製作專案的。

所以、如果您想透過開放原始碼,成為一位專業的程式人,筆者會建議您在閱讀一兩本入門書籍之後,就開始構思自己想參與哪種專案,或者想建構出什麼樣的程式。然後採用邊學邊做的方式,完成您想完成的專案。

當您透過這種方式完成了一些專案的時候,您就已經從『素人』開始變成『專家』了,這時候您就已經身在開放原始碼所建構出來的資訊工業體系裡,成為其中的一位『程式人』了。

以下是筆者非常喜歡的一部影片,這是 pcman 的創建者『洪任諭醫師』講述自己如何透過建構 pcman 這個連接 BBS 的專案,從『程式素人』變成『程式專家』的故事,在此分享給讀者參考。


本文部份內容與大部份圖片修改自 維基百科 , 使用時請遵守 姓名標示、相同方式分享 授權。
編輯: 陳鍾誠 email: ccckmit@gmail.com