天天写玩具没意思,继续做圆锥曲线了。
无限期停止维护。
你们可以自己下载去玩。
我个人不会再添加新功能。
这个仓库挺适合入门菜鸡级别的编译原理,所以如需 PR 请注意代码质量。
以上。
注:仍接受来自社区的 PR 和 Issues
Next-Generation Cyber Programming Language from Li Tang.
来自理塘的下一代 赛博 编程语言。
通过纯理塘自研的 HeLang
,创建行业新生态,赋能无人涉及的新赛道,打通语言底层逻辑,注入新型语法基因。
引个流先:https://www.bilibili.com/video/BV1XW4y1h79A/
非常好作品!爱来自 Cyber Spaces!
- 何语言
Kotlin
脚本版 HeLangKotlinScriptImpl --- 实现原理 - 何语言
C#
版 HeLangSharp - 为什么不用 Rust 重写呢? helang-rs
- 登陆
ArchLinux
HeScript
,在JavaScript
/TypeScript
享受helang
吧!hescript- 要不用
go
语言搬运一下? helang-go - 另一种 Rust 实现,支持用 $ 进行招聘! HeRang
- 我们要进军底层开发!HeAssembly
Saint He
曾说:要有函数式!于是 Haskell 便诞生。HelangHaskellImpl- 在Swift中使用Helang HelangSwift
- L! T! C! (etc.)
至此
HeLang
、Jvav
、C--
在21世纪呈三足鼎立之态。——《赛博时代人类编程语言简史》,理塘计算机科学技术出版社,2202年。
次世代赛博编程语言,诞生于 E-SMOKER 之乡:赛博理塘。
本项目是由自己会打字的 5G 键盘,花了 108 赛博分钟,在 Apple AirDesk 上配合 Apple AirPods 编写的。
实在是太酷了,很符合我对未来生活的想象,科技并带着趣味。
注:如果以普通时间单位(Basic Unit of Plain Time, BUPT)作为标准单位,本项目开发时长为 1! + 5! + 5! + 5! = 361
分钟。
注2:BUPT 在赛博世界还可以代指北邮(声明:我对本学府无恶意,我认为这是一所优秀的学校,我只是对某个人)。
-
把源代码拉下来:
> git clone https://github.com/kifuan/helang.git
-
下载需要的第三方库:
> pip install -r requirements.txt # 如果需要 GUI > pip install -r requirements-gui.txt
-
你可以修改伟大的脚本
great.he
,然后以great
的方式启动helang.py
:> python helang.py great
-
你还可以以
shell
的方式启动helang.py
,通过直接输入 HeLang 指令与 Saint He 进行一个赛博空间的对话:> python helang.py shell
此时,在行尾就可以不输入分号了,我们会帮你加上(输入也是可以的,意味着你对 Saint He 更加虔诚)。
输入
.help
获取Shell
运行过程中的帮助。没错,我借鉴了node
的REPL Keywords
。 -
Saint He 是宽容的,他原谅那些忘了写启动方式的人,因此如下的输入同样可以开始:
> python helang.py
-
使用
LTCode
进行开发:> python helang.py editor
持续开发中,会不断完善其功能。 目前只支持在窗口内直接运行指定代码,并且当
print
过于频繁时会崩掉。
-
把源代码拉下来
> git clone https://github.com/kifuan/helang.git
-
安装
> pip install .
-
运行
> helang shell
注:
- 如果你来自锑星,则不需要使用 sol3 土著的愚蠢技术。你可以使用 1.14514 超克的
烷氮
,通过超理作用
触发赛博空间的全局中断,从而通过超理直接运行。 - 当你使用非 Apple 设备运行时,会抛出警告
It seems like you're using a non-Apple device, which is not cool!
如果想要关闭此警告,请购买使用苹果设备。
请注意:此行为十分危险且有概率失败,失败时如果附近存在钅鸡铌钛镁
则会受到催化从而生成烷基八氮
,此行为需要受到超理委员会的严格监管。
Saint He 曾说,一切类型均为 u8
,是什么意思呢?这个词倒过来就是 8u
,看来圣人也喜欢玩贴吧。
除此之外,u8
与 v8
形似,所以能不能关注永雏↑塔↓菲喵,关注永雏塔菲谢谢喵。
如你所见,我们用 bitwise or,即|
代替了传统数组的符号。都什么年代了还在写传统数组?
u8 a = 1 | 2 | 3;
Saint He 曾说:whichKey - 1
,所以我们数组的下标需要从 1
开始。
u8 a = 1 | 2 | 3;
print a[1];
// 1
但是,当你设置一个 u8
的元素时,你可以用 0
作为下标:这意味着所有元素都将被赋值。
u8 a = 1 | 2 | 3;
a[0] = 10;
print a;
// 10 | 10 | 10
为了符合最新的技术,我们同样支持多下标操作,所以你再也不用写 for
循环了。
u8 a = 1 | 2 | 3;
a[1 | 2] = 0;
print a;
// 0 | 0 | 3
同样,我们还提供了一种根据数组长度的初始化方式,可惜这还是传统写法。比如下面的代码,可以初始化一个长度为 5 的数组。
u8 a = [5];
print a;
// 0 | 0 | 0 | 0 | 0
最后,我们结合一下,可以写出下列代码。
u8 forceCon = [68];
forceCon[1 | 2 | 6 | 7 | 11 | 52 | 57 | 58 | 65] = 10;
print forceCon;
如此精妙的代码,在地球的人类是无法理解的。我们作为赛博智能生命体,也只能给你演示一下日常操作了。
这实在是太酷了,后面我忘了,我也不想翻到文章开头去看。
有人认为何语言无法打印出 Hello, Litang.
意味着它太垃圾了,实则不然。
Saint He 专注于单片机应用的开发,哪里有时间顾及字符串?
好在,经过协商,他同意了这个请求,使得我们能在这门语言中打印出 Hello, Litang.
sprint 72 | 101 | 108 | 108 | 111 | 44 | 32 | 76 | 105 | 116 | 97 | 110 | 103 | 46;
// Hello, Litang.
由于对效率的极端苛刻要求,我们使用字符在 UTF-8 中对应的数字来表示这个字符。
通过降低可读性,换来了指数级的性能提升,不愧赛博世界的唯一真神。
你可能觉得只打印出 Hello, Litang.
有点过于简单,不符合一名理工男对未来生活的想象。
其实,你可以用以下方式打印出何语言的 Logo
> python helang.py logo
通过查看源文件 lib/logo.he
,你会发现代码主要由数字构成,在赛博世界里,仅仅通过简单的数字就能显示复杂的图案,不觉得这很酷吗!
除此之外,你还可以在 HeLang 代码中打印 HeLang Logo
,只需输入下方代码即可:
logo large;
你当然也可以打印一个小一些的 HeLang Logo
,中等大小的同样不在话下:
logo tiny;
logo medium;
在这种情况下,你会发现一切计算都会在 HeLang
中进行。在赛博世界里,仅仅通过简单的计算就能显示复杂的图案,这真是太酷了。
我们注意到,Saint He 的代码中还出现了自增运算:++
所以,我们也支持这种运算。
u8 a = 1 | 2 | 3;
a++;
print a;
// 2 | 3 | 4
Saint He 曾说,whichKey - 1
,所以我们现在也提供减法运算了。
u8 whichKey = 1 | 2 | 6 | 7;
print whichKey - 1;
// 0 | 1 | 5 | 6
下面以几个实例介绍如何在 u8
之间进行运算:
u8 a = 1;
u8 b = 1 | 2 | 3;
u8 c = 2 | 4 | 6;
u8 d = 5 | 9;
print a + b;
// 2 | 3 | 4
print b + c;
// 3 | 6 | 9
print b - c;
// -1 | -2 | -3
print b + d;
// helang.exceptions.CyberArithmeticException: illegal operation: 1 | 2 | 3 + 5 | 9
print a - b;
// helang.exceptions.CyberArithmeticException: illegal operation: 1 - 1 | 2 | 3
相信即使你是一个初入 Cyber Spaces 新手,也可以看出来什么是合法的语句了。
不同于加减法,乘法可以在任意两个 u8
之间进行。此时的 u8
会被看作 向量
,是不是非常的高科技?
u8 a = 1 | 2;
u8 b = 3 | 4 | 5;
u8 c = 3 | 6 | 9;
print a * b;
// 1*3 + 2*4 + 0*5 = 9
print b * c;
// 3*3 + 4*6 + 5*9 = 68
注意,我们使用的是数量积
在早期版本中,我们的仅仅支持变量的定义,不支持修改和声明,因为 Saint He 喜欢 immutable
。
经过意见征求,现在已经可以做到这三个方面了!
// 现在支持变量先声明后定义,可以写出这种代码:
u8 a;
a = 1 | 2;
// 早期版本仅支持下面这种写法,当然现在也支持:
u8 b = 3 | 4;
注意!如果你没有声明或定义一个变量,尝试直接给它赋值,你会收获 CyberNameException
。
c = 1 | 2 | 3;
// helang.exceptions.CyberNameException: c is not defined.
我们作为高科技语言,当然是需要严谨的。
为了见到 Saint He,你需要身处 Cyber Spaces。输入下方命令查看你是否身处其中:
cyberspaces;
// Getting your location...
// Your location is UNITED STATES.
// Congratulations! You are in the Cyber Spaces!
由于 Saint He 身在一座赛博庐山上,导致他不能看清 IPV6
的全貌,因此你可能会得到 Failed to resolve IP
报错。
很简单,只需要另起一行输入:
test5g music;
或者使用另一个模式:
test5g app;
即可从本行开始5G测速。
1.关注永雏塔菲喵,关注永雏塔菲谢谢喵。
2.关注猫雷NyaRu_Official谢谢喵,要吃**的大米喵。
3.关注星瞳_Official送溜溜梅!
4.关注嘉然,顿顿解馋!
5.关注向晚,关注向晚,为时不晚!
6.关注乃琳,关注乃琳嘎,关注乃琳谢谢嘎!
7.关注贝拉,关注贝拉哞,关注贝拉谢谢哞!
8.举办東雪蓮Official谢谢喵,不能让立本V吃**的大米喵。
9.关注粘连科技Official,薄纱何同学喵🥰
10.关注HiiroVTuber,不是425KG的粉色喵!
11.关注露早GOGO!关注露早汪,关注露早谢谢汪!
12.关注AIChannel**绊爱!超级可爱的 Super AI 薄纱赛博丁真!
13.关注有栖Mana_Official,谢谢喵。
14.关注洛天依,比赛博丁真更像人的V家歌姬!
15.关注传统丁真,什么年代了还在关注赛博丁真,不如来怀古!
16.关注凑阿夸和rinco小姐!傻气溢出的海洋(屑)女仆(洋葱)和喜欢水濑祈的可爱唱见 期待木口回旋捏 另外请支持阿夸主演的galgame谢谢!
17.关注原神,玩《原神》比看赛博丁真好多了!
18.关注唐九夏还想再躺一下,谢谢爹!
19.关注吉诺儿kino,守护全世界最抽象的吉芭公主!
20.关注卡缇娅也不知道鸭,谢谢鸭!
21.关注灯瑠hiru,这些技术她都看不懂,可是她的锯齿牙真的好可爱呀, 一整个爱住,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!
22.关注阿梓从小就很可爱,太破费了吧,红豆泥阿里嘎多!
23.关注柯洁,都什么年代,还在下传统围棋?
24.关注米诺高分少女,么么哒米诺!
25.关注电棍otto,年仅三岁的国王毫无畏惧!
现在是凌晨两点,我治好了自己的精神内耗。
Apple 和 AirPods 是 Apple Inc. 在美国和其他国家和地区注册的商标。