Ir al contenido principal

Entradas

Ioke: un "nuevo" lenguaje de programación

Según la documentación oficial, Ioke es: Un lenguaje plegable que permite escribir código altamente expresivo que escribe código, además de crear abstracciones a cualquier nivel, y la expresividad es el objetivo final del lenguaje.  Un lenguaje dinámico orientado a máquinas virtuales, actualmente la Máquina Virtual de Java y Common Language Runtime .  Fue diseñado desde cero para ser un lenguaje de propósito general altamente flexible.  Es un lenguaje de programación basado en prototipos, inspirado en Io , Smalltalk , Lisp y Ruby . Si lo quieres descargar ve a este enlace: https://ioke.org/download.html Un programa hecho en este lenguaje tiene la extensión *.ik. Veamos un ejemplo: holamundo.ik "Hola, mundo!" println Ejecutamos el programa: $ ioke holamundo . ik Hola, mundo ! Otro ejemplo: Ioke = LanguageExperiment with( goal: :expressiveness, data: as(code), code: as(data), features: [ :dynamic, :object_oriented, ...
Entradas recientes

Go, manejo de excepciones

Cuando programamos es usual cometer ciertos errores que hacen que el flujo normal de un programa sea interrumpido. Tales como operaciones incorrectas, formateo de cadenas que no son cumplen un requisito o condición, invocación de métodos que no deberían realizarse, etc. Go es un lenguaje moderno que ha tomado lo mejor de los lenguajes como Java, C#, etc. y ha mejorado ciertos mecanismos como el manjeo de excepciones. Ejemplo de excepciones (en Java): // División por cero try { int divide = 2 / 0 ; } catch(ArithmeticException ex) { ex . printStackTrace ( ) ; } // Acceder a un índice inexistente int[] arreglo = { 1 , 2 , 3 } ; try { int numero = arreglo [ 3 ] ; } catch(ArrayIndexOutOfBoundsException ex) { ex . printStackTrace ( ) ; } catch(Exception ex) { ex . printStackTrace ( ) ; } // Parsear una cadena no numérica o con formato incorrecto try { int entero = Integer . parseInt ( "23f" ) ; } catch(NumberFormatExcept...

Rust, manejo de excepciones

El manejo de excepciones nos ayuda a que nuestros programas continuen su flujo a pesar de algún error o fallo existente. Rust posee mecanismos para el manejo de excepciones de una manera similar a lo que se hace en lenguajes como Java, C#, Python entre otros más. Ejemplos de manejo de excepciones en Java: try { int divide = 2 / 0 ; } catch ( ArithmeticException ex ){ ex . printStackTrace (); } int [] arreglo = { 1 , 2 , 3 }; try { int numero = arreglo [ 3 ]; } catch ( ArrayIndexOutOfBoundsException ex ){ ex . printStackTrace (); } catch ( Exception ex ){ ex . printStackTrace (); } try { int entero = Integer . parseInt ( "23f" ); } catch ( NumberFormatException ex ){ ex . printStackTrace (); } String cadena = null ; try { boolean vacio = cadena . isEmpty (); } catch ( NullPointerException ex ){ ex . printStackTrace (); } Lo que pretendemos hacer en el código de Java es: Realizar una operación...

Raku: un lenguaje de programación similar a Perl

Raku es un lenguaje de programación con un sintaxis similar a Perl. Es un lenguaje que nos permite: La programación orientada a objetos, incluyendo genéricos, roles y despacho múltiple.  Uso de primitivas de programación funcional, evaluación de listas perezosa y diligente, uniones, subprocesamiento automático e hiperoperadores (operadores vectoriales).  Paralelismo, concurrencia y asincronía, incluyendo compatibilidad con múltiples núcleos.  Gramáticas definibles para la coincidencia de patrones y el procesamiento generalizado de cadenas.  Tipificación opcional y gradual. La documentación oficial nos dice: Raku es un lenguaje de alto nivel, de propósito general y de tipado gradual. Raku es multiparadigma y soporta programación Procedimental, Orientada a Objetos y Funcional. Jerga Raku: Es una especificación con un banco de pruebas. Las implementaciones que pasan el banco de pruebas de la especificación se consideran Raku.  Rakudo: Es un compila...

JHipster: una plataforma para desarrollo web

JHipster es una plataforma de desarrollo para generar, desarrollar e implementar rápidamente aplicaciones web modernas y arquitecturas de microservicios. Ofrece: Compatibilidad con tecnologías Frontend: Angular, React y Vue. Compatibilidad con tecnologías Backend: Spring Boot, Quarkus. Micronaut, Node JS y .NET. Compatibilidad con Cloud: AWS, Azure, GCP, Heroku y OpenShif. Compatibilidad con: Docker y Kubernetes. Imagina crear una aplicación web con Spring Boot, con Kotlin como lenguaje base. Elegir una herramienta Frontend como Vue, además crear un contenedor o contenedores con Docker y administrarlo con Kubernetes. Y finalmente subirlo a la nube de AWS. Eso es lo que ofrece JHipster . Inicio rápido con JHipster Requisitos: Tener Java instalado (JDK 17+).  Tener Node JS instalado.  Tener Docker instalado (recomendable). Instalamos JHipster: $ npm install -g generator-jhipster Creamos un directorio: $ mkdir generador && cd generador ...

Rust, un vistazo más (6)

Realizar pruebas unitarias es de gran ayuda para encontrar errores o depurar nuestro código. El Test Driven Development (TDD) o Desarrollo Guiado por Pruebas es una metodología para la realización de pruebas automatizadas. Rust al ser un lenguaje moderno nos permite hacer pruebas de nuestro código. El flujo de una prueba, basándonos en a lógica TDD, incluye: Pruebas que fallen ( RED ).  Pruebas que pasen ( GREEN ).  Refactorización ( BLUE ). Crearemos un proyecto con Rust: $ cargo new pruebas-unitarias && cd pruebas-unitarias Modificamos el archivo `` main.rs `` # [ cfg ( test ) ] mod tests { use super : : * ; } Con esto indicamos que estamos creando un módulo denominado `` tests ``. La palabra clave `` use `` importa elementos al ámbito actual. `` super::* `` importa todo (el comodín *) desde el módulo padre (super) del módulo tests. Esto permite que las pruebas dentro del módulo tests accedan a las funciones, estructuras u ...

Loopback, creando un sencillo servicio REST

Continuando con Loopback , un framework para crear microservicios con Node JS y Typescript , está vez crearemos un sencillo api rest que calcule la probabilidad de un evento. La fórmula que emplearemos será la siguiente: Probabilidad = eventosExitosos / totalEventosOcurridos Donde: Evento : Un evento es un resultado particular que nos interesa.  Casos favorables (eventosExitosos) : Son los resultados que cumplen con las condiciones del evento que estamos estudiando.  Casos posibles (totalEventosOcurridos): Son todos los resultados que pueden ocurrir en un experimento. Lo primero que haremos seá instalar Loopback si no lo tenemos instalado: $ npm install -g @loopback /cli Creamos un directorio y nos ubicamos en el: $ mkdir calcula-probabilidad && cd calcula-probabilidad Creamos la aplicación con Loopback: $ lb4 app Esto iniciará un prompt donde colocaremos las características del proyecto. Iniciamos la aplicación: $ npm start Ah...