AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

受够了结构化编程的复杂,微软发布全新编程语言 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:408345
用户头像

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

关注

评论

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

全球城市ZoneId和UTC时间偏移量的最全对照表

YourBatman

GMT UTC ZoneId 时区

架构师 3 期 3 班 -week9- 作业

zbest

作业 week9

关注直播 解锁采集器新功能

滴滴云

运维 可观测性 直播技术 滴滴夜莺

[JetPack] LiveData源码解析

Changing Lin

android 技术 JetPack

Java 程序经验小结:避免使用终结方法

后台技术汇

28天写作

FFMpeg解码API以及在解码过程中存在的丢帧问题

wangwei1237

ffmpeg 视频解码

对微服务架构设计实践中若干问题的探讨

xcbeyond

微服务 28天写作

2021面试脚本!夜读互联网Java开发27大专题,终入P7

比伯

Java 程序员 面试 计算机 技术宅

Redis中哈希分布不均匀该怎么办

Java 数据库 编程 程序员 面试

AQS之ReentrantReadWriteLock写锁

伯阳

读写锁 ReentrantReadWriteLock 多线程与高并发 lock

有人相爱,有人年少财务自由,有人数据结构都背不出来

Java架构师迁哥

程序员的简历,要注意以下几点

田维常

简历

还热乎的面经

书旅

百度 面试 面经

如何成为一名优秀的技术Leader?

架构精进之路

成长笔记 七日更 28天写作

腾讯T3大佬亲自教你!一起刷完了这份1307页的安卓面试宝典吧,吐血整理

欢喜学安卓

android 程序员 面试 移动开发

mq消费幂等总结

A

MQ 幂等性 db

第一周

Richard

基于机器学习的逻辑回归模型

无誉

数字钱包系统软件开发|数字钱包APP开发

系统开发

架构师 3 期 3 班 -week9- 总结

zbest

总结 week9

软件测试--cookie学习

测试人生路

软件测试

美团图数据库平台建设及业务实践

NebulaGraph

图数据库

Pulsar vs Kafka,CTO 如何抉择?

Apache Pulsar

大数据 pulsar 消息中间件

k8s 上运行我们的 springboot 服务之——springboot服务https请求

柠檬

Java k8s https Istio,

Spring Boot 中集成ActiveMQ

武哥聊编程

Java springboot SpringBoot 2 28天写作 Activemq

持币生息钱包APP系统开发|持币生息钱包软件开发

系统开发

高效学习:如何制定有价值的学习目标

石云升

学习 28天写作

爱了爱了!带着问题深入学习Handler,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

深度模型的日志异常检测,还有谁不会?

华为云开发者联盟

运维 日志 网络 AIOPS 系统

数据结构与算法 - 哈夫曼树

ios 数据结构与算法

DCache 分布式存储系统|安装部署与应用创建

TARS基金会

缓存 分布式 微服务 存储 TARS

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