Spec Sharp

Spec#
Nyelvóra több paradigma: strukturális , imperatív , objektumorientált , eseményorientált , funkcionális , szerződéses
Megjelent 2004
Szerző Microsoft Research
Fejlesztő Microsoft Research
Kiadás 1.0.21125
Típusrendszer statikus , szigorú , típusbiztos , névelő
Befolyásolt C# , Eiffel
befolyásolta Énekel#
Weboldal research.microsoft.com/s…

A Spec#  egy olyan programozási nyelv , amely támogatja a specifikációs nyelvi funkciókat , amelyek kiterjesztik a C# programozási nyelv képességeit szerződéses programozással , ahogyan az Eiffel nyelvben is történik , beleértve az objektum invariánsokat , elő- és utófeltételeket. Az ESC/Java -hoz hasonlóan a nyelv tartalmaz egy tételbizonyító statikus ellenőrzőt, amely lehetővé teszi a legtöbb ilyen invariáns statikus ellenőrzését. Számos egyéb kisebb kiegészítést is tartalmaz, például nem nulla hivatkozási típusokat.

A Microsoft Research kifejlesztette a Spec# és a C# nyelveket is . A Spec# szolgált alapul a szintén Microsoft Research által kifejlesztett Sing# nyelv létrehozásához is.

Példa

Ez a példa két alapvető struktúrát mutat be, amelyeket szerződések kódjához adásakor használnak.

static void Main ( string ![] args ) args szükséges . Length > 0 { foreach ( string arg in args ) { Console . WriteLine ( arg ); } }
  • ! nem nulla referenciatípus létrehozására szolgál, ami azt jelenti, hogy nem rendelhet hozzá null értéket. Ez különbözik a null típusoktól, amelyek lehetővé teszik null értékek hozzárendelését .
  • megköveteli ("megköveteli") olyan feltételt jelent, amely az adott kódban teljesül. Ebben az esetben az argok hossza nem lehet nulla vagy kisebb.

Források

  • Barnett, M., KRM Leino, W. Schulte, "The Spec# Programming System: An Overview." Proceedings of Safe, Secure and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS) , Marseille. Springer Science+Business Media , 2004.

Lásd még

További források