- 论坛徽章:
- 1
|
你为什么喜欢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设计思想》,我觉得它至少可以帮助我从编码以外的视觉去审视与反省作为一个程序员的自己。不过,虽然书中很少讨论技术细节上的东西,但是对于缺乏编码及设计经验的人来说,要理解其中的要义并加以应用还是有些难度的。
书中不赞成观点?我只能说书中的许多观点我还没有真正理解。另外关于机制与策略的,再说一点,强调提供机制的这种观点,会造成这样一种情况:使用者在使用时可以自己构建策略,但也不得不自己构建策略。在今天这个充斥着快餐文化的社会,除非兴趣所致或靠这个吃饭,否则真不怎么受人待见啊. |
|