
记者:能否介绍一下Koodoo语言及应用?
朱东宁:Koodoo语言是一种简单高效的脚本语言,有现代脚本语言动态变量、动态数组等容易上手的特点,同时又适应电信行业高性能的要求。它主要应用在语音系统相关的开发,即CTI(计算机电话集成)领域,如IVR(交互式语音应答,即电话自动语音应答,如电话银行、证券电话委托、声讯系统等),CallCenter(呼叫中心、客服中心)等。对于语音系统来说存在多通道并发的问题,传统的解决方法就是状态机,对语音系统的开发人员实在太麻烦了,摒弃状态机,创造一种运行在单独通道上的高级脚本语言,给语音系统的开发带来了开发效率上的飞跃,, 。
当然,我们很多用户在用惯了Koodoo语言以后,即使不牵涉到语音方面的应用,也喜欢用Koodoo语言来做一些服务器方面的程序,因为Koodoo语言对数据库操作,网络通讯乃至文件操作,都有很好的封装,比那些重量级的编程语言要容易得多。
记者:Koodoo名字的来源和他内核的技术方面是否方便谈一下?
朱东宁:Koodoo语言读做[kudu],Koodoo是一种南非条纹羚羊的名字,之所以取这个名字,一是这个名字看起来简单,容易记忆,更主要是因为Koodoo本身设计成多路并发的,类似南非羚羊身上平行的条纹。
Koodoo语言是我采用C++完全独立开发的,并没有参考任何开源代码,在2001年推出了第一个版本,随后提供了多种主流语音卡硬件平台的支持,并实现了可视化的调试环境和运行环境。
Koodoo语言完全采用多线程设计,以语音卡硬件环境为例,每个通道(可以看成一个话路)是一个线程,一个语音系统相当于多个独立的虚拟机,这样每个通道可以运行不同的Koodoo语言脚本,这带来了相当大的灵活性。
Koodoo语言使语音开发变得简单了,本身语音流程多变、复杂,采用Koodoo这种简单的脚本语言后,开发人员可以不必关心底层的硬件信令等,而专注于业务流程的开发,使开发效率得到极大的提升。语法形式上接近于javascript,也是类似于C的语法形式,当然变量或数组不用预先定义。
记者:请问你是从何时开始设计Koodoo语言,历经多长时间?
朱东宁:我从1993就开始用语音卡做证券电话委托系统,那时候需要采用语音卡厂商提供的API进行较为底层的编程,上层的业务代码和底层代码混合在一起,很难维护。而且语音系统是多路并发的系统,当时只能采用状态机的方式进行编程,用大数组记录每个通道的状态,然后根据动作改变通道的状态,状态很多,对于复杂的语音系统来说实在太麻烦了(状态的跳转你可以想像C语言中的goto语句)。这种原始的方式,除了编程困难,调试也很困难,性能也不好,因为不允许堵塞,每个状态要很快地完成,如果线路比较多,性能将急剧下降。
我在2001年前后开始设计Koodoo语言,当时很多新的脚本语言很风行,如Python,javascript,他们的表达能力如此之强,但所受的限制又是如此之少,很让人震撼。
记者:能否谈一谈发明Koodoo的初衷?
朱东宁:当时,我感觉到设计一种和Python、Ruby竞争的通用型脚本语言成功的概率很小,其中一个原因是通用型脚本语言都是开源项目,而在国内的软件市场环境,采用开源模式,完全依赖服务收费来挣钱是很困难的,作为一个商业公司,生存是第一重要的;其次,我熟悉语音系统的需求,我觉得在特定领域解决特定问题,设计一种高效的脚本语言更有意义。目标市场就是定位为一种平台,相当于语音系统的中间件,我们称之为语音平台。
