高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

我選擇的程式語言

image

這篇文章並沒有要比較哪個程式語言比較威,選擇適合自己的,寫得開心才是王道。

工作十餘年,手上吃飯的工具跟換女朋友一樣一直在換,以前看著TIOBE的排行榜跟股市一樣起起伏伏,擔心自己學的技術變成非主流、不值錢了,不過年紀大了,在乎的事情也變得不一樣了,腦袋沒辦法裝太多東西,覺得是該定下來的時候了。

當然,一直換的好處就是一直玩新東西,很有趣,但缺點就是學不精。這裡有一篇該學什麼程式語言,我覺得寫得還滿實際的。

跟著主流跑是不錯的選擇,比較安全,工作好找,而且用的人多,遇到問題的時候網路上能找到的答案也多,不過我個人就是喜歡非主流的玩具就是了。以下是一些我目前比較偏好,沒意外的話也應該會把它當做是長期投資的選擇:

ActionScript

Why?

  • Flash/Flex專用的程式語言。
  • 我對它的熟悉程度最高,這應該是我選擇它的主要原因之一。
  • 學習曲線中等。
  • 豐富的多媒體支援,即使很多人不喜歡它,但還是目前製作web game/FB game的首選。
  • 市場需求不算太低,很多台灣的企業還是會選擇用Flash來製作網站,這對”活下來”來說很重要。
  • 商業公司(Adobe)支援。也許有人就是因為有商業公司而不喜歡,不過我想這比起O社那種把別人買下來之後再把它用一些讓人覺得不舒服的手段把它弄爛好多了。
  • 一直有在更新,這挺重要的。
  • 有目前全世界普及率最高的runtime,幾乎每台能上網的電腦都有安裝flash player。
  • 不用太擔心瀏覽器相容性的問題,這應該是很多web front-end engineer的痛。
  • AIR可以用! 這是我選擇它的另一個重要原因,AIR除了可以拿來寫一般的應用程式,也可以拿來寫手機的app,特別是昇級到2.6版之後支援更多的iOS的硬體裝置,效能也改善不少(可參考Maso的這篇文章)。
  • 跨平台,有了flash player跟AIR,你做的網頁或是應用程式真的有機會可以做到”Write Once, Run Anywhere”。
  • 有很棒的framework(PureMVC、Progression、Gaia、Robotlegs),也有很多現成的lib可以用(3D、Particle..etc),不用每次都重新自己打造輪子。
  • 網路資源多,參考書也不少,官方的API手冊也很棒。
  • 新版的flash player將支援GPU,能做的事情更多了。

Why NOT?

  • 效能差? Flash在慢主要是因為太多圖檔在跑來跑去的關係,這即使用其它的來做也不見得比較好。之後的flash player版本會支援GPU,應該會改善很多。
  • 不開放? 我覺得這不是什麼問題,iOS也沒開放也是一堆人在追。我個人崇尚open source的精神,但並不是什麼東西都要open才是好的。
  • 開發工具太貴? 我覺得還好,Flash IDE不是一套幾百幾十萬,通常只要一、二個專案就可以賺回來。就算不買官方的軟體,也有免費的Flex SDK加上免費又超威且open source的FlashDevelop可以用。

Ruby

Why?

  • 我喜歡它簡單好寫又有趣的語法(純個人喜好)。
  • 學習曲線中等。
  • 有很威的Ruby on Rails可以用,這應該是很多人學習Ruby的原因,甚至很多人以為Rails == Ruby。至於為什麼選擇Rails,可參考這篇
  • 有很多別人寫好的Gem可以用。
  • Unix-like跟Mac OS都有內建安裝了,就算是windows也可以找得到安裝的版本,簡單好寫免編譯,拿來當”膠水“還不錯用。
  • 網路資源夠多,官方的reference也做得挺好
  • 因為學習Ruby/Rails的關係,能玩很多新玩具。這點對我來說很重要,要我一直用一樣的東西實在很痛苦,我不希望自己有一天變成是「號稱有十年工作經驗,但其實是只有一年經驗,但重複九次」。

Why NOT?

  • 效能差? 如果可以換來更好的開發效率,我覺得還好,而且老實說慢不到哪裡去。
  • 環境取得不易? 這點倒是真的,支援Rails的主機的確是相對的很少,不過對我來說不是太大的問題,我可以自己想辦法setup自己的主機,或是直接去AWS EC2自己弄個instance也能搞定。現在也有mod_rails(passenger)可以掛到現有的apache/nginx上,設定越來越方便。
  • 工程師不好找? 我想今年XDite在OSDC.tw上的那場talk應該有滿好的解釋(投影片)。

Objective-C

Why?

  • 商業公司(Apple)支援,不斷的推出新的設備,i-device的買氣一直居高不下,讓iOS app的需求越來越高,Objective-C的需求自然也跟著上衝,這點不用我講,看它在TIOBE的排名暴衝就知道了。
  • 是iOS app用的原生語言,其實優點不用太多,如果打算往iOS方向發展,光是”Native”這個優點我就會想選它了。
  • 系統不開放,我覺得這是優點,至少不用像另一邊的A牌系統,硬體廠商太多,光是解析度就好幾種了(可參考這則有趣的漫畫)。
  • 市面上的書越來越多,官方的文件更是多到看不完。

Why NOT?

  • 學習曲線高? 程式語法大家看不習慣,API method名子太長,不過這都只要寫一陣子就會慢慢習慣。
  • 開發工具要錢? 新版的Xcode4如果沒加入apple developer program的話,需要5塊美金購買,不過5塊美金比起其它的開發工具來說算滿便宜的。

結論

小的我的腦容量有限,大概目前只能也只想裝這三種了。那其它像Java/C/C++/C#/Python/PHP/ASP的不好嗎? 當然不是不好,不好的話怎麼可能還能長期佔據TIOBE的前幾名? 只能說青菜蘿蔔各有所好,我選擇對我自己來說合適的。

常會聽到有人說XXX語言的效能很差,但這不會是我在乎的點。自己出來開公司就會知道,公司每個月最大的開銷就是人力成本,如果我能用較少人力能換到一樣甚至更高的開發效率,我覺得那種工具就是我要的。

一些個人的想法,供大家參考。

Comments