读完了 The UNIX Haters Handbook,好奇*NIX 的优势到底是什么?

2016-04-07 15:34:34 +08:00
 iheshix


刚刚读完《 The UNIX Haters Handbook 》。怎么说呢,虽然知道作者们是“爱之切恨之深”,但是还是很好奇,既然*NIX 有这么多的缺陷,为何还一直都有那么多人在用?难道是因为 CS 的同学都忙着写代码赚钱?忙着做科研?忙着用电脑完成其它工作?而并没有太在意电脑这个工具本身是否好用?又或者是,大家的哲学就是“够用就好,即使麻烦些,能忍就算了”?

读完这本书,发现电脑行业深深各种坑啊。其实不光*NIX , Windows 也是背负着一身的历史问题在往前走。这个世界就是如此不完美,不过大家为什么不花点时间去修复这些问题呢?从根本上解决这些问题呢?习惯的力量太大?*NIX 是如何存活到现在的?

PS :突然就想起了当年, 199X 年,对中国用户来说,和 IBM 其名的,一家叫 AST 的公司。当时 AST 的 486 、 586 ,也是很贵的,买不起的。
7064 次点击
所在节点    Linux
63 条回复
iheshix
2016-04-07 20:46:52 +08:00
@robertlyc
@strahe
无知者也无罪噻。所以你们的意思是, UNIX 本身坑挖得太大,根本没法填了哇?哈哈

@khaki
说的是呢。

@vicesa
哈哈哈! 26 年过去了。看来我单纯了。。。。

@ffffwh
这话说的。所以到底是啥让它混得开呢? Why ?

@wingyiu
召唤下轮子哥。 @vczh
chinvo
2016-04-07 20:51:47 +08:00
因为他们的 epoll/kqueue 比 windows 的 OVERLAPPED 之流高到不知道哪里去了
librae
2016-04-07 20:54:59 +08:00
应该是对开发者比较友好吧
- 重度 *nix 依赖症患者
levn
2016-04-07 21:00:04 +08:00
写那些东西的又不觉得是问题。。。
darasion
2016-04-07 21:04:08 +08:00
just for fun.
algas
2016-04-07 21:19:26 +08:00
记得 GNU Hurd 操作系统算是有自顶向下设计的,可能实现了的话会比 Linux 更好,
事实是更复杂的东西也拖累了开发进度,所以怎么说呢,可以用进化论解释吧

这些年 linux 已经非常好用了,在我看来对新手也是非常友好,
所以这些年 Linux 能火起来也是有机会的
jackal
2016-04-07 21:23:11 +08:00
首先感谢贴主介绍这个文章 /书,我赶紧去下载了一本,有时间一定从头到尾读一遍。

我自己也用 Unix/Linux 有好几年了,对 Unix/Linux 也有一些看法,其中有好的,也有坏的。

评价任何一个东西,都要放到它所在的年代和历史中看,这样就不会产生用上帝视角或者马后炮的方式来评价。

Unix/Linux 的缺点有很多,王垠也说过很多,我觉得说得很在理; 几十年前的东西,放在现在如果还都很完美,只能说明现在的发展有多落后。

另外,如果想了解 Unix 的好,你得看《 Unix 编程艺术》, 当然作者写的内容里面也有一些放在现在看根本就是胡扯的部分。

另外,在回帖中扯到 OSX 和 Andriod 的, 我只能说,你们每次回复的时候,“请尽量让自己的回复能够对别人有帮助”这句话没有看到吗?
iheshix
2016-04-07 21:47:04 +08:00
@algas 恩恩。可能真的有很多时代的因素在里面吧。
iheshix
2016-04-07 21:58:22 +08:00
@jackal 恩恩。感谢感谢!我就是单纯的好奇而已。心中有种模模糊糊的感觉。怎么说呢,要说计算机作为一种工具,感觉计算机也是挺魔性的。它不像普通的机械工具,可能最好的爱好者也就是用更好的材料,更细心的养护。计算机变化太多,含义太多。 UNIX 诞生之初,位于大学里,位于实验室里,你要说里面这些人都是专业程序员,可能在那个时代,并不能这样称呼。他们可能更多的有自己的本职工作做,可能仅仅是为了方便科学计算,才被迫设计一些精巧的装置来提高工作效率。感觉自然这群人倒腾出来的东西,缺点不少,但能干活!能把研究任务继续下去,就是好的。

随着时间发展,可能用得人越来越多,也如书中所讲,一不小心,某个版本就从实验室中泄露出来了。于是,开始病毒式的遍地开花发展。

我的疑惑在于,随着计算机科学的发展,按道理来说,比如其它行业,发现一个东西有用,但毛病不少,总是会有人站出来,尝试解决一些问题的。这种感觉,就好像*NIX 系统,一直在保留着缺陷在生长。你要说 Linux 比 UNIX 好不好?肯定好,但是那些设计原理,设计理念,为何从没有人质疑过?就好像*NIX 里那些缩写到 2 个字母的命令, cp 、 mv 、 rm ,都是因为当初是电传终端,为了提高效率而采用的缩写,为什么就没有某个发行版本,把这些改成大家能够理解的命令? copy 、 move 、 remove 不也挺好么?

而说到那些所谓的 UNIX 哲学。比如要精简,一个程序只做一件事,其实有些程序明明自己的那件事也没有做好。至于什么不求完美,够用就好?微软一向都是第一版产品就是半成品,也没有看见大家对微软抱有如此宽容的心态啊。

