你需要找出面对明天的力量。 收藏本站
登陆 / 注册 搜索

阅读: 1.4K   回复: 1

[# 网络安全] 为啥 IE 这么烂?

[复制链接]
空谷幽兰 踏破虚空 2022-1-10 10:00 |显示全部楼层

从前车马很慢,书信很远,一生只够爱一个人,但是可以纳很多妾啊!

精华达人 主题破百 以坛为家 论坛元老 土豪会员 五周年纪念
凭良心说,微软是一家不错的公司;微软的程序员,平均素质也不算差。那为啥 IE 这么烂捏?

为啥 IE 这么烂? b8f7c12849a6d37.jpg


下面我简单聊一下:

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 已经老朽不堪,难以维护了。
上一篇
下一篇
帖子热度 1440 ℃

wangqin0507 「初入古黑」 2022-1-10 10:04 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

你应该很孤单吧,一个人缓慢的翻看着评论,而这一秒,你正好看到了我的评论,这一秒你是属于我的,你好,古黑论的朋友,愿你早日找到自己的意中人
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表