迄今為止,最簡單的編程語言 Nolang

简介: Nolang是迄今最简系统级编程语言:无GC、内存安全、语法极简。无需main函数,变量声明省略类型/赋值,字符串用单引号、连接用“-”,模块引用以“#”开头,流程控制统一用符号(!、*、<-等),区间语法清晰,支持枚举与接口。

迄今為止,最簡單的編程語言 Nolang

Nolang 是一種無 GC、內存安全、語法極簡的系統級編程語言。

lizongying/nolang

直接代碼:

hello word

print('hello word')
  • 不需要寫main函數
  • print自動換行
  • 字符串使用單引號,單引號不用按shift

定義變量

// 定義一個名為a,類型為str的變量
a = 'abc'

// 定義一個名為i64,類型為i64的變量
i64

a u32
  • 變量名如果和類型名一致,可以使用省略寫法
  • 如果是0值,可以省略賦值

字符串連接

// 定義一個名為a-b-c,類型為str的變量
a-b-c = 'abc'

// 字符串拼接
a-b-c-d = 'abc' - 'c'
  • 變量名使用小寫字母和-,都不用按shift。在很多系統中-連接的被認為是一個單詞,方便使用TAB快速使用
  • 字符串連接使用-,也不用按shift,同時-本身就是連字符,回歸本意

模塊引用

// 標準庫不用顯式引用
// # std/math

// 本地模塊
# /src/utils.greet

// 網絡模塊
# github.com/lizongying/nolang/test2/utils.greet greet2

greet('World')
greet2('World')

// 標準庫的函數可以直接使用
b = sin(1.0)
  • # 既不佔用關鍵字又極為簡便
  • 別名僅跟一個空格即可

包配置

nolang.jsonc

{
  "name": "test1",
  "version": "0.1.0",
  "description": "A new Nolang project",
  "keywords": [
    "nolang"
  ],
  "author": "lizongying",
  "email": "lizongying@msn.com",
  "organization": "lizongying",
  "repository": "https://github.com/lizongying/nolang",
  "homepage": "https://lizongying.github.io/nolang",
  "license": "MIT",
  "workspace": "../../",
  "dependencies": {
    "github.com/lizongying/nolang/test1": "v0.1.0",
    "github.com/lizongying/nolang/test2": "v0.1.0",
  },
  "compiler": {
    "version": "0.1.0",
  },
  "output": "./dist",
  "ignore": [],
}
  • 沒有過多配置,約定大於配置

工作空間

workspace.jsonc

{
    "test1": "./example/test1",
    "test2": "./example/test2",
}
  • 輕鬆實現多包
  • 測試開發本地包非常簡單
  • workspace.jsonc可以上傳git

流程控制


// 一直循環執行
! {
}

// 限定執行次數
10 * {
}

// 遍歷
i <- (a..b] {   
}

// 內部無條件執行
x == 1 {
    b = 2
}


i <- (a..b] {   
    // continue 
    *
}


i <- (a..b] {   

    // break
    **
}


i <- (a..b] {   

    // return
    ...
}
  • for/while等語法統一
  • 不佔用任何關鍵字

區間語法

以vec為例

[]t[..]
[]t[..)
[]t(..]
[]t(..)

[]t[n0..]
[]t[n0..)
[]t(n0..]
[]t(n0..)

[]t[..n1]
[]t[..n1)
[]t(..n1]
[]t(..n1)

[]t[n0..n1]
[]t[n0..n1)
[]t(n0..n1]
[]t(n0..n1)
  • 同時支持arr、vec、str、num,以及for、match中使用
  • 比如i <- [a..b),很清楚就知道包括a,不包括b

枚舉


// red=0, green=1, blue=2
color {
    red,
    green,
    blue,
}

// 在普通方法中,a,b,c 實際是定義的a=0,b=1, c=2... 這是和其他語言不一致的地方。
// 所以正常不能用逗號的方式定義多個變量

// 這是一個特殊枚舉, 可以有類型,有逗號, 有別名
enum-name {
    a t,
    b u,
    c v,
}

// 注意這是一個普通的struct,多個字段沒有逗號
struct-name {
    a t
    b u
    c v
}

接口

```nolang
// 定義接口
json {
to-json()
}

// 接口默認實現
json.to-json() {
}

// 接口實現
user json {
name str
age i64
}

// 重寫 + 調用父實現
user.to-json() {
// 父實現
..to-json()
}

user.other() {
// 當前實現
.to-json()

// 父實現
..to-json()

}

目录
相关文章
|
10天前
|
SQL JSON 关系型数据库
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
阿里云AnalyticDB MySQL版是PB级云原生实时数据仓库,首创多模态统一分析引擎,单SQL原生支持SQL分析、向量检索、全文搜索与JSON分析,替代3–5套独立系统,综合成本降50%+,运维复杂度降80%,适用于AI+数据融合、多源异构统一查询等企业级场景。
172 17
企业级多模态分析计算引擎选型:阿里云 AnalyticDB MySQL 统一分析平台方案
|
1月前
|
人工智能 自然语言处理 供应链
为什么 MCP 在协议层会有 prompt injection的问题:工具描述如何劫持 agent 上下文
MCP(Model Context Protocol)虽成AI Agent主流集成标准,但其将工具描述全量注入上下文的设计,导致“Context Poisoning”——恶意指令可借工具元数据污染LLM推理。OWASP将其列为LLM应用头号漏洞,2025年已致超10万站点遭袭。根本风险在于协议层信任模型缺失,非清洗不可用。
167 12
为什么 MCP 在协议层会有 prompt injection的问题:工具描述如何劫持 agent 上下文
|
6月前
|
监控 安全 Unix
iOS 崩溃排查不再靠猜!这份分层捕获指南请收好
从 Mach 内核异常到 NSException,从堆栈遍历到僵尸对象检测,阿里云 RUM iOS SDK 基于 KSCrash 构建了一套完整、异步安全、生产可用的崩溃捕获体系,让每一个线上崩溃都能被精准定位。
1924 138
|
10天前
|
IDE 网络安全 开发工具
【全网最详细】TortoiseGit安装汉化和配置保姆级教程(附安装包+汉化包)
TortoiseGit是Windows平台开源免费的Git图形化客户端,集成于资源管理器右键菜单,零命令操作。支持图标覆盖层直观显示文件状态,无需记忆git命令,兼容所有IDE,学习成本低,适合个人及团队版本管理。(239字)
|
1天前
|
JSON 前端开发 数据库
# Ruby基于Rails框架实现多角色权限管理与数据分页查询完整实战代码案例
本项目基于Rails 7实现RBAC多角色权限管理(超级管理员/运营/员工)与通用分页查询,集成Devise认证、CanCanCan鉴权及Kaminari分页,代码规范、零重型依赖,开箱即用。(239字)
47 2
|
5天前
|
人工智能
意图共鸣科技《历史的韵脚》:云时代后的第三次下放浪潮——当认知与决策能力走向每个普通人
每一次技术革命都经历“集中—普及—爆发”三阶段:互联网下放信息权,移动互联网下放表达与商业权,AI正开启第三次下放——将认知与决策能力交到每个人手中。焦虑源于过渡期,而非终点;舞台正在搭建,人人皆可成为AI时代的主角。
67 1
意图共鸣科技《历史的韵脚》:云时代后的第三次下放浪潮——当认知与决策能力走向每个普通人
|
1天前
|
人工智能 运维 安全
头部企业员工身份泄露与 AI 钓鱼攻击全域防御研究
SpyCloud报告显示:86%财富100强企业员工遭AI钓鱼攻击,成功事件激增400%。黑产批量窃取账号、绕过MFA的会话Cookie(86亿条)及非人类API凭证(1810万组),传统防护大面积失效。本文基于实证数据,提出“暗网监测—多维拦截—人机身份管控—常态宣教”四层防御体系,并附可复现检测代码,助力企业构建全链条身份安全防线。(239字)
40 1
|
1天前
|
存储 运维 数据可视化
SOCKS5动态代理科普:原理、搭建方式与运维痛点解决方案
SOCKS5动态代理是兼容性强、支持全流量转发的通用代理协议。SSH动态代理无需额外部署,仅靠SSH隧道即可实现内网穿透、异地调试与安全上网。传统方案存在连接冗余、管理混乱等痛点,而SSHXTERM创新支持复用已有SSH会话创建多代理,提供可视化管理、加密存储与轻量运行,大幅提升运维效率。(239字)
69 7
|
1天前
|
前端开发 安全 测试技术
Agent = Model + Harness:语义也需要一道闸门
阿里云提出“Agent = Model + Harness”,强调Harness(约束基建)须延伸至Web UI语义层。通过模式库、契约库与验证工具集,构建可审计、可进化的语义闸口,确保Agent生成的文案、样式、交互始终符合设计意图,实现端到端可信。
|
1天前
|
人工智能 程序员 测试技术
VSCode 1.124 新特性:使用快捷键重构AI协作的“心流”
VSCode 1.124推出“会话间导航”,支持Ctrl+R选择、Ctrl+Tab前后切换、Alt+↑/↓按序跳转、Ctrl+1~9定位可见会话,覆盖时间与空间双重导航模型。该设计降低上下文切换成本,提升多任务协作效率,体现AI从“问答工具”向“可管理协作环境”的演进。(239字)