QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:00931
用户头像

发布了 773 篇内容, 共 525.5 次阅读, 收获喜欢 1578 次。

关注

评论

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

GeekPwn 2020少年黑客马拉松大赛即将开启 谁将CARRY全场?

Geek_116789

一致性哈希 -- java 实现

lei Shi

Java线程池最细的解释,看完后彻底征服面试官

小新

Java 架构 面试 线程 线程池

道路千万条,安全只三条

石君

安全评估 安全设计

Hexo blog 创建指导手册

想飞的鱼

GitHub Hexo GitHub Pages Blog

架构师训练营 第5课学习总结

Glowry

极客大学架构师训练营

架构训练营第五周 - 作业

无心水

极客大学架构师训练营

JVM中的双亲委派机制你还没懂吗?

阿文

Java JVMTI JVM 深入理解JVM JVM原理

[1.3万字] 玩转前端二进制

阿宝哥

Java 大前端 base64 Blob

公司一直用Mybatis的原因原来在这!不得不竖起我的大拇指

小闫

Java mybatis mybatis-config.xml mybatis缓存

三十张图助你看清红黑树的前世今生

淡蓝色

Java 程序员 数据结构 算法

碎片化学习行不行

封不羁

架构师训练营学习总结

John

极客大学架构师训练营

架构训练营第五周 - 总结

无心水

极客大学架构师训练营

小白也有大厂梦,如何从零开始掌握高薪Java工程师必备技能?

无予且行

Java 架构 面试 后端 大厂

面试官:为什么需要happens-before规则和什么是指令重排序

无予且行

Java 编程 程序员 面试 happens-before

Git 的远端操作及解析(含思维导图)

多选参数

git GitHub gitlab

如果张东升是个程序员

程序员生活志

程序员 张东升

区块链系列教程之:比特币的问题

程序那些事

比特币 区块链 智能合约 以太坊

重学 Java 设计模式:实战策略模式「模拟多种营销类型优惠券,折扣金额计算策略场景」

小傅哥

Java 设计模式 小傅哥 重构 代码优化

从Servlet到Spring Boot

废材姑娘

Java Spring Boot

视读——沟通的艺术,看入人里,看出人外(开篇)

废材姑娘

读书笔记 视觉笔记

依赖倒置原则

John

极客大学架构师训练营

Raft探索历程--Part2

老胡爱分享

分布式系统 raft

针对GPU单指令多数据流的编译优化算法

GPU

gpu 编译器 程序语言 if-conversion

现在面试这么难,背下题就能过的时代一去不复返了

小谈

Java 面试 JVM springboot SpringCloud

有了多线程,为什么还要有协程?

八两

线程 进程 协程 GMP 进程线程区别

【Python】 any() 和 or 区别你真的知道吗?

Leetao

Python 数据结构 Python基础知识

Java程序员的必修课之Spring理解透彻了吗?不会还咋去面试?

犬来八荒

Java spring 面试 后端 框架

刚去面试现场聊了一个多小时的Redis ,悄悄分享给大家!

Java小咖秀

nosql redis 面试

它们为什么这么快:从多进程到多线程再到I/O复用

Ya

多线程 进程 并发

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