-
Notifications
You must be signed in to change notification settings - Fork 1
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 }
);
我们需要告诉计算机我们的原始目标,然后让语言负责去实现。
-
不像 Java 一样严谨,也没有 Ruby 一样随便。 TeaScript 在代码上是弱类型,但是却有严格的类型控制机制。比如如下代码是错误的:
s = "val";
s.myProp = "3"; // 错误:String.myProp 未定义。 -
能简洁的地方尽量简洁。
if a > 2 { // if 括号可省略。 }
-
以作者的思路优先。 如 Java 代码中,转为 String 类型,即有 (String) 和 .toString(), 虽然两者本质不同,但是对用户来说,它的目标是一样的。 因此,这两者在代码上应该统一,然后由语言自己去思考选用哪个方式。
a = 1; b = a as String; // 转为字符串类型 c = b as Int; // 转为 Int 类型
TeaScript 目前设计的是做一些工具型的小软件。比如做一个提醒用的小闹钟,一个小型的服务器。