BT语言-国内新型编程语言

BT语言是一门极为简洁的编程语言,内核由Rust语言开发,BT的语法吸取了Rust、PHP、JavaScript一些编程语言的的优点,使其更为简洁,上手更简单。

BT语言的编译器只有一个极为简小的可执行文件,无任何依赖,BT语言是跨平台的,可以运行在Windows、Linux、macOS等多个操作系统上独立运行。

 BT语言无需搭建环境,只需要一个简单的编译器即可运行,所以,如果你的电脑有一个记事本,可以直接写一段BT代码,来直接运行。

BT语言官网:BT编程语言官网icon-default.png?t=O83Ahttps://btlang.org/

BT语言文档:

BT编程语言文档icon-default.png?t=O83Ahttps://btlang.org/docs

BT语言开发的艰辛背后:

作者在2019年9月正式立项开发BT语言,一直是业余时间敲代码,当初计划用C语言实现,为此还专门深研Fabrice Bellard先生的Tiny C Compiler。

不过后来因为内存安全问题,专门学习了Rust编程语言,过程十分坎坷,最终在2022年1月发布第一个版本,由于个人编写,从未宣传,也没精力宣传,也从未有人关注过。

之后的时间中,一直在完善编译器,由于增加各种语法,期间重写过多次词法分析器和语法分析器,最终在两年后的2023年6月再次发布了一个重要版本。

为了实现Js的对象存储机制,再次投入了极大的精力来重写数据类型,并实现Web端的服务,2024年9月完成发布,并成立了一个简单的官网。

从2019年到现在1.0.3版本,三个版本历经了整整5年时间,完全利用业余时间开发,到现如今,1.0.3版本依然保持着高度的简洁性,不需要安装,不需要任何环境配置,也不需要依赖任何环境,只是一个精小的可执行文件,非常难得。

BT语言作者的自述:

做为一名程序员,我的大部分时间都在写底层代码,尤其是架构设计,在Web端的开发中,PHP是我用的最久的语言,对此,有着深刻的看法,例如函数调用以及嵌套问题,因为PHP的语法并不像Rust和JavaScript一样使用链式语法,例如PHP中:

// 声明字符串
$str = ' hello 123 world! ';

// 去掉两侧的空格
$str = trim($str);

// 获取字符串第2位到第13位的子字符串
$str = substr($str, 2, 13);

// 使用正则表达式将数字用括号包裹起来
$str = preg_replace('/(\d+)/', '($1)', $str);

简写就是:

$str = preg_replace('/(\d+)/', '($1)', substr(trim(' hello world! '), 2, 13));

你会发现第一段代码还好理解,但是由于语法的原因,只能嵌套使用,代码需要从右向左去读,这真的不够直观,读起来十分费解。

然而BT语言支持链式语法,使用BT语言的话就是:

' hello world! '.tirm().substring(2,13).replace(/(\d+)/,'($1)')

看起来简单易懂,因为从左到右的习惯,更能一目了然,所以,BT语言的语法借鉴了一些编程语言的语法优点,这很可贵。

Web端开发中,PHP的巨大优势是基于脚本解释,所见即得,不需要编译,而Java,Go 语言等任何的改动都需要编译运行,项目越大,编译时间越长,我认为这是脚本语言的优势。

而BT语言即是一门解释型语言,也是编译型语言,意思是她可以当做脚本执行,就跟Python和PHP一样,当然也可以直接编译成二进制的可执行文件,也可以像Java一样,编译成jar,虚拟运行。

所以BT语言在众多开发领域中是具有巨大的优势的。

BT语言可以用来快速开发Web网站,因为其独特的纯洁性,她不依赖Apache、Nginx这些Web服务器,只需要编写几行简单的BT代码,就可以配置好域名、SSL证书以及项目目录的绑定。

BT语言不像PHP只服务于Web,BT可以开发桌面软件,如果做为BT脚本,那么她可以直接被运行,还可以嵌入常见的主流程序语言中被调用,就像Python一样,因为编译器只有一个简小的可执行文件,可直接通过命令行或外部执行函数调用她。

