Cobra (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
Cobra
Autore Chuck Esterbrook (USA)
Data di origine 2008
Ultima versione 0.9.4 (24 maggio 2013)
Utilizzo General purpose
Paradigmi Orientato agli oggetti, funzionale
Tipizzazione forte, statica, dinamica, inferita
Estensioni comuni .cobra
Influenzato da Python, Eiffel, C#, Objective-C
Implementazione di riferimento
Sistema operativo Windows, Linux, Mac
Licenza MIT

Cobra è un linguaggio di programmazione general purpose, multi-paradigma, open source creato a partire dal 2008 dal programmatore californiano Chuck Esterbrook. Nato inizialmente per Windows avendo come target la piattaforma Microsoft.Net questo linguaggio è in grado di girare anche su sistema operativo Linux e su Mac sfruttando il progetto Mono (porting di .Net nel mondo *nix). Sia pure a livello embrionale è in corso anche il porting verso la piattaforma Java e verso il sistema operativo per dispositivi mobili Android. L'intento dell'autore era quello di creare uno strumento che unisse le caratteristiche a suo modo di vedere più interessanti di altri linguaggi. In particolare fonti di ispirazione sono stati C#, Python ed Eiffel, quest'ultimo in particolare per l'adozione del paradigma detto "design by contract". Il progetto ha subito un apparente rallentamento nel corso del 2011 ma è tuttora in via di aggiornamento da parte dell'autore.

Hello, World[modifica | modifica sorgente]

Il seguente esempio propone il classico "Hello, World!":

class Hello
    def main
        print 'Hello, World'


di seguito invece abbiamo la creazione di una classe:

class Persona
 
    var _nome as String
    var _eta as int
 
    cue init(nome as String, eta as int)
        _name, _age = name, age
 
    def toString as String is override
        return 'Mi chiamo [_nome] ed ho [_eta] anni'


Caratteristiche del linguaggio[modifica | modifica sorgente]

  • è un linguaggio orientato a oggetti che supporta anche molti aspetti di programmazione funzionale (chiusure, espressioni lambda)
  • supporta sia la tipizzazione statica che quella dinamica e l'inferenza di tipo
  • supporta nativamente le metodologie design by contract e unit test
  • è in grado di sfruttare pienamente il framework .Net


Collegamenti esterni[modifica | modifica sorgente]