写点什么

受够了结构化编程的复杂,微软发布全新编程语言 Bosque

  • 2019-04-19
  • 本文字数:897 字

    阅读完需:约 3 分钟

受够了结构化编程的复杂,微软发布全新编程语言Bosque

微软发布了一种新的开源编程语言 Bosque,旨在通过代数运算来减少复杂性。


Bosque 编程语言的开发者是微软计算机科学家 Mark Marron,其灵感来自于 TypeScript 的语法和类型,ML 和 Node/JavaScript 的语义。Mark Marron 称该语言超越了结构化编程模型,采用了“正规化编程模型(Regularized Programming Model)”。


结构化编程模型主要是通过循环、顺序以及选择等设计来替换掉 goto 语法,但是当遇到复杂的情况时,结构化编程的代码会更加复杂。为了消除这种复杂性,Mark Marron 提出了正规化编程模型。


据 Mark Marron 论文描述:“该模型建立在结构化编程和抽象数据类型的基础上,它将现有的编程模型简化成一种正则化的形式。这种形式消除了主要的错误来源,简化了代码理解和修改,并将许多代码上的自动化推理任务转换为琐碎的命题。”


结构化编程模型的意外复杂性主要来源于 5 个方面:可变状态和框架,循环、递归和不变量,不确定的行为,“数据不变”违规,相等与别名。Mark Marron 认为循环、可变状态和引用相等(两个引用是否指向同一对象)是结构化编程模型复杂性的主要来源,所以在 Bosque 的代码中没有“for”、“while”、“do while”循环,而是选择引入了函子(Functors)。



(该 Functor 等同于 JavaScript 中的 for 循环)


另外,Mark Marron 还特别指出了引用相等的复杂性,两个变量指向内存中的同一个对象,看起来是很好解决,但一旦在语义上有了引用相等,那么就要不断考虑它和它引入的指针别名的关系。2001 年就有论文提出了引用相等这个问题,但是到了 2019 年还没有解决。


最初,Bosque 的目标是构建自动化的零工作量代码验证、自动化的 SemVer 检查和编译,但是现在 Mark Marron 认为 Bosque 是探索语言设计的新方式,并希望通过与学术界、在线开发人员社区的协作,开发出诸如验证器和编译器之类的自动化开发工具。


目前,Bosque 依赖于一个用 TypeScript 编写的解释器,运行在 Node 上。Mark Marron 计划为 WASM 和本地代码提前实现编译,在接下来的几个月,他将专注于填写各种待办事项、bug 修复以及开发支持用这种语言编写大型程序的功能。


Bosque 的 GitHub 地址:https://github.com/Microsoft/BosqueLanguage


2019-04-19 15:408462
用户头像

发布了 497 篇内容, 共 338.7 次阅读, 收获喜欢 1927 次。

关注

评论

发布
暂无评论
发现更多内容

模块8作业

Asha

模块八 设计消息队列存储消息数据的 MySQL 表格

小朱

架构实战营

为什么每次加入一个新的团队,都会觉得遗留系统是一坨“屎”?

蔡超

重构 架构设计 团队文化

架构实战营模块八作业

spark99

架构实战营

设计消息队列存储消息数据的 MySQL 表

Beyond Ryan

架构训练营 模块八

dog_brother

「架构实战营」

模块八总结

Geek_1d37ea

架构训练营

架构实战营 - 模块八作业

随风King

「架构实战营」

模块八作业

Geek_1d37ea

架构实战营

Kubernetes集群监控

Rayzh

Kubernetes 云原生 Prometheus

莫让虚线管理形同虚设,再论研发组织的设计逻辑

菜根老谭

企业管理 研发组织 组织设计 虚线管理

Excelize 2.5.0 正式发布,这些新增功能值得关注

xuri

Java golang Excel go语言 Excelize

是分是合?探讨影响研发组织设计的主要因素

菜根老谭

企业管理 研发组织 组织设计

Kubernetes集群日志搜集

Rayzh

Kubernetes 云原生 ELK Stack

架构实战营模块八作业

孙志强

架构实战营

02 Prometheus之监控方法论及指标

穿过生命散发芬芳

Prometheus 1月月更

Rust 入门 快速配置 Rust 开发环境并编写一个小应用!

贾献华

rust

一、什么是计算机

喵叔

28天写作 1月月更

保姆级教程,终于搞懂脏读、幻读和不可重复读了!

王磊

设计原则与思想:单一职责原则

努力努力再努力

设计消息队列存储消息数据的 MySQL 表格

渐行渐远

架构实战营

架构训练营 模块八作业

吴霏

#架构训练营

架构训练营 - 模块八作业

VegetableBird

架构训练营

架构训练营 - 模块 8 作业

焦龙

架构训练营

【LeetCode】一手顺子Java题解

Albert

算法 LeetCode 1月月更

为什么私有方法上的Spring Cache注解不生效?

看点代码再上班

spring 源码 程序员 spring aop Spring Cache

看金沙遗址-理科生博物馆的正确打开方式

wood

成都 300天创作 博物馆 金沙遗址

【架构实战营】模块八作业

liu🍊

040022-week1-algorithm

InfoQ_70156470130f

模块8作业

忘记喝水的猫

架构训练营

复盘2021,像做产品一样来做自媒体

菜根老谭

自媒体 菜根老谭

受够了结构化编程的复杂,微软发布全新编程语言Bosque_编程语言_田晓旭_InfoQ精选文章