五千年(敝帚自珍)

主题:Lua 语言? -- GUNXU

共:💬18 🌺22
全看分页树展 · 主题 跟帖
家园 比如说

语言里没有原生OOP支持,我们可以自定义OOP的语法元素,在编译器里扫描这个特征的字符串,再插入相应原生语言的代码实现OOP内部的机制.再比如应用中有许多一定设计模式的要求,设计模式的实现往往要很多写很多语句,用到一定的额外数据结构的支持,编程时费事费力,还要纠错.可是概念上,这些工作都是重复劳动,完全可以让编译器自动生成相应的代码,从而让编程者只专注于算法,核心逻辑,而不用考虑其他.这样一来,应用会简单得多.为了维持一个好的系统,我们可以把设计思想印在语言里,而引导(甚至强制)后来的编程者自觉不自觉地贯彻原始设计思想.这个哲学对我们系统的成功很有关系.因为,系统的应用变化量太大,适用性,灵活性,快速反应性,时效性要求很高,不可能用软件工程的管理模式来控制质量.只有靠"代码文化"或是同伴的互相监督制度来保证,这样一来,一个印入设计思想的语言不仅可以加速开发,还是这个"代码文化"的宪法和保障.

说上面说的可能有点玄,在举个实际一点的例子.如果我希望一段用脚本语言写的数值运算的代码有C的速度,我可以创造一个标识代码如@Accelerator(){ }, 把这段代码包含起来,在运行时把它直接编译成汇编程序(当然要有合适的接口以适应上下文),而在纠错时只是把标识代码去掉,这样可做到无缝的纠错,无缝的高效运行。在这个系统里,脚本语言的“胶水特性”恐怕就剩不下多少了。同样在利用GPU高速运算时,一个瓶颈是写Cuda代码,我们也可以用类似的技术简化应用的门槛。(这里也许有人会记起Python里的CType.但是这个构想更接近于JIT,因为我们还是在写脚本语言的语句,而不是在脚本程序中加入C语句。和JIT不同的地方是我们严格限制在@Accelerator里的原生语法只是作用在数值类型和数组类型,所以实现简单,也比JIT快)

一句话,脚本语言,编译技术已经把编程的技术门槛降的很低。在IT技术中,也许是离开关注编程,编程语言和设计模式的时候,而是把注意力转到具体的应用和问题上。经常和朋友笑说“珍视生命,远离C++",大家姑妄听之。


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河