2010/01/11

翻譯:關於蘋果平板電腦的一些想法(Tablet thoughts)by Paul Buchheit

文章:Tablet thoughts 關於蘋果平板電腦的一些想法
日期:2009.12.31
作者:Paul Buchheit
作者的部落格:Paul Buchheit
當聽說蘋果要出tablet時,我並不覺得會有帶來什麼樣的大驚喜,只是認為當一家公司有足夠的資源後就自然地會將產品線延伸到個觸角,不過蘋果可不是一家普通的公司,用一般的眼光來看是行不通的;看了這篇文章後若然有所悟。

作者簡介:作者之前任職於Google,為Gmail的首席開發員,開發AdSense的原始雛形,現為網路資訊聚合服務網站FriendFeed的創辦人,於2009.08被Facebook買下。



關於平板電腦的一些想法

我不知道蘋果平板電腦會如何如何,一般來說我也不會花心力推敲他們尚未發表的產品,不過,今天John Gruber有一篇不錯的文章,討論這款還在臆測階段的蘋果平板

最棒的段落是問出核心問題─這新產品如何融入所有已存在的產品當中?革命性產品的潛力總是被低估,因為吾人把它放在現有產品的天秤另一端做比較。請看這段引述:

就跟所有蘋果的產品一樣,這台平板(tablet)的功能會比我們預期的少,但它在處理那些它會做的事情時,將會做的超乎想像地優秀,它只會提供一部分MacBook的功能,但那部分用起來會更加地容易有趣,過去那些貶低iPhone且有著亞斯伯格症候群的自閉毒舌評論家,將會通通聚焦討論這台平板缺乏的部分,而且信誓旦旦地說,這一次,蘋果真的搞砸了。

就跟iPod的情形一樣,或看看slashdot怎麼形容的吧,『沒有無線上網,空間這麼小,爛。』

當面對開創性的產品時,我們不能只是拿來跟市面上的既有產品做對照,反而該做的是,跟應該有卻尚未存在的產品做比較,舉例而言,當初個人電腦並不只是一台比較貴比較難用的打字機─它是一台全新的玩意,碰巧有打字機功能罷了;顯然地這種比較法則複雜艱難地多,比起「算算有幾項功能」這種我們拿來選「補鼠器」所用的挑選法,但當我們要了解或創造任何新事物時,這是相當關鍵重要的。

我不知道蘋果有著怎樣的計畫,但對我而言,革命產品的需求在於將虛擬與物理世界連結起來,如果你整天都坐在電腦前,這需求看起來似乎沒什麼,但當你遊走於這邊與那邊時,你或許會注意到這兩個世界間奇怪的斷離現象,例如,我電腦上有張好圖想要拷貝一份給你,在物理世界裡,沒什麼好說的,就是給你一份沖洗照片(我最好事先洗了兩份),可是在電腦世界裡,這幾近不可能,我知道你要說什麼,我還是能分享這圖檔,但那需要某複雜的十步驟流程,或是我可以下載安裝某軟體來達成目的,但我不想費這麼大的工夫而且大部分的人也不想;想像一下,如果能有一個簡單(內建)的手勢,可以把照片傳給站在我旁邊的人,就跟把一張實體的照片交給別人一樣簡單,那該有多好。

當然啦,交換照片只不過物理╱虛擬中如何互動的一個小例子,這是個全新的範疇,其中有很多,包括最重要的那些功能,都還沒有被開發出來,不過你可以藉由思索一些陳腔濫調的廣告頁面,來啟發靈感,例如,兩個人站在電腦旁,可以一起通力合作處理某事、快速記下筆記、循某流程操作等等,這些畫面不斷地出現在廣告上,不為其他,正是因為吸引人,可惜在現實生活中卻少見,因為我們現有的軟硬體太難用了,現有的膝上型電腦太大太笨重,以鍵盤操作為主(使用者介面應以手勢為中心來設計),而iPhone太小限制太多,我想要的東西是,差不多像筆記本那般大小,在走動時也能夠自然地使用,就像是真的紙筆一般,而且還要跟虛擬世界與物理世界徹底整合在一起。

我希望這是蘋果這在打造的─將會是個很棒的產品。(其他人也可以,但說實在話,除了蘋果我想不出哪家公司可以開發出正確的形式。)

2010/01/03

In C, a[5] = 5[a], what the fxxk?

In a famous programmers' Q&A website Stack Overflow, I just found this strange C feature that I've never seen before.

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("a[5]=%d\n", a[5]);
printf("5[a]=%d\n", 5[a]);

And a[5] is the same as 5[a], it's true! I found this feature in Standard C(C89). Wow. Because a[i] is defined to be the same as *((a) + (i)), where a the array identifier appearing in an expression will be converted to &a[0] except used as an operand of the sizeof or address (&) operators.