[Community News] 生而为创新!我们自研的编程语言Unilang问世!
Tofloor
poster avatar
white777
deepin
OM
2022-09-19 17:24
Author

Unilang.jpg

2022年9月,deepin正式公开了自研全新通用目的编程语言——Unilang!


回顾过去,倍觉光阴荏苒:

2020年4月 ,这一年,我们决定开发自己的语言 ,进一步往上做GUI框架;

2020年6月 ,想法成型,经调研分析后,我们创建Unilang仓库 ,提交了第一行代码

2021年3月 ,脚踏实地, 基本实现2020年决定设计的主要特色内容 ,着手研究目标代码生成方案;

2022年9月 ,蓄势待发, 全新的通用目的编程语言Unilang问世 ,与所有开发者们见面!

--

从业界流行的一系列方案分析,到需求、大方向的确定与设计;

从快速产出和完善整体设计的冲突,到始终尝试不同解决方案的质量优先;

从一个初步萌芽的小小想法,到一群人为之努力,所以最终得以实现;

生而为创新,今天,Unilang与你相见!

"Hello world demo.";

puts "hello, world";

自创,为何而创?

实际上,在我们决定自主设计Unilang之前,桌面应用开发方案便已经有了相当多较为成熟的选择。

Qt 代表的 C/C++ 本机应用开发方案,早已是许多 Linux 桌面系统应用的主流方案。它拥有成熟的语言标准和实现,丰富的开发资源,是最具有可移植性的工业语言的代表。不过,出了名的难以学习;冗长的项目开发周期;作为静态类型语言不具备非常“健壮”的类型系统,对开发体验改进有限等,大多数全局问题也是短时间内难以改善的。

Electron为代表的非本机和动态语言运行时为基础的开发方案,则是另一类较为主流的方案。使用这一流行的动态语言,能克服一些静态语言不够灵活的问题,但难以保障质量。由于大多数开发者难以有效优化运行时机制,也容易造成内存泄漏等问题,反而会极大影响 GUI 应用的质量和开发体验。

当然,Flutter代表的移动端解决方案正在向桌面移植,但它也具有部分其它动态语言运行时的方案类似的问题,实在称不上是一个完美的替代方案。

再从更高层的结构角度来看,不同类型的 GUI方案 繁多,却也各自存在不同的架构意义上的技术局限性。总而言之,没有任何一种现有方案能兼顾各种不同的问题,而成为没有疑义、众望所归的桌面开发首选方案。

因此,在综合分析大量方案后,我们迫切希望有这么一种语言:

它可以尽快解决以上方案中存在的痛点;

它能极大程度帮助到因语言二次开发遇到困难,而被迫放弃的开发者们;

它能够以更深刻的方式、真正地实现“通用性”;

——这就是我们选择创造Unilang的原因。

全新,何处是新?

我们将Unilang设计成为一门 现代的通用目的编程语言 ,使它以全新之姿出现,去适应更有效和灵活开发桌面环境应用,去统筹解决现有不足的新的方案中的语言部分。

那么和其他语言相比,它的新,究竟新在哪里?

  • Unilang 是图灵完备的通用计算语言。Unilang具备的创新式的语言特性,得以构建强大而易于使用的抽象。
  • Unilang 对一等对象(first-class) 的强调,使几乎任何源程序组件都更比往常意义上更容易复用——只要语言的用户愿意。
  • Unilang 的基础语言和语言扩展的底层设计,使你能以前所未有的方式、平滑地实现语言的设计的改进,并保持兼容。
  • Unilang 的资源管理模型和抽象能力,使程序在具有不同计算资源的平台上的表现默认自然地一致,且易于调整。
  • Unilang 的语言特性,决定了你可以不用拘泥于具体的语言范型。
  • Unilang 核心语言特性进行的极简设计,能帮助你能更快捷、更容易的入门。
  • Unilang 不是一门精通各种特性才能用好的语言——如果问题不是需要修改语言,无数开发者就能更集中注意力于解决语言之外的问题上。

值得一提的是,Unilang 在语言特性的层次上被设计为能支持不同的应用开发场景,但原则上对这些场景保持中立。