可能我真的只能先读读《 UNIX 编程艺术》,去了解了解它的好,再来尝试理解 UNIX 的种种理念了。

另外感谢您的答复。
vm
2016-04-07 21:59:21 +08:00
@chinvo 你确定?一般的 linux 要搞 zero-copy 只能用什么 vmsplice ,功能还不完整。这一点还是 windows 效率高,而且 win8 开始还搞了可以 pin buffer 的 api 。
congeec
2016-04-07 22:01:08 +08:00
@chinvo IOCP
wizardoz
2016-04-07 22:07:05 +08:00
适合程序员用,不适合普通用户使用。
比如我要进行批量文本文件的处理,使用 awk 、 sed 、 grep 这几个工具,可能很多需求都能分分钟搞定。在 window 是下我不知道怎么处理,用 python 完全写一遍?(可能主要是我不熟悉 Windows 下的文本文件处理)。
wizardoz
2016-04-07 22:16:53 +08:00
而说到那些所谓的 UNIX 哲学。比如要精简,一个程序只做一件事,其实有些程序明明自己的那件事也没有做好。
========================================
如果一个程序自己的事情没有做好,那么因为一个程序只做一件事情,有能力的人可以自己写一个程序替代它,而不会产生很大的移植成本。所以我觉得这个哲学本身是很高明的。至于有的程序自己的事情没做好,那应该是程序个体的事情,不影响这条哲学。
chinvo
2016-04-07 22:37:19 +08:00
@congeec IOCP 也是够难用的 _(:3
congeec
2016-04-07 23:05:03 +08:00
@chinvo 那儿难用?接口不友好?性能不够?
iheshix
2016-04-07 23:19:13 +08:00
@chinvo
@congeec
还请友好讨论哈。我也不希望仅仅是我的一个小帖子,就把这贴变成了*NIX 和 WINDOWS 的传统对决贴。两边各自骂战也没有意义嘛。多谢多谢。

@wizardoz
也非常感谢大家的回复。我每条都认真看来着。现在的感觉是,可能真的是程序员思维问题吧。毕竟计算机诞生的最开始几十年,计算机的使用者都是偏专业口的人,实验室啊、大学啊、软件工程师啊、系统管理员啊等等等等。 Windows 95 、 98 也都是 95 年之后的事情了,再加上普通老百姓的普及程度,基本上可以说*NIX 是带着开发友好的光辉慢慢发展过来的。只是对于普通老百姓来说,确实太过于专业了。

然后又估计要扯到桌面市场和服务器市场了。桌面市场就是普通用户思维模式,所以好像 Windows 的份额足够大。而服务器市场,*NIX 绝对是主导。从这个估计也能看出开发人员思维和普通用户的思维差异吧。
yixiang
2016-04-07 23:37:36 +08:00
终端(或者命令行)并非“古老时代的历史遗留痕迹”。

个人想到的几个优点如下:

1.不依赖于图形界面。使服务器的资源可以充分发挥在提供服务上。比如说我的 VPS 只有 256M 的内存,跑了几个 WordPress 。可以节约很多钱。其实本身,不把资源浪费在非必要的图形界面上就是个建服务器的好原则。

2.高效快捷。做一个不合适的对比:新建一个 laravel 项目只需要敲如下命令: laravel new blog 。新建一个.net 项目需要,打开 vs ,点击新建项目,选择项目类型, 输入项目名称, 点击新建,等等等等。

3.方便和其它工具组合使用。比如写成脚本放 cron 里定期执行,写成脚本放启动里按照自己的配置运行,通过管道把输出传到下一个程序中处理。图形化界面要实现这样的灵活性很难。

4.不依赖于鼠标。能提高效率。用过 vim 或者 emacs 你就知道我在说什么。

感觉楼主完全是从个人用户角度出发思考的,而这里说的这些用户和一般用户都没什么关系。但本来 unix 系统,除了苹果,都并不适合大众用。相比于缺点,更是不适合。换了一个环境,换一个用途,换到另一个人手里,就变成充满优点了。

但我又仔细看了下,发现楼主都在说 unix 怎么这么不好,没怎么说到底哪点细节让你觉得不好了,除了没有播放器,感觉像是没有使用经验,也不需要使用 unix ……只是靠着二手知识讨论。 well ……不做程序员是一件很幸福的事。
qcts33
2016-04-07 23:50:38 +08:00
有一个很有名的软件设计原则叫做“ Worse is Better ”。为了方便功能的实现,*nix 的设计中经常可以看到这个原则的体现。但慢慢的大家就接受了这些“不好”的东西,不仅仅是用户习惯,很多甚至成为了标准的系统行为。出于兼容性考虑,大家也就没有改进这些东西的动力了。
tracyone
2016-04-07 23:58:01 +08:00
你从 桌面用户角度 来对比这两者是非常不公平的.............

*NIX 系统及其背后的开源运动,实实在在的改变了世界,在嵌入式方面尤其如此,几乎所有智能的硬件的操作系统内核都将是*NIX ,它躲在背后,不被人看到,不像 windows 那样,不代表它不重要。
levn
2016-04-08 00:07:42 +08:00
书里那些鸡汤什么哲学什么原则。。。看看就算了。
当真了的话就让人的想法变得像这样,过于天真。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269268

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX