我半年多以前设想了一个数据和程序结合传输的流处理框架,经过半年多的背景知识学习对问题的认识更加清晰了,认识到当时基于直觉的设想与实际相距很远,但留下了很多宝贵的学习成果和思路。
在原来设想的基础上,我有了一个新的设想:开发一款“对象管理”的应用,“对象”指的是目前流行的操作系统(Posix)中文件和程序的统称。
使用图景:GUI上出现多个显示空间划分而成的“迷你空间”,各自有自定义的主题,比如学习、生活、工作,每个迷你空间内还可以有子空间,每个空间内显示的东西就是各种“对象”,这些对象从功能和内容角度代表了各种文件和程序,设想以下用例:
甲. 输入“读书”,得到结果,呈现出“要读的书”-分别来自“学习”空间和“工作”空间,点击学习空间内的A文献,进入一个网页,这是个在线文献;点击工作空间内的B文献,出现了一个pdf阅读器内呈现的文档;右键点击生活空间内的C文献,选择“音频播放”,然后选择播放器,这是个同时支持有声和文本的文献。
乙.在生活空间内选择“创建事件”,主题输入“约会”,地点输入D处,时间为N点,得到从默认地址(住处)指向约会地点的箭头,在长箭头中选择“创建中途事件”创建一个在N点之前20分钟完成去X地(顺路的地方)买一个东西的时间,然后在整个“事件串”上选择“相关功能”:交通情况,并在时间范围输入“1小时”就得到了N点前一个小时左右一路上通常的交通情况。
这个应用的设计思路:
首先,打破孤立的文件和程序的二分,用功能把它们统合起来,让用户自定义各种功能空间,一个文件或程序可以位于多个空间甚至形成多个副本。既不限于超链接,也限于不是可以理解成升级版的笔记工具。
然后,细分程序功能,很多程序以接口形式存在,但普通用户一般只能使用最终开发后的产品,而实际上“用户可编程”无论从重要性还是可行性角度都可以超过我们的想象。生活中很多东西都是重复的,但市面上缺少易用的接口,让用户实现少码编程,流行的操作系统中的计划任务一定程度实现了要求,但非常初级而且笨拙。这里有两个误区,一个是GUI和命令行存在优劣之分,另一个是对于编程经历少甚至没有的人只能提供一个领域特定的脚本语言让ta使用。对此我想先解决有编程经验,希望更加有效控制。
目前脚本控制还在发展,bash不够,而且只能管理特定接口,用一些脚本语言如Python实现更全面控制目前已是趋势。
对于无编程经验用户,思路暂时这样:以验证为基础的探索式程序构建,提供一些脚本的模板,以问答形式让用户摸索着实现某个功能,类似Scratch、Dynamo,GUI中包含实现整个程序脚本的核心步骤然后提示用户进行填充,填充之后试验运行。
需要的技术:
后台部分:统一的数据模型,在STEP基础上增加对程序的抽象和支持。程序接口,先实现应用程序接口(用例的大部分,比如播放器打开视频文件这个功能,大多数subprocess.call之类的)再实现操作系统的特定接口。对于用户编程的实现,基于编程语言的选择,可能需要一些方法来转换和储存新输入或注入的程序/脚本。
前台部分:GUI的跨平台实现,找跨手机桌面的工具。按照交互规范(像这个)开发
总结:
很多人经常面对屏幕的时间超过面对真人的时间了,我们的电脑(桌面/手机)好比一个小世界,让它更加定值化、个性化、智能化。
欢迎任何建议、评论、想法!
参考
《Python编程:快速上手让繁琐工作自动化》