2011/05/22

一致性

在很久很久以前,看完一本書,通常是指某程式語言的書,就可動手開發軟體了,現在可不同了(早就不同了),就算你能在24小時內學會某語言,你還要學會成堆成山的函式庫與類別庫,許許多多約定俗成的慣用法與程式片段,多少的青春歲月就花在這些層層疊疊的架構中,多少的辛酸血淚就灑在這些有臭蟲又不更新、不想用又不得不用的醜陋框架(framework)裡,唉,怎一聲長嘆了得。

寫程式時,需要一種天份,能夠在短時間內記住很多小細節的天份,變數名稱、函式名稱、回傳值、上下繼承關係、這段程式碼應該要寫在哪裡才好、等等,久了之後,自然而然熟極而流,越寫越順,當你能夠控制環境,這裡指的是掌握開發軟體時的環境,就會感到快樂,對每一行都確實知道在幹嘛,不用寫一寫就要停下來查文件,能夠處於那種優遊自在的狀態,真是美妙地不可言喻啊,所以,如果很不幸地要你換一種語言、換一套開發環境,那將會是極端苦痛、痛不可言、言語無法形容地不幸啊,光程式語言本身就會有很多的差異,有大有小,大的也就算了,畢竟是不同的語言,如果沒有一定程度以上的差別,那幹嘛存在多一種的語言了,至於小的,就很惱人了,有些一樣、有些差不多一樣、有些不太一樣、有些不一樣又有相似處,煩死啦。

請看一下底下這兩張圖,這一張是Perl的布林比較,當我在Perl書裡讀到其比較的判斷法則時,心理只有一種想法,瘋啦瘋啦,誰能記住這玩意兒啊?這什麼規則啊?(當然,我記不住不代表別人記不住。)


這一張是JavaScript的,好像好一點,但也處處是陷阱,一不小心程式的結果就會跟你想的不一樣。


顯然地,各程式語言的創作者對於這麼一個小小地方都能夠有眾多分歧的意見,什麼是true、什麼是false,nil又能代表什麼,nil能代表空串列嗎、nil等同於false嗎,等等等等。


當某語言有太多細微細節要花心思記得的話,用起來就很礙手礙腳,我認為Perl就是其中之一,Perl還標榜著"There's more than one way to do it",聽起來是不錯,不過怎麼能記住這種種不同的用法呢?通常是選出一兩種好的,然後一直用吧。C++比較好一點但也差不多,當開始使用C++各種較進階的功能時,例如exception或template或operator overloading,哇賽,各種眉眉角角就出現了,要記住的地方就變多了。


很佩服那些跨平台的框架或軟體,光要搞定windows、mac、linux就快死人了,其中的差異可不是隨便就能講完列出來的,若是說到手持式裝置上,那就更加分歧了,再加上封閉、保護公司資產、追求與眾不同市場區隔、刻意與別人不一樣,嘿,真是混亂的世界啊。


在這裡有個小小的希望,至少、至少在語言層級,能夠有一致性,不是每個人都能像翻譯機精通八國語言聽說讀寫樣樣行,我知道,語言設計者是大師們,他們有思想有文化有所堅持,但是還是請你們至少把布林比較這麼基本的地方設計出一致性吧。


如果你對程式語言的歷史以及各種語言特性有興趣的話,看看這段影片吧。這根本是大師級的火力展示,裡面一堆聽都沒聽過的語言,例如KRL、COMIT、等等。

2011/05/21

別再遜了 Don't suck

看完了Mike Lee的演講Making Apps That Don’t Suck,隨手寫寫。

先簡介一下Mike,他長久在mac圈打滾,曾在蘋果公司工作,曾在Delicious Monster工作,這是一套得到Apple設計獎的軟體,是Taplous的創辦人之一,這家公司的Tap Tap Revenge是在iPhone上超紅的遊戲,或許你沒聽過,請想像一下,在幾年前,這遊戲就像現在的Angry Birds一樣紅。



演講的主題,就是怎麼生產出好東西,特立獨行如Mike,自然會給出跟一般認知不同的見解。一般我們常聽見的,有好的團隊、好的點子、好的技術,既然這麼好,所打造出來的自然而然地會是偉大的產品, 接下來就會有個疑問,為什麼我們沒賺錢呢?想啊想,想啊想,想辦法獲利啊。



Mike的三步驟可不是這樣,開宗明義就要假定我們遜斃了,要誠實,然後找出原因,接下來,想辦法不要那麼遜。這就是打造偉大產品的三步驟。



抱歉,其他細節就不多說了(我很懶),大家自己看看演講影片吧,對我而言,看完後得到的一個整體映像就是,要追求品質,不要想錢的事情。嗯,好像太老生常談了。影片中有舉Trism為例,這是支賣很好的iPhone遊戲,可是沒想到,在Mike眼裡,其介面如此不堪啊。




在很久很久以前,讀到了Joel Spolsky邊開火邊移動,我大笑,節錄一段如下:

當你進入狀況後, 要繼續維持並不算太難. 我的一天通常都是這樣子的: (1) 上班 (2) 看信看網頁等等 (3) 決定應該吃過午飯後再做事 (4) 吃完午飯回來 (5) 看信看網頁等等 (6) 終於決心該開始幹活 (7) 看信看網頁等等 (8) 再度下定決心真的該開始做事 (9) 把該死的編輯器叫出來然後 (10) 不斷地寫程式直到突然發現已經下午7點半了.

哈哈,相信每個人都曾經歷過這樣的循環。我最近寫了支在iPhone上打逼逼的軟體,有時也會發生提不起勁、整天打混的情況,所以,我想,要生產好產品,要成功,就目前而言,我的三步驟是:

1.打開那該死的編輯器。
2.進入那無以名的狀態、忘記時間、忘記全世界。
3.保持士氣高昂。


PS 寫完這篇,發現內容實在很跳脫,嗯,真糟糕啊。

2011/05/11

[廣告] Hit BBS,在iPhone上打bbs的軟體

嗨,我寫了一支在iPhone上打bbs的軟體,在這裡打打廣告。

希望大家多多支持。

想知道更詳細的說明,請到Hit BBS的官方網站

Hit BBS是支iPhone軟體,讓你瘋狂打逼戰鄉民。


Hit BBS大體上會有四種畫面。

1. 站台列表,可以一次上好幾個bbs站台。
2. 站台編輯,輸入網址與帳號密碼,登入時自動送出。
3. bbs畫面,有放大縮小功能,看的清楚。
4. 若bbs畫面上有網址,可以開啟瀏覽器,哇,瀏覽PTT的表特版真方便啊。