Spec Sharp - Spec Sharp
Tento článek obsahuje a seznam doporučení, související čtení nebo externí odkazy, ale jeho zdroje zůstávají nejasné, protože mu chybí vložené citace.Srpna 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Paradigma | multi-paradigma: strukturovaný, rozkazovací způsob, objektově orientovaný, řízené událostmi, funkční, smlouva |
---|---|
Navrhl | Microsoft Research |
Vývojář | Microsoft Research |
Poprvé se objevil | 2004 |
Stabilní uvolnění | SpecSharp 2011-10-03 / 7. října 2011 |
Psací disciplína | statický, silný, bezpečný, jmenovaný |
Licence | Licenční smlouva se sdíleným zdrojem Microsoft Research (MSR-SSLA) |
webová stránka | výzkum |
Ovlivněno | |
C#, Eiffelova | |
Ovlivněno | |
Zpívat# |
Spec # je programovací jazyk s specifikační jazyk funkce, které rozšiřují možnosti C# programovací jazyk s Eiffelova -jako smlouvy, počítaje v to objektové invarianty, předběžné podmínky a dodatečné podmínky. Jako ESC / Java, zahrnuje statický kontrolní nástroj založený na prověrce věty, který je schopen staticky ověřit mnoho z těchto invariantů. Zahrnuje také celou řadu dalších menších rozšíření jazyka, například jiné typy odkazů než null.
The kódové smlouvy API v .NET Framework 4.0 se vyvinulo se Spec #.
Microsoft Research vyvinul Spec # a C#; na druhé straně Spec # slouží jako základ Zpívat# programovací jazyk, který vyvinul také Microsoft Research.
Funkce
- Viz také: Spec # v C Ostrá syntaxe.
Spec # rozšiřuje základní programovací jazyk C # o funkce, jako jsou:
- Nelze povolit typy
- Struktury pro kódovou smlouvu jako předpoklady a dodatečné podmínky.
- Zkontrolované výjimky podobné těm v Jáva.
- Pohodlná syntaxe
Příklad
Tento příklad ukazuje dvě základní struktury, které se používají při přidávání kontraktů do vašeho kódu (zkuste ve svém prohlížeči Spec # ).
statický int Hlavní(tětiva![] args) vyžaduje args.Délka > 0; zajišťuje vrátit se == 0; { pro každého(tětiva arg v args) { Řídicí panel.WriteLine(arg); } vrátit se 0; }
- ! se používá k vytvoření referenčního typu, který nemá povolenou hodnotu Null, např. nemůžete nastavit hodnotu na null. To je na rozdíl od typů s možnou hodnotou Null, což umožňuje nastavit typy hodnot jako nula.
- vyžaduje označuje podmínku, kterou musí kód dodržovat. V tomto případě nesmí být délka oblouků nulová nebo menší.
- zajišťuje označuje postkondicii, kterou musí kód dodržovat.
Zpívat#
Sing # je nadmnožina specifikace #. Microsoft Research vyvinul Spec # a později jej rozšířil na Sing # za účelem vývoje Jedinečnost operační systém. Sing # rozšiřuje možnosti Spec # o podporu kanálů a nízkoúrovňový programovací jazyk konstrukty, které jsou nezbytné pro implementaci systémový software. Sing # je typově bezpečný. Sémantika primitiv pro předávání zpráv v Sing # je definována formálními a písemnými smlouvami.[Citace je zapotřebí ]
Zdroje
- Barnett, M., K. R. M. Leino, W. Schulte, „The Spec # Programming System: An Overview.“ Konstrukce a analýza bezpečných, zabezpečených a interoperabilních inteligentních zařízení (CASSIS), Marseilles. Springer-Verlag, 2004.