对程序发展的观察随笔

一、 web本地化,应用化的趋势。

就是把网页做出app化。

网页刚开始是一个模板字符串

然后是SPA,SPA的网页可以拥有状态了。可以处理渲染了。

然后是SPA本地化。看起来就像app,只做了本地资源的缓存。

再往前走一步。

SPA本地应用化,拥有自己的DB。现在已经存在IndexDB了。但是用的人很少。或者说某种业务还没出现。

未来用户拿到的是一个切片的应用程序。然后可以组装成一个完整的应用。包括离线使用。Google的Docs等已经可以这样了。但是大众网页还没有跟进。

这是一个趋势。前端应用和后端应用的逻辑——最好能跑一套。我就造个名字称之为——双生程序。就像孪生兄弟,或者像照镜子,他们是相伴相生的解构。

因此,未来的Web框架,最基本要照顾到几点:

  1. 本地DB
  2. 多线程worker 应该是常态
  3. MVVM是底层
  4. 可能存在一个虚拟机,可以实现双生程序的前提。让客户端和后端代码一致。
  5. 各种降级策略。
    1. 热更
    2. 离线
    3. web模式
    4. App模式

二、程序解构的递归性

  1. 一个完整的程序,都应该表现得像操作系统。

  2. 一个不完整的程序,表现为操作系统功能的子集,实现一部分。其余部分可以交给寄生平台或者操作系统代为管理。

一个不完成的程序,是因为使用某种平台。二把操作系统的任务转移。最明显的例子是 浏览器,他负责了本地化、调度、渲染、网络等等。

如果我们自己构建一个程序。就必须考虑到基本的主线程,工作线程。

然后对特殊任务实现调度。 为什么说特殊任务。因为看不见的比如数据,和看得见某种交互,他们对时间切面的敏感度不同。交互需要任意打断。

解构呈现递归性。 一些例子:

数据库对线程和网络连接的使用。对主进程,子进程的管理和控制。

React实现了类似操作系统的调度。实现了类似视窗系统的MVVM模式。

Sublime裁剪了一个Python的核心,作为内部的调度核心、独立实现的了UI的自己搭建

Vim有处理系统、排班系统、插件系统

Emacs表现得就像一个操作系统,并且以此为称呼。

IDE等程序,变现在除了多各种文件格式处理,还有控制内存管理。

Unicorn等框架,自己做了内部调度,但是吧管理进程的事情交给了操作系统,间接完成了任务。

Docker等容器化工具,自己做了接口层,但是最终虚拟化的工作交给了操作系统内核。

操作系统里面的程序,和具体的程序本身无二。他们都可以具备完整性。也可以拥有内部的解构。尤其是它存在一个生态的解构,他应对的事情足够复杂,具有足够拓展性。

类似Chrome从浏览器变成了 ChromeOS

Mark24

Everything can Mix.