写点什么

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

作者:Abhishek Kaushik

  • 2019-06-21
  • 本文字数:1210 字

    阅读完需:约 4 分钟

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-06-21 08:00899
用户头像

发布了 756 篇内容, 共 499.2 次阅读, 收获喜欢 1560 次。

关注

评论

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

Robot OS网络通信MQTT实战

轻口味

c++ android IoT mqtt 4月月更

事务的隔离级别与MVCC

蝉沐风

MySQL 事务隔离级别 事务

Pipy MQTT 代理之(三)Logging

Flomesh

IoT 代理 mqtt Pipy

在线CSV转XML工具

入门小站

工具

Linux下BusyBox根文件系统制作

DS小龙哥

4月月更

外包学生管理系统

流火

预测猝死时间:AI与死神的争夺

脑极体

Python 中删除列表元素的三种方法

AlwaysBeta

Python List 编程 程序员 列表

一文读懂Seek Tiger推出创世节点的意义

西柚子

spring-cloud-kubernetes与k8s的configmap

程序员欣宸

Java 4月月更

深入浅出 Ext4 块和 Inode 分配器的优化(下)

焱融科技

云计算 高性能 文件存储 文件系统

云效钉钉小程序上线啦!业务方请痛快一键三连

阿里云云效

阿里云 云原生 钉钉 研发 云效钉钉小程序

MongoDB Java 原生使用示例

Java mongodb 4月月更

2022年,我加入了微软MVP大家庭

不脱发的程序猿

开源社区 技术影响力 微软MVP

Grpc服务开发和接口测试初探【Java】

FunTester

在线YAML转JSON工具

入门小站

工具

OpenMLDB Pulsar Connector:高效打通实时数据到特征工程

第四范式开发者社区

数据库 数据传输 OpenMLDB 特征 特征平台

虎符交易所完成三月份HOO回购 生态板块持续扩展

区块链前沿News

Hoo 虎符交易所 回购

Flutter 使用 Dio 的 Post 请求添加数据

岛上码农

flutter ios 安卓开发 4月月更 跨平台开发

热敏电阻、RTD、热电偶的原理和特性

不脱发的程序猿

PT100 热敏电阻 RTD 热电偶

架构训练营 - 模块 3- 作业

kenlu

模块三作业(学生管理系统架构设计文档)

Dean.Zhang

学生管理系统详细架构设计文档

踩着太阳看日出

架构训练营

如何制定移动APP的加载与刷新策略?

InfoQ IT百科

亚马逊云科技平台上的无服务器 WebSocket

亚马逊云科技 (Amazon Web Services)

Serverless websocket 亚马逊云科技 appsync

睡眠革命

石刻掌纹

Go 语言入门很简单:sort 包

宇宙之一粟

排序 Go 语言 4月月更

阿里云移动研发平台EMAS,3月产品动态

移动研发平台EMAS

ios 阿里云 移动应用 Andriod 移动推送

linux之sshpass命令

入门小站

Linux

[Day21]-[动态规划] 494. 目标和

方勇(gopher)

LeetCode 动态规划 数据结构算法

Spring核心流程分析

IT巅峰技术

Microsoft 推出 Bosque,一种编写易推理代码的编程语言_语言 & 开发_InfoQ精选文章