免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

[其他] Linux/Unix弥久长青,设计思想有何独特之处?(获奖名单已公布-2012-5-22) [复制链接]

论坛徽章:
0
31 [报告]
发表于 2012-03-29 22:29 |只看该作者
 传递给函数调用的参数数量过多,导致代码超出了屏幕的宽度。
——我见过参数多达十几个的函数。噩梦!

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

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

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
32 [报告]
发表于 2012-03-29 23:32 |只看该作者
回复 30# GFree_Wind

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

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

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

论坛徽章:
0
33 [报告]
发表于 2012-03-29 23:41 |只看该作者
虽然用linux时间少,但是我认为linux最大的好处是极大的提高了用电脑的效率

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
34 [报告]
发表于 2012-03-30 00:29 |只看该作者
OwnWaterloo 发表于 2012-03-29 17:00
回复 25# send_linux

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


unix/linux啊?

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

我想体验下动画片上的那些PK的感觉,说某反派可以张开一个意识领域,你进入了这个领域,至少对这个时间与空间的你来说,那个反派就是不可战胜。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
35 [报告]
发表于 2012-03-30 08:22 |只看该作者
回复 1# send_linux
有些时候会把linux比为女人
如果说windows是大家闺秀,那linux就是小家碧玉。
windows是那些让大部分男人都会心动的浓妆气质美女,但是要想拥有这样的女人,没有money是不行的;linux就是那淡抹野蛮女友,不需要太多的money,但想拥有她,不付出努力是不行的。

   

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

论坛徽章:
0
37 [报告]
发表于 2012-03-30 12:30 |只看该作者
回复 32# asuka2001

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

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

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

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

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

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

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
38 [报告]
发表于 2012-03-30 16:14 |只看该作者
回复 34# 塑料袋

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

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


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

论坛徽章:
0
39 [报告]
发表于 2012-03-30 16:50 |只看该作者
asuka2001 发表于 2012-03-29 23:32
回复 30# GFree_Wind

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


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

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

论坛徽章:
0
40 [报告]
发表于 2012-03-30 17:05 |只看该作者
cjdao 发表于 2012-03-30 08:40
你为什么喜欢Unix?
好吧,我承认在接触linux之前并不知道什么是unix,我也承认开始接触linux只是觉得能在终 ...


《UNIX编程艺术》值得每年复读个几章。
Linux有些实践思想跟UNIX还是有点不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP