写点什么

深度 deepin 开源自研编程语言 Unilang

  • 2022-09-20
    北京
  • 本文字数:963 字

    阅读完需:约 3 分钟

深度deepin开源自研编程语言 Unilang

近日,深度deepin正式公开了自研全新通用目的编程语言——Unilang,包括相关的文档和一个解释器。

 

deepin 方面表示,虽然业界虽然已经有了很多较为成熟的桌面应用开发方案,例如 Qt、Electron、PySide 和 Flutter 等,但各个方案均有着各自的痛点,没有任何一种现有方案能兼顾各种不同的问题,而成为没有疑义、众望所归的桌面开发首选方案。

 

造成这种局面的一个技术理由是,许多方案设计过于专注具体需求而缺乏考虑语言长期演进的普遍因素,使其在预期目标领域之外的适用性急剧下降,通用性不足。当应用领域和预期略有偏差或暴露原有设计的局限性时,用户即便懂得如何改进一个语言,也会在语言二次开发上遇到困难,从而被迫放弃。

 

因此,deepin 希望有一种语言可以尽快解决各个方案中存在的痛点,能极大程度帮助到因语言二次开发遇到困难而被迫放弃的开发者,以更深刻的方式、真正实现“通用性”。

 

于是在 2020 年 4 月,deepin 决定开发“自己的语言”,进一步往上做 GUI 框架;2020 年 6 月,经调研分析后,deepin 创建 Unilang 仓库,提交了第一行代码;2021 年 3 月,deepin 基本实现了 2020 年决定设计的主要特色内容,着手研究目标代码生成方案;今年 9 月,deepin 正式公开了全新的通用目的编程语言 Unilang。

 

根据官方介绍,Unilang 的主要特点包括:

 

  • 作为动态语言,提供相对其它语言更强的语言层次上的可扩展性。

  • 支持类似 C++ 的对象模型和(当前不被检查的)不安全所有权语义。

  • 不要求全局 GC ,同时语言的一个子集允许和 C++ 同等层次的“不安全”但能确保确定性的资源分配。

  • 支持正式意义上的 PTC ,而不需要用户程序内对栈溢出等未定义行为进行变通。

  • 使用隐式的潜在类型(latent typing) 而非显式的清单类型(manifest typing) 。

 

为了保持通用性,Unilang 不内建提供 GUI 功能,而通过库提供相关 API 。当前计划中,Unilang 将会支持基于 Qt 绑定的库,以便衔接过渡现有的一些桌面应用项目。Unilang 的语言设计保持足够的抽象能力和可扩展性,未来支持直接实现 GUI 框架。

 

另外,Unilang 在语言特性的层次上被设计为能支持不同的应用开发场景,但原则上对这些场景保持中立。这意味着,它可以同时支持服务端和客户端应用的开发,不需要用户切换思维范式或者大幅更改对语言的使用习惯。

 

更多资料:

https://github.com/linuxdeepin/unilang/blob/master/README.zh-CN.md

2022-09-20 15:003391

评论 2 条评论

发布
用户头像
谁用谁知道
2022-09-21 08:31 · 浙江
回复
用户头像
牛!去试试
2022-09-20 16:59 · 北京
回复
没有更多了
发现更多内容

Ubuntu Server 20.04安装KVM虚拟机

玏佾

ubuntu 虚拟机 Ubuntu20.04 kvm

多维数据分析(OLAP)技术选型(1):对什么进行选型

水滴

OLAP 通信协议 技术选型 多维分析 存储格式

模块2作业

cherrycheek

【LeetCode】从前序与中序遍历序列构造二叉树Java题解

Albert

算法 LeetCode 7月日更

5分钟速读之Rust权威指南(三十五)状态模式

wzx

rust

每天学习10个实用Javascript代码片段(一)

devpoint

JavaScript LocalStorage 7月日更

以太坊的 ChainId 与 NetworkId

杰哥的技术杂货铺

区块链 以太坊 ChainId NetworkId

为什么nginx主机的io使用率会100%?

BUG侦探

nginx proxy_buffering docker镜像

数字经济时代,国家与国家的核心竞争力就是算力

CECBC

分布式认知工业互联网

CECBC

双非小伙暑期实习斩获腾讯WXG offer,这不比博人传燃?

北游学Java

Java 腾讯 面试

GrowingIO Design 组件库搭建之Select组件

GrowingIO技术专栏

select 组件实现 virtualList

第一模块作业

晨晨

架构实战营

一文讲懂Hive高可用、HiveServer2高可用及Metastore高可用

白贺BaiHe

数据仓库 7月日更 HiveServer2高可用 Metastore高可用 Hive高可用

必看!史上最全云原生全景图解读攻略来啦

尔达Erda

容器 微服务 运维 云原生 技术人

视频云峰会|“超视频化时代的全景创新” 是什么?

阿里云CloudImagine

阿里云 音视频 视频 视频解码 视频制作

极光开发者周刊【No.0702】

极光JIGUANG

别再往收藏夹怼资源了,收好这个视频创作导航网站就够了。

彭宏豪95

效率 视频 导航网站 视频制作

垃圾回收器的前世今生

中原银行

垃圾回收

架构实战营 模块一作业

面向对象的猫

「架构实战营」

《啊哈C语言!》学习笔记(1)

Nydia

CDH安装搭建(一)

大数据技术指南

CDH 7月日更

动手训练属于自己的无人车,这个超强服务现已开源!

亚马逊云科技 (Amazon Web Services)

架构实战营模块1课后作业

蔸蔸

为什么你总是买了很多不需要的东西?

石云升

消费者 7月日更

GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

Java 面试

辩证|北鲲云和你一起探讨关于生命科学发展的意义

北鲲云

疯了吧!这帮人居然用 Go 写“前端”?(一)

尔达Erda

开发者 云原生 大前端 后端 开发

排序——插入排序

若尘

数据结构 排序 排序算法 插入排序

IPFS挖矿算力排行榜?IPFS挖矿排行榜?

基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

阿里云大数据AI技术

深度deepin开源自研编程语言 Unilang_文化 & 方法_褚杏娟_InfoQ精选文章