diff --git a/README.md b/README.md index 6bb2763b35adcb9f265854559a0bd0ed1ff46620..87d2d98840bd98ebfd27f3b0101068a6755ae8b1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,12 @@ # 《国产编程语言蓝皮书-2023》 +《国产编程语言蓝皮书-2023》已编制完成,PDF格式:[https://gitee.com/ploc-org/CNPL-2023/raw/master/%E5%9B%BD%E4%BA%A7%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E8%93%9D%E7%9A%AE%E4%B9%A6-2023.pdf](https://gitee.com/ploc-org/CNPL-2023/raw/master/%E5%9B%BD%E4%BA%A7%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80%E8%93%9D%E7%9A%AE%E4%B9%A6-2023.pdf) + +> 勘误: +> 1. P7,“Calcit 可可以直接解释执行……”应为“Calcit 可以直接解释执行……” + +--- + 本仓库是《国产编程语言蓝皮书-2023》(以下简称蓝皮书)编撰工作区。 蓝皮书编委会是编程语言开放论坛(PLOC)下属的专业委员会,经PLOC 2号提案授权成立,提案地址:[https://gitee.com/ploc-org/CPLOC/issues/I8QKWQ](https://gitee.com/ploc-org/CPLOC/issues/I8QKWQ) @@ -27,8 +34,3 @@ 2024/1/14,《国产编程语言蓝皮书-2023》编委会会议纪要: [https://gitee.com/ploc-org/CPLOC/blob/master/%E4%BC%9A%E8%AE%AE%E7%BA%AA%E8%A6%81/20240114.md](2024/1/7,《国产编程语言蓝皮书-2023》编委会大会会议纪要: ) - ---- - -### 《国产编程语言蓝皮书-2023》意见征集稿 -[https://gitee.com/ploc-org/CNPL-2023/blob/master/pre.md](https://gitee.com/ploc-org/CNPL-2023/blob/master/pre.md) \ No newline at end of file diff --git a/pre.md b/pre.md deleted file mode 100644 index 6a0dfefc5c5f23f3a90232f23a9be87e8833e718..0000000000000000000000000000000000000000 --- a/pre.md +++ /dev/null @@ -1,100 +0,0 @@ -版权声明: -特别顾问: -策划: -编辑: -支持单位:Gitee - -# 前言 - -## 背景 -编程语言是软件业的工业母机、编译器技术是信息产业的根技术,各种编程语言被用于操作系统、数据库管理系统、网络服务、工控设备、应用程序等的开发,渗透到了所有现代产业和服务领域。尤其是信息产业创新空间的持续扩展、系统复杂度的持续上升、开发成本的持续降低,都直接受益于不断涌现的编程语言和编译技术。迄今为止,国内几乎没有出现被广泛使用的编程语言,这与我国世界性工业大国、科技大国的地位相去甚远。 - -工业和信息化部发布的《“十四五”软件和信息技术服务业发展规划》中提到,应“强化基础组件供给……加快突破编程语言开发框架”;中国软件行业协会发布的《中国软件根技术发展白皮书(基础软件册)》第四章专门对编程语言和编译器的重要性、发展态势等进行了归纳。这些文件说明编程语言相关产业的发展获得了政策支持。信息技术在我国经过多年发展积累,已形成从业人数近千万的大型产业,对编程语言这一基本工具的需求本就非常强烈;而大语言模型、国产芯片等新兴方向的井喷式增长更是对编程语言提出了很多全新的需求。 - -回顾历史不难发现,与其他产业不同,作为信息产业的核心,编程语言的成功案例充满了偶然性。目前广泛使用的编程语言和开发工具,既有由大型企业推动的商业项目,也有由个人发起的开源项目;既有以KPI为驱动的商业产品,也有由兴趣驱动的产品。当前国内的根软件行业也正呈现出项目高度分散的趋势,企业、开源社区发起了大量不同类型、用于不同领域的新兴编程语言项目。 - -基于上述背景,编程语言开放社区(PLOC)编写了《国产编程语言蓝皮书-2023》(即本文,以下简称蓝皮书),力争全面的收纳国内已具备一定可用性的、活跃的编程语言项目,为业界提供一份客观的国产语言全景图。 - -## 收录标准 - -符合以下条件的项目可在蓝皮书工作区仓库中通过PR发起申报: -1. 项目由国内的企业、社区或个人发起和维护 -2. 项目符合项目分类标准(见后) -3. 项目满足基础可用且能够被编委会独立验证具备可验证的可用性 -4. 面向公众开放 -5. 项目处于活动状态 - -蓝皮书工作区仓库地址:https://gitee.com/ploc-org/CNPL-2023 -> 《国产编程语言蓝皮书-2023》编委会对上述标准拥有最终解释权。 - -## 收录方法 - -蓝皮书中收录的项目均为自主申报,满足收录标准的项目方可在 https://gitee.com/ploc-org/CNPL-2023/tree/master/projects 目录中增加项目同名目录,将项目简介等资料以 markdown 格式填入其中,填写要求及案例见:https://gitee.com/ploc-org/CNPL-2023/tree/master/projects/sample 。 -发起申报 PR 后,编委会将审核项目资料,期间请保持项目地址及网站等可正常访问、联系方式可用;编委会委员将与您联系,确认项目资料准确无误,若您对于某些选项该如何填写存在疑问,亦可在此时与编委沟通。当您发起申报时,视同您已获得该项目所有者许可,并授权编程语言开放社区(PLOC)在蓝皮书中展示该项目的名称、图标等信息。 - -## 项目分类方法 -语言类项目分类标签: -- 付费/免费 -- 开源/闭源 -- 通用/专用 -- 是否接受社区贡献 -- 语言类别(详细清单见 附录一语言类别列表) -- 工具类别(详细清单见 附录二工具类别列表) -- 应用领域(详细清单见 附录三应用领域列表) - -工具类项目分类标签: -- 付费/免费 -- 开源/闭源 -- 是否接受社区贡献 -- 工具类别(详细清单见 附录二工具类别列表) -- 应用领域(详细清单见 附录三应用领域列表) - - -# 项目列表(Todo) - - -# 附录 - -## 附录一语言类别列表 -a. 一般编程语言(General Programming Languages) -b. 并行语言(Parallel Programming Languages) -c. 并发语言(Concurrent Programming Languages) -d. 分布式语言(Distributed Programming Languages) -e. 命令式语言(Imperative Languages) -f. 面向对象语言(Object Oriented Languages) -g. 函数式语言(Functional Languages) -h. 约束和逻辑语言(Constraint and Logic Languages) -i. 数据流语言(Data Flow Languages) -j. 可扩展语言(Extensible Languages) -k. 汇编语言(Assembly Languages) -l. 多范式语言(Multiparadigm Languages) -m. 高级编程语言(Very High Level Language) - -## 附录二工具类别列表 -a. 一般编译工具(General Compilers) -b. 解释器(Interpreters) -c. 增量编译器(Incremental Compilers) -d. 可重定向编译器(Retargetable Compilers) -e. 实时编译器(Just-in-time Compilers) -f. 动态编译器(Dynamic Compilers) -g. 生成器(Translator Writing Systems and Compiler Generators) -h. 代码生成(Source Code Generation) -i. 运行时环境(Runtime Environment) -j. 预处理器(Preprocessors) -k. 解析器(Parsers) - -## 附录三应用领域列表 -a. 通用(General Computation) -b. 计算理论(Theory of Computation) -c. 计算数学(Mathematics of Computing) -d. 网路(Network) -e. 信息系统(Information Systems) -f. 安全(Security) -g. 机器学习(Machine Learning) -h. 人工智能(Artificial Intelligence) -i. 并行计算(Parallel Computing) -j. 并发计算(Concurrent Computing) -k. 分布式计算(Distributed Computing) -l. 建模与模拟(Modeling and Simulation) -m. 计算机图形(Computer Graphics) -n. 行业应用(Applied Computing) diff --git a/projects/Calcit/Calcit.md b/projects/Calcit/Calcit.md index 089516bd33e0fa6947b0422ca03a8a73d3706f17..ebeb0c257b46c6f09464fe2c400b7cc3d0a7b79c 100644 --- a/projects/Calcit/Calcit.md +++ b/projects/Calcit/Calcit.md @@ -10,7 +10,7 @@ 5. 项目简介。 -Calcit 是 Clojure 的方言, 遵循不可变数据结构、前缀表达式、Macros 作为核心设计. 使用 Rust 实现, 能够快速启动和运行. Calcit 可可以直接解释执行, 也可以编译为 JavaScript 代码再执行. +Calcit 是 Clojure 的方言, 遵循不可变数据结构、前缀表达式、Macros 作为核心设计. 使用 Rust 实现, 能够快速启动和运行. Calcit 可以直接解释执行, 也可以编译为 JavaScript 代码再执行. 除了通过 JavaScript 生态的工具链做代码热替换, Calcit 解释器自身也实现了代码热替换功能, 借助增量信息增量更新程序代码, 而无需重新启动进程. 生成代码时配合 ES Modules 等现代前端开发习惯进行了简化, 相比 ClojureScript 方案更轻量, 更易于同 JavaScript 代码混用, 也一定程度降低调试成本. diff --git a/projects/NASL/NASL.md b/projects/NASL/NASL.md index 8039142683b0e2316f3033f7cea955ed002d9f3d..2bc1067ea61cb4ad89c052f883a0d8f79518455f 100644 --- a/projects/NASL/NASL.md +++ b/projects/NASL/NASL.md @@ -3,7 +3,7 @@ 2. 项目图标: -![nasl-logo](./nasl-logo.jpg) +![nasl-logo](./nasl-logo.png) 3. 项目主页:[https://nasl.codewave.163.com/](https://nasl.codewave.163.com/) 4. 项目仓库:基本内源 @@ -11,11 +11,11 @@ **NASL**,全称 Next Application Specific Language,是网易数帆 [CodeWave 智能开发平台](https://sf.163.com/product/lcap?productId=neteasecloud)用于描述 Web 应用的**领域特定语言**。它主要包含两部分:基础语言和 Web 应用特定领域(如数据源、数据查询、页面、流程、权限等)的子语言集合。 -NASL 最主要的特点是使用 CodeWave 智能开发平台的**可视化**编辑器,可**统一设计 Web 应用的页面、业务逻辑、数据、流程等方方面面,并辅有静态检查、全栈调试、AIGC 代码生成、多人协作**等功能: +NASL 最主要的特点是使用 CodeWave 智能开发平台的**可视化**编辑器来**统一设计 Web 应用的页面、业务逻辑、数据、流程等方方面面,并辅有静态检查、全栈调试、AIGC 代码生成、多人协作**等功能: ![nasl-functionalities](./nasl-functionalities.png) -对搭建 Web 应用来说,NASL 及其配套设施开箱即用,**学习门槛低,开发成本少:开发者不需要再学习多门框架、语言(如前端 TypeScript、Vue,后端 Java、Spring),也不需要在他们之间互转数据。 +对搭建 Web 应用来说,NASL 及其配套设施开箱即用,**学习门槛低,开发成本少**:开发者不再需要学习多门框架、语言(如前端 TypeScript、Vue,后端 Java、Spring),也不需要在他们之间互转数据。 NASL 及其配套设施的整体架构图如下: @@ -23,10 +23,10 @@ NASL 及其配套设施的整体架构图如下: 下面分别介绍基础语言、子语言、配套设施。 -**基础语言** NASL 基础语言融合了面向对象、函数式等编程范式的语言特性,有着和大多数通用计算机编程语言一样的表达能力: +**基础语言** NASL 基础语言融合了面向对象、函数式等编程范式中常见的语言特性,有着和大多数通用计算机编程语言一样的表达能力: - 使用静态类型系统,支持常用的原子类型、复合类型、集合类型和数据元类型等。 -- 提供了联合类型(union types)和 match 表达式。 +- 提供了联合类型(union types)和匹配(match)表达式。 - 支持逻辑(函数)定义,逻辑里可使用常见的 if、while、foreach 等控制流和 lambda 表达式。 - 支持命名空间、模块化和依赖机制。 - 提供常用的内置函数标准库。 @@ -38,8 +38,8 @@ NASL 利用可视化对复杂的语言特性做了屏蔽和简化,大大降低 **子语言** NASL 子语言是在基础语言之上,吸收了 Web 应用各子领域的传统编程语言和框架的主要特征而设定的 DSL,其中: - 数据定义子语言用于表达数据库、表、字段和索引等相关概念。 -- 数据查询子语言用于表达筛选、排序、分页和聚合等数据查询的各种场景。 -- 页面子语言主要用于表达页面布局、页面交互和页面样式等各种场景。 +- 数据查询子语言用于表达筛选、排序、分页和聚合等数据查询场景。 +- 页面子语言主要用于表达页面布局、页面交互和页面样式等场景。 - 流程子语言主要用于表达手动任务、自动任务、排他网关等流程领域的相关概念。 @@ -53,9 +53,9 @@ NASL 利用可视化对复杂的语言特性做了屏蔽和简化,大大降低 **部分配套设施** - **Language Server:** 包含类型检测、类型推断、跳转定义、自动补全等能力,减少编程出错概率和提高编程效率。 -- **Debugger:** 包含 breakpoin不分t、step into、step over、resume、evaluation 等能力。 +- **Debugger:** 包含 breakpoint、step into、step over、resume、evaluation 等能力。 - 代码仓库:用于实时保存用户构建应用所产生的 NASL 代码,并满足高性能、高可用、高可靠等特性。 -- Generator:NASL 语义编译器。低代码平台借助于 Generator,将 NASL 语言编译为 Java、JavaScript 等通用语言,在借助底层通用语言的运行时设施如 jvm,将 NASL 语言运行在计算机上。 +- Generator:NASL 语义编译器。低代码平台借助于 Generator,将 NASL 语言编译为 Java、JavaScript 等通用语言,在借助底层通用语言的运行时设施如 JVM,将 NASL 语言运行在计算机上。 - Upgrader:用于 NASL 语言在版本迭代过程中产生的一些兼容性问题处理。 @@ -66,7 +66,7 @@ NASL 利用可视化对复杂的语言特性做了屏蔽和简化,大大降低 6. 项目分类 -付费¹、闭源、专用、不接受社区贡献 +共享¹、闭源、专用、不接受社区贡献 语言类别:多范式语言、可扩展语言、高级编程语言 diff --git a/projects/NASL/nasl-logo.png b/projects/NASL/nasl-logo.png index f59506f0f85c15dd1958e2946772bcb97df00a01..53e89124774c8f3aac1ba3f5c9c69e798068c3e8 100644 Binary files a/projects/NASL/nasl-logo.png and b/projects/NASL/nasl-logo.png differ diff --git "a/projects/Z\350\257\255\350\250\200/Z\350\257\255\350\250\200.md" "b/projects/Z\350\257\255\350\250\200/Z\350\257\255\350\250\200.md" index 1b7e3a799864833ee801e2ab3412941ef2336d2b..14b63f6f0466af333c808069933b3211f6245ebd 100644 --- "a/projects/Z\350\257\255\350\250\200/Z\350\257\255\350\250\200.md" +++ "b/projects/Z\350\257\255\350\250\200/Z\350\257\255\350\250\200.md" @@ -1,7 +1,9 @@ 1. 项目名称:Z语言 -2. 项目图标:暂无 +2. 项目图标: + +![z_logo](./z_logo.png) 3. 项目主页:[https://gitee.com/z-lang/zc](https://gitee.com/z-lang/zc) @@ -21,12 +23,12 @@ - 麻雀虽小,五脏俱全。 - 语言特性上,Z语言支持动态类型和静态类型,并支持常见的函数、类、接口、泛型、模块化等语言特性。 - - 工具链上,Z语言既可以解释执行,也可以直接编译成汇编(当前支持Windows和Linux的X86_64汇编),还可以转移成C、Python和JavaScript。 + - 工具链上,Z语言既可以解释执行,也可以直接编译成汇编(当前支持Windows和Linux的X86_64汇编),还可以转译成C、Python和JavaScript。 - 应用:玩具语言也可以有应用,即“玩具应用”。Z语言的驱动应用是一个AI图形引擎[Zaige](https://gitee.com/z-lang/zaige)。当然,这个引擎本身的定位也是“玩具引擎”,并且也有自己的同步开源书[从零开始制作AI图形引擎](https://gitee.com/z-lang/zaige_book)。 - 创新的语言特性: - 面向场景编程。根据不同的场景,编译器提供不同的语言特性和相关的库。例如,编写AI绘图脚本时,编译器会自动将Z脚本转换为Python脚本,然后调用Python的AI绘图库。 - 编译期脚本执行。在编译或解释过程中,编译器可以调用Z解释器,执行任意Z函数。这个特性可以用来实现泛型、模版元编程,以及其他类型的代码生成功能。 - - 生态融合:由于Z语言既可以解释执行,又可以转移成C、Python和JavaScript。因此它可以作为一门胶水语言,把这几个生态更方便地融合起来。 + - 生态融合:Z语言既可以解释执行,又可以转译成C、Python和JavaScript,因此Z语言可以作为一门胶水语言,方便地融合多个生态。 以上内容大部分都是构思(吹牛),还没有实现。Z语言从2023年11月正式立项,到目前为止,进度如下: @@ -77,7 +79,7 @@ fn main { // main函数是特殊的函数,它是程序的入口。 6. 项目分类: -免费、开源(MIT)、通用、接受社区贡献 +免费、开源(MIT)、专用、接受社区贡献 语言类别:一般编程语言、同时支持动态类型和静态类性格、同时支持解释器、编译器和转译器(转译目标为C、Python和JavaScript) 工具类别:编译器、胶水代码 应用领域:图形引擎、AI、编程教学 diff --git "a/projects/Z\350\257\255\350\250\200/z_logo.png" "b/projects/Z\350\257\255\350\250\200/z_logo.png" new file mode 100644 index 0000000000000000000000000000000000000000..15fcc01e77dcc5fb267574a8e56a834b10639727 Binary files /dev/null and "b/projects/Z\350\257\255\350\250\200/z_logo.png" differ diff --git "a/projects/\345\207\271\350\257\255\350\250\200/s1.png" "b/projects/\345\207\271\350\257\255\350\250\200/s1.png" index 9559486bf0c95bbea5ebebe75fd0ca92ac55629d..aa0f71e7324fd194be3d6f5b2c404c6586dd2f3b 100644 Binary files "a/projects/\345\207\271\350\257\255\350\250\200/s1.png" and "b/projects/\345\207\271\350\257\255\350\250\200/s1.png" differ diff --git "a/projects/\345\207\271\350\257\255\350\250\200/s2.png" "b/projects/\345\207\271\350\257\255\350\250\200/s2.png" index 7df94dfebc9ab25cfea6d2ee247a231004e6bd58..3789fcd74b2c6b377331104532189b6985511626 100644 Binary files "a/projects/\345\207\271\350\257\255\350\250\200/s2.png" and "b/projects/\345\207\271\350\257\255\350\250\200/s2.png" differ diff --git "a/projects/\345\207\271\350\257\255\350\250\200/s3.png" "b/projects/\345\207\271\350\257\255\350\250\200/s3.png" index a05a7e2056c84a374ff4565b7a08a34becc45835..bb0a135c1071015d5402d8a665852c2c4d4cadb0 100644 Binary files "a/projects/\345\207\271\350\257\255\350\250\200/s3.png" and "b/projects/\345\207\271\350\257\255\350\250\200/s3.png" differ diff --git "a/\345\233\275\344\272\247\347\274\226\347\250\213\350\257\255\350\250\200\350\223\235\347\232\256\344\271\246-2023.pdf" "b/\345\233\275\344\272\247\347\274\226\347\250\213\350\257\255\350\250\200\350\223\235\347\232\256\344\271\246-2023.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..1728e57b72c482690f43df22abd2152314d02925 Binary files /dev/null and "b/\345\233\275\344\272\247\347\274\226\347\250\213\350\257\255\350\250\200\350\223\235\347\232\256\344\271\246-2023.pdf" differ