Chinaunix

标题: Linux/Unix弥久长青,设计思想有何独特之处?(获奖名单已公布-2012-5-22) [打印本页]

作者: send_linux    时间: 2012-03-28 14:34
标题: Linux/Unix弥久长青,设计思想有何独特之处?(获奖名单已公布-2012-5-22)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-3746465-1-1.html


活动背景:

 UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统。

  Linux是一种外观和性能与UNIX相同或更好的操作系统,但,Linux不源于任何版本的UNIX的源代码,并不是UNIX,而是一个类似于 UNIX的产品。Linux产品成功的模仿了UNIX系统和功能,具体讲Linux是一套兼容于System V以及BSD UNIX的操作系统,对于System V来说,目前把软件程序源代码拿到Linux底下重新编译之后就可以运行,而对于BSD UNIX来说它的可执行文件可以直接在Linux环境下运行。

  linux就是模仿unix界面和功能的操作系统,但是源代码和unix一点关系都没有。换句话讲,linux不是unix,但像unix。(Linux is not unix!)

Linux和GNU项目的理念表面上是Unix哲学的下一个发展阶段,实际上它只是生生不息的Unix的强势回归。The Unix Philosophy第一版中阐述的准则至今仍确切无误,甚至得到更多的佐证。开源除了可以让你清楚地了解到这些编程大师们创建系统的方式,还可以激励你去创建更快、更强大的系统。
——Jon "maddog" Hall,Linux国际协会,执行理事

作为开发Unix多年的专家,Mike Gancarz曾说过:“要想成为计算机的主人,而不是它的奴隶,你就应该使用Linux!”有别于市面上的其他关注如何使用Linux的书籍,这本书讲述的是“Linux的思维方式”,揭示了Linux正是Unix这一无所不能的操作系统的完美实现。到目前为止,没有一本书同时介绍Unix和Linux的设计理念,本书将这两者有效地结合起来,保留了The UnixPhilosophy中Unix方面的内容的同时,探讨了Linux和开源领域的新思想。

讨论话题:

“你为什么喜欢Unix? “
你会身体力行unix/linux哲学中的哪些?为什么?
你不赞同书中提到的哪些unix/linux哲学(文化)?为什么?


试读样章:
《Linux Unix设计思想》试读版.pdf (1.68 MB, 下载次数: 3819)
读完这些样章你有什么感想?

邀请嘉宾:
CU资深网友,图灵专家审读小组成员:无锋之刃
CU博客专家博客:GFree_Wind

活动奖品:

参与活动讨论,所发书评最佳的前5名网友获赠人邮图灵出版的《Linux/Unix设计思想》图书一本
《Linux/Unix设计思想》

原书名:Linux and the Unix Philosophy
出版社:人民邮电出版社
ISBN:9787115266927
上架时间:2012-3-20
出版日期:2012 年4月
开本:16开


作者: tempname2    时间: 2012-03-28 15:03
本帖最后由 tempname2 于 2012-03-29 20:12 编辑

从使用上来说:
以完全相信用户为荣,比如cp时不会检查是否会覆盖目标,总让我想起那些以不懂C++为荣的底层程序员。我不明白为什么对哲学和文化要如此执着。就像不做静态类型检查的语言一样,像我这样大手大脚动不动打错字的,是不是非常不适合用Python之类的语言?以后会不会常常在数千行代码里去找哪个函数名拼错了?用GUI时,当有个“格式所有分区”的按钮在眼前时,如果按下后不确认就执行了,你会不会觉得这很SB?还有不少人在尝试写了带回收站功能的rm,当然,可能是他们还没掌握UNIX的精髓,但rm确实有-i选项了。

Linus也用桌面,Kernighan也说过想要更responsive环境时会用Windows。对用户而言,Windows显然易于使用。Unix/Linux也可以做成跟Windows一样易用,但这跟Unix传统哲学有毛的关系?Linux在嵌入式与服务器端大放异采,这跟Unix传统哲学,做一件事并且做好、KISS,有多深的关系?

所以,只有程序员才喜欢用Unix,因为它工作的方式跟程序员工作时的思考方式类似。VI与EMACS的流行也是如此。各种小工具的存在,让程序员能灵活创造各种可能;与此类似,我去网吧第一件事就是安装Python---这个十几M的小程序完成多少事!又如FTP与HTTP,用脚本把ftp上的一堆文件下载下来容易,走HTTP的话,还要你解析网页内容提取链接。我很想再说一次,只有程序员才喜欢Unix。

从实现上来说:
隐约感到,Unix最初成功的原因是小巧。或许是当时操作系统理论还不完善,编程理论也不发达,大部操作系统又被委以重任要满足巨复杂的需求,实现出来当然困难重重。而Unix最初做出来就是为了玩游戏,也有一说是为了实现一个文件系统,复杂度刚好在掌握之内。看了Unix的初期代码才能理解用汇编写操作系统的可能--几乎看着C语言就可以想像出对应汇编语言的大体形状;现在看Linux当然不会有这样的感受。至于从操作系统的精妙程度上来讲,内存管理,进程调度,都没有闪光之处;文件系统以及基于文件的驱动程序模型或许值得一提。代码间用的技巧就不计其数了,但大多跟操作系统没有关系。由于不知道Unix之前的操作系统是个什么样,可能很多今天以为理所当然的事在当时都是一种创新。Unix之后也湧起一批操作系统,也不知为何没能长久,这其中或许有几分原因能从设计上的哲学来解释。但是归根到底,操作系统有用就会存活下来。Unix的很多功能及理念,都是为了让程序员工作得心应手,至少还有一批拥泵;Windows最肤浅的理念是让想用电脑的人操作顺手,自然有一大批用户。如果只看Linux和Unix的桌面表现,谁会去在乎它的哲学?而在专业领域上的成功,恐怕又与哲学,文化没什么关系了。
作者: ww2000e    时间: 2012-03-28 15:27
这本书第十章,和windows深入比较, 想看看...
作者: 瀚海书香    时间: 2012-03-28 15:44
回复 1# send_linux
因为年少时对操作系统的开发的向往,而恰恰linux是开源的操作系统,所以我选择了linux

   
作者: send_linux    时间: 2012-03-28 15:54
tempname2 发表于 2012-03-28 15:03
这个好,占位。

我真的不是马甲,这种活动可不可以给个机会。。。。。




光站位不行哦,嘿嘿
作者: asuka2001    时间: 2012-03-28 16:59
太可恨了...这样的好书来勾引人啊

书单已经够长了,消化不了了......再这么加下去没机会看看小说啊啥的了,郁闷

“你为什么喜欢Unix? “
简单点说就是Unix是学习收敛的,不像某些操作系统,数千个API...坑爹哦,写应用程序会杯具到什么样啊....还是算了吧.
俺觉得这句话不错: 困难的路越走越容易,容易的路越走越困难!所以即使某操作系统看起来很简单,我还是选看起来困难的路吧!


