Skip to content

TeaScript 设计理念

xuld edited this page Oct 5, 2013 · 1 revision

TeaScript 的适用场景和人群

某天,我收到一个需求,要把100个flv视频转为swf格式。但我发现,没有一个语言能很快地完成这个任务。因为它需要用到flv和swf解析的第三方库。而目前的语言使用第三方库则都是一个头疼的问题,特别是改别人的代码。 于是,我就在想能不能设计一个语言,让使开源代码的成本降到最低。

设计目标

TeaScript 设计的目标是能快速用上别人的代码。 一些高级语言都提供了包管理器,这样使用别人的代码确实方便了不少。 但是这还不够,因为更多时候我们需要修改别人的代码,而读别人的代码是一个艰巨的任务。 因此,TeaScript 的设计宗旨是:

代码可读性 > 代码简洁性 > 代码运行效率

先看如下代码:

int n = 0;
for(int i = 0; i < arr.length; i++){
    if(n < arr[i]) {
        n = arr[i];
    }
}
return n;

初看不知道代码在做什么,但仔细读可以发现它的目标是获取 arr 中的最大值。 写代码的目标是让计算机能执行,而不是阐述代码的原始目标。所以很多代码看起来非常生涩。 所谓的可读的性,就是把代码的目标留在代码中,而不是具体的做法。 且看 TeaScript 的代码示例:

arr = [1, 2, 3, 4, 5];
arr.query(
    select: { @value * @value },
    where: { @value > 2 }
);

我们需要告诉计算机我们的原始目标,然后让语言负责去实现。

设计风格

  1. 不像 Java 一样严谨,也没有 Ruby 一样随便。 TeaScript 在代码上是弱类型,但是却有严格的类型控制机制。比如如下代码是错误的:

    s = "val";
    s.myProp = "3"; // 错误:String.myProp 未定义。

  2. 能简洁的地方尽量简洁。

    if a > 2 { // if 括号可省略。 }

  3. 以作者的思路优先。 如 Java 代码中,转为 String 类型,即有 (String) 和 .toString(), 虽然两者本质不同,但是对用户来说,它的目标是一样的。 因此,这两者在代码上应该统一,然后由语言自己去思考选用哪个方式。

    a = 1; b = a as String; // 转为字符串类型 c = b as Int; // 转为 Int 类型

主要用途

TeaScript 目前设计的是做一些工具型的小软件。比如做一个提醒用的小闹钟,一个小型的服务器。