这意味着,它可以同时支持服务端和客户端应用的开发,不需要用户切换思维范式或者大幅更改对语言的使用习惯。

未来,邀你前来!

Unilang从今天起步,未来,也将迎接无数崭新的阶段 ——目前,我们计划将支持基于 Qt 的绑定的库,以便衔接过渡现有的一些桌面应用项目。日后也计划着在解释器的基础语言特性稳定实现后,提供带有优化的 JIT 代码生成的执行引擎。新的实现可直接替代现有解释器的部分核心,而无需改动已使用解释器的Unilang代码,获得“免费”的显著性能提升。

生而为创新! Unilang既是初生,便需要在时间的打磨下不断完善与发展。既是创新,便需要我们积极吸纳各种试验性扩展,以便利用程序语言社区的先进成果,方能快速成长为 万众期待的根技术之一 。

因此,不论是个人还是组织,不论是报告问题或者代码贡献,我们都真诚期待你能参与到Unilang建设当中,一起帮助Unilang变得更好!

集聚众人之力,不仅需要我们,也需要你!

项目地址: https://github.com/linuxdeepin/unilang

Reply Favorite View the author
All Replies
2 / 5
To page
jankin
deepin
2022-09-20 09:01
#21
monkeycc

1.要建立自己UI体系

2.建立自己的样式结构

3.要支持Python ! 当然Rust 和 Go也可以有

4.win要方便打包,linux也是要方便打包

5.抛弃QT,前期可以调用QT,但是最后要全部抛弃QT

6.移动端后期可以增加

应该是套用了qt的绘图引擎

Reply View the author
jankin
deepin
2022-09-20 09:03
#22
阿甘

看了一下这种语言的设计思想,基本语言+特性扩展库,后者为实现各种领域扩展提供可能。但我有一个疑问:

假设在web应用开发领域,需要这种语言的扩展库提供支撑,这时候,就有了问题,不同的开发团体,对web开发领域提出了不同的实现方案,从而导致语言特性碎片化,这个问题如何解决?有没有为不同领域的语言特性的实现,提供属于该领域的通用扩展规范(specification),就像Java一样,有一套规范,这样不同的产品(dragonwell JDK、oracle JDK、华为毕昇JDK )可以互换使用。

这就不成c++了吗?不同领域用不同的库套不同的模板

Reply View the author
184******61
deepin
2022-09-20 09:30
#23

加油加油,虽然我也想出一把力,可是我太菜了

Reply View the author
坐井观天下
deepin beta test group
2022-09-20 16:52
#24

迫切想要使用!

Reply View the author
monkeycc
deepin
2022-09-20 16:53
#25

要专注于GUI框架,而不是所谓的新语言,底层是C++无所谓,关键是GUI要完善,脱离QT

Reply View the author
fhy
deepin
2022-09-20 18:47
#26

造的新轮子

Reply View the author
Yobdm
deepin
2022-09-20 20:37
#27
阿甘

这是很勇敢的、艰难的挑战,不仅涉及到技术,也涉及到生态。

除了语言,你们还有相应的IDE开发规划吗?如果能像微软那样,把编程语言和IDE齐头并进地发展,效果可能更好。

必须要出ide才能建立自己的生态体系。光有一个语言,太单调了。

Reply View the author
Yobdm
deepin
2022-09-20 20:43
#28

对于国产系统来说,造一个语言远远不如开发一个编程软件来的实在。

比如:对c++进行深度封装,让用户无需处理内存的申请和释放等操作,配合QT界面库,几行代码,快速实现linux应用软件开发。

开发一个这样的ide比开发一个编程语言更为重要。

因为国产操作系统最重要的就是生态软件,而开发软件是一个很复杂的过程,如果能将这个过程简化简化,甚至实现低代码开发,或者说少量代码开发。

国产操作系统软件生态,很快就可以完善。

这样搞开发一个编程语言……不是很好的决策。

Reply View the author
buffalo
deepin
2022-09-20 21:17
#29
vvvv010

有时候吧,我觉得deepin不是很有钱,是个小公司,但是他的种种行为让我觉得比大公司还有钱,也比大公司有梦想,责任和担当。

