dram.me

CLIPS和Tcl

由于CLIPS完全基于ISO C编写,所以和外部系统的可交互性比较薄弱,另外CLIPS并没有完整地封装ISO C包含的系统相关接口,更是加剧了这一问题。

以前的几篇文章中对此有所涉及,例如临时文件网络C扩展等。

也尝试参考Lua的思路,将popen作为核心接口基于POSIX命令封装常用功能,但由于Cygwin启动进程的性能问题,结果并不理想。

之后考虑和其他语言做深度整合,前期考虑的是Lua和Perl。Lua和CLIPS有类似的问题,因为将自身限制在ISO C的可实现范围,外部可交互性同样不理想,除非依赖第三方库。而Perl有两大分支,Perl 5和Perl 6,Perl 6还未成熟,且比较重,而Perl 5后期的发展存在不确定性。

当前确定的方案是和Tcl整合,体积较小,和系统交互性强,没有Lua和Perl的问题。另外Tcl的C接口非常完备,基于此尝试做了整合,暂命名为CLIPS-Tcl