忘記為什麼會看到這段放上YouTube的演講影片,也不知道演講者Johanna Blakely是誰,看到題目中有個fashion字眼,感覺應該跟我沒什麼關係,但還是看完整場演講,深刻地我心裡留下印象,所以推薦給大家。
底下是我把演講內容(不長,不到十六分鐘)大意摘要,不免會有斷章取義之疑,請大家一定要看原影片喔。P.S.現在YouTube已經可以聽聲轉字幕囉,真強。
主題是,時尚產業中的智慧財產權。在時尚產業,智慧財產權的保護機制很少,唯一有的大概是商標保護,沒有著作權、專利、版權等等。
有時候把商標組合進設計裡面,也是防盜拷的一個手段。
即使這樣,還是會有一堆的防冒品。
為什麼沒有適當的保護機制呢?因為將外觀設計納進版權保護的範圍太功利了。
太功利?如果不能擁有,誰還要創新呢?但正因為沒有保護,所以整個時尚產業非常開放,非常有創造力,非常前衛先進。
因為拷貝仿冒無罪,是可以的。因為可以無限制地互相參考、抄襲,整個產業進步地非常快。
設計師必須更加進步,想出更好的設計,想出更新的概念。
於是乎這些可賣錢的產品變成了藝術品。
可是如果沒有保護?那大家不就都去買便宜又差不多的產品?
Tom Ford,Gucci設計師說的好,會買仿冒品的就不會是我們的顧客。
這種環境,致使Charlie Parker必須發明出白人絕對無法發出的聲音與獨特的音樂。
這種環境,讓設計師想出各種無法仿冒的點子,因為你一拷貝,大家就知道你是仿冒者。
所以copy是件好事情啊。
有很多產業有保護機制,例如雕刻、攝影、電影、音樂。有很多產業沒有機制,例如食譜、一道菜外觀、汽車、家具、魔術技巧、髮型、開放式程式碼軟體、刺青圖案、煙火、遊戲規則、香水的味道等等。
你自己看看吧,沒有保護的產業賺的更多喔。
是誰擁有"外觀"?哪些是私有的,哪些是趨勢被全世界所共有?這太難回答了。以前有實體vs概念可區分,但現在的數位科技改變了一切,書跟音樂都變成檔案了!
在數位世界裡,哪一種"擁有"的概念可以讓我們達到最棒最好的創新?
我的建議是,時尚業的文化可供借鏡。還想知道更多的,請到http://www.readytoshare.org/
聽完演講:
讓我想起,周杰倫的音樂,那種調調跟那種含糊不清,別人仿冒一聽就知道。
讓我想起,很久以前,蘋果控告微軟的視窗系統抄襲他們麥金塔的介面(look and feel)。
讓我重新思考智慧財產權、著作權、專利等等。
你呢?
2010/06/09
智慧財產權的省思:Johanna Blakely: Lessons from fashion's free culture
2010/06/08
跟Objective-C相關的一些歷史
這篇是一些跟Objective-C相關的歷史,為什麼Objective-C是Mac與iPhone/iPod touch/iPad的主力開發語言?為什麼Cocoa中的類別名都加上NS在前面?Mac跟NeXT有何關係?看了下面的年代事記應該多少可以回答這些問題。
1972,Dennis Ritchie跟Ken Thompson在Bell Labs(貝爾實驗室),搞出了兩個東西,Unix跟C語言。
1976,Apple創立。 左Steve Wozniak(史提夫 沃茲尼克),右Steve Jobs(史提夫 賈伯斯)。
1980初期,Objective-C,以C為基礎,加入Smalltalk物件導向的觀念:另一個常拿來比較的語言C++,兩種設計理念有很大的不同。設計者是Brad Cox與Tom Love。在1986年,Brax Cox出書詳述Objective-C。
1984,Apple推出第一代Macintosh(麥金塔)電腦,簡稱Mac。
第一代Mac OS的畫面。
1988,被Apple踢出去的Steve Jobs另行創立NeXT公司,推出NeXT電腦,包括硬體、軟體(作業系統、開發環境)。NeXT電腦並沒有熱賣(你可能從沒聽過),但其軟體的部份被保留了下來。
軟體部分被稱為NeXTStep,包含:
1. 作業系統,以Mach為kernel,加上BSD所打造出來的unix-like作業系統。
2. 以Objective-C為主力開發語言與執行環境。
3. 物件導向的軟體開發套件(library、framework),當時不叫framework,而叫kit。主要的是AppKit與Foundation Kit。
4. 各種開發工具(Project Builder, Interface Builder)。
你可以猜到,這些東西都被之後的Mac OS X吸收繼承。
這是NeXTStep作業系統的畫面。
1994,NeXT與Sun共同制定OpenStep API標準,其中兩個重要的部分就是Foundation跟Application kit,此時開始使用字首NS。
NeXT自己的實作稱為OPENSTEP,軟體開發工具組當時大概叫做OpenStep developers toolkit;另外還有自由軟體的實作,名為GNUstep。
因為Mac OS X、iPhone SDK、Xcode可追溯到NeXT、NeXTStep,所以是以Objective-C為主力開發語言,所以程式碼中會出現NX與NS字樣。
1996,Apple買下NeXT,主要用意就是要以NeXTStep作業系統取代掉老舊的Mac OS。
1997,Steve Jobs重回Apple。
2001,推出Mac OS X。
而且OpenStep developers toolkit被重新命名為Cocoa。
這是Mac OS 7, 8, 9的畫面。
這是Mac OS X 10.6 Snow Leopard的畫面。
這是Mac OS X 10.7 Lion的畫面。
2003,Xcode,Apple的軟體開發工具組。
2006,Apple發表Objective-C 2.0,加入新功能,garbage collection垃圾收集、property屬性、dot syntax句點語法、fast enumeration快速列舉、Non-fragile instance variables。由Mac OS X 10.5與iPhone OS 2支援,iPhone OS沒有garbage collection。
2007.01,推出iPhone,其iPhone OS可說是Mac OS X的縮小版。
2007.10,Mac OS X 10.5 Leopard。
2008.03,釋出iPhone SDK。於是大家都可以開發iPhone軟體了。其中Cocoa的部份改稱Cocoa Touch,因應iPhone的觸控式操作介面,把AppKit換成UIKit。
2009.06,iPhone OS 3。
2010.04,iPad現身。iPhone SDK 3.2版以後也可以開發iPad軟體了。
2010.06,iPhone OS改名為iOS。iOS 4。
2011.10,iOS 5。
Objective-C on Windows
更新:Apple加入很多Objective-C的新功能與特色,但只有"Apple修改過的gcc"與"clang(llvm)"能夠提供,所以,本篇介紹的GNUstep的gcc,其Objective-C的部份已經太舊,沒辦法編譯新的Objective-C。我另外寫了一篇「在Windows上寫Objective-C程式(使用GNUstep與Clang、LLVM) 」,在GNUstep之上,再安裝clang與llvm。
這篇要介紹的是,如何在Windows XP平台上寫一支Objective-C的hello world!程式。
問:想開發Mac或iPhone或iPad的軟體,該怎麼辦?
答:使用Apple官方的軟體開發工具Xcode,只要到Apple公司的開發者網站,註冊一下(免費),即可下載最新版的Xcode。Xcode只能在Mac OS X(作業系統)上運行,所以要買一台Mac機器(硬體)。
問:哇,這麼多種漂亮的Mac,應該買哪一台啊?
答:有錢的話就買最貴的那一台*_*。
問:什麼是Xcode?
答:Xcode是Apple公司官方的軟體開發工具組,可開發在Mac、iPhone、iPad的軟體,是一個總稱,裡面包含很多東西,有整合式開發編輯器(IDE,也叫做Xcode)、視覺化使用者介面開發工具(Interface Builder)、compiler、linker、debugger(gcc、gdb、llvm...)等等、還有iPhone的模擬器,以及各種framework(函式庫、類別庫、API)。
這是Xcode IDE,負責管理專案檔案、編輯、以及各種設定,從這裡進行編譯除錯執行。
這是Interface Builder,視覺化使用者介面設計,使用拖拉放的方式來操作。(Xcode 4已經整合Interface Builder)
這是iPhone simulator,不用買一支iPhone也可以進行開發iPhone軟體喔。
也就是說,如果你有一台mac(花錢買),下載Xcode(免費下載)後,就可以開始開發,在模擬器上執行看到成果,但是,如果想在iPhone實機上執行你寫的程式的話,那就要加入Apple的iOS Developer Program(要錢,一年要付$99),至於加入、付錢、設定、下載軟體到手機上的過程,本篇不介紹。
問:想先學學Objective-C程式語言,還不想砸錢買Mac,有辦法在Windows上寫Objective-C程式嗎?
答:有,就是這篇的重點了。
問:聽說gcc可以編譯Objective-C,所以在Windows上裝cygwin,裡面有gcc,就可以寫Objective-C程式了?
答:cygwin的gcc的確可以編譯Objective-C程式,但光裝cygwin並不會有任何的物件類別庫(library、class library、framework),所以也就沒有各種基本的物件類別可以用,沒有NSLog可以呼叫(想像成c的printf);沒有NSObject可以繼承,讓你沒辦法立即開始寫自己的物件;沒有Foundation.h(想像成c的stdio.h)連preprocessor都過不去,更別提compiler了。所以只有compiler是不夠的。
問:所以除了compiler還需要?
答:一套framework,裡面會有基本的物件類別。如果是裝Xcode就會有Cocoa for Mac、Cocoa Touch for iPhone。Cocoa大致上分為Foundation跟AppKit兩個部分,AppKit是GUI元件與較高階的元件,而Foundation就是一堆基本的物件類別,例如NSObject、NSString、NSArray、NSNumber等等;而Cocoa Touch分成Foundation跟UIKit,差不多的意思。
問:聽說Cocotron...?
答:Cocotron也是一個Objective-C的開發環境,其目標是讓開發出來的軟體可以在各種平台上執行,例如Windows,但其本身還是要搭配Xcode使用,所以不符本篇主題。
問:那所以咧?
答:使用GNUstep,可在unix-like與Windows上使用,有Cocoa API,也有一些開發工具(類似Xcode提供的工具)可以用,但本篇重點是在Windows上寫一支Objective-C的hello world!程式,所以會用命令列模式shell,只會使用compiler的部份(也是gcc),以及鏈結Cocoa API中Foundation的部份,也就是說不理會AppKit的部分,也不會介紹GNUstep提供的開發工具(Gorm, ProjectCenter...)。
問:GNUstep可在哪些版本的Windows上跑?
答:官方網站上說在WinXP與Win2K測試過,我的電腦是Windows XP。
問:怎麼安裝GNUStep?
答:到GNUstep網站的Windows下載區,下載下面三個安裝套件。
1. GNUstep MSYS System, 41MB. 基本環境與命令列shell。
2. GNUstep Core, 7.6MB. 函式庫、類別庫。
3. GNUstep Devel, 30MB. 開發工具,gcc、make、gdb等等。
注意:請按照順序安裝。
把三個都安裝在同一個目錄,安裝時也都是按Next即可。安裝後執行程式集-GNUstep-shell,會出現一個命令列畫面,恭喜你,已經成功了一半。
問:接下來,怎麼編譯執行一支hello, world!程式呢?
答:用你喜歡的編輯器寫程式,大致內容如下:
把檔案命名為hello.m,.m是Objective-C程式檔案的附檔名,放到家目錄下,大概在C:\GNUstep\home\username,自己找找,然後在shell下執行gcc hello.m,本以為沒啥問題,哪知道出現了一堆錯誤訊息,哇靠。
別急,一個一個來。
首先是error: Foundation/Foundation.h: No such file or directory,找不到Foundation.h ?
因為gcc找不到該.h檔,加入參數-I /GNUstep/System/Library/Headers即可解決。
然後仍然會出現error: cannot find interface declaration for 'NXConstantString',原因是constant string例如@"hello, world!",以前是用NXConstantString,後來改成NSConstantString,所以加入參數-fconstant-string-class=NSConstantString來修正。
到此compile部分已經沒問題了,如果你加上-c參數就可以成功編譯出.o檔。
但是不加-c的話,compile結束後自動帶進的link階段會出現錯誤,訊息會說找不到objc_get_class、objc_msg_lookup、NSLog、__objc_exec_class、__objc_class_name_NSAutoreleasePool、__objc_class_name_NSConstantString。
加入參數-L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base來告知去哪找函式類別庫做link以及該link哪些東西。-L是指定去哪找,-lobjc是Objective-C的核心執行時期函式庫,-lgnustep-base就是Foundation的部份。
注意:下指令時要把hello.m放在-lobjc -lgnustep-base的前面。
雖然還是會有linker warning,但a.exe執行檔已經成功產生出來了,執行的話就會看到hello, world!囉。
如果你不想看到warning,加入-Xlinker --enable-auto-import。
最後完整的指令是:
gcc hello.m -I /GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -Xlinker --enable-auto-import
問:打這麼長的指令好麻煩?
答:可以用make,或是寫一支小小的shell script。本篇不介紹:D。
問:學習Objective-C與iOS的資源?
答:請看另一篇。