是不是有点当年马云创建阿里巴巴的感觉。。。

Reply View the author
阿甘
deepin
2022-09-20 21:50
#30
jankin

这就不成c++了吗?不同领域用不同的库套不同的模板

我觉得还是要静下心来看看ulilang的git页面,看看人家究竟想做什么。

我感觉它好像是要开发出一种语言,具备如下特性:

(1)语言基本部分(核心部分)具有较高的稳定性,例如,该语言版本升级时,基本部分不变,这一点,C、C++、Java都满足;

(2)语言扩展部分(可扩展部分)对普通开发者是透明的,例如,普通开发者在自己的领域,发现,若语言能够提供一个新增的语言特性(例如增加一个新的表示循环结构的语法(如乘幂运算符^)),则可以大大简化代码,他怎么办?难道要等待这个语言的官方升级版本,才可能使用这种新特性吗?有了Ulilang就不必了,因为它的设计就考虑了普通开发人员自行扩展语言特性的可能性,通过语言基本部分提供的“原材料”,普通开发人员也可以自定义“新的语言特性(关键字、语法等新的语言要素)”,目前,C++、Java、C都没有提供这种特性,普通开发人员只能等待编程语言官方组织推出新的版本。

(3)提供一个较好地支撑PC桌面应用开发的统一语言框架。C、C++在桌面GUI应用开发的支撑上,优势在于执行效率高、但在支持属性、方法和事件的GUI机制上存在不足,使得其不得不依赖于第三方GUI扩展库(Qt、GTK+、wxWidgets等),才能让普通的开发者享受快速GUI应用开发的红利,这些扩展库通过扩展(如Qt中的信号和插槽机制,wxWidgets中的宏等),让开发者能够以面向对象范式实施GUI开发。Java、python、.net在这个方面有巨大改进,但其虚拟机的本性,使其执行效率受限于其解释型语言的本质,目前基本上退出了桌面应用开发首选语言的舞台,最终还是回归到各自优势的地方。Unilang要兼备执行效率和开发效率、动态语言架构的优势,是具有挑战性的,因为这些要求之间往往可能是矛盾的。

不能说Unliang的野心不大,配合其deepin os的目标,有实现的可能,这一点有历史的启迪。当年C++ builder曾经一度超越了VC的开发模式,但由于VC是windows的亲儿子,所以,c++builder最终被淘汰,但他的编程模型PME模型被微软吸收了,最终在微软的.net战略中,以C#语言体现出来。不知道Unilang走向何方,我们拭目以待,希望它能很好地利用自己的已有的DTK和操作系统的优势,来开发这种语言。

Reply View the author
zccrs
deepin
2022-09-20 22:31
#31
blue_whale

2022-09-19

希望有一个gitee的地址

里面有一个中文的开发环境搭建平台

里面有一个中文的入门文档

里面有一个群可以一起讨论遇到的问题

2022-09-20 追加其他开发者的相关建议

建议给 unilang 单独建立一个板块(和上面建群的功能类似, 但更专业)
希望能在 [ 开发者 ] 页面有比较简单的介绍和示例并可以跳转到官方开发文档
相应的IDE开发规划(进度, 目标, 负责人, 新成员加入规则, 项目审核规则, 全部公开)
通用扩展规范(防止语言特性碎片化)

对了,gitee 是有的:https://gitee.com/linuxdeepin/unilang ,不过是只读的,提交代码还是在 github 上

Reply View the author
Comments
blue_whale
2022-09-20 22:45
嗯, 看到了
大雨醉步
deepin
2022-09-21 00:15
#32

自主开发语言环境 是自主操作系统的基石。终于看到我们自主的开发语言啦。

作为一个开发工具,不需要改变 程序员的开发习惯。说直白一点 功能和UI 复刻一下Qt 就可以。让现在的开发人员可以直接上手使用就可以了;千万不要开发什么新语法 新关键字什么的。至少现在不要开发。

Reply View the author
神末shenmo
Moderator
Spark-App
2022-09-21 00:26
#33
blue_whale

2022-09-19

希望有一个gitee的地址

里面有一个中文的开发环境搭建平台

里面有一个中文的入门文档

