Microsoft 推出 Bosque,一种编写易推理代码的编程语言

作者:Abhishek Kaushik

2019 年 6 月 21 日

Microsoft 推出 Bosque,一种编写易推理代码的编程语言

微软最近推出了Bosque编程语言,这是一个探究性的语言设计研究项目,“用于编写对人和机器来说都简单、浅显、易推理的代码”。微软表示,“我们的目标是提高开发人员的工作效率,提高软件质量,并提供一系列新的编译器和工具体验。”该语言由受TypeScript启发的语法和类型,以及受MLNode/JavaScript启发的语义组合而成。它是微软开发的编程语言列表上的最新成员,其中包括TypeScriptC#F#等广受欢迎的语言。


Bosque 是一个被称为“正则化编程”的编程范例的实例,它是由微软首席研究软件开发工程师Mark Marron推出的。正则化编程以结构化编程模型的成功为基础,而后者在 20 世纪 70 年代就逐渐开始流行。结构化编程模型旨在提高计算机程序的清晰度和质量,同时通过使用选择、重复、块结构和子程序减少开发时间。


在介绍正则化编程的论文中,Marron 指出,结构化编程和抽象数据类型的兴起“表明编程模型从反映底层硬件体系结构附带特性的编程模型向更直接地强调程序员意图的模型的转变”。这种转变使开发人员可以更轻松地将系统的心智模型转换为代码,而且不易出错,使我们进入了编译器和 IDE 工具开发的黄金时代。”按照他的说法,“这些编程方法通过消除非本质复杂性的根本来源,简化了程序的推理。”在他的论文中,他列出了一些结构化编程模型没有处理的额外的复杂性来源,并通过 Bosque 演示了如何通过正则化编程设法消除这些复杂性,改善软件质量、程序员生产力和编译器/工具。


这篇论文根据对开发人员的访谈、分析/运行时/编译器开发的个人经验和实证研究,列出了复杂性的五个主要来源。这些来源包括可变状态和帧、循环、递归和不变量、不确定行为(排序稳定性、Map/字典枚举顺序等)、违反数据不变量、等式和别名。根据 Marron 的说法,这些产生各种 Bug 家族的原因,增加了在程序中实现功能所需的工作量,并且极大地复杂化了关于程序的自动推理。Bosque 通过使用不可变数据、消除循环和限制递归、完全确定语言语义、引入代数批量数据运算符等多种语言特性来处理这些问题。


这种语言引起了社区的注意,人们在 Reddit、HackerNews 和 Twitter 等论坛上讨论这种语言的特性、语法及其用途。用户 arrow7000 在HackerNews上询问 Marron 关于该语言的用途,以及与现有语言相比,它是如何变得更好的。按照 Marron 的说法,Bosque 计划作为概念验证来探索语言的设计选择,其目标是实现自动化开发工具,如编译器和验证器。


Bosque 的GitHub页面提到,该项目尚处于早期阶段,欢迎学术合作和社区参与。该页面指出,Bosque 的功能有限,并且承认其存在 Bug,因此建议将其试验性地用于次要项目,而不是用于任何生产工作。此外,由于项目的主要焦点是核心语言设计,所以只提供有限的编译/开发支持,而且不支持打包、部署、生命周期管理等。


要了解更多信息,请查看 Bosque 的GitHub页面


查看英文原文:Microsoft Introduces Bosque, a Programming Language for Writing Easy to Reason About Code


2019 年 6 月 21 日 08:00222
用户头像

发布了 323 篇内容, 共 140.6 次阅读, 收获喜欢 661 次。

关注

评论

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

陪你手撕源码系列之 STL set 相关算法

herongwei

c++ 算法 set stl

架构之书:雄心与《C++语言的设计与演化》

lidaobing

c++ 架构

架构师训练营第八周作业

丁乐洪

玛雅公约软件系统开发|玛雅公约APP开发

开發I852946OIIO

系统开发

架构师训练营 2 期 - 第 8 周命题作业

Geek_no_one

极客大学架构师训练营

架构师训练营 第八周作业

文江

《社会中的数据可视化》PDF免费下载

计算机与AI

数据可视化

阿里聚划算5轮面试题:GC收集器、多线程锁、海量数据技术考核

Java架构之路

Java 程序员 架构 面试 编程语言

2020年高频Java面试题集锦(含答案),让你的面试之路畅通无阻!

Java成神之路

Java 程序员 架构 面试 编程语言

Java开发者必读的〈Java开发手册(嵩山版)〉灵魂15问,深究Java规约背后的原理。

Java成神之路

Java 程序员 架构 面试 编程语言

推进工业互联网和区块链创新发展

CECBC区块链专委会

区块链 互联网

FFmpeg使用基础(音视频开发入门)

赖猫

架构师训练营第 1 期第 12 周学习总结

好吃不贵

极客大学架构师训练营

架构师训练营 2 期 - 第八周总结

Geek_no_one

极客大学架构师训练营

真的爱了!这份阿里P8整理的《Java核心技术整理》新版手抄本,简直把所有Java知识操作都写出来了

Java成神之路

Java 程序员 架构 面试 编程语言

架构师训练营第 12 周作业

netspecial

极客大学架构师训练营

2020的另一面:5G的斯普特尼克之年

脑极体

架构师训练营第三周”代码重构“作业

随秋

极客大学架构师训练营

什么?还不知道该如何学习微服务?这份Github上星标55.9k的微服务神仙笔记真的太香了!

Java成神之路

Java 程序员 架构 面试 编程语言

LeetCode题解:22. 括号生成,BFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

架构师训练营 1 期第 12 周:数据应用(一)- 作业

piercebn

极客大学架构师训练营

刚参加完阿里P6面试归来(Offer已斩获),6点面试经验总结

Java架构之路

Java 程序员 架构 面试 编程语言

命令行搜索神器fzf

Rayjun

Linux

网络篇:朋友面试之TCP/IP,回去等通知吧

Crud的程序员

TCP 网络协议 IP

架构师系列9: 找出单向链表合并节点

桃花原记

可能会重塑未来移动支付市场的格局

CECBC区块链专委会

货币

数字人民币红包迎战“双十二” 六大行钱包全接入

CECBC区块链专委会

数字人民币

【第十二周】课后作业

云龙

Java内存模型JMM详细解析

云流

程序员 并发编程 架构师 java面试

Github上标星30K+的SpringBoot实战电商项目,简直不要太牛!

Java成神之路

Java 程序员 架构 面试 编程语言

一只支持凡尔赛文学创作的摄影手机

脑极体

Microsoft 推出 Bosque,一种编写易推理代码的编程语言-InfoQ