写点什么

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

2019 年 4 月 19 日

受够了结构化编程的复杂,微软发布全新编程语言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 年 4 月 19 日 15:407602
用户头像
田晓旭 InfoQ 编辑

发布了 421 篇内容, 共 195.5 次阅读, 收获喜欢 1268 次。

关注

评论

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

单点破局思维|技术人应知的创新思维模型(8)

Alan

个人成长 技术人应知的创新思维模型 七日更 28天写作

《数据分析》PDF免费下载

计算机与AI

数据分析

Spring Cloud 2020.0.0正式发布,再见了Netflix

YourBatman

Spring Cloud Spring Boot netflix 2020.0.0

智慧旅游安全管理综合指挥平台建设解决方案

WX13823153201

现代JavaScript:ES6+ 中的 Imports,Exports,Let,Const 和 Promise

Geek_Willie

Java ES6

打开数“智”化之门,一字之差带来的思考

京东智联云开发者

DevOps IoT 新基建 智能

社区一体化综合平台搭建,智慧平安小区建设解决方案

t13823115967

智慧城市 智慧平安社区平台建设

手写线程池,对照学习ThreadPoolExecutor线程池实现原理!

小傅哥

Java 小傅哥 线程池 七日更 ThreadPoolExecutor

最有技术含量的面试

escray

面经 面试经历 101次面试 七日更 十日谈

如何破解AI数据困境?京东智联云联邦学习平台有良方

京东智联云开发者

人工智能 大数据 学习

Shell简介

入门小站

Shell

生产环境全链路压测建设历程 18:某快递 A 股上市公司的生产压测案例之中篇

数列科技杨德华

全链路压测 七日更

Go中的Channel背后的设计哲学

soolaugust

go Go Concurrency Patterns 七日更 CSP

MySQL字符集修改实战教程

Simon

MySQL 字符集 七日更

夜莺二次开发指南-监控系统(1)

秦叶宁

滴滴夜莺 夜莺监控

夜莺二次开发指南-监控系统(2)

秦叶宁

滴滴夜莺 夜莺监控

XRP瑞波币系统软件开发|XRP瑞波币APP开发

开發I852946OIIO

系统开发

执法监督信息化建设,公安情报指挥一体化合成作战系统开发

t13823115967

智慧公安

30G 上亿数据的超大文件,如何快速导入生产环境?

楼下小黑哥

Java MySQL 并发编程 线程池

斐波那契数列

Ke

如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

阿里巴巴云原生

阿里云 容器 运维 云原生

Android uni-app实现音视频通话

anyRTC开发者

uni-app android 音视频 WebRTC 跨平台

代码零改动Serverless架构升级?这家在线编程教育企业是这么做的

阿里巴巴中间件

Python Serverless

附PPT丨AWS基于数据湖构建云上的数据分析架构

dbaplus社群

数据湖 AWS

语音助手中的复杂语义表达方法

DataFunTalk

AI nlp

12张图带你彻底理解分布式事务!!

冰河

分布式事务 BASE理论 TCC ACID CAP理论

Serverless 落地之痛怎么解?

阿里巴巴中间件

Serverless

任务发布系统软件开发|任务发布APP开发

开發I852946OIIO

系统开发

引领云原生发展浪潮 阿里云开启云原生大规模落地元年

阿里巴巴云原生

云计算 阿里巴巴 阿里云 最佳实践 云原生

揭开阿里巴巴复杂任务资源混合调度技术面纱

阿里巴巴云原生

云计算 阿里云 性能优化 云原生 资源调度

揭秘大流量场景下发布如丝般顺滑背后的原因

阿里巴巴中间件

阿里巴巴

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