1
GentleSadness 2016-04-07 15:49:33 +08:00 via Android
优势就是你这种觉得 Linux 没优势的都学
|
2
congeec 2016-04-07 15:55:25 +08:00
显然你需要读《 Unix 编程艺术》(很可能你已经度过了)
对我而言, unix 最大的好处是它很适合程序员、黑客用 |
3
wingyiu 2016-04-07 15:55:57 +08:00
The PHP Haters Handbook.
|
4
iheshix OP @GentleSadness 喂喂!讲真!不开玩笑!哈哈。现在大家学,也算是历史遗留原因吧?你看, US 的传统教育,以及第一批做 CS 的人(那批 60 后, 50 后)都是从 UNIX 开始的。现在自然后辈们用着也算自然。只是问题也确实很多。如果全部换 Windows ?哪怕是湾区的企业换成 Windows 了,光是这一部分收入,就能让微软再活几个世纪了吧?而且湾区的海盗精神怎么能向微软低头?所以,这不大家没得选么?
如此说来,其实 iOS 和 Android 倒有些下一代操作系统的意味。简单好用坑少(至少目前 iOS 感觉如此)。 |
5
iheshix OP @congeec 哈哈!我猜也是这样,还没来得及拜读 The Art of UNIX Programming 。就是想先听听各位老司机的经验之谈嘛。下本书就读这个。
|
6
Testalias 2016-04-07 15:59:40 +08:00
用 Linux 最重要的呢就是开心
|
8
jarlyyn 2016-04-07 16:01:50 +08:00
目前来看,开源。
想想 android 。 开源可不光光是为了免费。 |
10
darkbread 2016-04-07 16:11:47 +08:00
"而并没有太在意电脑这个工具本身是否好用?"
程序员对电脑的需求和普通人不一样吧,而且对程序员来说,确实*nix 比较方便. 你看微软都退出*nix 命令行了,真是活久见系列. |
11
iheshix OP @KylinRoc 是的没错。但是 Android 和 iOS 其实已经从气质上,把*NIX 的很多不好的东西给屏蔽了。比如各种全新的交互方式。至少,你在 Android 和 iOS 上,不用再用命令行了吧? OS 的内核在技术上怎么呈现可能并不太重要,而 OS 的体验才是更重要的。
这也许就是为什么 OS X (或者说将来会命名为 macOS 的家伙)这么受欢迎的原因。一来, OS X 的交互方式是适合这个年代的,各种操作也是和 iOS 贯通的。即使不会命令行的非计算机专业的普通人,也能操作。二来,对于计算机系和程序员来说,其内置的 UNIX 又兼容古老时代的历史遗留痕迹。而且本身 OS X 也对 UNIX 做了很多改进(当然,还不够,比如 HFS+简直应该入土了)。 |
12
SpicyCat 2016-04-07 16:29:05 +08:00 1
Linux 现在这个样子不是设计出来的,是进化来的。
|
13
iheshix OP @darkbread 所以我就在想嘛。到底*NIX 这么受欢迎,到底是历史遗留原因占主导因素?还是那个所谓的简洁的设计原则,一个应用程序做一件事这种思想更受欢迎?
话说,你看现在 2016 年了,想在 OS X 或者 Linux 上找一个媲美 Windows 上 PotPlayer 这样的超好用的播放器,都十分困难( https://www.zhihu.com/question/35649860 )。 |
14
vm 2016-04-07 16:47:52 +08:00 via Android
现在的话主要是因为免费,以及由此带来的可复制性以及毒性。
|
15
robertlyc 2016-04-07 16:49:46 +08:00 1
无知者无畏
|
16
strahe 2016-04-07 16:54:54 +08:00
楼上正解
|
17
wingyiu 2016-04-07 17:02:27 +08:00
应该让轮子哥来回答这个问题
|
18
khaki 2016-04-07 17:24:50 +08:00
哪有很受欢迎...这几年的 stackoverflow 开发者调查结果中,使用类 Unix 系统的比例除开 os x 也就只有 20%左右
|
19
vicesa 2016-04-07 17:53:44 +08:00
曾经有位叫 RMS 的人像楼主说的那样“花点时间”去修复这些问题 后来 26 年过去了
|
20
ffffwh 2016-04-07 18:06:13 +08:00 via Android
混得开不需要优势。或者说混得开本身就是优势..
|
21
iheshix OP |
22
chinvo 2016-04-07 20:51:47 +08:00
因为他们的 epoll/kqueue 比 windows 的 OVERLAPPED 之流高到不知道哪里去了
|
23
librae 2016-04-07 20:54:59 +08:00
应该是对开发者比较友好吧
- 重度 *nix 依赖症患者 |
24
levn 2016-04-07 21:00:04 +08:00 via iPad
写那些东西的又不觉得是问题。。。
|
25
darasion 2016-04-07 21:04:08 +08:00
just for fun.
|
26
algas 2016-04-07 21:19:26 +08:00
记得 GNU Hurd 操作系统算是有自顶向下设计的,可能实现了的话会比 Linux 更好,
事实是更复杂的东西也拖累了开发进度,所以怎么说呢,可以用进化论解释吧 这些年 linux 已经非常好用了,在我看来对新手也是非常友好, 所以这些年 Linux 能火起来也是有机会的 |
27
jackal 2016-04-07 21:23:11 +08:00
首先感谢贴主介绍这个文章 /书,我赶紧去下载了一本,有时间一定从头到尾读一遍。
我自己也用 Unix/Linux 有好几年了,对 Unix/Linux 也有一些看法,其中有好的,也有坏的。 评价任何一个东西,都要放到它所在的年代和历史中看,这样就不会产生用上帝视角或者马后炮的方式来评价。 Unix/Linux 的缺点有很多,王垠也说过很多,我觉得说得很在理; 几十年前的东西,放在现在如果还都很完美,只能说明现在的发展有多落后。 另外,如果想了解 Unix 的好,你得看《 Unix 编程艺术》, 当然作者写的内容里面也有一些放在现在看根本就是胡扯的部分。 另外,在回帖中扯到 OSX 和 Andriod 的, 我只能说,你们每次回复的时候,“请尽量让自己的回复能够对别人有帮助”这句话没有看到吗? |
29
iheshix OP @jackal 恩恩。感谢感谢!我就是单纯的好奇而已。心中有种模模糊糊的感觉。怎么说呢,要说计算机作为一种工具,感觉计算机也是挺魔性的。它不像普通的机械工具,可能最好的爱好者也就是用更好的材料,更细心的养护。计算机变化太多,含义太多。 UNIX 诞生之初,位于大学里,位于实验室里,你要说里面这些人都是专业程序员,可能在那个时代,并不能这样称呼。他们可能更多的有自己的本职工作做,可能仅仅是为了方便科学计算,才被迫设计一些精巧的装置来提高工作效率。感觉自然这群人倒腾出来的东西,缺点不少,但能干活!能把研究任务继续下去,就是好的。
随着时间发展,可能用得人越来越多,也如书中所讲,一不小心,某个版本就从实验室中泄露出来了。于是,开始病毒式的遍地开花发展。 我的疑惑在于,随着计算机科学的发展,按道理来说,比如其它行业,发现一个东西有用,但毛病不少,总是会有人站出来,尝试解决一些问题的。这种感觉,就好像*NIX 系统,一直在保留着缺陷在生长。你要说 Linux 比 UNIX 好不好?肯定好,但是那些设计原理,设计理念,为何从没有人质疑过?就好像*NIX 里那些缩写到 2 个字母的命令, cp 、 mv 、 rm ,都是因为当初是电传终端,为了提高效率而采用的缩写,为什么就没有某个发行版本,把这些改成大家能够理解的命令? copy 、 move 、 remove 不也挺好么? 而说到那些所谓的 UNIX 哲学。比如要精简,一个程序只做一件事,其实有些程序明明自己的那件事也没有做好。至于什么不求完美,够用就好?微软一向都是第一版产品就是半成品,也没有看见大家对微软抱有如此宽容的心态啊。 可能我真的只能先读读《 UNIX 编程艺术》,去了解了解它的好,再来尝试理解 UNIX 的种种理念了。 另外感谢您的答复。 |
30
vm 2016-04-07 21:59:21 +08:00 via Android
@chinvo 你确定?一般的 linux 要搞 zero-copy 只能用什么 vmsplice ,功能还不完整。这一点还是 windows 效率高,而且 win8 开始还搞了可以 pin buffer 的 api 。
|
32
wizardoz 2016-04-07 22:07:05 +08:00
适合程序员用,不适合普通用户使用。
比如我要进行批量文本文件的处理,使用 awk 、 sed 、 grep 这几个工具,可能很多需求都能分分钟搞定。在 window 是下我不知道怎么处理,用 python 完全写一遍?(可能主要是我不熟悉 Windows 下的文本文件处理)。 |
33
wizardoz 2016-04-07 22:16:53 +08:00
而说到那些所谓的 UNIX 哲学。比如要精简,一个程序只做一件事,其实有些程序明明自己的那件事也没有做好。
======================================== 如果一个程序自己的事情没有做好,那么因为一个程序只做一件事情,有能力的人可以自己写一个程序替代它,而不会产生很大的移植成本。所以我觉得这个哲学本身是很高明的。至于有的程序自己的事情没做好,那应该是程序个体的事情,不影响这条哲学。 |
36
iheshix OP @chinvo
@congeec 还请友好讨论哈。我也不希望仅仅是我的一个小帖子,就把这贴变成了*NIX 和 WINDOWS 的传统对决贴。两边各自骂战也没有意义嘛。多谢多谢。 @wizardoz 也非常感谢大家的回复。我每条都认真看来着。现在的感觉是,可能真的是程序员思维问题吧。毕竟计算机诞生的最开始几十年,计算机的使用者都是偏专业口的人,实验室啊、大学啊、软件工程师啊、系统管理员啊等等等等。 Windows 95 、 98 也都是 95 年之后的事情了,再加上普通老百姓的普及程度,基本上可以说*NIX 是带着开发友好的光辉慢慢发展过来的。只是对于普通老百姓来说,确实太过于专业了。 然后又估计要扯到桌面市场和服务器市场了。桌面市场就是普通用户思维模式,所以好像 Windows 的份额足够大。而服务器市场,*NIX 绝对是主导。从这个估计也能看出开发人员思维和普通用户的思维差异吧。 |
37
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 ……不做程序员是一件很幸福的事。 |
38
qcts33 2016-04-07 23:50:38 +08:00
有一个很有名的软件设计原则叫做“ Worse is Better ”。为了方便功能的实现,*nix 的设计中经常可以看到这个原则的体现。但慢慢的大家就接受了这些“不好”的东西,不仅仅是用户习惯,很多甚至成为了标准的系统行为。出于兼容性考虑,大家也就没有改进这些东西的动力了。
|
39
tracyone 2016-04-07 23:58:01 +08:00
你从 桌面用户角度 来对比这两者是非常不公平的.............
*NIX 系统及其背后的开源运动,实实在在的改变了世界,在嵌入式方面尤其如此,几乎所有智能的硬件的操作系统内核都将是*NIX ,它躲在背后,不被人看到,不像 windows 那样,不代表它不重要。 |
40
levn 2016-04-08 00:07:42 +08:00 via iPad
书里那些鸡汤什么哲学什么原则。。。看看就算了。
当真了的话就让人的想法变得像这样,过于天真。 |
41
hooluupog 2016-04-08 00:24:08 +08:00
unix haters book 上面罗列的很多问题现在的 unix 已经修复,在 linux 上面也早已不复存在。
看完这本书推荐楼主再看看《 unix 编程艺术》这本书,这本书里面 windows , mac OS 甚至在当时经典而超前的 BeOS 都有涉及,看完就知道 unix 怎么走到今天的。比如有的东西(x window system)如今显得落后了,但其中的思想还是很经典的。 unix 的流行就像病毒那样流行或者说是传染起来的,第一个病毒也是 unix hacker 搞出来的( hacker 以前是编程厉害的大牛的称谓,现在和骇客,黑客这些联系起来了)。 另外还有一本书“集市和大教堂”,很精准的阐释了商业公司运作和开源社区的模式的区别。 其实你仔细观察下这几年开源社区的蓬勃发展,各种开源软件的出现,以及 github 的火热,和当年那些 unix hackers 非常相似,火热的造轮子,然后发布出去被膜拜,接着大家一起造,形成一个个社区,只不过当时没有 github ,主要是在邮件列表上进行,很多经典的大辩论都可以在归档的邮件列表中查到(比如 RSM ,比如 linus 和 minix 之父的辩论等等)。 unix 下面一大堆经典的工具链就是这么不断的造出来并延续至今的。 要说它的优势是什么?为什么会流行?我觉得最大的优势就是自由,任何厉害的人可以在上面证明自己,信誉驱动,这是 geek 和 hackers 们的天堂。而早期的开荒者都是 hackers ,那时候还不会考虑什么客户啦,用户体验啦之类的东西。 当然这个传统和风气沿袭至今,也导致 linux 桌面一直很难有一个统一的好用的桌面系统出来,因为文化差异太大。 楼主说的完美的问题。 计算机科学到底算不算科学?软件工程到底算不算工程?如果算科学那么对比经典物理学如何呢?如果算工程,那么可靠性如何?为何无法避免 bug ?软件分分秒秒都在出 bug ,建造的房子如果也这么出 bug 那早就出人命了。所以,你想找一个完美的软件系统是不可能的,根本上也是解决不了的。你越追求完美,它越没有实用价值。 " cp 、 mv 、 rm ,都是因为当初是电传终端,为了提高效率而采用的缩写,为什么就没有某个发行版本,把这些改成大家能够理解的命令? copy 、 move 、 remove 不也挺好么? " ======================================= 不是为了提高效率而缩写,而是本身就是这个命名风格, unix/linux 系的东西都是这种命名风格,沿用至今。对比下 linux api 和 windows 的 api 的风格差异你会一目了然。说不上谁好谁坏。现在有 IDE 补全还好说,以前那种命令行环境下,屏幕又小,敲那么多字母要敲死人的。以前的键盘按键分布也和现在的 wasd 键盘有差别,所以有历史遗传的因素在里面。为什么不改过来?因为没看到足够的好处或者非改不可的必要。 至于有了鼠标,图形界面是不是命令行工具就不需要了?肯定不是。有些事情命令行还是比点鼠标要快的,而且使用起来更灵活。有些安全性较高的地方,后台是不允许有图形环境的, bug 多,潜在的安全漏洞也多。 |
42
iheshix OP @yixiang 嗯,感谢你的答复,不过我也写程序,我能理解*NIX 的方便之处,只是回想起当初我自己学的时候,也是一个坑一个坑踩过来的。其实就是感觉*NIX 对小白用户太不友好。电脑的话,普通人也应该可以享受嘛。但是*NIX ,对于普通人,就谈不上享受了。
|
43
iheshix OP @qcts33 感谢你的回复,对,其实我就是想了解这里面的设计理念和设计原则。 Worse is better 嘛,你可以说这种原则是存在的,也可以说它是假的。我感觉它更像是那种理论与现实的选择。就是说,不求多完美,但只要能帮我高效完成任务就行。这是一种典型的,创造者角度的思考方式,因为它并没有照顾到别人的使用体验。也许这也是因为 UE, UX 都是后面才发展起来的吧。
|
45
iheshix OP @hooluupog 非常感谢!你的这个答案比较接近于我期望看到的答案。我觉得讲的很有道理,您提到的两本书,我会接下来就去看看。
确实,既有历史的因素在里面,也有这群人的个性因素在里面。我现在也在写代码,但更多的,我在做一些设计方面的工作。平时我就很好奇有些时候开发人员和设计人员确实有思维理解上的鸿沟。一些对设计人员重要的,开发人员觉得不重要,反之亦然。也许真的是看问题的角度和出发点就完全不一样吧。 至于计算机科学和软件工程的问题。这又是一个可以扯上好几天的话题。就像一些书中说过的,肯定不敢让写代码的同学来造汽车。那开出去不到半公里汽车就要散架。我的感觉是,软件工程,更接近于一种实用工程学,但它有比较神奇的,没有像建筑学那样有明确的标准和体系结构。代码的执行效率,写代码之前算个复杂度,优化下算法这种,基本靠自觉。都不是强行标准。计算机科学的范围就更大了,也许真的是因为这门学科还太年轻,没有足够的经验吧。 和大家一起聊了这么多,还是感觉很有收获。接下来我就继续读书,看看能不能稍微再进一步了解下。多谢! |
46
qian19876025 2016-04-08 07:50:32 +08:00
加入黑名单 尽发些无聊问题 别人有需求就使用呗
|
47
mengzhuo 2016-04-08 07:55:52 +08:00
unix 系最大的特点是一个程序只干一件事!不会英语寸步难行,会英语的跟飞的一样。
windows 最大的特点是,一个程序啥都能干! 举个最近出的例子,一个同事要统计特定文本中特定错误代码,你猜猜他在 windows 上花了多少时间? 你再猜猜我用 ack | awk | sed | sort | uniq 组合花了多长时间? |
49
Neveroldmilk 2016-04-08 08:29:27 +08:00
@mengzhuo 用管道命令吊打 Windows ,太不厚道了吧。其实 windows 做个脚本也行,但是代码量就跟 python 差不多了。
|
50
iheshix OP @Neveroldmilk 这也算是一种对开发人员友好吧。:-D
|
51
qnnnnez 2016-04-08 08:38:50 +08:00
*NIX 就是原则太多了
|
52
mengzhuo 2016-04-08 08:53:57 +08:00 via iPhone
|
53
iheshix OP @mengzhuo 这个仔细想想也不算是个槽点。毕竟计算机本身还是基于英文的嘛。而且你看,即使换成中文了,其语义还是清晰通畅的,相对于 Windows ,可能其中每一个单词都需要写好几行脚本来实现。当然,说不定在这个世界某个地方,有个作者就写了一个 WinForm 的有窗体的应用,点几下鼠标就能达到同样的目的。
也许我们只能说,*NIX 上的针对这种文本处理的原子操作,因为历史原因,比较丰富吧。 不管怎样,仅仅看语义和逻辑的话,确实很容易理解啊。也算是*NIX 的一种好吧。 |
54
oska874 2016-04-08 09:34:30 +08:00
应该再读读 The Windows Haters Handbook , The Mac Haters Handbook
|
55
searene 2016-04-08 09:40:26 +08:00
我只用过 Linux 系列的,感觉上面最缺少的还是各种专业软件(计算机领域除外),比如做图形的、音乐的等等,比起 Windows 或者 Mac 上还是差了好多。界面也是个问题,现在用 i3wm 有时候会崩溃,估计还是不太成熟。虽然如此,编程却离不开它,因为各种编程工具很好很强大,软件包管理工具也很方便。最近在用 arch linux , wiki 写的非常详细,遇到的问题大部分都可以找到解决方案,可以很方便的定制系统,这些都是 windows 不能比的。
|
56
iheshix OP @oska874 哈哈哈!如果有的话。希望微软自己出一本 The Windows Haters Handbook ,那就和这本 The UNIX Haters Handbook 一样权威有效了。
|
57
iheshix OP @searene 恩啊。不过情况也在慢慢改善。 Linux 在高端的一些行业,还是挺有市场的。梦工厂也是用 Linux 集群来渲染动画的吧?
|
58
iheshix OP 基本结贴啦。暂时先这样吧。
|
59
rainysia 2016-04-08 13:30:41 +08:00 1
是时候出一本 *nix 从入门到入院了 |
61
sopato 2016-04-08 18:55:51 +08:00
混饭吃的本领,我觉得就不探究原因了。。。
|