第27章 新项目茉莉工具一號(2/2)
【是的,我简单的的想了一下,我可以设计一个部脏標记传播算法,还需要一个增量解析的数学模型,这样才可以保证体积的轻量型。我们可以用纯 c 语言写一个代码分析进程,objective-c 和 cocoa 框架,应该可以实现一个支持无限行数不卡顿的文本渲染引擎。】
陈一然走到冰箱,从冷冻层抽了两个前几天才到货的运动员冰袋,一个贴在额头上,一个搁在后脖子上,顺手又拿了两个冰淇淋。
拿出手机,在五月花点了三碗乌龙麵。边上的零食架上又摸出一袋奥利奥和两根能量棒,全堆在桌上。
“上吧茉莉!启动!干就完了!”
他一边吃一边刷著网页等茉莉,总得先看看市场情况。
reddit 上 r/programming 又有人在骂 textmate 2.0 跳票,底下评论区有人说了句 “textmate is dead”。
还有人回復 “i lopile just to find a typo. in 2010.”
说得真对,都 2010 年了,word 都能画红线了呢。
没看几分钟,陈一然就感觉身体情况已经不足以支撑他看网页了,他只能躺尸。
每五分钟,茉莉都会提示陈一然测下体温,以防不小心把自己烧死。
还好,一直也只是低烧。之前茉莉推测,身体有自我保护,温度过高他也会卡顿好像是真的。
但是这是不是意味著,以后他要是真的发烧了,茉莉就会运行不良。
就这么迷迷糊糊的想著,外卖到了,连吃了三碗面小肚子撑的溜圆之后,茉莉发声了。
【思路基本理清了,我还是没敢过大的推理情况,所以需要我们实际编辑的时候稍微试错下。但是,整体来是没有问题的。】
“虽然我也不一定听得懂,但是你给我说说。”
【核心思路是两个:第一,把界面和代码分析分到不同的进程里跑。textmate 卡是因为界面渲染和语法分析挤在一个线程里,分析一卡,界面就跟著卡。分开之后,分析再慢也不影响打字。】
“这跟瀏览器干的事差不多吧?chrome 每个標籤页都是独立进程。”
【原理类似。第二,代码分析不能只做正则匹配,要真正理解代码结构。这就需要一个语义分析引擎,实时解析代码的抽象语法树,构建符號表,跟踪变量的定义和引用。有了这个,就能做到实时的错误检测和智能补全。
不只是给关键字变个顏色,而是真的看懂你写了什么。变量在哪里定义的,有没有拼错,括號有没有配对,函数参数对不对。你打错了,当场就能標出来,不用等运行。】
“所以用 python 写?”
【性语义分析需要遍歷整个代码的语法树,python 的执行速度不够快。而且无法直接与作业系统底层的应用程式二进位接口无缝对接。需要用 c++ 写核心框架,只有 c++ 既能提供极高的抽象能力,又能毫无损耗地转化成机器码。
net 生態有成熟的元数据系统和 xml 文档,可以利用 mono 运行时做跨平台。先做好 c# 的支持,验证架构可行,再扩展其他语言。】
“mono 又是什么?”
【.net 的开源跨平台实现工具。微软的 .net 只跑在 windows 上,mono 让 c# 程序可以在 mac 和 linux 上运行。我们的编译器如果做好,应该可以代替 mono,我们的编译会更好,也可以直接支持.net】
“茉莉,这个做出来,有人会买吗?”
【根据论坛上的反馈,对更好代码编辑器的需求是真实存在的。textmate 2.0 跳票导致大量用户在寻找替代品,但目前没有一款 mac 编辑器能同时做到速度快、功能全、有实时错误检测。
如果我们的工具能做到这些,是有商业潜力的。並且,我们还支持.net,应该会有销路。】
“那就先搞这个,deepflow 不急,先搞定工具,之后干什么都会快点。”
【收到,项目代號?】
“项目代號,茉莉工具一號。”
【收到。jasmine tool no. 1 项目启动。