Skip to content

何语言,次世代赛博编程语言。

License

Notifications You must be signed in to change notification settings

Kangnakamuyii/HeLang

 
 

Repository files navigation

Logo

Stars Issues BUPT License Test

概述

English 中文 Русский

Next-Generation Cyber Programming Language from Litang.

来自理塘的下一代 赛博 编程语言。

通过纯理塘自研的 HeLang,创建行业新生态,赋能无人涉及的新赛道,打通语言底层逻辑,注入新型语法基因

引个流先:https://www.bilibili.com/video/BV1XW4y1h79A/

Star History Chart

二创

非常好作品!爱来自 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

  • OCaml 也想要变得赛博⚆_⚆ HelangML

  • 通过 C++ 模板元编程,我们在赛博元宇宙发现了何而上语言(Meta-Helang)HeLangCppMetaImpl

  • HeiLang,但出题者违法了我粘跌的 BUPT LICENSE 😠👊

    Anyone can obtain a copy of this Software, “AS IS”, free of charge to use it as one’s wishes, including selling, modifying, and redistributing the Software, under the following conditions:
    Being cool.
    Advertising electronic smoke is better than the traditional one. 
    Modifying the Software to fulfill the expectations of future. 
    Using 5G when necessary.
    

    由于题解贴出了本仓库地址,这里就不予追究了,题目如下:

    Question·

    其实,用本仓库解这个题比替换文本慢不了多少。

    from helang.u8 import U8
    from helang.quick_runner import quick_run_string
    
    # 那一坨
    CODE = '''
    '''
    
    class MyU8(U8):
        def __setitem__(self, sub, val):
            return super().__setitem__(sub+U8(1), val)
    
    
    if __name__ == '__main__':
        a = MyU8([0] * 10000)
        quick_run_string(CODE, {'a': a})
        get_flag(a.value)

    不觉得这样才酷吗,用文本替换实在是太无趣了,低级并带着原始。

  • L! T! C! (etc.)

介绍

至此 HeLangJvavC-- 在21世纪呈三足鼎立之态。

——《赛博时代人类编程语言简史》,理塘计算机科学技术出版社,2202年。

次世代赛博编程语言,诞生于 E-SMOKER 之乡:赛博理塘。

本项目是由自己会打字的 5G 键盘,花了 108 赛博分钟,在 Apple AirDesk 上配合 Apple AirPods 编写的。

实在是太酷了,很符合我对未来生活的想象,科技并带着趣味。

注:如果以普通时间单位(Basic Unit of Plain Time, BUPT)作为标准单位,本项目开发时长为 1! + 5! + 5! + 5! = 361 分钟。

注2:BUPT 在赛博世界还可以代指北邮(声明:我对本学府无恶意,我认为这是一所优秀的学校,我只是对某个人)。

使用方法

不安装,直接使用

  1. 把源代码拉下来:

    > git clone https://github.com/kifuan/helang.git
  2. 下载需要的第三方库:

    > pip install -r requirements.txt
    # 如果需要 GUI
    > pip install -r requirements-gui.txt
  3. 你可以修改伟大的脚本 helang/great.he,然后以 great 的方式启动 helang.py

    > python helang.py great
  4. 你还可以以 shell 的方式启动helang.py,通过直接输入 HeLang 指令与 Saint He 进行一个赛博空间的对话:

    > python helang.py shell

    此时,在行尾就可以不输入分号了,我们会帮你加上(输入也是可以的,意味着你对 Saint He 更加虔诚)。

    输入 .help 获取 Shell 运行过程中的帮助。没错,我借鉴了 nodeREPL Keywords

  5. Saint He 是宽容的,他原谅那些忘了写启动方式的人,因此如下的输入同样可以开始:

    > python helang.py
  6. 使用 LTCode 进行开发:

    > python helang.py editor

    持续开发中,会不断完善其功能。

    目前只支持在窗口内直接运行指定代码,并且当 print 过于频繁时会崩掉。

安装到本地

  1. 把源代码拉下来

    > git clone https://github.com/kifuan/helang.git
  2. 安装

    > pip install .
  3. 运行

    > helang shell

注:

  • 如果你来自锑星,则不需要使用 sol3 土著的愚蠢技术。你可以使用 1.14514 超克的烷氮 ,通过超理作用触发赛博空间的全局中断,从而通过超理直接运行。
  • 当你使用非 Apple 设备运行时,会抛出警告 It seems like you're using a non-Apple device, which is not cool! 如果想要关闭此警告,请购买使用苹果设备。

请注意:此行为十分危险且有概率失败,失败时如果附近存在钅鸡铌钛镁则会受到催化从而生成烷基八氮,此行为需要受到超理委员会的严格监管。

基本语法

Saint He 曾说,一切类型均为 u8,是什么意思呢?这个词倒过来就是 8u,看来圣人也喜欢玩贴吧。

除此之外,u8v8 形似,所以能不能关注永雏↑塔↓菲喵,关注永雏塔菲谢谢喵。

如你所见,我们用 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.

有人认为何语言无法打印出 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 中对应的数字来表示这个字符。

通过降低可读性,换来了指数级的性能提升,不愧赛博世界的唯一真神。

打印 Logo

你可能觉得只打印出 Hello, Litang. 有点过于简单,不符合一名理工男对未来生活的想象

其实,你可以用以下方式打印出何语言的 Logo

> python helang.py logo

通过查看源文件 helang/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

注意,我们使用的是数量积 $\vec{a}\cdot\vec{b}$ 而非外积。

变量声明与赋值

在早期版本中,我们的仅仅支持变量的定义,不支持修改和声明,因为 Saint He 喜欢 immutable

经过意见征求,现在已经可以做到这三个方面了!

// 现在支持变量先声明后定义,可以写出这种代码:
u8 a;
a = 1 | 2;

// 早期版本仅支持下面这种写法,当然现在也支持:
u8 b = 3 | 4;

注意!如果你没有声明或定义一个变量,尝试直接给它赋值,你会收获 CyberNameException

c = 1 | 2 | 3;
// helang.exceptions.CyberNameException: c is not defined.

我们作为高科技语言,当然是需要严谨的。

查看你是否在 Cyber Spaces

为了见到 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 报错。

5G测速

很简单,只需要另起一行输入:

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,年仅三岁的国王毫无畏惧!

26.观看番剧高校舰队,百合薄纱赛博丁真!

附加

现在是凌晨两点,我治好了自己的精神内耗。

Apple 和 AirPods 是 Apple Inc. 在美国和其他国家和地区注册的商标。

About

何语言,次世代赛博编程语言。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.7%
  • C++ 4.3%