主題: IE好爛
瀏覽單個文章
bureia
Golden Member
 

加入日期: Dec 2001
文章: 2,930
剛看到的

引用:
★八卦一下:为啥 IE 这么烂?

  (本章节是八卦,不想看八卦的请自行略过)
  凭良心说,微软是一家不错的公司;微软的程序员,平均素质也不算差。那为啥 IE 这么烂捏?
  考虑到篇幅已经很长,下面俺简单聊一下:

◇1. Web 引擎本来就很难写

  Web 浏览器需要依靠 Web 引擎来渲染网页。网页是用 HTML 编写的。HTML 的语法很灵活,本来就很难处理;而很多网站的写手(Web 程序员)写出来的网页甚至都没有严格遵循 HTML 语法。浏览器的引擎需要尽量智能地处理这些不规范的 HTML 语法。
  HTML 还允许嵌入样式表(CSS)和脚本(JavaScript)。而 JS 脚本的语法又是出了名的灵活。因此,写一个浏览器的 JS 引擎也是蛮有难度滴(Google 的 V8 引擎能获得如此高的赞誉,就是因为 JS 引擎难写)

◇2. IE 的开发团队曾经出现长期断档

  如果你观察 IE 版本的历史,会发现 IE6 之后停滞了长达 5年 才发布了 IE7。
  据说 IE6 发布之后,微软把整个 IE 团队都解散了,只留少数几个人负责改 bug。因为当时的微软领导层觉得 IE6 作为浏览器已经很完善了,而且浏览器这个产品本身没有利润,不值得投入太多人。
  (这是微软领导层的严重失策)
  这个决策造成了整个团队严重的断档。等到后来重启 IE7 的开发,新加入的程序员,很多都没有经手过前面的开发,完全不知道原有的代码中留下哪些“坑”(技术陷阱)。
  (如果你曾经管理过程序员团队,对上述这种情况应该深有体会)
  有些天真的同学会问:老团队虽然解散了,应该还会有文档留下来啊。新团队可以通过文档了解情况嘛。
  这么问的同学,多半属于“图样图森破”。当软件项目复杂到一定程度,你就不要指望文档是完备的。在这种软件项目里,有相当比例的文档,要么不全,要么不够新(与代码脱节),要么是错的。这不是一两家公司的个案,这是整个软件行业的通病。

◇3. 过于陈旧的架构

  目前 IE 使用的 Trident 引擎是在 1997年 引入 IE4 的(20年之前哦)。1997年是什么年代,年青的程序员可能没体会。俺正好借这个机会倚老卖老一下。
  (据说 IE 是用 C++ 写的,俺就拿 C++ 来举例)那时候,C++ 尚未标准化(第一次标准化是 C++98)。以现在的眼光看,那年头简直就是 C++ 的洪荒年代。
  虽然俺没有看过 IE 的源代码,但是可以合理地猜测:在那么久远的年代,设计一个全新的软件(浏览器在当时算是新事物),而且这个软件的需求又超复杂(参见前面提及的“Web 引擎复杂度”),设计出来的架构,其水平会好到哪里去?

◇4. (对旧架构)只敢修修补补,不敢大改

  在长达二十年的时间里,硬件环境有了巨大变化(多核多CPU),Web 标准也有了巨大的变化(更灵活更复杂了)。为了适应环境的变化,IE 的 Trident 引擎早就应该动一些“大手术”,对架构作一些大的调整。但是前面说过,IE6 之后,开发团队出现长达5年的断档(团队被解散)。IE7 之后的那帮 IE 团队的程序员,全都是新人(此处的“新人”是指:对老代码不熟)。所以俺猜测:他们只敢在旧的架构上修修补补,不敢动“大手术”。(如果你在大公司待过,一定明白:多做多出错,少做少出错,不做不出错)


★IE 这么烂,那能指望 Edge 吗?

  前面费了这么多口水聊 IE,下面用三句话概括一下:
从 Win98 到 Win10(甚至下一代的 WinXX),IE 都是无处不在滴(很多软件会调用 IE 组件);
从 Win98 到 Win10(甚至下一代的 WinXX),IE 都是【无法】彻底移除滴;
IE 的代码很烂,相关的漏洞非常多。

  前几年,微软高调推出全新的浏览器“Microsoft Edge”。为啥微软要另起炉灶?除了外部的因素(市场营销策略),内部因素恐怕就是俺刚才分析的原因——IE 已经老朽不堪,难以维护了。
  估计有些同学在默默指望着:用 Edge 彻底替代老朽不堪的 IE。俺劝这些同学别抱太大期望。
  前面已经提到:很多 Windows 上的应用软件(包括微软自己的软件以及第三方软件)重度依赖 IE 组件。出于兼容性的考虑,微软不可能在短期内彻底抛弃 IE。也就是说:在很长时间内,IE 会与 Edge 并存(Win10 就是一个例证)。
舊 2019-04-05, 10:15 AM #17
回應時引用此文章
bureia離線中