Unix哲学在Ruby社区中脱颖而出?
Unix哲学的支持者大卫·科恩(David Korn)在几年前在
a Slashdot interview年间为Perl脚本编写了单片Per??l脚本,而不用通过管道,重定向等方式使用Unix工具包。“Unix不仅仅是一个操作系统,”他说“这是一种做事的方式,壳通过提供使其工作的胶水起着关键的作用。”
似乎提醒可以同样适用于Ruby社区。 Ruby通过popen,STDIN,STDOUT,STDERR,ARGF等与其他Unix工具配合使用,具有很强的功能,但是Rubyists越来越多地选择使用Ruby绑定和Ruby库并构建单片Ruby程序。 我明白,在某些情况下,在一个Ruby进程中可能会出现性能原因,并且在一个Ruby进程中执行所有操作,但是确实有很多离线和异步任务可以很好地处理Ruby程序与其他小程序在Unix时代,这个方法提供了所有的优势。 也许我只是缺少一些明显的东西。 Unix哲学与10年前的今天仍然如此相关吗?
Unix的管道和简单工具的理念是文本。它仍然是相关的,但可能不如以往那样相关:
>我们看到更多的工具,其输出不能被其他程序容易解析。 但是尽管世界发生了一些变化,但我仍然同意科恩的批评。无论什么语言,创建大型,单一的程序是绝对差的设计,无法与其他程序互操作。规则与以往一样: 记住你自己的程序的输出可能是另一个程序的输入。 总而言之,真正有两种高度相关的方式来重用代码: >通过shell管道(Unix)连接时编写一个很好的组合的程序。 在第一个范例中,依赖关系结构很简单(总是线性的),因此易于理解,但是您在表达方式上的限制更为有限。在第二个范式中,您的依赖关系结构可以是任何非循环图 – 更具表现力的功能,但这包括创建无偿复杂性的能力。 两种模式仍然是相关和重要的;对于任何特定的项目,您选择哪一个更多与您的客户和您的起点相比,具有范式的任何内在优点。当然他们不是互相排斥的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |