Spec Sharp

Spec#
Sprog klasse multi- paradigme: strukturel , imperativ , objektorienteret , begivenhedsorienteret , funktionel , kontraktuel
Dukkede op i 2004
Forfatter Microsoft Research
Udvikler Microsoft Research
Frigøre 1.0.21125
Type system statisk , streng , typesikker , nominativ
Blev påvirket C# , Eiffel
påvirket Synge#
Internet side research.microsoft.com/s...

Spec#  er et programmeringssprog med understøttelse af specifikationssprogfunktioner , der udvider mulighederne for C# programmeringssproget med kontraktprogrammering , som det gøres i Eiffelsproget , herunder objektinvarianter , forudsætninger og postbetingelser. Ligesom ESC/Java indeholder sproget en teorembevisende statisk checker, der gør det muligt at kontrollere de fleste sådanne invarianter statisk. Den indeholder også mange andre mindre tilføjelser, såsom referencetyper, der ikke er nul.

Microsoft Research udviklede både Spec# og C# sprogene . Spec# tjente også som grundlag for skabelsen af ​​Sing# -sproget , også udviklet af Microsoft Research.

Eksempel

Dette eksempel viser to grundlæggende strukturer, der bruges, når du tilføjer kontrakter til din kode.

statisk tomrum Main ( streng ![] args ) kræver args . Length > 0 { foreach ( string arg in args ) { Console . WriteLine ( arg ); } }
  • ! bruges til at oprette en ikke-null referencetype, hvilket betyder, at du ikke kan tildele en null-værdi til den. Dette er forskelligt fra null-typer, som gør det muligt at tildele null- værdier til dem .
  • kræver ("kræver") betyder en betingelse, der er opfyldt i den givne kode. I dette tilfælde må længden af ​​args ikke være nul eller mindre.

Kilder

  • Barnett, M., KRM Leino, W. Schulte, "Spec#-programmeringssystemet: et overblik." Proceedings of Construction og analyse af sikre, sikre og interoperable smarte enheder (CASSIS) , Marseille. Springer Science+Business Media , 2004.

Se også

Yderligere kilder