電子佈告欄(Bulletin Board System,以下簡稱為BBS)在網際網路剛發展時非常盛行,但隨著時代的進步,網路呈現的方式越來越多,所以使用BBS的人也逐漸減少。不過,它的影響力仍不可忽視,以臺灣最知名的BBS──PTT來講,使用人數每小時平均有13萬,而同時連線最多可近15萬人,並且也造就了許多次文化。平常有上BBS習慣的人,幾乎都聽過也使用過PCMan這套BBS連線軟體。而打造PCMan的作者,就是目前任職於北部某醫學中心內科住院醫師的洪任諭。而除了知名的PCMan外,其實連下載次數超過3,000多萬的Firefox IE Tab套件,也是他打造出來的軟體。

從沒上過電腦補習班,程式開發完全自修

洪任諭畢業於陽明大學醫學系,學業、工作繁忙的他,很難讓人想像,他的興趣竟然是程式開發。而讓人更驚訝的是,他竟沒有上過任何補習班或相關課程,都是靠自修習得。而他程式開發如此厲害,為何是念醫學系,而非資訊科系?洪任諭說,他覺得資訊科系整天都要面對電腦,也較少接觸人群,他不喜歡這種感覺。除此之外,他認為醫學系能跨領域,與各種不同的專長結合,出路更廣。

洪任諭會接觸程式開發,是因為高二時家中買了電腦,而他覺得買來只打電動實在太浪費了,所以開始想電腦還能做些什麼。而最簡單的方式,就是看電腦補習班傳單上的授課項目,零零總總的一堆課程。他心想,不然自己也來學。但那些課程對於學生太過昂貴,所以他選擇買書自修。

洪任諭第一次碰的程式語言為Quick Basic,可是當他看完書後發現業界沒有人用Quick Basic後,他就跑去改學C。他說,那時學C語言,頂多只是印出幾行字或星型符號,完全不能理解它還能夠做些什麼。之後在學校的電腦課中,聽到老師說C語言能夠寫出像Windows這類的程式,讓他覺得不可思議。

意外打造出PCMan連線軟體

洪任諭從對程式一無所知,到能夠獨立開發PCMan,其實中間過程都是誤打誤撞造成的。在高二的時候,他的電腦處理器是Pentium II 266MHz,記憶體只有64MB。洪任諭說,那時KKMan剛出來,他大多用它上BBS。不過,因為自己電腦硬體差,使用起來非常「卡」。他某次跟同學聊天時抱怨說,如果自己會寫程式,要寫一套能讓自己電腦跑得順的連線軟體。結果,後來這玩笑話就成真了。

開發PCMan這套軟體,其實並不是為了當初那句玩笑話。洪任諭說,他高三的時候開始學C++,並且接觸Windows MFC(Microsoft Foundation Classes,微軟基礎類別庫)。那時,他對於MFC中的Socket Programming功能感到非常好奇。因為上面寫著,該功能只要輸入IP位址與服務埠,就能連線到主機。

而洪任諭當時記得住的IP位址,就只有學校的BBS位址。輸入後,他收到BBS的歡迎訊息,讓他嚇一跳。他心想,為什麼別人畫面是彩色,而自己的卻是黑白,並且只有一行字,還有許多看不懂的指令。他問學校電腦老師,老師說那是Telnet通訊協定的RFC 854,可以與對方主機進行溝通。

由於通訊協定RFC 854的參考文件為英文,而且因為文章複雜,使他難以閱讀。而跟同學討論時,決定去用NetTerm這套連線軟體。該軟體除了能連線到BBS外,還能儲存成記錄檔。而他就用NetTerm,一步一步研究每個指令進出的紀錄檔。洪任諭發現,每次資料送回來,都是沒有經過解碼的16進位資料;而且這些資料中,夾雜在文字中間的英文指令,都是RFC 854通訊協定。

他就照著操作取得的指令,透過Socket Programming傳到BBS主機。接著,第二個字串就回傳過來,但這些字串沒有經過排版。他也好奇KKMan的連線畫面為何有彩色,他的軟體卻沒有。而這些字串,字與字的中間有著許多看不懂的符號。他把這些符號濾掉後,剩下的就跟KKMan的黑白畫面一樣。

