Ir al contenido principal

Entradas

Mostrando entradas de 2026

Comparativa entre Go, Odin y Rust

En esta ocasión veremos una comparativa entre tres lenguajes de programación modernos: Go, Odin y Rust . Comencemos observando esta tabla comparativa. Comparativa entre lenguajes. Característica Go Odin Rust Creador Ken Thompson, Robert Pike y Robert Griesemer Ginger Bill Graydon Hoare Paradigma Multiparadigma Multiparadigma (con limitantes) y orientado a datos Multiparadigma (con limitantes) Extensión .go .odin .rs Tipado Estático Estático Estático Nivel de abstracción Alto nivel Alto nivel Alto nivel Tipo de e...

Rust y la programación concurrente

  Rust tiene la filosofía de " concurrencia sin miedo "; lo cual te permitirá escribir código libre de errores sutiles y fácil de refactorizar. Rust ofrece una variedad de herramientas para modelar problemas de la manera que sea más apropiada para su situación y requisitos. Entre ellas tenemos: Creación de hilos(threads) para ejecutar múltiples fragmentos de código simultáneamente.  Concurrencia mediante paso de mensajes , donde los canales envían mensajes entre hilos.  Concurrencia de estado compartido , donde múltiples hilos tienen acceso a un mismo dato.  Los traits ` Sync ` y ` Send ` , que extienden las garantías de concurrencia de Rust a tipos definidos por el usuario, así como a tipos proporcionados por la biblioteca estándar. Rust garantiza que solo un hilo puede modificar datos a la vez, o que múltiples hilos pueden leerlos sin riesgo. Si intentas compartir datos de forma insegura, el compilador no te dejará compilar. Cada hilo de Rust cor...

Hablemos de ... Goroutines

Una de las peculiaridades del lenguaje Go son las goroutines , la cual es una forma de crear hilos de ejecución livianos y gestionables por el sistema operativo (un concepto similar a los hilos en Java). Una goroutine se considera una unidad ligera de ejecución en Go . Se lanzan con la palabra go y las gestiona el runtime de Go ( scheduler ). Son mucho más ligeras que los hilos del sistema operativo. Digamos que es una función o método que se ejecuta simultáneamente con otras goroutines en el mismo espacio de direcciones. Características principales: Es una función que se ejecuta concurrentemente con otras dentro del mismo programa.  Ocupan muy poca memoria (unos pocos KB frente a MB de un hilo).  No dependen del sistema operativo, sino del runtime de Go , que las programa sobre un conjunto de hilos del sistema. Se lanzan en microsegundos, mucho más rápido que crear un hilo. Las goroutines son abstracciones de concurrencia más eficientes que los hilos, aunq...

¿Existen los punteros en Python?

  En Python no existe el concepto de puntero de manera explícita. Es decir, no puedes manipular directamente direcciones de memoria ni hacer aritmética de punteros . Sin embargo, Python sí maneja referencias a objetos , y en la práctica funcionan de manera similar a punteros seguros. Esto te permite compartir y modificar estructuras sin necesidad de copiar. En Python el concepto de punteros funcionaría de la siguiente manera: Todas las variables en Python son referencias a objetos en memoria.  Cuando asignas una variable a otra, ambas apuntan al mismo objeto.  No puedes acceder a la dirección de memoria directamente (como con & en Go o * en C), pero puedes usar la función id() para obtener un identificador único del objeto (que suele estar relacionado con su dirección interna). Simulemos punteros en Python: x = [ 1 , 2 , 3 ] y = x # y referencia al mismo objeto que x y.append( 4 ) print (x) # [1, 2, 3, 4] -> s...

Punteros en Rust, ¿Qué son y para qué sirven?

En Rust existe el concepto de punteros, pero se maneja de manera distinta a lenguajes como C o Go , porque Rust pone mucho énfasis en la seguridad de memoria y en evitar errores comunes como dangling pointers o data races . Recordando el post anterior tenemos que una variable se compone de:   Un tipo de dato.   Un nombre.   Un valor.   Una dirección de memoria. Las dos primeras características las define el programador, el valor depende del flujo del programa. La memoria la designa el sistema. Y es aquí donde entran los punteros , que son variables que almacenan la dirección de memoria de otra variable . En Rust , el concepto puede ser un poco diferente a lenguajes como C y Go  como lo vamos a ver. Tipos de punteros en Rust En Rust,  veremos los punteros como en referencias , Box , Rc/Arc , raw pointers  y su uso está regulado por el sistema de propiedad para garantizar seguridad y eficiencia. ¿Para qué sirven...