Spec#是一种基于 C#的研究型语言。它是基于契约优先的原则,即函数的前提条件和后置条件都以声明的方式定义。其他的特性还包括类不变量、非空引用类型和加强的静态分析功能。
我们可以在.NET 4 中找到一些重要的特性,比如:代码契约,Spec#当前的研究状况比较尴尬。最近,微软声明放宽对它的约束,但也仅是一点而已。获取了微软研究共享许可协议后, Spec#的源代码已经可以从 CodePlex 站点上下载了。这份许可仅限于非商业用途。
与 Spec#配套的有 Boogie,一种用于代码验证的中间语言。 Boogie 并非仅限于.NET ,它还支持其他的语言,包括“HAVOC、C 语言的验证程序 vcc、Dafny 语言和它的验证程序以及并发语言 Chalice”。
Boogie 还是一种工具的名称。该工具接受 Boogie 语言的输入,并随意地推断给定 Boogie 程序的一些不变量,接着生成验证条件,然后传给 SMT 解算程序。默认的 SMT 解算程序是 Z3。
Boogie 已经基于微软公共许可正式发布,它符合开源标准。
当前微软把代码契约定位为今后的发展方向,这意味着 Spec#未来很可能不会有太大的发展。
更多内容推荐
14|类型系统:有哪些必须掌握的 trait?
trait 到底做到了什么?延迟绑定了实现行为。
2021-09-24
C# 8.0 正式发布:Visual Studio 2019 支持所有新功能
新的语言功能包括可为空的引用类型、异步流、默认接口成员及新的代码模式。
微软助力企业数字化转型
微软助力企业数字化转型
运行时(上):不同语言形态下的函数在容器中是如何执行的?
希望你通过今天的课程,能够对函数计算形态下的语言运行时有一定的了解,不仅会用,更知道它如何实现的,在后续遇到问题或者开发更复杂的功能时,能够做到心中有数。
2022-09-12
.NET6 新东西 -- 隐式命名空间引用
早在 .NET 6 Preview 7版本中微软就已经引入隐式命名空间引用。在.NET Preview 7这个版本中这个功能是默认开启的,如果需要禁用它的化就需要配置DisableImplicitNamespaceImports来禁用,但是到了.NET6 RC1版本的时候这个功能是禁用的,如果要使用就需要通过
2021-11-17
如何将 C# 7 类库升级到 C# 8?使用可空引用类型
从案例角度,告诉你如何将C# 7类库升级到C# 8(支持可空引用类型)。
.NET Core 3.0 特性初探:C# 8、WPF、Windows Forms、EF Core
.NET Core的下一个主要版本最近进入了预览阶段,.NET Core 3.0将支持使用Windows Presentation Foundation (WPF)、Windows Forms(WinForms)、Entity Framework (EF)、Blazor、 C# 8和.NET Standard 2.1构建桌面应用程序。
微软发布.NET 5.0 RC1,未来将只有一个.NET
微软发布了.NET 5.0 RC1,这是.NET 5在11月正式发布之前的第一个“go-live”版本。
18|错误处理:为什么 Rust 的错误处理与众不同?
集百家之长的Rust错误处理,都做到了什么?
2021-10-04
微软开源新一代浏览器的 JavaScript 引擎核心代码
近日,微软宣布开源Chakra的核心组件。Chakra是微软新一代浏览器Microsoft Edge的JavaScript引擎。相关代码将于2016年1月上传到微软的GitHub账号,项目名称为ChakraCore,遵循MIT许可协议。
13|类型系统:如何使用 trait 来定义接口?
trait是啥?能干什么?什么时候用?
2021-09-22
Visual Basic 的未来之路
微软宣布了Visual Basic未来的一些重大变化。代表公司六年来的第一次重大变化,Visual Basic将摆脱C#,从C#分离。
.NET 4.6 的 RyuJIT 编译器中发现严重的 Bug
来自Stack Exchange的开发者Nick Craver与Marc Gravell提交了一个严重的bug的相关报告,它可能会影响到安装了.NET 4.6的用户与开发者。一旦安装了.NET 4.6之后,新的RyuJIT编译器将默认设置为启动状态,它在用户的程序执行时可能会产生一个严重的问题。
外部函数接口,能不能取代 Java 本地接口?
今天,我们一起来讨论Java的外部函数接口。
2021-12-13
微软开源了其量子计算编程语言 Q#
在Build 2019会议上,微软宣布将于今年夏天在GitHub上部分开源其量子开发工具包(Quantum Developer Kit),包括Q#编译器和量子模拟器。
C# 8.x 先睹为快
尽管 C# 8.0 还需要几个月的时间才能发布,但是 C# 8.x 的特性计划已经开始了。
微软开源 C#编译器
微软的Roslyn项目的目标已经揭开:微软以开源许可协议发布了重写的C#和VB编译器。用户不仅能够获益于Roslyn中改进的工具,而且还能从底层添加特性,或者分析其行为。
池化.NET 内存流以解决大内存堆分配问题
与很多依赖于标记-清理的垃圾回收器的语言一样,C#也会在频繁分配内存或分配大块内存时产生性能问题。微软必应的高级软件开发工程师Ben Watson,就曾在使用MemoryStream类的时候遇到了这种问题。
微软宣布开源 WPF、WinForms 和 WinUI
在微软Connect 2018大会上,微软发布了.NET Core 3.0的第一个预览版。同时,微软还宣布,他们将WPF、Windows Forms(WinForms)和WinUI作为开源项目托管在GitHub上。
35|静态类型检查:ESLint 语法规则和代码风格的检查
linter作为代码检查工具,可以帮助我们将代码出现质量问题的风险降到最低。
2022-12-08
评论