BT是跨平台的,可以运行在Windows、Linux、macOS等多个操作系统上运行,而不需要对代码进行大量修改。

目前BT语言只实现了对脚本的解释运行,编译机制会在后面的版本逐渐完善。

如果你对BT语言好奇的话,不放试一试吧,从上面提到的官网链接中下载你所用系统的编译器,然后解压并直接执行编译器,windows系统的用户,可以直接打开 bt.exe 文件,编译器会默认执行当前目录的 main.bt 文件。

如果你本机安装了 vscode 的话,再好不过,因为BT语言官网为使用 vscode 编辑器的用户开发了针对BT语言的扩展:bt-lang,可以直接在扩展中搜索下载。

接下来让我们欣赏一下BT语言的魅力吧!

经典的开场白:

print 'hello world'

在BT语言中,我们不需要使用分号,直接换行即可(或者使用空格)

声明变量

name = 'Nina'
age = 26
sex = "Girl"

没错,BT中声明变量就是这么简单,你无需像Java与C语言那样声明变量类型,也无需像JavaScript那样使用var和let前缀来声明。
在BT中,同一个变量可以重复赋值不同的数据类型,例如:

data = 'Nina'
data = 26
data = true

你也可以这么写,BT的魔性语法:

// 可以直接写成一行
name = 'Nina' age = 26 sex = "Girl"
// 也可以多条语句之间用逗号分割
name = 'Nina', age = 26, sex = "Girl"

是不是很自由?

x = 120
y = x * (20 - 10 / 2)
z = x + y
print z

在BT语言中,print和println都是用于输出数据,相当于PHP中的print,区别在于println是换行打印

声明常量
在BT语言中,声明常量的要求是首字母为大写即可,只要满足这个条件,定义的便是常量,如此简单,示例:

Name = 'Lisa' //常量
NAME = 'Rita' //常量
_Name = 'Susan' //变量,因为第一位不是字母
// 注意,这里并不会报错
Name = 'Tali' // 此时Name的值仍然为Lisa,而不是Tali

数据类型
BT语言中的基础数据类型:
Int 整数
Float 浮点
Bool 布尔
Str 字符
Array 数组
Object 对象

还有一些其他数据类型,例如:
Fn 函数
Class
File 文件对象
Date 时间对象

还有很多其它的类型,这里不一一举例。

我们通过变量来写一下这些数据类型:

a = 123
b = 58.99
c = -133.789
d = true
d1 = 'hello'
d2 = "hello"
d3 = `hello`
d4 = `
    很惊讶吗?
    我可以多行!
    我可以像JS一样插入变量,例如:${d2}
`
e1 = ['手机', '电脑', '平板', '手表']
e2 = ['价格', 1299.99, e1, a, b, c]
f = {
    title: '标题',
    content: '内容',
    tag: ['自由', '富强', '文明', '和谐']
}
g = [
    {
        id: 1,
        title: '标题'
    },
    {
        id: 2,
        title: '标题'
    }
]

上面的代码示例是按照标准JS语法编写的,为了展示BT的变态和魔性,来,请看下面的数组和对象的示例:

title = '变态'
arr = ['手机' 521 title, true if title{
    999
}]
obj = {
    789: 199.999
    199.999: 789
    '呵呵': '该死的魅力'
}
println arr
println obj

BT语法跟Javascript类似,但她声明变量不需要使用var和let,这个吸取的是PHP的语法,然而BT也有let关键字,let主要用于声明当前作用域变量,而与全局变量分开看一下声明函数:

// 这是一个简单的函数声明
fn add(a, b){
    a + b
}
print add(1, 2)

// 给参数a和b添加默认参数
fn add(a=10, b=20){
    a + b
}
print add(20)
// 也可以使用赋值的方式声明函数,其实这个没啥意义,你喜欢就好,因为在bt中,上面的函数声明是可以重复声明的
add = fn(a){
    return a
}
print add(123)


具体其它的语法可查阅官网的文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值