Cobra (programmeringsspråk)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 9 maj 2018; kontroller kräver 6 redigeringar .
Kobra
Språkklass multiparadigm :
objektorienterad
Framträdde i 2006
Författare Chuck Esterbrook
Filtillägg _ .cobra
Släpp 0.9.6 ( 23 december 2013 )
Typ system statisk , strikt , dynamisk , typinferens
Stora implementeringar .NET Framework , Mono
Blivit påverkad Python , Eiffel , C# , Objective-C , D
Licens MIT
Hemsida cobra-language.com

Cobra  är ett allmänt objektorienterat programmeringsspråk på hög nivå . Designad av Chuck Esterbrookför .NET- och Mono- plattformar . Språkets syntax är baserad på syntaxen för Python , med hjälp av indrag för att syntaktiskt markera kodblock. Språket stöder både statisk och dynamisk typning , kontraktsprogrammeringsstöd och inbyggd enhetstestning . Har förmågan att använda lambda-uttryck , stängningar , listuttryck och generatorer . Cobra möjliggör snabb utveckling och hög prestanda [1] .

Cobra-språkimplementeringen är öppen källkod , släppt under MIT-licensen den 29 februari 2008, vilket tillåter fri användning och modifiering av koden.

Syntax och semantik

Docstrings

Cobra tillhandahåller en mekanism för att dokumentera DocString-kod.

klass Använder delat def countChars ( s som sträng , c som char ) som int """ Returnerar antalet tecken c i sträng s. """ count = 0 för ch in s om ch == c count += 1 return count

Enhetstestning

Låter dig kontrollera riktigheten av en viss klass, egenskap eller metod för programmets källkod.

class Utils delad def countChars ( s som sträng , c som char ) som int """ Returnerar antalet tecken c i strängens """ test hävda Utils . countChars ( '' , c 'x' ) == 0 hävdar Utils . countChars ( 'x' , c 'x' ) == 1 hävdar Utils . countChars ( 'X' , c 'x' ) == 0 hävdar Utils . countChars ( ' ! ! ' , c ' !' ) == 2 kroppsantal = 0 för lm i s om lm ​​== c count + = 1 returräkning

Kontraktsprogrammering

Ger giltig input till den anropade komponenten, vilket hjälper till att fånga upp fel tidigare, när de är lättare att diagnostisera.

class Customer var _contacts as List < of Contact > kontakter från var def addContact ( kontakt som kontakt ) kräver kontakt inte i . kontakta kontakt . namn kontakt . kund är noll säkerställ kontakt . kund == detta . kontakter . räkna == gammal . kontakter . räkna + 1 kroppskontakt . _ kund = denna _kontakter . lägg till ( kontakt )

Tittar på null vid kompilering

Undviker runtime noll-pekarfel i många fall. I Cobra kan null godkännas om en nollbar typ tillåts: ett enda frågetecken (?) suffix.

klass Foo def bar ( s som String ? ) om s # samma som "om s inte är noll" skriv ut Utils . countChars ( s , c 'x' )

Andra språks inflytande på Cobra [2]

Cobra har påverkats av många programmeringsspråk:

IDE

Exempel

Hej världen exempel:

klass Hej def huvudtryck ' Hej världen!'

Fibonacci nummergenerator exempel:

class Fib def compute ( räknas som int ) som List < of int > är delad lista = Lista < of int > ( ) a , b = 0 , 1 för i i count list . lägg till ( b ) a , b = b , a + b returlista klass Program def main i = 1 för n i Fib . beräkna ( 10 ) skriv ut '[i]. [n]' i += 1

Klassexempel:

klassperson _ var _name as String var _age as int cue init ( namn som sträng , ålder som int ) _namn , _ålder = namn , ålder def toString as String is override return 'Mitt namn är [_name] och jag är [_age] år gammal'

Anteckningar

  1. Crill, Paul . Cobra-språket glider till öppen källkod , InfoWorld  (7 februari 2008). Arkiverad från originalet den 8 juni 2011. Hämtad 31 augusti 2010.
  2. Språkpresentation vid Lang .NET Symposium 2008  (nedlänk) Cobra Programming Language - Chuck Esterbrook

Länkar