原文作者:Jeff Atwood   原文链接:http://blog.codinghorror.com/all-programming-is-web-programming

Michael Braude对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编程。对于普通的在职程序猿来说,假设你不觉得这是一个值得庆贺的理由,你或许应该转行了。

全部编程皆为Web编程的更多相关文章

  1. [转]所有编程皆为 Web 编程

    Web编程还远远没有达到完美的境地.其实,还有点乱!没错,随便会写点代码的人就能三下两下地搞出一个糟糕的Web应用:也确实,99%的Web 应用都似狗屎一堆.但是,这也意味着,相当“聪明”的程序员们正 ...

  2. 物联网网络编程、Web编程综述

    本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.对于专注J2EE后端服务开发的童鞋们来说,这篇文章可能稍显简单.但是网络编程和web编程对于绝大部分嵌入式物联网工程师来说是一块真 ...

  3. MVC 5 Web编程2 -- URL映射

    ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...

  4. PHP求职宝典系列——PHP Web 编程篇

    PHP Web 编程篇 form表单 1.简述 POST 和 GET 传输的最大容量分别是多少? GET 方法提交的表单数据被附加到 URL 上,并作为URL 的一部分发送到服务器端. URL 的长度 ...

  5. Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”

    Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...

  6. Java Web 编程

    Java Web 编程 21天学通JAVA-WEB开发:http://files.cnblogs.com/files/maven-chao/Java_Web.zip

  7. python web编程-概念预热篇

    互联网正在引发一场革命??不喜欢看概念的跳过,注意这里仅仅是一些从python核心编程一书的摘抄 这正是最激动人心的一部分了,web编程 Web 客户端和服务器端交互使用的“语言”,Web 交互的标准 ...

  8. Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结

    Atitit..组件化事件化的编程模型--(2)---------Web datagridview 服务器端控件的实现原理and总结 1. 服务端table控件的几个流程周期 1 1.1. 确认要显示 ...

  9. 《Web编程入门经典》

    在我还不知道网页的基础结构的时候,我找过很多本介绍Web基础的书籍,其中这本<Web编程入门经典>,我认为是最好的. 这本书内容很全面.逻辑很严谨.结构很清晰.语言文字浅显易懂. 看这本书 ...

随机推荐

  1. DirectX SDK版本与Visual Studio版本

    对于刚刚接触 DirectShow 的人来说,安装配置是一个令人头疼的问题,经常出现的情况是最基本的 baseclass 就无法编译.一开始我也为此费了很大的功夫,比如说修改代码.修改编译选项使其编译 ...

  2. 设计模式(三)-- 适配器模式(Adapter)

    适配器模式(Adapter) 考虑一个记录日志的应用,由于用户对日志记录的要求很高,使得开发人员不能简单地采用一些已有的日志工具或日志框架来满足用户的要求,而需要按照用户的要求重新开发新的日志管理系统 ...

  3. hdu 4055 Number String(有点思维的DP)

    Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. Swift - 操作SQLite数据库(引用SQLite3库)

    SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装.这个封装代码使用了一个开源项目SQLiteDB,地址是:http ...

  5. 站在OC的基础上快速理解Swift的类与结构体

    阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...

  6. Static关键字的作用及使用

    1.使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型. 声明为static类型的属性或方法,此属性或方法也被称为类方法,可以由类名直接调用. class P ...

  7. 看来IT技术与军事技术都是相通的——都是对新事物极为敏感的领域

    这是读到这段时候的感想: 和海军中那些狂热的相信“皇军不可战胜”的大舰巨炮主义者们不同,山口对于与美国开战的主张是持坚定的反对态度的,和山本五十六都做过日本驻美武官的山口都认为一旦与美开战,日本或许能 ...

  8. 基于Qt的类QQ气泡聊天的界面开发

    近期在写IM 聊天界面,想设计出一个类似QQ气泡聊天的样式 使用了几种办法 1:使用Qt以下的QListview来实现QQ类似效果.差强人意 2:使用QWebview载入html css样式来完毕.发 ...

  9. 解决SQL查询总是超时已过期

    解决SQL查询总是超时已过期 .在WIN8里提示:OLE DB 或 ODBC 错误 : 查询超时已过期; HYT00 1.由于数据库设计问题造成SQL数据库新增数据时超时 症状:   Microso ...

  10. Merging a WPF application into a single EXE(WPF应用程序合并成单个Exe文件)

    I always dislike handing off little applications to people. Not because I can’t, but because of the ...