Hvorfor Cobra?

Original: http://cobra-language.com/docs/why/

Der er masser af objektorienterede programmeringssprog, der findes, herunder C #, Python og Ruby. Så hvorfor bruge Cobra? Dette dokument omhandler dette spørgsmål.

Lige nu, hvis du vil have software kontrakter i dit sprog, hvordan kan du få dem? Svaret er at bruge Eiffel eller D. Hvad nu hvis du vil have statisk og dynamisk binding? Brug Objective-C eller Boo. Hvad hvis du ønsker udtryksfuldhed og hurtig kodning? Brug Python, Ruby eller Smalltalk. Hvad hvis du vil have runtime performance? Brug C #, Java, C ++ osv Hvad hvis du vil have førsteklasses sprogstøtte til unit test? Brug D.

Men hvad nu hvis du vil have alle dem? … Du kan ikke få dem! Og det er frustrerende, fordi ingen af ​​disse produktivitetsfremmende funktioner er uforenelige med hinanden. Du bør ikke nødt til at vælge mellem C ++ ‘s hastighed, Pythons udtryksfuldhed og Eiffel kontrakter. Der er ingen teoretisk grund til, at du ikke kan få det hele. Der er “bare” en masse arbejde, der kræves for at gøre det ske.

En måde at karakterisere Cobra er med disse højt niveau punkter:

Hurtigt, udtryksfuld kodning
hurtig udførelse
Statisk og dynamisk binding
Sprog niveau støtte til kvalitet
Cobra opnår 1 ved at følge Python og Ruby (men ikke religiøst). Det opnår 2 ved at begunstige statisk skrive (“I = 5” betyder “i” er et helt tal, og vil altid være) og udnytte NET | Mono til maskinkode generation. Det gør 3 ved hjælp af NET typebestemmelsessystem på kompileringstidspunktet for statiske typer, og ved hjælp NET driftstid til dynamisk binding. Det tager sproglige funktioner til 4 fra flere kilder, herunder Eiffel, Python og sin egen compile-tid nul tracking.

Der er yderligere forbedringer i Cobra såsom misligholdende til nøjagtige decimal matematik og levere detaljerede postmortem undtagelse rapporter.

Så “hvad er nyt” i Cobra er ikke de enkelte elementer såsom kontrakter, klasser, etc. Det er en kombination af alt, der går ind i det. Tænk hvad der ville ske, hvis du var kodning i Cobra, skiftede derefter til et andet sprog:

Hvis du skal flytte fra Cobra til Python, ville du give op valgfri statisk skrive, kontrakter, compile-tid nul tracking, lukninger og mere.
Hvis du skal flytte fra Cobra til C #, ville du opgive indfødte kontrakter, rene indsamling litteraler, ekspressive syntaks, ensartet compile-tid nul sporing, mixins og meget mere.
Bemærk, at Cobra har nogle nye elementer fordi det aldrig var bestemt til at være eksperimenterende. Det er en praktisk syntese af allerede gennemprøvede funktioner, som nu er spredt på flere sprog.

Nuværende status

Fra vinteren 2013 kan Cobra blive betragtet som en “sen beta” offer. Funktionerne omfatter:

OOP og venner:
klasser, interfaces, structs
metoder, egenskaber, indeksører
mixins, forlængerledninger metoder
Generics attributter
Kvalitetskontrol:
kontrakter, påstande
unit test, DOC strenge
compile-tid nul sporing
udtryksfuldhed:
statisk og dynamisk binding
litteraler for lister, ordbøger og sæt
i og indebærer operatører
til og hvis udtryk
udskæring
interpolerede strygere
compile-tid typen inferens
lambdas og lukninger
valgfri parametre, standardværdier
Generelt produktivitet:
exception handling
obduktion undtagelse rapport
garbage collection
scripting bekvemmeligheder
ren syntaks
et skridt løb
pund-bang linje (#!)
Kompileret sprog ydeevne
Indbyggede værktøjer omfatter:

compiler
Unit test runner
dokument generator
syntaks overstregningstusch
Delt / statisk data lister
undtagelse reporter
Andre værktøjer såsom debuggere og profilers er let tilgængelige fra .NET / Mono økosystem.

øvrige noter

# En port til JVM er i gang og kunne bruge flere frivillige.

Moderne IDE support er tilgængelig for MonoDevelop / Xamarin Studio.

Cobra er open source under den eftergivende MIT licens.

Hvor til næste?

For at lære de meget grundlæggende i sproget, som vil være nyttigt, når du læser alt andet, se Hej, verden. (og mere).

Du vil med tiden blive ført til følgende links, men måske du også ønsker at tjekke dem ud nu:

Der er flere oplysninger om sprog level support for kvalitet.

Der er en detaljeret sammenligning Python (og IronPython).

Der er månedlige opdateringer.

Og da Cobra trækker så meget fra andre sprog, der er kvitteringer.

Comments are closed.