所有程式設計皆為Web程式設計

陸其明發表於2014-04-27

  Michael Braude對Web程式設計大受追捧表達了他的不屑:

  大部分人想去做Web程式設計的原因是,他們不夠聰明,因此也做不了別的事。他們不懂編譯器、併發性、3D或類繼承。他們根本不明白我為什麼要使用介面或者抽象類。他們不理解虛擬函式、指標、引用、垃圾回收、終結器、傳引用與傳值的區別、C++的虛擬解構函式、或者C#的結構體與類之間的差別。他們對程式也一無所知。更別提瀑布、螺旋、敏捷了!他們從來沒看過需求文件,也從來沒寫過設計文件;他們從沒畫過一張UML圖,甚至聽都沒聽說過有“順序圖”這種東西。

  不過,他們確實有些手段:他們知道怎樣匆匆拼湊一個ASP.NET網頁,向資料庫發一些(寫得很糟糕的)SQL指令,填上一個資料集,然後用網格控制元件展示出來。他們也就會這些了吧。而且,他們在弄明白這些東西的時候,很可能也沒費多長時間。

  因此,請恕我冒犯——我才不想當Web程式設計師呢!我有兩個理由。第一,那對我太沒有挑戰性了。第二,因為絕大多數網際網路公司的工程師都很糟糕,更準確地說,因為你不必去琢磨深奧的東西就能成為一個Web開發者。在我看來,網際網路正讓我們變得越來越弱智。拼湊出一個網頁真的不需要你有那麼聰明。

  我真心希望大家都錯了,希望不必所有的東西都“轉向Web”。因為如果真這樣的話,將來的某一天,我要麼會不情願地接受這種無聊的轉變,要麼只能換一個職業了。

  Web開發沒有挑戰性,所以吸引了不夠格的軟體開發者?讓我們姑且不討論這種荒謬的觀點。即使過去真是這樣,如今的情況也已經不同了。

  我其實不想在Michael面前扮演“壞人”,告訴他這個壞訊息:對於越來越多的使用者來說,桌面應用軟體已經完蛋了。幾年來,大部分桌面應用軟體都被Web應用代替了。隨著網路瀏覽器進化得越來越強大和健壯,每天都有更多的桌面應用被取代。

  你希望不必所有的東西都“轉向Web”?醒醒吧!這已經發生了!

  任何學習計算機歷史的學生都可以告訴你,Web應用成為主流正是“最不強大原則”(The Principle of Least Power)所預示的:

  電腦科學界過去花了40年的時間,致力於讓語言儘可能地強大。時至今日,我們必須感激那些讓我們選擇不是最強大的解決方案(而選擇最不強大的方案)的原因。計算機語言越不強大,你對用那種語言儲存的資料能做的事情就越多。如果你以一種簡單的陳述形式來書寫,任何人都可以寫一個程式去分析它。比方說,一個呈現天氣資訊的網頁使用RDF(譯者注:資源描述框架,一種用於描述Web資源的標記語言)來描述資料,使用者可以把它裝進一個表格,也許再做一下平均計算,繪製圖表,然後結合其他資訊做出某種推斷。另一種極端的做法是,天氣資訊通過巧妙的Java小程式描繪出來。儘管這種方式可能做出很酷的使用者介面,但它完全不能被分析。找到這個頁面的搜尋引擎將無法判斷那是什麼資料或者那些資料有什麼用。要想知道一個Java小程式是做什麼的,唯一的辦法是親眼目睹它執行起來。

  網際網路恰恰是做最簡單(或者說最傻)而靠譜之事的具體表現。如果這嚇到了你(讓你感到不安了),那麼我要小聲地告訴你,你沒有理由成為一名程式設計師。

  所有應用都應該成為Web應用嗎?當然不是。總有一些重要的例外,有些種類的軟體跟網路也毫無關係。但是,這些是少數情況,是一些特殊應用。它們固然是重要的小生態環境,但不管怎麼說,就只是“小生態”。

  如果你希望儘可能多的使用者來使用你的軟體,絕沒有比把它做成Web應用更好的方法了。對於現存軟體來說,網際網路是最高效、最普遍、最直接的分發網路。任何使用者只要能連上網,有一個瀏覽器,不管他身處世界的任何一個角落,只須點兩下滑鼠就能與你寫的軟體開始互動了。哪怕是最蹩腳的Web應用,它的受眾面和傳播度都是令人震驚的;而且還在每天擴大著……我也曾因此杜撰了“阿特伍德定律”:任何可以用JavaScript來寫的應用,最終都將用JavaScript來寫。

  從工程的角度來看,用JavaScript來寫Photoshop、Word或Excel毫無意義。但是,這是不可避免的。這事會發生的。實際上,這事已經在發生了。環顧一下你的四周吧。

  作為一名軟體開發者,最讓我開心的是編寫有人使用的軟體。如果你的軟體委身於一個二進位制的EXE檔案,它必須被購買、授權、運送、下載、安裝、維護和升級,你的技藝又有什麼意義呢?考慮到程式設計師與使用者之間的所有這些傳統障礙,軟體行業居然還能生存下來,這真是一個奇蹟!然而,在華麗而嶄新的Web應用世界裡,那些制約已經不復存在。邊界沒有了。軟體可以無處不在!

  Web程式設計還遠遠沒有達到完美的境地。其實,還有點亂!沒錯,隨便會寫點程式碼的人就能三下兩下地搞出一個糟糕的Web應用;也確實,99%的Web應用都似狗屎一堆。但是,這也意味著,相當“聰明”的程式設計師們正在將他們的成果展現在成百上千(或者成千上萬,甚至幾百萬)的使用者面前,而這在網際網路盛行之前是絕無可能的。在我看來,讓程式碼遭受冷落、讓它們就此孤獨終老,沒什麼比這更讓人感到悲哀的了!把軟體按照Web應用的形式重整一下,即使軟體本身並不怎麼樣,這也使得程式設計師們能夠把他們的軟體展現在某個地方的某人面前。

  如果受眾面和技藝方面的觀點不足以說服你,那就從商業的角度來考慮一下吧。Mark Fletcher曾經給出過一份創業規則,其中就有這麼一條:

  你在做一個Web應用,對吧?這不是20世紀80年代了!縱然你的競爭對手把(桌面)應用軟體做得別緻優雅,你那簡陋而寒酸的Web應用也仍然會比它更加成功。

  要不了多久,所有程式設計都將是Web程式設計。對於普通的在職程式設計師來說,如果你不認為這是一個值得慶賀的理由,你也許應該轉行了。

  原文作者:Jeff Atwood

相關文章