你会身体力行unix/linux哲学中的哪些?为什么?
以前写应用层程序,体会编程的精髓其实和Unix的哲学很近似;所以要我说那就是
1. KISS
2. DRY
3. 提供机制而非策略
4. 依赖抽象而非实现
5. 一次只做一件事
为什么?这个实在不知道怎么回答!我想不出为什么不这么做......只能说本能上认为这样做才对吧!


作者: send_linux    时间: 2012-03-28 17:25
asuka2001 发表于 2012-03-28 16:59
太可恨了...这样的好书来勾引人啊

书单已经够长了,消化不了了......再这么加下去没机会看看小说啊啥的了 ...




这本书和以前的那本Unix编程艺术是不是差不多啊?
作者: asuka2001    时间: 2012-03-28 17:33
条条道路通罗马...大道至简,基本上都是一回事,哎!
作者: asuka2001    时间: 2012-03-28 19:45
本帖最后由 asuka2001 于 2012-03-28 20:03 编辑

只要上升到哲学,大道之类的高度,大家都会觉得说的有道理,实际用起来还是一头雾水!我也没法说清楚,只能简单的说下个人体会!

1. 提供机制和依赖抽象是一体两面:模块本身提供的是策略,使用者就谈不上依赖抽象!

提供机制的好处在于,除了数量有限,预定义好的正交性接口(机制),模块与其他部分没有耦合;而机制本身的正交性可以最大限度的满足需求!模块此时是内敛的,这也是Unix系统为什么能保证稳定的API的缘故!和某个操作系统那疯狂膨胀的API成鲜明的对比

依赖抽象的好处大家都明白,然而如果不是因为你依赖的模块提供了机制,你如何能够使用抽象来满足你千变万化的需求?当你不得不寻求实现来解决你的需求时,必然存在你所依赖的模块没有提炼出来的机制!



2. 逻辑分层的重要性---只做一件事

从我们的实际需求到最终实现之间,存在太高的落差,想一步而就是不可能的。希望降低复杂度,化繁为简,那就轮到逻辑分层出现了。在某个逻辑层次上,我们将不在关注底层的实现,而是信任底层提供的机制可以满足我们的需求。

只做一件事的精髓就在于在同一逻辑层上,他只完成单一功能。如果举个不太恰当的比喻,那就是他只对更上层逻辑层次提供机制。正因为所处的逻辑层次更高,可能这里所提到的机制将更加靠近最终的需求,也就包含更多的策略(使用更底层逻辑层次提供的机制)。但是在他所处的逻辑层次而言,他仍然是只做了一件事,仍然是提供的机制!

3. DRY---它在向你告警

每当看到重复的代码时,我就会抓狂,当将重复的代码提炼出来,将某些代码差异排除出去时,就完成了一次提炼机制,排除策略的过程。

只是需要注意,似是而非的重复,两段代码可能会偶然的有些相似,但是其实他们之间不存在共性,这个时候希望实现代码的复用,会给你自己带来麻烦!

当有的时候为了代码复用,而造成代码可读性降低和引入复杂性时,你就需要注意考虑这是不是似是而非的重复了,不要一味的消灭代码重复而完全不顾忌其他!


4. KISS --- 不要做不需要做的事

我们的最终目的请牢记,是为了满足最终需求。当你陷入到实现细节中,不断的扩充自己的代码规模时,请时刻停下来想一想这是不是你所需要的。常见的问题在于为了可能并不是关键性的需求而为了性能,为了扩展性花费极大的工夫!

盲目的实现很可能达不到你预期的目的,想一杆子买卖做出一个完美的程序是不现实的。更明智的做法是在保证自己的实现满足最基础的原则的前提下,尽量简单!简单的程序容易理解,容易扩充,也节省你的工作量!



5. 请学会折中---程序员最重要的素质

在我看来,折中才是程序员最该具有的素质;任何的规则都是用来打破的,只要你能全面的衡量利弊!所以请自己做好取舍吧!世间没有万能药,也不存在放之四海而皆准的原则,原则只是做大方向上的指导,衡量它所带来的好处与弊端,才是你最需要具备的能力!
作者: wsp0108    时间: 2012-03-28 20:10
1.2000年刚读大一的时候同时真正学习用电脑,偶尔的机会认识linux,狂热的爱上linux(当时试着装redhat7.3并用他),后来因为很多功能不能满足间断了一些日子。喜欢她:开放与无私的团队及linux上优秀的产品
2.不能讲出linux的哲学,只有说不出的意识,反正喜欢就是。

作者: fire_cpp    时间: 2012-03-28 21:59
其实linux/unix能长时间保持占有率,有一个很重要的原因是转换成本——如此大量的软件、系统都是架构在原有体系之上的,想设计一个新体系取代它几乎是不可能的,所能做到的只有向下兼容、渐进发展。
这样的进化机制决定了linux/unix的结构一定不会差,但不一定就是最优秀的(也可能是最优秀的)。
当然了,unix对IT界的贡献实在没法用数字、短小的文字衡量,我只能说对其崇拜如黄河泛滥、一发不可收拾。
作者: litangttd    时间: 2012-03-28 22:08
下来看看到底怎么样?
作者: MagicBoy2010    时间: 2012-03-28 23:46
最近貌似流行哲学,先下来看看再说。。。
作者: 沿河歌唱    时间: 2012-03-29 00:59
我一直都喜欢类似轻松风格但又提纲挈领的书,
<Unix编程艺术>我这里收藏了两个版本,
刚开始读样章就觉这就是我的菜,一定要拥有.
里面写的东西是你我胸中有,下笔纸上无的东西.
有一种相见恨晚的感觉,不得不佩服原作者的表达能力.

我接触到的unix.有Solaris和FreeBSD, Linux主要就是Redhat.
石油行业中Sun小型机微型机很常见.
因为几年之前很多勘探资料处理软件只有Solaris版本,
而Sun+Solaris仅仅是为了使用这些软件而购买的平台.
目前,很多Sun的机器也都装上了RHEL.Readhat上的专业软件也越来愈多.
很多原本只能在Solaris上运行的软件纷纷移植到了Linux平台上,不由得感叹Sun的衰落.

最近一年来我们公司一直在参与一个项目,
要把公司的windows下的程序都迁移到linux环境下.
其中的艰辛不言而喻.当初写这个程序之时,正是九十年代,
那时国内电脑本来就少见,并且都是windows一统天下.
由于时代的局限性,当初写代码的时候完全没有考虑到可移植性.
就拿一个简单的例子来说,程序里充斥着MFC下最常用的CString.
为此,我们用标准C++实现了MFC的CString的一个兼容版本DString.
相当于加了一个中间层来实现可移植性.
如果现在重新写的新程序的话,肯定会把可移植性放在首位,
目前公司的规定就是首选用标准c/c++来实现,
其次考虑boost等准标准库.最后再考虑Qt等跨平台库.

我们重写后的程序和Linux的思想不谋而合:
用大量小程序通过脚本来连接,来完成一个大任务.
各个小程序之间是通过文件作为数据的管道来传输.
当数据文件从最后一个处理程序传递出来,任务也就完成了.

中间遇到的的最大麻烦,
是Windows与Linux之间一些很微妙的区别.
比如说Linux和Windows都有所谓的命令行脚本
(在linux下叫做Shell脚本,在Windows下是dat批处理)
其中有很多类似的命令,比如说cd,rm,等等,
正是这些微妙差别之处,浪费了我们大量的调试时间.
为了解决这个问题,我们写了一个脚本生成器,定义了一个新的脚本语言
然后在不同的平台下,生成对应平台的脚本.

为了能最大程度上保证程序在windows和Linux下的一致性,
所有的核心程序都是命令行界面(CUI)而非图形界面(GUI),以标准C/C++写成
在可执行文件内部标志一个字符串,然后用Qt写一个解析程序,
能自动解析可执行程序文件里面包含的标记字符串,生成对应的输入对话框.
这样核心功能由CUI程序完成,CUI程序又被GUI程序包装起来.方便用户的交互操作.
正应合每个程序只完成一个任务.把界面交互交给一个单独的任务来完成的思路.

之所以觉得此书相见恨晚,
这几天我正打算在去读博士之前的半年时间,把我之前写的程序重构一遍,
就我自己而言,心中那种构建高大全程序的冲动一直在心中翻覆.
现在下手重写的时候,我用到了模板库,多线程,智能指针,Boost库.各种新的技术无所不用其极.
看了此书,条条建议对我都是淳淳教诲.是我该重新审视的时候了.
或许对我来说,迅速搭建一个可运行的原型才是正途.或者说简单就是美好.
至于性能和先进性,此后再慢慢优化.
作者: Reallsc    时间: 2012-03-29 08:59
“L'i'n'ux is not Unix”这句话经典,和GNU is NOT Unix有异曲同工之妙啊。
作者: 流氓无产者    时间: 2012-03-29 09:03
给了大家一个深入底层的机会,把怎么用,变成怎么去玩
作者: leiing    时间: 2012-03-29 09:54
看了样章,很是喜欢这本书。
就是喜欢linux的开放性。
作者: waker    时间: 2012-03-29 11:11
因为ITer想享受一下装逼较圆的感觉
作者: hqlgree2    时间: 2012-03-29 11:18
仅围观
作者: jlhlove333    时间: 2012-03-29 11:39
:wink::wink::wink:哲学   神马东东
作者: chinaandcompute    时间: 2012-03-29 12:27
使用linux的一大好处是,有了开源的代码,可以把一些思想、框架或者说算法,数据结构,引入到工作中,是业务代码简单。类比解决一些新问题。这是我最大的收获!
作者: 无锋之刃    时间: 2012-03-29 13:10
Linux/Unix设计思想:一场盛大的SimNature游戏

对于喜思好静的智力型玩家而言,模拟类游戏一直都是上佳娱乐选择。Simcity、The Sims等等不可胜数的提供“再活一次”机会的游戏,让好奇心盛却寿命有限的人类能够多体验几次不同的人生,实在是妙不可言。在那些纯粹模拟出来的世界里,各种思想、行为、交互、反馈可以齐头并进,盘根错节地交织、发展、竞争、演进,构筑出分外瑰丽壮美的图景,让玩家们喜不自禁,乐在其中。如果想寻求宇宙和自然运作规律与天人之间和谐共生的真理,亲手构筑或亲身参与一个SimNature世界,将会是一场非常有趣的游戏。  

《Linux/Unix设计思想》恰好为这样一个SimNature世界提供了足够多的背景、素材与灵感,只不过将个体换成了软件,摸索探求如何让软件在其“浩瀚无边、互联互动的软件网络”中更自然、更长久地生存。通过阅读这本书,读者可以掀开汽车前盖,一窥引擎里的秘密与原理,进而更好地驾驭、甚至构建性如烈马的各类优秀软件。  

现在,让我们愉快地畅想一下,如果程序员是上帝,那他们将如何制定方针和策略,玩这一场SimNature的游戏,并让自己设计实现的软件最终胜出?  
作者: send_linux    时间: 2012-03-29 14:27
无锋之刃 发表于 2012-03-29 13:10
Linux/Unix设计思想:一场盛大的SimNature游戏

对于喜思好静的智力型玩家而言,模拟类游戏一直都是上佳娱 ...

谢谢支持:)
作者: OwnWaterloo    时间: 2012-03-29 16:14
看目录还以为是《The Art of Unix Programming》呢
这书从unix编程艺术中借鉴了多少? 有自己的新的理解么?

作者: send_linux    时间: 2012-03-29 16:36
OwnWaterloo 发表于 2012-03-29 16:14
看目录还以为是《The Art of Unix Programming》呢
这书从unix编程艺术中借鉴了多少? 有自己的新的 ...


应该有的吧,老外写书难道也是到处抄么?
作者: OwnWaterloo    时间: 2012-03-29 17:00
回复 25# send_linux

很尴尬的好吗……   提供试读的章节都有很强的既视感……

而感觉有新意的章节,比如第6章:
1. CUI是指什么? Complex (graphics) User Interface? 还是 Command User Interface? 后者不一般都叫CLI(Command Line Interface)么……
2. 作者到底是想表达什么?  交互式命令行界面是有害的? 还是所有命令行界面都是有害的?
却又完全不给看啊……

作者: CLAYPAN    时间: 2012-03-29 19:31
thank you very much
作者: fangtong2008    时间: 2012-03-29 19:32
下载了  有时间看看
作者: GFree_Wind    时间: 2012-03-29 22:14
先聊聊我怎么爱上Linux的吧。

首先必须鄙视一下中国大学的计算机教育!
我毕业的院校也是国内知名的学府,虽然我的专业是电子工程,而不是计算机。但是在本科教育的过程中,居然没有接触过任何Linux的东西,老师也没有任何提及。
编译器最早居然选用的TC,后来变为了VC6,搞得我当时把C++和VC混为一谈。

大学的学习要靠自己。在大二那年我知道了Linux,也随着潮流装了双系统。当时安装的是Redhat。
安装过程,稀里糊涂。。。
等进入Redhat的界面后,第一反应是“我的电脑”在哪?C盘在哪?
然后,就是想如何安装游戏呢?
于是这个短命的Redhat大概只在我的电脑上停留了不到一个星期。。。
顺便鄙视一下自己!荒废了大好的时光!

研究生阶段,开始真正跨入软件这个领域,但是开发环境还是Windows。
直到毕业后,开始真正的工作,才以一个白丁的身份学习Linux。
刚开始很不适应Linux的命令行,觉得远不如Windows方便易用。

