Spec Sharp

Поделись знанием:
Перейти к: навигация, поиск
Правильный заголовок этой статьи — Spec#. Он показан некорректно из-за технических ограничений.
Spec#
Класс языка:

мультипарадигменный: структурный, императивный, объектно-ориентированный, событийно-ориентированный, функциональный, контрактный

Появился в:

2004

Автор:

Microsoft Research

Выпуск:

1.0.21125

Система типов:

статическая, строгая, типобезопасная, номинативная

Испытал влияние:

C#, Эйфель

Повлиял на:

Sing#

Сайт:

[research.microsoft.com/specsharp/ h.microsoft.com/specsharp/]

Spec# — язык программирования с поддержкой особенностей языка спецификаций, расширяющих возможности языка программирования C# контрактным программированием, так, как это сделано в языке Эйфель, включая объектные инварианты, предусловия и постусловия. Как и ESC/Java, язык содержит инструмент статической проверки, основанный на доказательстве теорем, позволяющий статически проверять большинство таких инвариантов. Также он включает в себя множество других не столь значимых дополнений, как например, ненулевые ссылочные типы.

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);
        }
    }
  • ! используется для создания ненулевого ссылочного типа, то есть вы не сможете присвоить ему нулевое значение. Это отличается от нулевых типов, которые допускают присваивание им значений типа null.
  • requires («требует») означает условие, выполнимое в данном коде. В этом случае длина args не должна быть равной нулю или меньше.

Источники

  • Barnett, M., K. R. M. Leino, W. Schulte, «The Spec# Programming System: An Overview.» Proceedings of Construction and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS), Marseilles. Springer Science+Business Media, 2004.

См. также

Дополнительные источники

  • [research.microsoft.com/specsharp/ Веб-сайт Spec#] от Microsoft Research
  • [specsharp.codeplex.com/ Spec#] на сайте Codeplex


Напишите отзыв о статье "Spec Sharp"

Отрывок, характеризующий Spec Sharp

– Ну, до свидания, Болконский! До свидания, князь; приезжайте же обедать раньше, – пocлшaлиcь голоса. – Мы беремся за вас.
– Старайтесь как можно более расхваливать порядок в доставлении провианта и маршрутов, когда будете говорить с императором, – сказал Билибин, провожая до передней Болконского.
– И желал бы хвалить, но не могу, сколько знаю, – улыбаясь отвечал Болконский.
– Ну, вообще как можно больше говорите. Его страсть – аудиенции; а говорить сам он не любит и не умеет, как увидите.


На выходе император Франц только пристально вгляделся в лицо князя Андрея, стоявшего в назначенном месте между австрийскими офицерами, и кивнул ему своей длинной головой. Но после выхода вчерашний флигель адъютант с учтивостью передал Болконскому желание императора дать ему аудиенцию.
Император Франц принял его, стоя посредине комнаты. Перед тем как начинать разговор, князя Андрея поразило то, что император как будто смешался, не зная, что сказать, и покраснел.
– Скажите, когда началось сражение? – спросил он поспешно.
Князь Андрей отвечал. После этого вопроса следовали другие, столь же простые вопросы: «здоров ли Кутузов? как давно выехал он из Кремса?» и т. п. Император говорил с таким выражением, как будто вся цель его состояла только в том, чтобы сделать известное количество вопросов. Ответы же на эти вопросы, как было слишком очевидно, не могли интересовать его.
– В котором часу началось сражение? – спросил император.
– Не могу донести вашему величеству, в котором часу началось сражение с фронта, но в Дюренштейне, где я находился, войско начало атаку в 6 часу вечера, – сказал Болконский, оживляясь и при этом случае предполагая, что ему удастся представить уже готовое в его голове правдивое описание всего того, что он знал и видел.
Но император улыбнулся и перебил его:
– Сколько миль?
– Откуда и докуда, ваше величество?
– От Дюренштейна до Кремса?
– Три с половиною мили, ваше величество.
– Французы оставили левый берег?
– Как доносили лазутчики, в ночь на плотах переправились последние.
– Достаточно ли фуража в Кремсе?
– Фураж не был доставлен в том количестве…
Император перебил его.
– В котором часу убит генерал Шмит?…
– В семь часов, кажется.
– В 7 часов. Очень печально! Очень печально!
Император сказал, что он благодарит, и поклонился. Князь Андрей вышел и тотчас же со всех сторон был окружен придворными. Со всех сторон глядели на него ласковые глаза и слышались ласковые слова. Вчерашний флигель адъютант делал ему упреки, зачем он не остановился во дворце, и предлагал ему свой дом. Военный министр подошел, поздравляя его с орденом Марии Терезии З й степени, которым жаловал его император. Камергер императрицы приглашал его к ее величеству. Эрцгерцогиня тоже желала его видеть. Он не знал, кому отвечать, и несколько секунд собирался с мыслями. Русский посланник взял его за плечо, отвел к окну и стал говорить с ним.