本文知乎链接:Cygwin 前传:从割据到互补

想来讲讲发展史,对一个软件项目基因认识更深刻。

割据时代

从 UNIX 时代说起吧。1969 年,AT&T 公司旗下的贝尔实验室的天才们 Ken Thompson、Dennis Ritchie 和 Douglas McIlroy 开发了 UNIX 操作系统。AT&T 公司一时不知道怎么用这玩意儿赚钱,初期完全是纯出于兴趣做开发,并在研究机构和大学中流传,但看到其他公司能利用其赚取利润之后,AT&T 公司嗅到到商机,在 70 年代后开始采用法律手段保护它,禁止将 UNIX 源码授权给大学等学术机构使用。但此时已有多个 UNIX 的变种版本并被厂商采用,最流行的就是加州伯克利分校的 BSD(Berkeley Software Distribution,目前在此基础上又有 FreeBSD、OpenBSD、NetBSD 等新的很多分支版本),于是就有了商业公司之间的版权诉讼,UNIX 版权也在多个公司间易主,在此按下不表。各种商业并购之后,UNIX 商标权现归国际开放标准组织(The Open Group)所拥有

Cygwin前传:从割据到互补 - 图1

Ken Thompson(左)和 Dennis Ritchie(右) 图片来源于网络

各 UNIX 版本继续各自发展,呈现的差异越来越大,以至于相同的源代码在这版 UNIX 变种上正常编译运行、却在那版 UNIX 变种上出现错误甚至无法编译成功,即呈现出了 “多种 UNIX 系统” 割据的局面。

有个叫 IEEE 的组织实在看不下去了,大家各立山头是要割据的节奏,不利于 UNIX 软件系统的发展,于是在 1985 年牵头设立一个标准,叫 “可移植操作系统接口”(Portable Operating System Interface,POSIX,后面的 X 是为了表明其对 UNIX API 的传承)。其目的简要说是这样:无论怎么折腾,至少保证软件系统接口规范的一致性,从而保障程序代码的兼容性。这件事情大家自然喜闻乐见,软件厂商也少了很多头疼的事。各 UNIX 系统厂商即使想割据,但为了兼容性以占有更大市场,也纷纷愿意加入对 POSIX 的支持。

Cygwin前传:从割据到互补 - 图2

