Spec Sharp

Spec#
Kieliluokka moniparadigma: rakenteellinen , pakottava , oliosuuntautunut , tapahtumasuuntautunut , toiminnallinen , sopimuspohjainen
Esiintyi 2004
Tekijä Microsoftin tutkimus
Kehittäjä Microsoftin tutkimus
Vapauta 1.0.21125
Tyyppijärjestelmä staattinen , tiukka , tyyppiturvallinen , nimeävä
Vaikutettu C# , Eiffel
vaikutti Laulaa#
Verkkosivusto research.microsoft.com/s…

Spec#  on ohjelmointikieli , joka tukee määrittelykielen ominaisuuksia , jotka laajentavat C# -ohjelmointikielen ominaisuuksia sopimusohjelmoinnilla , kuten se tehdään Eiffel -kielessä , mukaan lukien objektiinvariantit , ennakkoehdot ja jälkiehdot. Kuten ESC/Java , kieli sisältää lauseita todistavan staattisen tarkistimen, jonka avulla useimmat tällaiset invariantit voidaan tarkistaa staattisesti. Se sisältää myös monia muita pieniä lisäyksiä, kuten ei-nolla-viittaustyyppejä.

Microsoft Research kehitti sekä Spec#- että C# -kielet . Spec# toimi myös perustana Sing# -kielen luomiselle, jonka myös Microsoft Research on kehittänyt.

Esimerkki

Tässä esimerkissä esitetään kaksi perusrakennetta, joita käytetään lisättäessä sopimuksia koodiisi.

static void Main ( string ![] args ) vaatii args . Pituus > 0 { foreach ( string arg in args ) { Konsoli . WriteLine ( arg ); } }
  • ! käytetään luomaan ei-nolla-viittaustyyppi, mikä tarkoittaa, että sille ei voi määrittää nolla-arvoa. Tämä eroaa nolla-tyypeistä, joiden avulla niille voidaan määrittää nolla -arvoja .
  • vaatii ("vaatii") tarkoittaa ehtoa, joka täyttyy annetussa koodissa. Tässä tapauksessa argien pituus ei saa olla nolla tai pienempi.

Lähteet

  • Barnett, M., KRM 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.

Katso myös

Muita lähteitä