Mark24
对程序发展的观察随笔
一、 web本地化,应用化的趋势。
就是把网页做出app化。
网页刚开始是一个模板字符串
然后是SPA,SPA的网页可以拥有状态了。可以处理渲染了。
然后是SPA本地化。看起来就像app,只做了本地资源的缓存。
再往前走一步。
SPA本地应用化,拥有自己的DB。现在已经存在IndexDB了。但是用的人很少。或者说某种业务还没出现。
未来用户拿到的是一个切片的应用程序。然后可以组装成一个完整的应用。包括离线使用。Google的Docs等已经可以这样了。但是大众网页还没有跟进。
这是一个趋势。前端应用和后端应用的逻辑——最好能跑一套。我就造个名字称之为——双生程序。就像孪生兄弟,或者像照镜子,他们是相伴相生的解构。
因此,未来的Web框架,最基本要照顾到几点:
- 本地DB
- 多线程worker 应该是常态
- MVVM是底层
- 可能存在一个虚拟机,可以实现双生程序的前提。让客户端和后端代码一致。
- 各种降级策略。
- 热更
- 离线
- web模式
- App模式
二、程序解构的递归性
-
一个完整的程序,都应该表现得像操作系统。
-
一个不完整的程序,表现为操作系统功能的子集,实现一部分。其余部分可以交给寄生平台或者操作系统代为管理。
一个不完成的程序,是因为使用某种平台。二把操作系统的任务转移。最明显的例子是 浏览器,他负责了本地化、调度、渲染、网络等等。
如果我们自己构建一个程序。就必须考虑到基本的主线程,工作线程。
然后对特殊任务实现调度。 为什么说特殊任务。因为看不见的比如数据,和看得见某种交互,他们对时间切面的敏感度不同。交互需要任意打断。
解构呈现递归性。 一些例子:
数据库对线程和网络连接的使用。对主进程,子进程的管理和控制。
React实现了类似操作系统的调度。实现了类似视窗系统的MVVM模式。
Sublime裁剪了一个Python的核心,作为内部的调度核心、独立实现的了UI的自己搭建
Vim有处理系统、排班系统、插件系统
Emacs表现得就像一个操作系统,并且以此为称呼。
IDE等程序,变现在除了多各种文件格式处理,还有控制内存管理。
Unicorn等框架,自己做了内部调度,但是吧管理进程的事情交给了操作系统,间接完成了任务。
Docker等容器化工具,自己做了接口层,但是最终虚拟化的工作交给了操作系统内核。
操作系统里面的程序,和具体的程序本身无二。他们都可以具备完整性。也可以拥有内部的解构。尤其是它存在一个生态的解构,他应对的事情足够复杂,具有足够拓展性。
类似Chrome从浏览器变成了 ChromeOS