UNIX 各版本发展和演化 (图片来源:http://zh.wikipedia.org/zh-cn/Unix)

开源英雄

一个叫 Richard Matthew Stallman 的大胡子美国大叔对 UNIX 系统封闭源码很不满意,于 1984 年发起了 GNU 计划 (GNU is Not Unix,首字母递归缩写),计划开发一个完全兼容 UNIX 的自由软件系统,为此专门成立了自由软件基金会 (Free Software Foundation,FSF)。

Cygwin前传:从割据到互补 - 图3

RMS 大神 (图片来源于网络)

FSF 打算是搞成一个 GNU/Hurd 操作系统,其中 Hurd 是用来取代 UNIX 内核的新系统内核,GNU 代表用户软件,大致是这样一个意思,表述不严谨,勿怪。FSF 开发出了很多极其优秀的软件,名字和 UNIX 下的都相似甚至相同,从而保持软件一致性、降低用户学习成本,尤其是 shell、Emacs 文本编辑器、gcc 编译套件、各种开发库等更让很多程序员爱不释手。但这个 Hurd 内核却进展缓慢,直到 GNU 软件完成计划的 90% 以上,Hurd 还是没什么起色。但 Hurd 到今天仍然在顽强地活着,2016 年 12 月 18 日发布了 v0.9 版本。

RMS 大神宣扬的 “自由软件” 理念赢得了很多追随者,被视作精神领袖,其本人也是 FSF 领导者。

天才小子

1991 年,一个叫 Linus Torvalds 的芬兰小伙子在鼓捣他老师的 Minix 系统 (UNIX 的变种版本,一般仅用在计算机教学中) 之余,对其禁止用于商业目的很不满,决定要自己写成一个操作系统并允许在 i386 的机器上运行。这位天才 hacker 把自己的成果公布在互联网上,并逐渐吸引了世界范围内众多开发者的加入,使之不断完善,大家伙一商量,就按照 Linus Torvalds 的名字叫它 “Linux” 吧。

Cygwin前传:从割据到互补 - 图4

Linus Torvalds (图片来源于网络)

Linux 本身只是个操作系统的内核,支持 POSIX 标准,是一个 UNIX-like 系统内核,但完完全全是从零开始重写的代码,最重要的,它还是完全开源的自由软件。

这边 FSF 一看自己的 Hurd 还不知道什么时候能用呢,那边 Linus Torvalds 觉着 GNU 软件不赖,重新造轮子也累,于是众多厂商、机构、社区纷纷把 GNU 软件和 Linux 内核 (以及其他的一些软件包) 整合在一起组成一个完整的操作系统发行版,FSF 表示没什么意见,只是坚持要求全称应该叫 “GNU/Linux”,光叫 Linux 就把 GNU 的成果完全忽略掉了。

GNU/Linux 的诞生和发展,是一件足以影响计算机行业发展史的大事。

帝国之踵

微软帝国靠着 Windows 发家致富,操作系统市场形成 UNIX、GNU/Linux、Windows 的主流格局,微软帝国自己声称 Windows“部分支持 POSIX”。

GNU 那一票优秀的软件,尤其是开发工具,大家 (主要是程序员) 都期盼在 Windows 系统上也能用上,因为Windows 平台少有与此匹敌的优秀工具 (谁用谁知道)。UNIX 和 Linux 像是近亲,但 Windows 就完全不同了,GNU 那一票软件的源码在 Windows 下是无法直接编译的,二进制可执行文件复制到 Windows 下 Windows 更表示不认识。但是微软帝国就是这么牛气,什么标准不标准,俺们微软的标准才是标准。

实际上微软也曾在 Windows 上造一个 UNIX 子系统出来,但由于种种原因没什么影响力。虽然 Windows 占据几乎 100% 桌面操作系统市场,深的普通用户欢心,但 Windows 对 POSIX API 支持的匮乏,像是阿喀琉斯之踵。

优势互补

事情有所转机。1995 年,一家叫做 “Cygnus Solutions ”的公司正是打算努力做这件事——把符合 POSIX 标准的程序搬到 Windows 上运行,这个项目叫做 “Cygwin”。RedHat 公司(小红帽) 后来收购了 Cygnus Solutions 并继续 Cygwin 的开发,2018 年 RedHat 被 IBM 收购,此是后话。

自此看出,Cygwin 的目标是在 Windows 中构建一个类似 UNIX 的软件环境,以方便把符合 POSIX 标准的软件移植到 Windows 下。当我们需要享受 GNU 那些个杀手级工具的便捷高效却犯不着安装一个 GNU/Linux 系统时,Cygwin 是不错的选择。与此相似的项目有 Interix、MKS Toolkit、DJGPP(DOS 下)、Xming、UnxUtils、GNUWin32、GNUWin II、MinGW、NuTCracker、OpenNT 等,但无疑 Cygwin 表现出色且广为接受,并且有开源免费版本 (言外之意是,还有商业许可证的收费版)。

所谓 “寸有所长,尺有所短”,Windows 图形界面傻瓜式的操作同样吸引着广大用户,其超高的桌面市场份额就是证明,而 Cygwin 把 UNIX 环境带到 Windows 中来,让一票命令行工具焕发生机。

图形界面与命令行,实现优势互补,相得益彰。

更多阅读

参考

unix_百度百科

http://zh.wikipedia.org/zh-cn/Unix

http://zh.wikipedia.org/wiki/POSIX

http://zh.wikipedia.org/zh-cn/GNU

http://en.wikipedia.org/wiki/Cygwin


本文对你有帮助?请转发分享,欢迎关注与留言交流

微信文章链接:

Cygwin前传:从割据到互补 - 图5
Cygwin前传:从割据到互补 - 图6

► 本文为原创文章,如需转载请私信知乎账号或联系公众号:伪码人(We_Coder)

都看这里了,不妨点个赞再走呗
https://zhuanlan.zhihu.com/p/56572298