随着对Linux的熟悉,各种命令即脚本也在我的指下,爆发了强大的能量,其方便,快捷远远超过windows的图形界面!
而我也真正的深深的爱上了Linux,因为它的开发,兼容!
开发的Linux可以告诉我,操作系统是如何运行,TCP/IP协议栈是如何将整个儿世界连接在一起。

在Linux的环境下,作为一个程序员,有一种掌控世界的感觉,而不是某操作系统下的木偶。
我知道Linux在做什么,能做什么。



作者: GFree_Wind    时间: 2012-03-29 22:26
喜欢Linux的文件系统,通过VFS,提供给用户一个统一的接口!
喜欢Linux的管道,将一个个简单的命令,形成1+1 》2的强大功能!

书中的Unix哲学,很多仍然适用于现在的软件设计和代码设计。下面是我最喜欢的几条原则
1. 让每一个程序只做好一件事情:增加内聚,降低耦合
2. 尽早建立原型:通过原型可以快速的审视自己的设计,避免在开发阶段中后期才发现设计问题
3. 让每一个程序都成为过滤器:关于这一条。也许是因为我的认识不深。我总有一种只可意会不可言传的感觉。
4. 层次化思考:必须的!
作者: GFree_Wind    时间: 2012-03-29 22:29
 传递给函数调用的参数数量过多,导致代码超出了屏幕的宽度。
——我见过参数多达十几个的函数。噩梦!

 子程序代码的长度超过了整个屏幕或是一张A4纸的长度。注意,使用较小的字体且在窗口较大的工作站显示器上,你可以有空间扩展一下代码量。只是请不要得意忘形。
——今天看到一行代码。居然让我21寸的显示器无法完全显示。

 要靠阅读代码注释,你才能记住子程序到底在做些什么。
——优秀的代码不需要注释,而是自说明的。

作者: asuka2001    时间: 2012-03-29 23:32
回复 30# GFree_Wind

一点个人愚见:管道就我个人理解,应该是以数据为中心,从最初输入到最终输出,不断的在其上通过各种单一功能的程序(它们提供机制,它们只做一件事情,由我们用户提供策略)进行数据加工,不断的靠近最终需求的过程。

可以说这个完全符合软件编程的模块化思想与机制策略分离等一系列原则。而且更加进一步,因为程序与程序之间的耦合是0!