後來,他才知道那些符號是彩色及控制游標符號的終端機指令。而這時候,洪任諭的C++基礎還沒學好,開發上卻先接觸MFC,結果導致許多功能使用上有問題。最後,他把程式重寫了3、4次才有個雛形。

而他就這樣,每個功能都像尋寶似的,將KKMan能夠做而自己軟體卻沒有的功能,慢慢研究並加上去。基本功能都建置完後,他才把分頁、選取文字之類的進階功能加入。並在升大學那個暑假,正式推出第一版PCMan。他說,軟體當初取名為PCMan,並不是為了跟KKMan打對臺。而PCMan這名字,是來自於洪任諭的BBS ID,而後面的Man只是湊巧相同而已。

將PCMan轉移到Linux後,順手開發了桌面系統LXDE

第一版PCMan推出後,因為大受好評,陸續有網友寄信,希望洪任諭加入不同的功能。而他也曾經受到PTT站長的幫助,表示願意協助推廣PCMan。也因為這樣,使他開始著手將PCMan轉移到不同平臺上。而這個原因,也造就了他另一個軟體大作──Linux LXDE桌面系統。

當時,洪任諭只是為了開發Linux版的PCMan而接觸Linux。他不只不會上面的程式語言,甚至沒接觸過這套作業系統。那時候,他透過wxWidgets(Windows and X widgets)跨平臺函式庫重新改寫PCMan,原本以為在Linux上重新編譯就能使用。結果編譯完後,發現PCMan不能使用,而且部分功能有問題。

洪任諭想,似乎只差臨門一腳就完成,索性就打開類別庫來修改Bug,結果發現裡面都是GTK+(GIMP Toolkit)的圖形介面函式庫。後來,他為了修理編譯錯誤的部分而學習GTK。而接觸GTK沒多久後,他發現似乎也不難。因此決定,與其修改出錯的部分,不如直接用GTK重寫。也因為修改時大多是在Linux環境上,後來他也成為Linux使用者。

而LXDE的開發,純粹是因為洪任諭在使用Linux時,每次開GNOME的檔案管理員都要花上20幾秒,他覺得開啟時間這麼久,其中一定有問題。後來,他就開發了輕巧、開啟速度快的PCMan檔案管理程式。不過,後來推廣上屢遭挫折,一直無法增加使用人數。他那時想,可能是因為使用者都習慣用桌面系統預設的檔案管理介面,所以推廣上較困難。

於是,洪任諭就找了幾個精通Linux的網友組成開發團隊,打造輕巧的Linux桌面系統。而LXDE後來也受Linux使用者的擁載,且被Ubuntu的分支Lubuntu收錄。LXDE並無版本的差異,這是因為LXDE的基本精神是模組化的桌面系統,它是由許多獨立元件組合而成,且元件間無相依性。使用者能視自己的需求,選擇元件使用。所以他們這個開發團隊,只會更新元件版本。

程式開發需要學以致用,才能維持開發的熱情

洪任諭製造的軟體,大多都是因為練習程式語言,或是市面上缺乏自己想要的工具,才開發出來的。以PCMan和LXDE來說,其實初衷都是來自於電腦硬體差、執行程式速度過慢,而決定自己開發輕巧型的軟體來使用。

洪任諭為了確定軟體是否夠輕量化,到2007年之前,他釋出每一版PCMan之前,都會安裝到自己的Pentium II電腦上驗證。只要執行時夠順暢,就代表該版本沒問題;如果較遲鈍,那就代表它程式碼可能有寫錯的地方。也因為這樣,每個版本的PCMan,使用上就是較別的BBS連線軟體輕巧。

大多數人一定都好奇,洪任諭是如何讓自己的程式開發變得如此厲害?洪任諭說,在學習程式開發時,千萬別自我設限,並且要學以致用,如此才能激起撰寫程式的熱情。

 

IT人物

洪任諭 內科住院醫師

● 出生年:1983年

● 學經歷:陽明大學醫學系畢業,現任北部某醫學中心的內科住院醫師,任職時間約3年

● 軟體作品:PCMan BBS系列軟體、新酷音輸入法Windows版、Firefox IE Tab套件、Linux LXDE桌面系統

 


Advertisement