[译]所有编程皆为Web编程

标签: | 发表时间:2014-04-27 17:33 | 作者:happydeer
出处:http://blog.csdn.net/happydeer

原文作者:Jeff Atwood

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编程。对于普通的在职程序员来说,如果你不认为这是一个值得庆贺的理由,你也许应该转行了。

作者:happydeer 发表于2014-4-27 9:33:14 原文链接
阅读:348 评论:4 查看评论

相关 [编程 web 编程] 推荐:

[译]所有编程皆为Web编程

- - 呦呦鹿鸣
原文作者:Jeff Atwood. Michael Braude对Web编程大受追捧表达了他的不屑:. 大部分人想去做Web编程的原因是,他们不够聪明,因此也做不了别的事. 他们不懂编译器、并发性、3D或类继承. 他们根本不明白我为什么要使用接口或者抽象类. 他们不理解虚函数、指针、引用、垃圾回收、终结器、传引用与传值的区别、C++的虚拟析构函数、或者C#的结构体与类之间的差别.

几种web并行化编程实现

- - CSDN博客架构设计推荐文章
    当网站做到一定规模的时候,web单个页面需要涉及到的业务也会越来越多,每个页面可能会向后端发起几个、十几个甚至几十个请求. 对于java、python之类的支持多线程的语言可以使用多线程编程,但也会增加程序的复杂性,像php这样的不支持多线程的语言只能借助其他方法实现并行,下面总结几种比较实用的并行化框架.

从可编程到跨终端的Web

- - 随网之舞
“跨终端的Web”是我为 QConbeijing2013的前端专题定的主题. 我在infoQ中文站发表了 《从可编程到跨终端——QCon北京2013“跨终端的Web”专题出品人专访》中比较详细的解释了为什么,现在转一份过来,欢迎探讨. 同时, 今天在Twitter上发布征集讲师送价值4200元的门票一张的消息,欢迎自荐或推荐.

Table被web编程弃用的原因

- - WebHek
Table要比其它html标记占更多的字节. (延迟下载时间,占用服务器更多的流量资源. Tablle会阻挡浏览器渲染引擎的渲染顺序. (会延迟页面的生成速度,让用户等待更久的时间. Table里显示图片时需要你把单个、有逻辑性的图片切成多个图. (增加设计的复杂度,增加页面加载时间,增加HTTP会话数.

Web编程语言和脚本语言的就业趋势

- Joji - ITeye资讯频道
八月是一个值得关注工作趋势的月份,今天,我们来重点关注web编程语言和脚本语言的就业趋势. 您可能很想知道我所指的“web编程语言和脚本语言”到底是什么. 本文中我列举了Ruby、Python、PHP、JavaScript、Flex 以及 Groovy等编程语言. 我在这里并没有提及Rails,是因为我想尽量将开发框架和开发语言区分开.

谷歌宣布推出新的Web编程语言——Dart

- Johnny - ITeye资讯频道
据著名科技网站ExtremeTech的报道,谷歌编程新语言Dart逐渐浮出水面,它是一种“结构化的Web编程”语言. 早在几天前谷歌就已着手注册了一系列与Dart相关的域名,当时也引发了沸沸扬扬的猜测. 此前,Google还向美国专利与商标局提交了名为“SPOT”的商标注册,也引发了Spot为Google的新的编程语言的猜测.

热点争议:Web设计师需要编程知识吗?

- - Web App Trend
Web设计师是否应该学习编写代码是个充满争议的问题. 通常,在完成了一件网页设计后他们把创建网页代码的繁重工作都留给了程序员们. 这种现象不只出现在网络开发行业,在软件及游戏开发业也是如此.  在本篇文章中,作者 Deepu Balan 和大家分享了一些为什么Web设计师需要学习编写代码的理由,这会使广大的Web设计师们受益匪浅.

采访:关于 Go 语言和《Go Web编程》

- - 开源中国社区最新新闻
最近,在网上出现了一本名为《Go Web编程》的书籍,里面详细地讲述了使用Go语言进行Web编程的各个方面. 很特别的是,这本书是在GitHub上以开源的方式撰写的. 日前,InfoQ采访了这本书的作者谢孟军先生,请他来和大家谈谈Go语言以及他撰写的开源书籍. InfoQ:请您先简单和大家介绍一下自己.

web前端研发工程师编程能力成长之路 [转]

- han - 博客园-首页原创精华区
如果你是刚进入WEB前端研发领域,想试试这潭水有多深,看这篇文章吧;. 如果你是做了两三年WEB产品前端研发,迷茫找不着提高之路,看这篇文章吧;. 如果你是四五年的前端开发高手,没有难题能难得住你的寂寞高手,来看这篇文章吧;. WEB前端研发工程师,在国内是一个朝阳职业,自07-08年正式有这个职业以来,也不过三四年的时间.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.