唯一的缺点在于我们的需求空间太过广阔,完全的串行数据处理能力可能无法完成某些特殊的需求,复杂的策略也很难作用于管道之上,不然我们所有的复杂,专用的程序都可以抛弃了:(

作者: zfdream101    时间: 2012-03-29 23:41
虽然用linux时间少,但是我认为linux最大的好处是极大的提高了用电脑的效率
作者: 塑料袋    时间: 2012-03-30 00:29
OwnWaterloo 发表于 2012-03-29 17:00
回复 25# send_linux

很尴尬的好吗……   提供试读的章节都有很强的既视感……


unix/linux啊?

话说你也来这贴了?那咱俩在这对喷吧!

我想体验下动画片上的那些PK的感觉,说某反派可以张开一个意识领域,你进入了这个领域,至少对这个时间与空间的你来说,那个反派就是不可战胜。
作者: 瀚海书香    时间: 2012-03-30 08:22
回复 1# send_linux
有些时候会把linux比为女人
如果说windows是大家闺秀,那linux就是小家碧玉。
windows是那些让大部分男人都会心动的浓妆气质美女,但是要想拥有这样的女人,没有money是不行的;linux就是那淡抹野蛮女友,不需要太多的money,但想拥有她,不付出努力是不行的。

   
作者: cjdao    时间: 2012-03-30 08:40
你为什么喜欢Unix?
好吧,我承认在接触linux之前并不知道什么是unix,我也承认开始接触linux只是觉得能在终端下输几个别人看不懂的命令是件很酷的事。参加工作后,开始接触嵌入式,linux虽然并不是强实时操作系统,却在嵌入式领域应用如此之广泛。而linux开源共享的精神,简洁的系统调用接口,超强的可移植性和可伸缩性,也就是让我不由自主的拜倒在她的石榴裙之下了。"linux is not unix",但是她们血脉相承,她们对于优秀的定义是一致的!所以当我们喜欢上了linux就没有理由不喜欢unix,而喜欢上了unix也就没有理由不喜欢linux。

你会身体力行unix/linux哲学中的哪些?为什么?
这个话题,可以从我新近在公司做过的项目说起,在设计之初,我们整个项目组在会议室捧着《UNIX编程艺术》,一条条的讨论书中的哲学信条,力图将其理解,然后尽己所能在编码规范与代码审核规范上体现其中的要义。也许开始理解过于浅薄,但当经过了几次痛苦的教训后,便发现书中所说的字字珠玑。
"简洁为王"这个几乎是unix哲学的一个概括,unix从不同的角度诠释了"简介为王"的这一观点。当然也在linux里体现得淋漓尽致。在看linux内核编码规范时,有一条规范,令人印象深刻:"Tabs are 8 characters, and thus indentations are also 8 characters...if you need
more than 3 levels of indentation, you're screwed anyway, and should fix
your program."(http://kerneltrap.org/files/Jeremy/CodingStyle.txt)。由此编码规范便可窥见linux对于"简洁为王"的追求。

在《UNIX编程艺术》中提到"一个程序只做一件事,并做好",在实际的项目中我们也遵守着这一观念,具体体现在对于每个函数的代码行数的限制上,当一个函数的实现代码行数超过某一限制,我们便需重新考虑此函数设计的合理性。

"机制策略分离"也是unix里的一个重要的观点,依据此观点,在实际的项目中我们在抽象函数接口时,我们强调提供机制而非策略;而对于较为常用的策略性的东西我们将其实现划分软件结构的策略层,这样就对软件层次结构进行了策略层与机制层层次的划分。而这样做的好处是,代码的可复用性与可扩展性增加了。

读完这些样章你有什么感想?
你不赞同书中提到的哪些unix/linux哲学(文化)?为什么?

哲学、思想这一类的都是比较抽象的东西,因此在读此类书籍的时候容易陷入言之无物而又不知所云的困境。但是哲学、思想这类东西却同时是又是对于现实的高度概括与总结,是做事的方法论,因此此类书籍可以帮助我们站在一个更高的高度去看待问题。《Linux/Unix设计思想》,我觉得它至少可以帮助我从编码以外的视觉去审视与反省作为一个程序员的自己。不过,虽然书中很少讨论技术细节上的东西,但是对于缺乏编码及设计经验的人来说,要理解其中的要义并加以应用还是有些难度的。
书中不赞成观点?我只能说书中的许多观点我还没有真正理解。另外关于机制与策略的,再说一点,强调提供机制的这种观点,会造成这样一种情况:使用者在使用时可以自己构建策略,但也不得不自己构建策略。在今天这个充斥着快餐文化的社会,除非兴趣所致或靠这个吃饭,否则真不怎么受人待见啊.
作者: GFree_Wind    时间: 2012-03-30 12:30
回复 32# asuka2001

一点个人愚见:管道就我个人理解,应该是以数据为中心,从最初输入到最终输出,不断的在其上通过各种单一功能的程序(它们提供机制,它们只做一件事情,由我们用户提供策略)进行数据加工,不断的靠近最终需求的过程。

可以说这个完全符合软件编程的模块化思想与机制策略分离等一系列原则。而且更加进一步,因为程序与程序之间的耦合是0!

唯一的缺点在于我们的需求空间太过广阔,完全的串行数据处理能力可能无法完成某些特殊的需求,复杂的策略也很难作用于管道之上,不然我们所有的复杂,专用的程序都可以抛弃了:(

================================
讲得很好。我认为管道还是只能被专业的用户应用。

因为应用管道的几个条件:
1. 输入和输出为普通文本;
2. 命令行
3. 需要理解管道

而对于普通用户来说,还是所见即所得的图形界面更方便
作者: OwnWaterloo    时间: 2012-03-30 16:14
回复 34# 塑料袋

哟,原来这是内核板块?
我是在C/C++板块的置顶里看到这个活动的而已……

这书不是讲内核的啊……  是讲一些设计哲学的啊…… 我都觉得很虚幻很飘渺, 大湿难道看得上眼?


话说大湿最近研究数学?这东西不违背你的什么什么主义么?
比如你提到那个,我忘记术语叫啥了…… monoid? 就是乘法与1,或者加法与0的那个。
你说这样的概念,能对编程起到什么帮助呢? 对包二奶我更是想不出会有什么帮助啊……

作者: 无锋之刃    时间: 2012-03-30 16:50
asuka2001 发表于 2012-03-29 23:32
回复 30# GFree_Wind

一点个人愚见:管道就我个人理解,应该是以数据为中心,从最初输入到最终输出,不 ...


个人理解:管道才是机制,管道上的各种程序是策略。
实例:grep/sed/awk/perl,四者都可以在管道中实现数据过滤、抽取、变换,但侧重点有所不同,配合不同参数的混用可以提供异常丰富的微型解决方案。
有些经典的管道线写法已经成了惯用技巧。

数据才是正经事,程序不过是描述数据变化规则和状态的手段。UNIX/Linux的设计哲学正视了这一点。

作者: 无锋之刃    时间: 2012-03-30 17:05
cjdao 发表于 2012-03-30 08:40
你为什么喜欢Unix?
好吧,我承认在接触linux之前并不知道什么是unix,我也承认开始接触linux只是觉得能在终 ...


《UNIX编程艺术》值得每年复读个几章。
Linux有些实践思想跟UNIX还是有点不一样。
作者: 无锋之刃    时间: 2012-03-30 17:15
GFree_Wind 发表于 2012-03-30 12:30
回复 32# asuka2001

一点个人愚见:管道就我个人理解,应该是以数据为中心,从最初输入到最终输出,不断 ...


>讲得很好。我认为管道还是只能被专业的用户应用。

>因为应用管道的几个条件:
>1. 输入和输出为普通文本;
>2. 命令行
>3. 需要理解管道

>而对于普通用户来说,还是所见即所得的图形界面更方便

普通用户也可以使用管道线,只要加以适当训练即可。
管道线比较符合人脑思维过程,逐步求精的过程被管道符强化和显现了。

考虑一下遥控器和Windows桌面,哪个更便于跟电话另一头的人解释其用法?
作者: 塑料袋    时间: 2012-03-30 17:30
本帖最后由 塑料袋 于 2012-03-30 17:35 编辑
OwnWaterloo 发表于 2012-03-30 16:14
回复 34# 塑料袋
乘法与1,或者加法与0的那个。


0与1,加法与乘法,是近世代数的基础。

0与1,可以是数,可以是向量,可以是对向量的变换;
加与乘,可以是对数的运算,可是是对向量的运算,可以是对变换的运算。

数的0与1,对加与乘做递归,可得全部有理数。
向量0与向量加法,可得线性无关,秩等概念;向量0与向量点乘,可得正交的概念。
变换1与变换乘法,可得逆变换,逆矩阵等概念。

另外,环,域,群....都是从0和1,加和乘得来的。这些东西全部都将你一直鼓吹的闭包,对运算的运算,对变换的变换,递归.....体现得淋漓尽致。

所以我B4你们这些鼓吹lisp,haskhell的,这些语言之所以有吹嘘的资本,无非是离近世代数比较近,反映一些代数思想。但是玩这些语言的人,大部分都是叶公好龙,买椟还珠,丢掉了本质。




作者: OwnWaterloo    时间: 2012-03-30 17:34
回复 42# 塑料袋

于是这些东西你用到生产实践当中去了? 你的那些什么什么理论呢?

作者: 塑料袋    时间: 2012-03-30 17:38
OwnWaterloo 发表于 2012-03-30 17:34
回复 42# 塑料袋

于是这些东西你用到生产实践当中去了? 你的那些什么什么理论呢?


卧槽,jia luo hua qun,a bei er qun,这些都是屏蔽字了?????!!!!!

我现在水平不够,还不能将这些代数的东西运用到实践,吃饭还是靠linux。

但是我路子对,上来就抛开了那些无关痛痒的这个那个语言,直奔G点就去了。
作者: asuka2001    时间: 2012-03-30 17:43
本帖最后由 asuka2001 于 2012-03-30 17:55 编辑

回复 39# 无锋之刃

管道是机制,它提供的功能就是串行数据流动

单个的程序其实也是机制,它们提供的可不是仅仅针对你的一个任务!比如grep,它提供的是过滤器的机制!只有当用户加上策略时,过滤器开始发挥它的作用!


更进一步的说: 机制和策略的区分可不是绝对化的,没有需求和实现做背景参照,我们谈论机制,策略没有太多意义.

我在前面的发言中,提到了逻辑分层.提到了越靠近需求,那么机制中混合的策略越多(这里的策略指的是怎么样使用下层逻辑层次的机制)

但是混合有针对下层逻辑层次的策略,还叫机制吗?我认为是!理由是在它所处的逻辑层次上,它是只做了一件事;在它面向的需求空间上,它是正交切分需求空间的,因此它是机制!


因此可以看到,管道它面向的需求空间是数据通道,因此它不加任何假设的让输出数据流入下一级的输入中.这是它提供的机制!但是它离我们的需求显然很遥远...我们需要加入策略,对数据进行加工

单个的程序是机制,因为它们面向用户的需求时,它们只做了1件事,它们无法直接完成用户的需求,需要我们去输入策略.但是如果就管道而言,它们是策略,它们利用管道,并在管道传输过来的数据中,进行策略处理....不然数据只流动,就没有任何意义!




   
作者: OwnWaterloo    时间: 2012-03-30 17:53
回复 44# 塑料袋

假设以后你水平够了,又打算如何投入到实践中? 卖论文么?

作者: 塑料袋    时间: 2012-03-30 17:58
OwnWaterloo 发表于 2012-03-30 17:53
回复 44# 塑料袋

假设以后你水平够了,又打算如何投入到实践中? 卖论文么?


我比较急功近利,只看眼前。

管那些赚钱的具体手段干什么,机会给且仅给有准备的人,眼前的首要问题是自己的水平,而不是具体忽悠钱的方法。
作者: OwnWaterloo    时间: 2012-03-30 18:00
回复 47# 塑料袋

急功近利、只看眼前、从生产实践出发与你的行为完全对不上啊大湿……
作者: 塑料袋    时间: 2012-03-30 18:02
OwnWaterloo 发表于 2012-03-30 18:00
回复 47# 塑料袋

急功近利、只看眼前、从生产实践出发与你的行为完全对不上啊大湿……


咋对不上了???
作者: 无锋之刃    时间: 2012-03-30 18:14
asuka2001 发表于 2012-03-30 17:43
回复 39# 无锋之刃

管道是机制,它提供的功能就是串行数据流动


没错。我的描述仅针对人机交互界面而言,也即使用Shell指导Core完成一系列任务时,管道为机制,程序为策略(这是大部分人使用UNIX/Linux的主要目的吧?)。
至于应用在管道内的程序本身,或多或少基于过滤器模式实现,当然也是机制的一部分,或者说是同一机制的两个不同部分:管道实现数据流,程序实现数据变换。
从这个层面来看,管道化机制更显眼,程序内的过滤器则经常隐而不见。

管道有点类似协议栈又有所不同。协议栈中的每一层对上是机制,对下是策略。比如驱动协议栈,再比如网络协议栈。

另外,仅仅实现数据流动并不是没有用的。考虑一下tee实用程序,它实现了数据流动而不加以变换的功能,也相当有用。
作者: asuka2001    时间: 2012-03-30 19:37
回复 50# 无锋之刃

另外,仅仅实现数据流动并不是没有用的。考虑一下tee实用程序,它实现了数据流动而不加以变换的功能,也相当有用。

=====================================================================

恩,感谢指正。

我想表达的意思是:管道本身不包含策略,距离用户的需求太过遥远,仅靠管道是无法满足用户的。

正因为机制距离需求过于遥远,我们才需要引入中间的逻辑层,它们对下提供策略,对上提供机制,不断的逼近需求,最终达到满足用户需求的目的!

反观专用软件,可以说整个策略全部包含一身。所以我才会说管道走得更远,但是世上没有万灵药,它也有自己的不足,不然也许世界只剩管道和小组件了,世界大同了,程序员就解放了;我们都共产拉,社会就河蟹拉:)
作者: 2gua    时间: 2012-03-30 20:42
无锋之刃 发表于 2012-03-30 17:15
>讲得很好。我认为管道还是只能被专业的用户应用。

>因为应用管道的几个条件:


专家好...
作者: 无锋之刃    时间: 2012-03-30 23:44
asuka2001 发表于 2012-03-30 19:37
回复 50# 无锋之刃

另外,仅仅实现数据流动并不是没有用的。考虑一下tee实用程序,它实现了数据流动而不 ...


确实如此。还可以有另一种理解:管道是每一个应用的可复用底层逻辑。只不过是牺牲了某些能力以求得如此灵活的能力。
专有软件极难应付变化,正是因为它们从结构上就与需求绑死了,需求变而结构跟不上变化,自然会让维护成本大幅提升。
作者: UnixKiller_Ama    时间: 2012-03-31 21:47
鄙人愚见:我认为说Linux/Unix米酒长青,设计思想独特,就如同我们谈三个戴表是如何先进一般。调子先定好了,然后大家来吹喇叭。其实换我来设计,那肯定就跟现在不一样了,一旦被N多人使用,那么表就戴起来了
鄙人再愚见:我认为Unix的内核设计思想在当初就非常短视,举个例子,它人为地将进程分割成两种状态,即内核态和用户态。其实进程本来不应该是这个样子的,就如同一个完整的人,Unix先天地将同一个人的行为割裂为天才和白痴,而事实上一个个体它的行为应该是和谐一致的,有人可能会说,那你如何保证系统安全性,很简单,一个人如果不是神经病,那么是不会直接把自己家里的兰博基尼给砸了的,所以进程的保护与安全性应该来自自身,而不是它的监控人。那么怎么设计呢,系统需要对资源进行安全级划分,就如同现实中对中南海和大东海的保护级别不一样而已,而系统需要保护的资源很容易被figure out出来,如此进程将无所谓用户态和内核态,它只有一个pass key,就比如一个普通百姓,他可能进入中南海吗?但是他进入大东海肯定是木问题的。从这个角度,无论对调度,内存管理以及进程管理,中断处理,文件系统,设备驱动程序架构等都会产生颠覆性的变革。
作者: socay2    时间: 2012-03-31 22:47
表示自己认识不够深刻、、目前开发仍在虚拟机中进行
打算尝试着研究下Linux内核,不知高手们有何指教?
作者: pandaiam    时间: 2012-04-01 17:14
esr的 unix编程艺术 写的很好.
很能让人入教...
作者: niao5929    时间: 2012-04-01 19:53
因为LINUX的代码开源,所以我们的计算机就像运行在一个透明盒子中,这样我们的代码就自然的具有了一种可追述性,如果看过《奇点临近》这本书,我们可以知道未来的计算机运算能了以及计算机智力都将超乎寻常的强大,那么如果封闭的代码在可追述性上是无法和开源软件相比,那样的话代码的问题可能会给人类带来无法想象的后果,但是开源的代码就可以很好的让代码管理更有效。开源代码可以让我们的计算机软件技术从更高的起点得到发展,不会出现那种不断重新发明轮子的问题。linux系统因为自身的开放性避免了那种像JAVA的未来发展不确定性的问题,因为商业公司无法最终决定LINUX的命运,他们可以成为一个LINUX的分支,但决不会成为LINUX的主宰,因为LINUX作为自由软件,其本身有着一条自身的发展和成长曲线,商业公司可以让其更壮大,但不可能让其死亡,可是作为一个公司私有财产的很多私有闭源软件,因为商业公司处于利益的考虑,这些软件很可能被商业公司处死,这对于未来那种依托更高级计算机的下端用户应用来说是可怕的,比如,我们现在所说的云计算,其核心就是某种资源的一种集合,这种架构本身没有摆脱服务器/客户端模式,它也只是巨型机泛化的模式,如果商业公司最终没有足够的利润,那么他们就有可能抛弃这种模式。那么对于下端用户损失就太惨重了。可是自由和开源软件的生死最终是由真正的用户需求所决定的,世界上只要有一个用户,那么LINUX系统就依然存在,因为系统本身所有的内在和外在都是用户可以掌握的,用户自己就可以继续对系统进行进化改造。可是闭源软件的用户就不能让软件本身进行进化,如果商业公司放弃了软件,用户只有感叹和无奈了!!!这也就是我为什么喜欢LINUX以及自由和开源软件的原因
作者: zhaoshuaijiang    时间: 2012-04-02 09:27
《UNIX 编程艺术》里面倒是有不少哲理
作者: gvim    时间: 2012-04-03 12:38
个人觉得Unix这种工程化的东西目前还无法上升到哲学的高度,仅是一些工程经验叠加的社区准则。很多东西各有优缺点吧,比如我就觉得GUI,IDE等等真不错。
作者: to407    时间: 2012-04-04 00:37
回复 1# send_linux


    翻了下回帖,发现更多人喜欢把UNIX/LINUX两者一起提,我倒是想说说我的理解,特别是两者的区别。

对于UNIX来说,很经典的一句话"power cloaked in simplicity" 已经流传了好多年,而且我们欣赏UNIX的哲学,大多读过那本经典的<UNIX编程艺术>。我也不多置喙,UNIX能够保持到如今仍然长盛不衰,很大程度上就是他简单的设计哲学所导致的。现在仍然活跃的商业UNIX如IBM-AIX,HP-UX,Solaris ~在大量企业级应用中的良好表现,我们必须承认。

至于Linux,或者说GNU/Linux,从名字上来讲"GNU's Not Unix", "Linux is not unix", 都纷纷撇清自己和UNIX的关系,而我们却常常自作多情地把UNIX/Linux或者说 类*NIX系统放一起来讲,实在是有点强人所难。
我的理解上,Linux倒不是一个完全新的系统,他借鉴于Minix(意思是"Mini Unix"),而Minux也是一个类UNIX的系统。
Linux真正和UNIX的分歧,在于开发方式,当Linux接受了GPL分发协议时候,社区开发者纷至沓来。而此时庞大的UNIX做的事,大概就是我们一直听到故事里龟兔赛跑的"兔子"做的角色。似乎很自然又无可奈何地培养出来Windows和Linux两大对手。

《大教堂與市集》(The Cathedral and the Bazaar)
这本书应该被提到(而且就在这本书中也确实提到了~~) 。我觉得这本书讲到的便是关于UNIX和LINUX的重要论争,我们究竟应该往什么地方走,我们到底需要什么样的程序员,以什么样方式来工作,做出来什么样的操作系统?
显然为了顾及颜面,还有考虑读者需要,作者没有放大UNIX和LINUX两大阵营的区别,而含糊地表达了"UNIX/LINUX"设计思想。 我认为是有失偏颇的,尽管Linux社区很大程度上是以UNIX的原则方向来开发,并且对UNIX的原则表示了尊重。 但区别不止是"GNU/Linux"名字上对于UNIX的"出言不逊",更明显的,Linux代码属于GPL协议,而UNIX阵营除了商业UNIX外,其他多选择了BSD协议,这也是一个相当大的区别。

导致今天这个混乱的局面,一个很重要的原因,是延续很久的UNIX商标权争夺战和在此之前的封闭UNIX阶段。我们今天已经没有多少力气去苛责他们,但如果这些事能够更快更早更好的解决,那么UNIX也不至于在桌面系统上培养出WINDOWS这么重要的对手,而在低端服务器市场被LINUX抢走了很多份额。 但事实就是这样子残酷,而且最终用户受益了,他们可以有了更多更廉价(对于UNIX来讲,Windows的桌面系统也是很便宜的)的选择。haha~

“UNIX不开放,而Linux开放”,导致了现在在个人用户和初学者面前,Linux成了更适合的入门选择,更值得被夸奖。
但我们应该注意到Unix本身也在巨大的变革中,比如带给大家靓丽桌面的苹果Mac OS,也是基于UNIX的实现,说明UNIX做好了用户体验也不差。而在开放方面,包括大量的BSD衍生发行版,Minix3都选择了BSD,而Solaris停止了开放,仍然有Illumos和OpenIndiana继续发布,希望UNIX的未来会更加美好。

虽然我认同Linux的开放方式,但我认为必须是承认UNIX的大量优点和原则,Linux的分布开发方式才更加有价值。 有一个不太现实的愿望,也许等开放的UNIX们更加强大之后,人们会单独给<UNIX编程艺术>写第二版,而不是把UNIX/Linux并称,那样也算是对UNIX贡献的一种尊重和肯定吧。

从拒绝开放到拥抱开放,UNIX会跟上时代的吧。
作者: Silverxp    时间: 2012-04-04 13:31
非常赞同楼上的一句话,困难的路会越走越容易,容易的路会越走越困难,对Linux不是很熟悉,但是正在努力学习!!)
作者: wang290    时间: 2012-04-04 20:07
Silverxp 发表于 2012-04-04 13:31
非常赞同楼上的一句话,困难的路会越走越容易,容易的路会越走越困难,对Linux不是很熟悉,但是正在努力学习 ...


