Tea-语言介绍
如果你希望开发一个商业软件:同时兼容多平台、运行效率高、不需要虚拟机支持、不公开源码且不可反编译。 以前,只有 C/C++ 能完成这项任务,但这个语言学习成本高,使用麻烦,让很多初学者望而却步。 所以 Tea 语言主要目标就是:
- 具备 C++ 所拥有的一切功能:编译为原生机器码,可以和 C 代码混合编译。
- 具备现代化语言提供的特性:GC、反射、闭包、lambda、动态类型等等。
相比 Python, NodeJs, Ruby 等,其运行效率将大幅提升。 相比 Go, Rust, D 等,它更接近 C++/Java/C# ,原有用户可以很快上手。
重点用于开发桌面软件
语言的功能和它提供的类库有关。前期 Tea 语言将重点提供用于开发桌面界面软件的类库组件支持。特别适合开发
- 常用工具软件,如开发一个自定义的 FTP 服务器。
- 非开源的商业软件,如开发一个类似 QQ 的局域网通信软件。
- 游戏开发。
让更多 web 开发人员具备开发桌面软件和服务器软件的能力。
为什么要开发 Tea 语言
目前没有理由,仅仅是玩具吧。不过我想应该还有很多人想体验原生机器码 的开发,却被 C++ 的复杂吓跑,那么 Tea 语言将是你的伙伴。 Tea 语言和 C++ 代码可以直接互相调用。语言本身和 Java 和 C# 相当接近。 Tea 语言是强类型的语言,但是用户仍然可以编写弱类型的代码,编译器会负责推导一切类型。这意味着用户可以用同一个语言,既书写性能高的代码,又书写像 Python 一样轻松的代码。
Tea 设计理念:实用主义
Tea 语言的设计目标是更容易实现业务需求,这也是它的主要用途。 为了这个目标,Tea语言提供了以下特性:
1. 编译成机器码,兼容全平台。
作为一个业务需求软件,它不应该要求用户使用哪个操作系统、安装哪个虚拟机平台。 这是一个软件提高用户友好度的基本。 因此 Tea 语言将保证代码最终可以编译为机器码 (同时为了调试方便,还可以编译成虚拟机版本)。并且大部分代码只需写一次就可以 全平台兼容。
2. 让修改的成本更低
软件工程中修改是不可少的一步。Tea 在语言机制上让修改的成本降到最低,这主要体现 在:调试软件时可以直接修改源码并继续调试修改后的新版本;语言中提供动态扩展的功能 可以让针对不同需求的代码被隔离在不同的文件中,方便后期维护(因为修改的最终的目标 都是针对一个需求的,将代码按需求分布可以有效提高bug的命中率)。
3. 更注重开发细节,而不是计算机内部细节。
比如定义一个 int 类型的变量和一个 string 类型的变量,计算机内部逻辑完全不同。 我们希望对开发者保持一个统一的接口,即形成“做什么事 = 需要什么代码”的概念。 即使用户不知道其实现原理,也可以照抄已有的代码实现需要的功能。
典型的例子如:在 java 中,int转string代码是:i.toString()
, 而string转int代码 是:Integer.parseInt(s)
。如果了解其内部原理,那么就不会为这个情况而困惑,因为 这两种类型转换本质上是不一样的。而事实上,当在写业务代码时,作者更多思考的是程序的 功能,而不是运行细节。因此作为一个为业务代码而生的语言,我们封装并统一 了这些操作,使用 i as string
和 s as int
转换类型。虽然对高手而言这是一个“不合 常理”的设计。但是对用户而言,这是一个非常容易使用的方式。 Tea 语言在更多情况优先考 虑使用场景,而非运行效率或过分追求完美的设计。
同时,我们也删除了C语法中的位操作符(但是仍然可以通过库函数实现位操作), 因为现代化的大部分业务代码都不需要这方面的功能。传统的位操作符将被用作新的用途。
语言中还提供了很多语法糖和新兴的语言特性,如GC(垃圾回收)、反射、lambda,这些特性都可以大幅提升代码效率, 为什么不用呢?
3. 降低构架的成本
传统的软件开发需要一个有经验的人负责整体的构架,而实际业务需求是不稳定的,因此也很难 做出完美的构架。Tea 语言将在语言机制上让现实中使用最多的瀑布流开发模型和敏捷开发模型 的成本最低:它允许并推荐循序渐进的构架方式。即将所有功能拆分, 一次只构架和完成一个功能,然后迭代开发各个功能,但是各个功能之间的干扰可以降到最小。
如:开发功能A时,我们需要一个类 MyDog
和一个 sayA() 的函数,代码如下:
class MyDog {
void sayA() {
// code here
}
}
然后碰到开发功能B时,我们需要给 MyDog
类添加一个 sayB
的函数。 不同于传统的语言,Tea 允许并推荐将实现各个功能的代码分开, 所以在 Tea 中不应该修改 MyDog
的代码,而应该在其它地方书写如下代码:
extend MyDog {
void sayB() {
// code here
}
}
将软件按需求分离是 Tea 语言和其它语言的本质区别之一。 (如果需求明确且不变的情况下,就不应该故意去分离代码,毕竟分离类会给读者带来一定的困扰)
4. 团队协作
由于 Tea 语言极大鼓励作者书写最快的代码,因此也会导致部分代码的可读性下降。不过我们可以通过第三方 工具来生成风格统一、不包含个性语法的代码。语言内置文档生成语法,自动生成的文档也可以很好地 统一代码风格,以降低团队内的沟通成本。
Tea 目标用户
原 Java、C#、JavaScript 用户。
不适合用户
- 不喜欢 C 风格的。
- 不喜欢强类型和编译的
- 要通过学习编程找到工作的。