Cobra (lenguaje de programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 9 de mayo de 2018; las comprobaciones requieren 6 ediciones .
Cobra
clase de idioma multi- paradigma :
orientado a objetos
Apareció en 2006
Autor Chuck Esterbrook
extensión de archivo .cobra
Liberar 0.9.6 ( 23 de diciembre de 2013 )
sistema de tipos inferencia de tipos estática , estricta , dinámica
Implementaciones principales .NET Framework , Mono
sido influenciado Python , Eiffel , C# , Objective-C , D
Licencia MIT
Sitio web cobra-language.com

Cobra  es un lenguaje de programación orientado a objetos de alto nivel y propósito general. Diseñado por Chuck Esterbrookpara plataformas .NET y Mono . La sintaxis del lenguaje se basa en la sintaxis de Python , usando sangría para resaltar sintácticamente bloques de código. El lenguaje admite escritura tanto estática como dinámica , soporte de programación por contrato y pruebas unitarias integradas . Tiene la capacidad de utilizar expresiones lambda , cierres , expresiones de lista y generadores . Cobra permite un desarrollo rápido y un alto rendimiento [1] .

La implementación del lenguaje Cobra es de código abierto , lanzado bajo la licencia MIT el 29 de febrero de 2008, lo que permite el uso y la modificación gratuitos del código.

Sintaxis y semántica

Cadenas de documentación

Cobra proporciona un mecanismo para documentar el código DocString.

class Utils shared def countChars ( s as String , c as char ) as int """ Devuelve el número de caracteres c en la cadena s. """ count = 0 for ch in s if ch == c count += 1 return count

Pruebas unitarias

Le permite verificar la corrección de una clase, propiedad o método en particular del código fuente del programa.

class Utils shared def countChars ( s as String , c as char ) as int """ Devuelve el número de caracteres c en string s """ test assert Utils . countChars ( '' , c 'x' ) == 0 afirmar Utils . countChars ( 'x' , c 'x' ) == 1 afirmar Utils . countChars ( 'X' , c 'x' ) == 0 afirmar Utils . countChars ( ' ! ! ' , c '!' ) == 2 recuento de cuerpos = 0 for ch in s if ch == c recuento += 1 return recuento

Contrato de programación

Proporciona una entrada válida al componente llamado, lo que ayuda a detectar errores antes, cuando son más fáciles de diagnosticar.

clase Cliente var _contactos como Lista < de Contacto > obtener contactos de var def addContact ( contacto como Contacto ) requiere que el contacto no esté en . contacto contacto . nombre de contacto . el cliente es nulo asegurar el contacto . cliente == esto . contactos _ contar == edad . contactos _ conteo + 1 contacto corporal . cliente = este _contactos . agregar ( contacto )

Ver nulo en tiempo de compilación

Evita errores de puntero nulo en tiempo de ejecución en muchos casos. En Cobra, se puede pasar nulo si se permite un tipo anulable: un solo sufijo de signo de interrogación (?).

class Foo def bar ( s as String ? ) if s # igual que "if s is not nil" print Utils . contarCaracteres ( s , c 'x' )

Influencia de otros idiomas en Cobra [2]

Cobra ha sido influenciado por muchos lenguajes de programación:

ID

Ejemplo

Hola mundo ejemplo:

class Hello def main print '¡Hola, mundo!'

Ejemplo de generador de números de Fibonacci:

clase Fib def computar ( contar como int ) como Lista < de int > es lista compartida = Lista < de int > () a , b = 0 , 1 para i en la lista de conteo . agregar ( b ) a , b = b , a + b lista de retorno class Programa def main i = 1 para n en Fib . calcular ( 10 ) imprimir '[i]. [n]' yo += 1

Ejemplo de clase:

persona de clase var _nombre como cadena var _edad como int cue init ( nombre como Cadena , edad como int ) _nombre , _edad = nombre , edad def toString as String is override return 'Mi nombre es [_name] y tengo [_age] años'

Notas

  1. Crill, Paul . Cobra language slithering to open source , InfoWorld  (7 de febrero de 2008). Archivado desde el original el 8 de junio de 2011. Consultado el 31 de agosto de 2010.
  2. Presentación de lenguaje en Lang .NET Symposium 2008  (enlace descendente) Lenguaje de programación Cobra - Chuck Esterbrook

Enlaces