还停留在Linux的学习过程中,还没有上升到哲学高度
作者: wang290    时间: 2012-04-04 20:08
UnixKiller_Ama 发表于 2012-03-31 21:47
鄙人愚见:我认为说Linux/Unix米酒长青,设计思想独特,就如同我们谈三个戴表是如何先进一般。调子先定好了 ...


这个很有可能是当时的硬件所限制的,他们可能不会想到现在的高速内存可以这么大的量,以及多核等各种硬件技术的发展
作者: wang290    时间: 2012-04-04 20:11
send_linux 发表于 2012-03-28 14:34
活动背景:

 UNIX是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机 ...


个人觉得传统的Unix和windows,还有mac明显的是三种风格。

unix是技术人员的工具,是需要有陡峭的学习曲线的
windows的设计理念认为,用户是愚蠢且无选择的,mac的理念是,用户是愚蠢且自做聪明,而且毫无忠实可言
作者: wang290    时间: 2012-04-04 20:17
无锋之刃 发表于 2012-03-29 13:10
Linux/Unix设计思想:一场盛大的SimNature游戏

对于喜思好静的智力型玩家而言,模拟类游戏一直都是上佳娱 ...


不懂啊,这个是啥意思啊
作者: wang290    时间: 2012-04-04 20:20
沿河歌唱 发表于 2012-03-29 00:59
我一直都喜欢类似轻松风格但又提纲挈领的书,
我这里收藏了两个版本,
刚开始读样章就觉这就是我的菜,一定要 ...


