Io 语言的编程模型

提到原型编程,就想到 Javascript, Lua, 以为自己应当能充分理解这个概念,但在学习 Io 语言的过程中,困难重重,始终不能开窍。

终于在 smalltalk 的教程中获得了一些灵感,原来 Io 语言是 smalltalk 的一个方言,几乎所有的概念 receiver message context target arguments 都是从 smalltalk 中借鉴的。

Javascript 虽然是原型语言,但老道(Javascript Good Parts 作者)说它虽有原型语言的内核。但没有原型语言的外形,两边都不讨好,怪不得不能从 Javascript 中获得启示。

我认为 smalltalk 的核心不单是原型语言,而是一致的编程模型:消息发送。

从赋值,数学表达式,函数参数设置,函数调用都用一种统一的消息发送的模型描述,让这门语言看起来非常的美丽,也就是浑然一体的感觉。

Io 语言有几个瑕疵:

  1. method 函数设置没有遵循消息发送的模型,而采用了类似 C 语言的语法:

    method(arg1, arg2, expression)

  2. 括号的使用非常生硬:

    method(….) block(….) do(….)

虽然括号同时能改变表达式的优先级,但括号这个符号本身成为语言的硬编码,这和 smalltalk 不同。在 smalltalk 中出现的每个字符,都遵循了消息发送的原则。

  1. 注释,逗号,函数调用的语法成为语言文法的特例,这会让语言最终沦为一门普通的面向对象的语言。

Io 语言的作者说语言中没有关键字,实际上有:

() , # // // ““” … ““” \n ; 这些字符都是硬编码到语言中的,不能修改的语言特性。

致使这门语言的灵活性收到极大的破坏。

Io 语言的作者现在一有时间,就在做将 Io 用 Javacript 实现的模型,因为 V8 引擎,让 Javacript 成为速度和语法兼备的语言。而 Io 和 Javascript 的语言特性也比较接近,Nodejs 还有一个完善的模块发布机制。比起用 C 语言实现的版本,软件的维护和发布代价都要小的多。但速度真的那么重要吗?

你可能感兴趣的:(IO,是否要放弃呢?)