扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:ZDNet存储频道(编译) 2013年2月24日
在本页阅读全文(共2页)
接着上一篇的讨论(http://stor-age.zdnet.com.cn/stor-age/2013/0221/2145188.shtml),这场对话可谓激情四射,铜牌用户eulampios希望一试身手,并开始与某位匿名用户展开讨论。此次讨论迅速升级为纯技术议题,awk与bash的优势也作为参照物被牵扯进来。
开端:
shell是一种旨在将各类程序契合在一起的接口。它的作用是为用户与程序提供一种方便、简单且无缝的交互方式。
诚然,bash能够在无需借助util的前提下实现大量功能,但它的运行速度较慢、在很多方面也显得过于薄弱(perl 5在运行速度上百倍于bash)。然而我们却偏向于使用bash,而不是接近完美的util。
posix shell与posix util的强大之处在一起这是一套独立、简单且极为高效的util环境,应用能够在其中随意与其它应用及shell进行沟通,进而实现KISS(即简单、傻瓜)原则。这种组合中的独立元素往往小巧而且简单。同样,emacs是一种独立合并shell与util的集合,并且赋予这一集合独特的能力。有鉴于此,emacs在由shell命令构成的dired、grep、tramp及calc等复合式模式中表现突出。
不过PS在附加组件方面更臃肿也更难以划分,就我看来创建一套复杂笨重的怪物机制与创建shell并不是一回事。
匿名用户则回复道:
ls能够显示文件与目录。它也有多种选项用于控制输出格式以及类型排序。因此ls所针对的并不是“单一任务”——它针对的是其它命令也能实现的多项任务。这种设定显然有悖unix的一贯风格。
find也能用于显示文件与目录。它也具备多种选项用于控制输出格式,甚至能通过选项实现*执行其它进程*。这是什么情况?为什么find功能还要执行其它进程?我们都知道Unix讲究的就是“只做一件事,并把它做好”,而以上设定根本不符合其基本思路。
ps用于发现进程。它拥有很多很多相关选项,旨在控制过滤机制、输出格式以及排序。为什么要在选项中包含这么多其它功能,而不是仅仅专注于命令本身要执行的任务?这也跟unix风格不相符,对吧?
再来看PowerShell。ls是Get-ChildItem的别称——其作用只有一个:显示文件与目录。与*nix相比它几乎没有什么附加选项——因为它根本不会涉及输出格式或者排序等事务。它也不需要具备庞大的过滤机制,因为它所列出的对象几乎包含所有我们打算过滤的属性。
因此哪种shell在设计上更偏向于功能单一且追求最佳效果?我们看看操作命令。PowerShell中的一条命令只会处理一项工作,而不像*nix命令那样把所有功能都强塞进来。我们还可以通过简单的方式将多种PowerShell命令结合起来以实现*nix shell无法完成的效果。
在一阵你来我往之后,KingZongo显然感到胸闷气短,于是总结出以下反对意见:
Windows Server曾经是彻头彻尾的废品。现在情况发生了转变,但我们也不能说它已经趋于完美。
Linux曾经是彻头彻尾的废品。现在情况发生了转变,但我们也不能说它已经趋于完美。对于任何大家能想到的任务,我们都会发现Windows可以通过比Linux更科学的方式完成。总而言之,Linux取得了进步、不再一无是处,但也仅此而已。
这样的论断当然不足以平息此次纷争,但我们仍然决定将它列举出来。现在暂时不谈PowerShell,再来看看一个饱受争议的话题:对于开发者社区而言,为微软平台开发应用到底明不明智?一位匿名用户认为微软的产品已经“对VMware构成了严重威胁”,但死硬派软黑用户Eadon则如是说:
供应商在为Windows编写了一段时间应用程序之后,却突然发现微软成了自己的竞争对手,这种现象难道还不够诡异么?可以说为Windows编写应用就等于是在给自己构筑潜在风险。只要开发者赚到钱,微软就会很快发布自家版本,并试图把我们辛苦创建起来的市场一股脑偷走。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。