sun确实很可惜了,oracle还是没有什么好的办法来重振硬件业务,extradata现在也有很多的竞争对手了,比如SAP和IBM
作者: lemoncandy    时间: 2012-04-04 20:23
KISS是UNIX最明显的哲学底蕴~
作者: lemoncandy    时间: 2012-04-04 20:25
KISS是UNIX最明显的哲学底蕴~
作者: cuibixiong_cu    时间: 2012-04-04 23:32
准则2:每一个程序只做好一件事情,绝对精辟的,这是我这些年来写了无数大而全的垃圾程序后才领悟到的,之前总是用什么多线程模型,妄图一个程序解决所有的问题,搞来搞去,performance也不好,调试起来很很麻烦,后来才发现,其实让每一个程序只做好一件事情,然后通过pipe之类的相互通知,程序简单好维护,速度也很快
作者: soulsai    时间: 2012-04-05 16:58
本帖最后由 soulsai 于 2012-04-05 21:30 编辑

    简单的讲,设计操作系统的一个主要目标是高效(性能)、安全(隐私)、可靠(容错)的管理计算机系统软硬件,通过各种机制的设计与实现满足不同的用户需求,在各种相关或无关技术指标之间进行系统平衡(折中)。讨论一个OS好不好(可用性、易用性和友好性等),当然要面向具体的应用、用户感受以及具体的指标进行阐述,不能一概而论,可定制性显然是Unix类操作系统非常突出的特点。通过阅读该书的样章,仅对要讨论的三点讲一下自己的感受,个人水平有限,欢迎高手拍砖切磋。

