2

青语言开源发布 - 宁近农 - 博客园

 1 year ago
source link: https://www.cnblogs.com/NjinN/p/17448261.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

青语言发布

6月1日,在这个充满欢声笑语的日子里,数心开物工作室开源发布了一门面向青少年、儿童和非专业人士的中文编程语言——青语言。

青语言主页:https://qingyuyan.cn

青语言文档:https://doc.qingyuyan.cn

青语言社区:https://forum.qingyuyan.cn

青语言仓库:https://gitee.com/NjinN/Qing

视频演示:https://www.bilibili.com/video/BV1CX4y1h7Zx/

中文编程现状

长久以来,中文编程一直是开发者社区中争议不断的热点问题。一部分人认为,编程语言是符号化的语言,没有中英文之分,所以中文编程没有意义。而另一部分人则认为跨语种学习编程,存在事实上的困难,提高了学习门槛。这样的讨论在社区中一直热度不减,成为经久不衰的话题。

事实上,我国在中文编程领域并非一片空白,目前已存在多款中文编程语言,包括商用的易语言、习语言、TC简单开发工具等,以及开源的文言文编程、凹语言等等。总的来说,这些中文编程语言都取得了一定的成功,但也都存在一些问题。以易语言为例,虽然和主流编程语言存在差距,但无论从使用人数还是商业角度上,都可以称得上是一门成功的编程语言。然而,易语言脱胎于VB,在享受VB生态便利的同时,也受到了相应的限制,其开发的软件主要局限于Windows平台的桌面应用。在移动互联网迅猛发展的当下,桌面开发市场萎靡不振,VB早已风光不在,而易语言也同样面临困局。另一方面,目前开源社区发布的中文编程语言,大多缺乏编程开发相关的支持工具,同时缺乏推广的动力,因此迟迟未能出现被大众广泛接受的作品。

1918225-20230601102016360-1640262231.png

针对这一现状,我们深入分析了中文编程的特点,面临的问题以及潜在的用户,最终决定开发一门面向青少年、儿童和非专业人士的中文编程语言。
当下,我国在信息技术领域取得了长足进步,在各个前沿技术领域均不乏专业的技术人才。但与其他技术领域面临的问题类似,信息技术的开拓创新能力一直饱受诟病。造成这一问题的原因是多方面的,我们认为其中一个十分重要的原因是:我国缺少广阔而深厚的“编程土壤”。
在国外,尤其是英文国家,由于不存在语言障碍,青少年、儿童早早地就接触到编程相关的知识,很多科技领域龙头企业的创始人,在儿童时期就开始学习编程,锻炼了逻辑思维和创新能力。例如,比尔盖茨13岁开始学习编程,扎克伯格12岁时就开发了即时通讯软件,马斯克12岁时开发了一款游戏并赚到了500美金。类似的例子还有很多,不难看出,青少年时期的编程教育能够促进创新意识和创新能力的养成。
反观国内,我们的教学仍然以传统课程为主,不重视创新,普遍缺少编程方面的课程,很多计算机专业的同学直到进入大学阶段,才开始接触编程。近年来,我国也在推广编程教育,例如一些地区在推行Python进入中学课程,但目前普及率较低。另一方面,市场上也出现了一些面向儿童的编程教育产品,例如来自国外的Scratch和国产的编程猫等。这类编程教育产品主要以拼图的方式进行教学,简单易学,但与主流的编程语言差异较大,对后续的编程教学帮助有限。总体而言,我国在青少年、儿童的编程教育方面与国外差距较大。

综合以上原因,我们开发并开源发布了青语言,其设计目标如下:
1、语法简单易学。
2、以中文为载体,主要使用中文进行编程。
3、提供中文帮助信息、提示信息和文档。
4、整体设计符合中文语法习惯和输入习惯,提供便捷的开发工具。
5、适合不同种类软件开发的通用编程语言。
6、提供简单便捷的功能扩展接口。
7、多平台兼容。

目前我们发布了青语言V0.9版本,已经基本实现了以上设计目标。

极简的语法核心

首先,青语言的语言内核来源于一门古老而充满哲学的编程语言——LISP,其被称为是“创造编程语言的语言”。基于这一点,青语言的语言核心精巧,语法的实现的代码仅涉及到少数几个核心文件,完成了从代码文本拆分到语法树构建,再到代码求解的全过程。作为一个开源项目,我们希望得到开源社区的助力,这时候保持一个简单小巧的核心,有助于开源开发者了解语言的实现,并参与到语言的开发中来。为此,我们对青语言的核心代码提供了尽可能详尽的注释,同时提供青语言开发文档,希望帮助开发者快速掌握青语言的开发。

基于中文的语法设计

在语法设计方面,青语言主要参考了JavaScript。基于LISP内核,我们有能力实现各种不同的语法,但在语法设计上目前没有做过多的创新,主要考虑有两点。其一是JavaScript的语法十分成熟,可以保证语法在逻辑上不存在大的问题。其二是我们希望青语言的用户能够快速过渡到主流的编程语言开发中。当然,青语言也并非完全照抄JavaScript,我们还考虑到中文的特点,在语法设计上尽可能地符合中文的语言习惯和输入习惯,便于学习和使用。

使用中文编程

丰富的文档支持

良好的文档对于构建语言生态有着十分重要的作用,尤其是对于青语言的初学者来说,详尽的文档和教学资源能够帮助他们快速了解和掌握编程知识。考虑到这一点,我们为青语言内置的函数都提供了函数的使用说明,使用者在解释器交互界面即可查看函数的使用方式。同时,我们提供了详尽的在线文档,包含完整的语言概念和语法介绍,以及一些示例的代码。

便捷的编辑器

除文档外,开发工具同样十分重要,好的开发工具能够起到事半功倍的效果。为此,我们为青语言配套开发了一个青语言编辑器,提供了代码编辑、运行等功能,实现了简单的代码提示和补全,能够有效提升青语言代码的开发效率。此外,青语言编辑器中还内置了简单的教程,可以跟随教程学习青语言。

提供专用的编辑器

适合通用目的编程

基于LISP内核,青语言可以根据不同的应用需求,设计相应的语法。例如,在图形界面编程方面,目前比较主流的方式是使用标记语言进行界面的设计,相对完全面向对象的方式效率更高。因此目前比较常见的图形界面开发方式是程序语言+标记语言。在青语言中,我们提供了标签数据类型,因此可以直接使用青语言完成程序界面和程序逻辑的开发。目前这个功能为青语言编辑器独有,通过简单的青语言代码即可实现图形界面程序。

简单的图形界面编程

便捷的功能扩展方式

编程语言的功能扩展方式,对语言生态起到十分重要的作用。青语言项目目前主要的工作体现在语言前端的实现,我们从零开始完成了从代码到语法树的构建,没有使用任何现有的组件,完全掌握语法实现的每一个细节。而青语言的后端则交由.Net平台来实现。基于这样的设计,我们可以借助.Net平台的生态,并且可以将扩展的功能打包为单个dll文件,能够很方便地在青语言代码中引用其功能。动态库的开发是我们目前最希望能够得到开源社区支持的方向,我们提供了开发动态库的示例程序和教程文档,希望更多专业方向的开发者加入项目的开发。基于.Net生态,我们可以实现十分丰富的功能,例如我们封装了简单的AI功能。

封装了简单的AI图像识别

跨平台兼容

青语言后端使用.Net的另一好处是可以实现跨平台兼容,本次发布即提供了各个主流平台的可执行程序,下载后可以直接运行使用。除了桌面程序外,我们还提供了一个安卓端的APP,能够实现手机上编程,进一步降低了语言的学习成本。不过需要注意的是,这是一个实验性的项目,由于系统差异,有部分内置函数无法正常使用。

支持手机编程

开源项目的发展,尤其是编程语言这类基础项目的发展,需要持续的投入。为此我们与高校合作建立了青语言联合实验室,依托高校教研资源,保障青语言生态的持续稳健发展。目前我们还在积极寻求更多的合作伙伴,可以通过邮箱[email protected]联系我们。

开放合作

以上就是本次发布的青语言的一些基本介绍,作为一个开源项目,我们希望更多热爱编程的开发者加入到项目中。中文编程这一话题虽然争议不断,但我们确实希望能够消除语言障碍,让更多人了解编程,爱上编程。我们将与社区共同进步,持续推进青语言生态的发展。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK