Archive for 六月, 2011


後Apple時代的程式設計師?

軟體與硬體間相輔相成的發展過程,其實與人類歷史也差異不遠。

古書說:天下大勢,分久必合,合久必分。

局勢如此,歷史亦如此,而電腦世界更是如此。
當IBM獨佔大型電腦設備市場時,Apple則進軍家用市場,迫使家用主機市場由合轉分。
當Internet Explorer擊垮Netscape後,卻被後起直追的Firefox、Google Chrome、Apple Safari、Opera,再次掀起Browser War。
當C#、Java等高接語言準備瓜分C / C++語言的市場時,Object-C卻另開戰局,讓人不得回頭寫記憶體管理程式。

年過四十的上輩程式設計師,學個三、四種語言可以算厲害,但現在中流砥柱的程式設計師,無不是學過四、五種,厲害的更是學過數十種語言,並能熟用五種以上的語言或函式庫。
聽來誇張,但問過所謂的厲害的設計師,多半會告訴你其實這些有差異,但其中道理都一樣。
語言是分家了,但都是出自一個源頭。

Apple崛起的行動設備市場,對程式設計師來說有什麼改變?

有人說:很大的衝擊,對習慣了微軟設計方式的程式設計師。

但是,真的如此嗎?

世界在變,但不論如何轉變,架起這世界的原理並沒有改變。
就算局勢轉變不可估計,但是蒼天依舊運轉著,不為堯存、不為桀亡。

對於程式設計師而言,Object-C的戰局,除了換了語言和工具外,軟體設計本質仍就不變。
而且,程式語言本身就是也是另一種程式語言組成的軟體,只是組成的規則各有不同。
理解規則不同之處,轉換程式語言頂多是罵上幾句外,其中差異仍是可理解的。

有句老話:站在巨人的肩膀上看世界。

這是說學習別人之長,來增加自己的可能性。
但是,當站上別人的肩膀時,有多少人知道自己如何站上去的,又有多少人能找到往上的階梯。

Apple帶來的軟體業變化,不論有多劇烈,都開啟了一個可能性。
但是,慌張應對於眼前的戰局而打亂了應有的步調,是勝是敗早已不用多說。

後Apple時代?後HTML5時代?後XX時代?‧‧‧

下個時代何時會來並無法預期,而時代的衝擊多高多低更是無法預估。
但是,沒有不會倒下的巨人,只有不斷進化的世界。
微軟不見得會是永遠的霸主,蘋果也不一定會是下個贏家。

去思考下個時代?還是在這時代掙扎?
結論都是要繼續活下去,並且準備應對著另外一場可能的風暴。

那就結果來說,衝擊的差別又在那裡呢?
如果去問問那些厲害的程式設計師,其結論應該都是‧‧‧

“繼續學習吧。”

不過,筆者要加個附註!

“學習知識,領悟本質,內化邏輯,善用技術;然後,繼續自己的路吧。”

軟體的本質

翻開電腦的歷史。
最初的程式是將電子電路規格化,使電子零件不在是單一功能,而是能依程式定義出多樣的功能。
在不斷的改進下,本來依附在電子電路下的程式,也日亦走向一個獨立的軟體世界。
從原本簡單的操控,逐步擴展到各個領域,至今,諸多領域都會使用軟體來輔助工作。
雖然,沒有電子設備,軟體也無用;但沒有軟體,電子設備也難發揮功能。

那,回到最初的初衷!

機器的存在目的是什麼?
『是為了減少人力消耗和縮短完成時間。』

自動化電子設備的存在目的是什麼?
『是為了再減少流程上的人力消耗和縮短運作時間。』

可程序化電子設備存在目的是什麼?
『是為了增加可應變問題,增加機器再利用性。』

機器發展就是不斷的縮減人力,增加應對性。
但是當機器不存在時,這些事情會回到人的手上。
那麼機器的存在是否可以理解成‧‧‧

『模擬人的行為。』

如果可以,那和電子設備相依而存的軟體呢?

記得大學教授有說過:
『軟體設計,不是去思考使用者會做什麼,而要思考使用者什麼都會做。』

記得同濟間的討論有人說過:
『軟體,就是去模擬千變萬化的世界。』

回頭深思一下,對於軟體的本質筆者在這下個解釋。

“軟體 == 模擬”

不是只是像機器用來模擬人的行為。
而是世間所見萬物行為,是思緒中存有的邏輯,是可能存在的假想。