里面有一个群可以一起讨论遇到的问题

2022-09-20 追加其他开发者的相关建议

建议给 unilang 单独建立一个板块(和上面建群的功能类似, 但更专业)
希望能在 [ 开发者 ] 页面有比较简单的介绍和示例并可以跳转到官方开发文档
相应的IDE开发规划(进度, 目标, 负责人, 新成员加入规则, 项目审核规则, 全部公开)
通用扩展规范(防止语言特性碎片化)

gitee的镜像一直都有

你把github.com换成gitee.com就能访问了

Reply View the author
wcss2020
deepin
2022-09-21 01:22
#34

类似于python吗?这是一个大胆的想法,勇气可加,祝你们能成功吧,因为我们所处的是一个大时代,做了可能会不成功,但是不做一定不会有机会成功,平常心看待就好

Reply View the author
wcss2020
deepin
2022-09-21 01:24
#35
阿甘

我觉得还是要静下心来看看ulilang的git页面,看看人家究竟想做什么。

我感觉它好像是要开发出一种语言,具备如下特性:

(1)语言基本部分(核心部分)具有较高的稳定性,例如,该语言版本升级时,基本部分不变,这一点,C、C++、Java都满足;

(2)语言扩展部分(可扩展部分)对普通开发者是透明的,例如,普通开发者在自己的领域,发现,若语言能够提供一个新增的语言特性(例如增加一个新的表示循环结构的语法(如乘幂运算符^)),则可以大大简化代码,他怎么办?难道要等待这个语言的官方升级版本,才可能使用这种新特性吗?有了Ulilang就不必了,因为它的设计就考虑了普通开发人员自行扩展语言特性的可能性,通过语言基本部分提供的“原材料”,普通开发人员也可以自定义“新的语言特性(关键字、语法等新的语言要素)”,目前,C++、Java、C都没有提供这种特性,普通开发人员只能等待编程语言官方组织推出新的版本。

(3)提供一个较好地支撑PC桌面应用开发的统一语言框架。C、C++在桌面GUI应用开发的支撑上,优势在于执行效率高、但在支持属性、方法和事件的GUI机制上存在不足,使得其不得不依赖于第三方GUI扩展库(Qt、GTK+、wxWidgets等),才能让普通的开发者享受快速GUI应用开发的红利,这些扩展库通过扩展(如Qt中的信号和插槽机制,wxWidgets中的宏等),让开发者能够以面向对象范式实施GUI开发。Java、python、.net在这个方面有巨大改进,但其虚拟机的本性,使其执行效率受限于其解释型语言的本质,目前基本上退出了桌面应用开发首选语言的舞台,最终还是回归到各自优势的地方。Unilang要兼备执行效率和开发效率、动态语言架构的优势,是具有挑战性的,因为这些要求之间往往可能是矛盾的。

不能说Unliang的野心不大,配合其deepin os的目标,有实现的可能,这一点有历史的启迪。当年C++ builder曾经一度超越了VC的开发模式,但由于VC是windows的亲儿子,所以,c++builder最终被淘汰,但他的编程模型PME模型被微软吸收了,最终在微软的.net战略中,以C#语言体现出来。不知道Unilang走向何方,我们拭目以待,希望它能很好地利用自己的已有的DTK和操作系统的优势,来开发这种语言。

可是目前来讲deepin和windows的市场占有率,不能比啊

Reply View the author
阿甘
deepin
2022-09-21 01:37
#36
wcss2020

可是目前来讲deepin和windows的市场占有率,不能比啊

deepin在十年前无人问津,现在至少你我都在用它。

Reply View the author
观摩
deepin
2022-09-21 01:50
#37
种花人种花魂

由你浪?

这个可以

Reply View the author
wcss2020
deepin
2022-09-21 02:13
#38
阿甘

deepin在十年前无人问津,现在至少你我都在用它。

量太小,不够大

Reply View the author
gongyf
deepin
2022-09-21 02:39
#39

直呼快哉快哉

Reply View the author
阿甘
deepin
2022-09-21 03:13
#40
wcss2020

量太小,不够大

但愿:星星之火,可以燎原。

Reply View the author
2 / 5
To page