写点什么

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

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

关注

评论

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

【薪火计划】05 - 坦诚是领导力的根基

AR7

管理

折半查找和插值查找

ilovealt

算法和数据结构

百度的五年乌镇行旅:AI如何穿越过漫漫时光,成为世界的发展新动能?

脑极体

图解 | 不得错过的Binder浅析(二)

哈利迪

android

面试专题-Java基础面试技术

洛神灬殇

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

wgl

极客大学架构师训练营

市值管理机器人、自动跑k线机器人开发

t13823115967

市值管理机器人 自动跑k线机器人开发

面试JVM一问三不知??来看看这个

程序员的时光

JVM Java虚拟机

在线K歌的发展和优势

anyRTC开发者

音视频 WebRTC RTC sdk

从前世今生聊一聊,大厂为啥亲睐时序数据库

华为云开发者联盟

数据库 场景 时序

他在滕王阁上醒来,见到智慧视觉第一城

脑极体

Web前端如何实现断点续传

QiLab

Web 断点续传 upload pl

架构师训练营第九周作业

四夕晖

面试 | 程序猿面试,Elasticsearch被坑被虐的体无完肤...

Java架构师迁哥

第一周 架构方法 作业一 「架构师训练营 3 期」

胡云飞

极客大学架构师训练营 架构方法

Appium上下文和H5测试(一)

清菡软件测试

App

About Me

翎君

android

【JAVA】List转换为array

笑春风

架构师训练营第 1 期 - 第 9 周 - 命题作业

wgl

区块链应用场景有哪些?区块链应用开发

t13823115967

区块链应用场景有哪些 区块链应用开发

大厂经验:埋点数据质量之埋点验证

阿亮

埋点 数据验证

如何基于App SDK快速地开发一个IoT App?

IoT云工坊

App 物联网 sdk 智能家居

《华为数据之道》读书笔记:第 2 章 建立企业级数据综合治理体系

方志

数据中台 数据仓库 数字化转型 数据治理

MySQL如何实现万亿级数据存储?

冰河

MySQL 分布式 微服务 高可用 mycat

Python进阶——什么是元类?

Kaito

Python

30分钟开发一款抓取网站图片资源的浏览器插件

徐小夕

Java chrome 大前端 chrome扩展

经典之作——《数学之美》第二版-吴军

计算机与AI

数学

甲方日常 56

句子

工作 随笔杂谈 日常

彻底搞懂 IO 底层原理

vivo互联网技术

Java Netty 服务器 语法

moon不讲武德!!!一个类加载机制给面试官说蒙了!!

moon聊技术

Java JVM 类加载 类加载器

LeetCode题解:169. 多数元素,分治,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

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