1、你为什么喜欢Unix?
我个人非常喜欢Unix类的操作系统,原因有三:




2、你会身体力行Unix/Linux哲学中的哪些?为什么?
    在本书中,我认为提及的大部分Unix/Linux哲学都是非常适合大家使用和践行的,就个人而言,谈及感触多的三点:




3、你不赞同书中提到的哪些Unix/Linux哲学(文化)?为什么?
    如果非要谈及不赞同的几点,个人觉得有以下几个方面:



    最后,该书给我的总体感受,是那段无名师与万行码的讨论,O(∩_∩)O~
    ……
    “那么谁更了解Unix传统?”无名师问道。“是写一万行代码的,还是看到任务的无谓而不去编码的?”
    ……

作者: renxiao2003    时间: 2012-04-06 22:26
“你为什么喜欢Unix? “

首先,我喜欢的是Unix的稳定性,在Unix系统中,内核和Windows窗体是分开的,窗体的运行独立于内核,在窗体出现问题时不用重启系统就可以在内核状态修复。
同时,由于可以独立运行于文本模式,可以节约很大的内存。
在运行大型服务中也基本上不用运行图形界面就可以的。可以节约能源。
你会身体力行unix/linux哲学中的哪些?为什么?

稳定性,内核独立性。
你不赞同书中提到的哪些unix/linux哲学(文化)?为什么?

太难学了,并且对硬件的要求比较独特,所以和硬件绑定得比较严重。
作者: liujihang029    时间: 2012-04-08 14:18
1.不必担心版权之争(这是比较现实的)
搞研究忌讳这个,在win系统下一不小心就越位了。于是转战linux系统。随着了解知识的增多,兴趣与日俱增。为其开放,共享的精神所感动!
2.键盘命令操作(习惯问题)
以前用win系统,在屏幕上面点来点去的,使用的次数不多还可以。一旦用的多了,就烦了。就像用autocad画图,按钮都在那呢,可更多的高手用快捷键。命令敲下去就可以实现自己想要的动作了。
作者: 无锋之刃    时间: 2012-04-09 11:39
回复 65# wang290


UNIX设计原则与大自然造物原则类似。
作者: wang290    时间: 2012-04-09 12:56
无锋之刃 发表于 2012-04-09 11:39
回复 65# wang290


这个说的太大了,有点空泛了
作者: anjing112233    时间: 2012-04-10 10:56
不错不错     值得学习  支持一下     顶个
作者: snow888    时间: 2012-04-11 01:44
linux ?

啥咚咚?

进来看看。
作者: wau213    时间: 2012-04-11 14:32
用unix/linux一开始纯属工作原因,现在越来越喜欢了,高效又经济实惠
不得不说  服务器上unix/linux比较强,但是个人桌面版确实比较烂
就是对权限方面越来越注意了
作者: asuka2001    时间: 2012-04-11 14:51
回复 77# wau213


同感啊,握手!上次买个本本,折腾得死去活来,Ubuntu 11.10和 Fedora 16都没着,郁闷了,直接当服务器使用算了!
作者: JohnBull    时间: 2012-04-12 11:08
UNIX的设计确实有点老了。
但问题是,迄今尚未出现更好的设计...
作者: 苏恩1987    时间: 2012-04-15 11:06
回复 3# ww2000e


    好好哄哄哦好
作者: thaldn    时间: 2012-04-15 15:07
心有戚戚焉......很多时候来不及折腾哲学,就是一个码工
作者: sopato    时间: 2012-04-17 01:34
很不错的书,我都想买了。
作者: beyondfly    时间: 2012-04-17 17:01
首先说说Unix, 由于历史原因,UNIX的起步比windows早得多,那时候,银行,电信,教育等等行业需要操作系统来运行其业务,自然而然就选择了UNIX, 这些商业UNIX公司越来越有钱,同时又舍得在技术创新上进行投入,在研发上投入的力度越来越多,UNIX系统自然也就越来越强大,同时,这些行业许多核心业务都投入到UNIX系统上的,想迁移到其它系统,会有无数困难等着,代价无比巨大,待MS发力时,服务器市场已经没有什么份额了,当然MS的定位也就是个人电脑 。
     设计思想,UNIX采用简洁,模块化的思想,如系统中所有一切,文件,目录,磁盘全部称之文件,大大方便了系统对资料的管理,模块化的设计,可根据用户需要,选取想要的内核模块,去除不需要的内核模块。没有windows下的注册表,安装,删除软件十分简单,程序上分为用户态和内核态程序,增强了系统自身的安全。
作者: chenziyancb    时间: 2012-04-18 00:26
一直在找这本书,无意中既然在这里找到,
谢谢分享
作者: xiangziluotuo    时间: 2012-04-19 23:57
喜欢linux的开放性。。。
作者: niumingchao    时间: 2012-04-21 10:19
和Unix编程艺术是不是类似
作者: mapclm    时间: 2012-04-22 09:53
多写点代码吧,才是从形似到神似接近一流程序员的水平的正道
作者: breeze7086    时间: 2012-05-15 11:13
本帖最后由 breeze7086 于 2012-05-15 11:14 编辑

私以为unix/linux的思想就在于
1,高效。服务端摒弃桌面等资源高消耗应用
2,松散耦合。稳定的接口
3,一切皆文件。使操作硬件设备如同操作文件一般简单
4,简单实用的命令行参数。如ls -l -h
5,完善的帮助文件。普通的如ls --help,完整的如man ls
作者: xiaoxiangyue    时间: 2012-05-19 11:18
大道至简 是因为 所有的操作都可以归结为:分类和迭代。。。然后难的就是如何分类以及何时迭代000怎样迭代
作者: 西门大官人    时间: 2012-07-08 17:56
信仰,无他。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2