History of Web Programming

 20th August 2020 at 2:19pm

这里的内容主要摘录自 History of Web Programming 一文。内容未做考证,主要是方便理解现在各种 web 技术为什么是这样子的。

Client-Side

第一款浏览器:1990 年,Tim Berners-Lee 发布世界上第一款浏览器 WorldWideWeb。

静态页面:1990-1995 年,当时的网页都是静态的,浏览器主要就是一个 HTML 文档察看器,没有交互能力。1990 年时一台微机 CPU 主频在 50Mhz,内存只有几 M。

Java Applets:1995 年,Java 1.0 发布,带了 applets 功能可以嵌入在浏览器中,提供了动态页面的能力。但是 applets 运行速度实在太慢,各平台上 UI 不一致,微软又在 IE 中绑个了 Java 运行时导致了兼容性问题,所以并没有流行开来。

JavaScript:1995 年,在 Java 发布后不久,JavaScript 也发布了。Netscape Navigator 是第一个浏览器装载了 JavaScript 解释器。但是第一个十年 JS 的应用面比较窄,网页交互比较简单,因为当时 JS 的性能并不好。JIT 还是在 2000s 才引入的。但是 JS 相对轻量灵活,还是迅速流行开来。在最近一个十年里,JS 的性能不断增强,可以在浏览器端承载起更多能力,支撑了 React / Angular 等大型框架。同时也在服务端取得了一些成绩(Node.js)。

VBScript:微软在 1996 年推出的对标 JS 的专有实现。因为是专有软件,在非 IE 平台上有很多问题。由于互联网越来越走向开放,VBScript 没有市场,拼不过 JS。

Flash:Flash 在 1990 年代开始发展,在 96 年被 Macromedia 收购后开始发力,05 年被 Adobe 收购。Flash 在网页上的游戏和流媒体场景是最流行的技术。现在流媒体渐渐被能力完善的 HTML5 取代,但是在网页游戏上还是主流技术。乔布斯指责 Flash 是一种专有、落后的技术,并且拒绝在 iPhone 上搭载 Flash。移动平台没有使用 Flash。

Silverlight:微软开发的用来对标 Flash 的技术,没有什么成绩,不用关心。

TypeScript:微软在 2012 年发布的语言,可以看成带类型的 JavaScript。TypeScript 可以编译成 JavaScript,并且微软设计得很好,在开发者社区口碑很不错。微软自家的 VSCode 是用 TypeScript 写的。Ant Design 也是。

Server-Side

CGI / FastCGI:原来大家只会写普通的命令行程序,要写 web 的程序时,它们想到搞容器去解析 HTTP 请求,然后把 HTTP 头、请求体用环境变量传给 CGI 程序。CGI 是每来一个请求 fork 一个进程,FastCGI 是 pre fork 好一堆进程。CGI 程序可以用任意语言编写,只要它遵守输入输出规则(通过环境变量)即可。

Perl:比较灵活地脚本语言,也用 CGI。

PHP:简单粗糙快速。在 HTML 里写脚本实现动态能力。

ASP / ASP.NET:微软开发的对标 PHP 的技术。设计比 PHP 好,但是之前只能在 Windows Server 上运行。

Java:J2EE 在 1996 年发布,到目前仍然很流行且具竞争力,比如 Spring 全家桶。

Ruby, Python:Ruby on Rails 比较早发力,在 2000s 成绩不错,开发非常快速,比 Java 简洁和灵活。Django 等 Python 框架随后发力,也追求简单和生产力,目前流行程度压过 Ruby on Rails。Ruby / Python 做 web 开发更快,但是对中型大型项目,对开发人员要求比较高,不如 Java 那样条条框框多的好招人。

Node.js:在服务端编程没流行开来,复杂的编程模型,有限的处理能力,让它一般只能做一些胶水层,一般在前端页面后层做模板渲染 / API 接口数据透传。不过我的理解可能有限,如果你想看看服务端 Node.js 能做啥,看看阿里做了啥。