所有編程皆爲Web編程

原文做者:Jeff Atwood   原文連接:http://blog.codinghorror.com/all-programming-is-web-programminghtml

Michael Braude對Web編程大受追捧表達了他的不屑:web

大部分人想去作Web編程的緣由是,他們不夠聰明,所以也作不了別的事。他們不懂編譯器、併發性、3D或類繼承。他們根本不明確我爲何要使用接口或者抽象類。他們不理解虛函數、指針、引用、垃圾回收、終結器、傳引用與傳值的區別、C++的虛擬析構函數、或者C#的結構體與類之間的區別。他們對進程也一無所知。更別提瀑布、螺旋、敏捷了!他們歷來沒看過需求文檔,也歷來沒寫過設計文檔;他們從沒畫過一張UML圖,甚至聽都沒據說過有「順序圖」這樣的東西。數據庫

只是,他們確實有些手段:他們知道如何匆匆拼湊一個ASP.NET網頁,向數據庫發一些(寫得很是糟糕的)SQL指令,填上一個數據集,而後用網格控件展現出來。他們也就會這些了吧。而且,他們在弄明確這些東西的時候,很是可能也沒費多長時間。編程

所以,請恕我冒犯——我纔不想當Web程序猿呢!我有兩個理由。第一,那對我太沒有挑戰性了。第二,因爲絕大多數互聯網公司的project師都很是糟糕,更準確地說,因爲你沒必要去琢磨深奧的東西就能成爲一個Web開發人員。在我看來,互聯網正讓咱們變得愈來愈弱智。拼湊出一個網頁真的不需要你有那麼聰明。小程序

我真心但願你們都錯了,但願沒必要所有的東西都「轉向Web」。因爲假設真這樣的話,未來的某一天,我要麼會不情願地接受這樣的無聊的轉變,要麼僅僅能換一個職業了。瀏覽器

Web開發沒有挑戰性,因此吸引了未入流的軟件開發人員?讓咱們姑且不討論這樣的荒謬的觀點。即便過去真是這樣,現在的狀況也已經不一樣了。網絡

我事實上不想在Michael面前扮演「壞人」,告訴他這個壞消息:對於愈來愈多的用戶來講,桌面應用軟件已經完蛋了。幾年來,大部分桌面應用軟件都被Web應用代替了。隨着網絡瀏覽器進化得愈來愈強大和健壯,天天都有不少其它的桌面應用被代替。併發

你但願沒必要所有的東西都「轉向Web」?醒醒吧!這已經發生了!框架

不論什麼學習計算機歷史的學生都可以告訴你,Web應用成爲主流正是「最不強大原則」(The Principle of Least Power)所預示的:函數

計算機科學界過去花了40年的時間,致力於讓語言儘量地強大。時至今日,咱們必須感激那些讓咱們選擇不是最強大的解決方式(而選擇最不強大的方案)的緣由。計算機語言越不強大,你對用那種語言存儲的數據能作的事情就越多。假設你以一種簡單的陳述形式來書寫,不論什麼人都可以寫一個程序去分析它。例如說,一個呈現天氣信息的網頁使用RDF(譯者注:資源描寫敘述框架,一種用於描寫敘述Web資源的標記語言)來描寫敘述數據,用戶可以把它裝進一個表格,或許再作一下平均計算,繪製圖表,而後結合其它信息作出某種判斷。還有一種極端的作法是,天氣信息經過巧妙的Java小程序描繪出來。雖然這樣的方式可能作出很是酷的用戶界面,但它全然不能被分析。找到這個頁面的搜索引擎將沒法判斷那是什麼數據或者那些數據有什麼用。要想知道一個Java小程序是作什麼的,惟一的辦法是親眼目擊它執行起來。

互聯網偏偏是作最簡單(或者說最傻)而靠譜之事的詳細表現。假設這嚇到了你(讓你感到不安了),那麼我要小聲地告訴你,你沒有理由成爲一名程序猿。

所有應用都應該成爲Web應用嗎?固然不是。總有一些重要的例外,有些種類的軟件跟網絡也毫無關係。但是,這些是少數狀況,是一些特殊應用。它們當然是重要的小生態環境,但不管怎麼說,就僅僅是「小生態」。

假設你但願儘量多的用戶來使用你的軟件,絕沒有比把它作成Web應用更好的方法了。對於現存軟件來講,互聯網是最高效、最廣泛、最直接的分發網絡。不論什麼用戶僅僅要能連上網,有一個瀏覽器,不管他身處世界的不論什麼一個角落,僅僅須點兩下鼠標就能與你寫的軟件開始交互了。哪怕是最蹩腳的Web應用,它的受衆面和傳播度都是使人震驚的;而且還在天天擴大着……我也曾所以杜撰了「阿特伍德定律」:不論什麼可以用JavaScript來寫的應用,終於都將用JavaScript來寫。

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

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

Web編程還遠遠沒有達到完美的境界。事實上,還有點亂!沒錯,隨便會寫點代碼的人就能三下兩下地搞出一個糟糕的Web應用;也確實,99%的Web應用都似狗屎一堆。但是,這也意味着,至關「聰明」的程序猿們正在將他們的成果展現在成百上千(或者成千上萬,甚至幾百萬)的用戶面前,而這在互聯網盛行以前是絕無可能的。在我看來,讓代碼遭受冷落、讓它們就此孤獨終老,沒什麼比這更讓人感到悲哀的了!把軟件依照Web應用的形式重整一下,即便軟件自己並不怎麼樣,這也使得程序猿們可以把他們的軟件展現在某個地方的某人面前。

假設受衆面和技藝方面的觀點不足以說服你,那就從商業的角度來考慮一下吧。Mark Fletcher之前給出過一份創業規則,當中就有這麼一條:

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

要不了多久,所有編程都將是Web編程。對於普通的在職程序猿來講,假設你不以爲這是一個值得慶賀的理由,你或許應該轉行了。

相關文章
相關標籤/搜索