由于较长时间未能得到原文作者的转载许可,故而,仅在这里提供原文访问地址:
一种新的操作系统设计 - http://www.yinwang.org/blog-cn/2013/04/14/os-design
转载文章-编者思考
以下为本文编者的观点,与原文作者无关,也不针对原文作者本人或其他任何个体。
编者认为,作者所期望的操作系统的核心设计理念应该是指数据结构化和程序函数化。
将数据以结构化方式存储和传递,可以减少对数据的编码与反编码操作,因为结构化的数据,其类型和意义都是明确的, 在代码中可以直接处理,而不需要经过多层的数据转换,可以降低程序复杂度,也可以提升代码执行速度。
程序函数化,则是数据结构化所导致的必然要求和结果。将程序函数化,则避免了进程调用的开销, 而且更有利于结构化的数据的交换。最终,操作系统就不再是进程的调度器,而是函数的执行器。 应用程序也不再是一个个二进制文件,而是一个个函数,函数可以直接调用函数,操作系统也就成为一个大的函数。
由于数据已经结构化,对数据的查询可以直接用查询函数即可完成,而不再需要数据库等应用服务, 更不需要为不同的查询模式定制不同的处理代码,这使得程序开发变得更加灵活和轻松。
数据的迁移也会变少,我们不再需要先将数据上传到某个中心,再从该中心拿到数据处理结果, 因为,我们可以直接Share Functions,在本地设备执行某个问题的解决方案的函数,即可得到所需要的结果。
当然,以上只是对当下操作系统和开发困境的一种探索和思考,无论其是否是操作系统的最优形态, 又能否从根本上解决所有问题,这些都是无法预知的,但编者相信,我们是极为有必要重新审视当前的软件开发的设计理念和规则的。
我们不应该继续「抱残守缺」,继续日复一日年复一年地干着「挖坑」和「填坑」的事情,或者,反复重复实现已经存在了的解决方案。 我们应该跳出当前的困境和视野,在当前的认知和已知的问题之上,面向未来,重新构建一个新的操作系统、一个全新的软件世界。
为什么是重建而不是完善现有的,可以继续阅读 为什么我们需要一个新的操作系统?。
作为软件开发者,编者认为,软件的基础设施(包括操作系统)应该提供更加完备的和统一的数据存储和处理机制, 让开发者从「泥潭」中脱身,以更加关注功能需求的开发。什么高并发、分布式、数据查询优化、应用监控、日志处理等等问题, 都应该对开发者透明,而不是日日夜夜纠缠于 各种无法预知的 内外软件系统的 缺陷和不完善之中。
最令编者头疼的就是,引入外部系统或外部库,就会引入大量新的概念和未知的坑,而各种概念又往往是相当复杂的, 各种接口调用也是环环相扣,从来没有可以一步到位的,需要查阅很多资料,并从无数前人趟过的坑中吸取经验教训。 另外就是,很多应该由外部系统做的事情,往往由于设计和历史问题,其会将这些问题抛给开发人员去处理,比如, 数据库查询优化 等问题,这又进一步加重了软件开发者的负担。
肯定有人会说「自己技艺不精,就不要去怪别人做得不好」。而对于这群「抱残守缺」者,编者的建议是, 不要以为掌握了一些复杂且高深的技艺和技巧就觉得可以「自命不凡」,将问题复杂化并不是一件可以让自己获得优越感并感到光彩的事情。 最困难和最值得去做的事情,应该是如何让事物变得更简单,以及如何节省劳力、脑力和计算资源。
当然,编者也不会无知地认为这些问题是开发者造成的,相反,有责任感的开发者必然也同样期望能够开发出更好的应用, 但是,因为「历史包袱」和「基础设施」自身的缺陷所致,这种期望往往成为一种奢望和无可奈何。 这也是为什么编者要在这里强调从头开始设计软件基础设施的重要性和必要性的原因。
目前看起来,在这条路上走的人还是太少了。
转载文章-扩展阅读
- Why do we need a new OS?: 译文见 为什么我们需要一个新的操作系统?。
- Save Our Computing Future: 译文见 拯救我们计算的未来。
- 谈 Linux,Windows 和 Mac: 多质疑、多反思,不应被权威或固有思想和规则所禁锢,认真理智对待和评判事物的优缺点。
- 几个超炫的专业词汇: 文章中所提到的几个词汇很形象地展示了软件世界的一些恼人的问题。
- Awesome Lisp Machine: A curated list of awesome Lisp Machine and Lisp Operating System stuff.
- Oberon System: A modular, single-user, single-process, multitasking operating system written in the programming language of the same name. The project home page is Project Oberon.
- Oberon - The Overlooked Jewel
- 关系式模型的实质:
许多宝贵的人力,耗费在构造,释放,连接这些“中间表格”的工作中。
只要你有一个程序语言,几乎任何程序语言,你就可以发送这语言的代码到一个“数据服务器”。服务器接受并执行这代码,对数据进行索引,查询和重构,最后返回结果给客户端。
在我的脑子里,只有更通用而简单的数据结构,以及针对它们的高效存储处理方式。
- 原文链接: http://www.yinwang.org/blog-cn/2013/04/14/os-design
- 原文作者: 王垠 - yinwang0@gmail.com
- 转载编者: flytreeleft - flytreeleft@crazydan.org
- 版权声明: 本转载文章的权益归原文作者所有,再次转载请注明原文来源及原文作者,并声明原文版权!