Spec# — язык программирования с поддержкой особенностей языка спецификаций, расширяющих возможности языка программирования C# контрактным программированием, так, как это сделано в языке Эйфель, включая объектные инварианты, предусловия и постусловия. Как и ESC/Java, язык содержит инструмент статической проверки, основанный на доказательстве теорем, позволяющий статически проверять большинство таких инвариантов. Также он включает в себя множество других не столь значимых дополнений, как например, ненулевые ссылочные типы.
Spec# | |
---|---|
Класс языка | мультипарадигменный: структурный, императивный, объектно-ориентированный, событийно-ориентированный, функциональный, контрактный |
Появился в | 2004 |
Автор | Microsoft Research |
Разработчик | Microsoft Research |
Выпуск | 1.0.21125 |
Система типов | статическая, строгая, типобезопасная, номинативная |
Испытал влияние | C#, Эйфель |
Повлиял на | Sing# |
Сайт | research.microsoft.com/s… |
Microsoft Research разработала оба языка Spec# и C#. Spec# же послужил основой для создания языка Sing#, разработанный также Microsoft Research.
Данный пример демонстрирует две базовые структуры, используемые при добавлении контрактов в ваш код.
static void Main(string![] args)
requires args.Length > 0
{
foreach(string arg in args)
{
Console.WriteLine(arg);
}
}
![]() | Это «статья-заготовка» о компьютерных языках. Вы можете помочь проекту, дополнив эту статью, как и любую другую в Википедии. Нажмите и узнайте подробности. |
![]() .NET | |
---|---|
Реализации |
|
Архитектура |
|
Инфраструктура |
|
Языки Microsoft | |
Другие языки |
|
Windows Foundations |
|
Компоненты |
|
Сравнения |
|
Будущие технологии |
|
Информационные ресурсы |
|
![]() Microsoft Research (MSR) | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Основные проекты |
| ||||||||||||||
MSR Labs |
| ||||||||||||||
![]() |