原文做者: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编程。对于普通的在职程序猿来讲,假设你不以为这是一个值得庆贺的理由,你或许应该转行了。