可能很多人会以为这个标题是文字游戏,它不是。
过去的两周我已经仔细写完了巨硬III的逻辑文档,大部分问题都考虑完毕,这周开始进入代码阶段。上一次写代码大约是今年6-7月份,把这些代码翻出来看了看,庆幸当时的结构化设计,很多代码都可以重用,包括数组类、字串类、文件操作类;数据封装方面,原来的PalmOS数据库和记录操作代码可以完全不用修改,直接拿过来用;引擎和框架方面,上次的代码并没有最后完工,但是仍然有相当多的部分可以重用;只有数据结构方面,因为改动很大,需要全部重写。就代码量而言,现在保守估计应该有30%-40%的水平。
大家会问为什么跳过了2.0版本。对这个问题我会在软件发布的时候仔细解释,跳过2.0是有充分的理由的--或者把前面这个进度80%左右的版本称为2.0。3.0在逻辑上有质的飞跃。
关于输入法,目前应该说有两大流派:一个是规则派,大量使用技巧和规则,绝大多数基于词组、简拼、联想的中文输入法都是这一派的,这个路已经随着计算机中文应用进化了十几年,非常成熟,紫光拼音、拼音加加和新秀搜狗拼音都是典范;剩下的能做的改进已经很有限,无非是在词组和词频上做文章,以及增加一些特殊输入方式。当然这些输入法都有一些闪光点,比如词频调整和自动造词,确实方便。但是其发展空间的限制也非常明显,词组和词频的问题其实是非常个性化的,而特殊输入方式需要学习,我相信拼音加加的用户中90%以上都不会用到它的很多快捷输入功能。
另一类就是智能派(整句输入法),以微软拼音为代表,国内还曾经有个黑马输入法,以及口碑不错的智能狂拼。这一类输入法的理论依据很厉害,是贝叶斯模型。但是这个模型是否能适用输入法,是个疑问,我发现在现有的贝叶斯模型整句输入法中,或多或少都有些错误假设。这或者影响性能,或者不符合用户的心理习惯。
巨硬3.0不同于以上两类输入法,当然它不是说抛弃了上述输入法的优点,而是继承了传统规则派输入法的绝大多数优点,包括词频调整、自造词、简拼等等。但是在逻辑上,它大胆的采用了Jeff在On Intelligence中首次提出的Memory Prediction模型。该模型对用户来说的好处在于大大降低无效重码,在数字键盘设备上尤其明显。形象的说,MP模型就是词组的词组,再加上词组的联想,同时不要求用户的输入方式,比如连续输入几次蒲巴甲,即使是一个字一个字输入的,系统也会把他们组合成词。至于怎么从用户输入的序列中抽取出来组合的开始和结束,正是MP模型的闪光之处。实际上这个想法在2.0版本中就想实现了,但是直到最近灵光频现,才想明白了其中的一些关键问题,2.0中的一些思路是错误的,于是推倒重来。和商业软件相比,个人软件的魅力也许就在与此,It's ready when it's ready,你不需要把半生不熟的东西端上客户的餐桌。至于这个模型和现有模型能有多少进步。我的预测大概是这样的,如果是PC输入法,因为touch typing的速度是接近甚至超过人的口语速度的,用不用MP模型都没所谓;在thumb qwerty kb上,现有的巨硬和梅花都没有联想,如果采用MP能直接补足这个问题,如果是双手操作,速度应该能有50%左右的提升,如果是单手,还要多些,但是不会达到100%;在numpad kb上,传说中的Nokia神奇T9在我看来根本不怎么样,MP模型绝对可以让你shit in your pants。它应该可以让num kb超越现有qwerty巨硬的速度。
最后说说进度的预期,老实说,PALMOS是开发输入法最恶心的,没有好的系统框架,稳定性大成问题,debug也很困难,但是它在存储设计和运行效率上最好,而且我也最熟悉PalmOS开发,所以仍然从这里开始;最近也在看Windows Mobile和Symbian的开发,Windows Mobile开发也不难,有很好的输入法框架,就是效率上不知道怎么样,但是WM PPC设备的大内存是不错的,WM Smartphone就难受一些,不过总的来说差异不大;Symbian的系统在编程习惯上差异比较大,好处是FEP框架和C++类都很好,惟一的缺点是我对它的Stream类效率担忧,巨硬III的动态读取数据在M量级,频繁的读写操作系统能否高速完成是个未知数,如果要自己设计cache系统来解决这个问题的话,就太悲凉了。不过我现在就在使用E60,所以无论困难多大,我都会完成的。PalmOS的版本应该在春节前有Alpha,但是我不打算立刻发布;PalmOS版本完成之后会马上进入Symbian开发,我希望是在明年春暖花开的时候(大约4月吧)能同时发布PalmOS的QWERTY版、 Symbian的QWERTY(E61/E62)和NUMPAD(S60 3rd Edition)版。正式发布之后就进入Windows Mobile系统的移植,这个应该很快,再多花2个月吧。
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment