Los lenguajes de programación son mi fascinación. No sólo se trata de programar/codificar con ellos. Se trata también de conocer los detalles de las diferentes sintaxis, así como la expresividad que tiene cada uno para resolver problemas de todo tipo. Cada uno, como sucede con cualquier idioma hablado, es una forma de ver y entender el mundo.
En lo que sigue te presento la primera parte de dos sobre 10 lenguajes de programación emergentes. Todos son libres/abiertos. Todos son raros, únicos de alguna manera ---allí comienza mi curiosidad---. Casi todos tienen menos de 10 años de vida. Los hay orientados a objetos, funcionales, orientados a pila y más. Y no es que debas probarlos todos, pero sí te invito echarles un vistazo con el mismo espíritu con el que un arqueólogo descubre lenguajes inimaginables. En todos los casos presento una breve ficha técnica, así como un ejemplo: no el clásico "Hello, world!", sino un pequeño programa para listar los números del 1 a 10. Da clic en los títulos para ir a la página oficial del lenguaje en cuestión.
1. Io
- Año de creación: 2002.
- Paradigma: Orientado a objetos, basado en prototipos (como en JavaScript).
- Descripción: Simple, muy dinámico, introspectivo y concurrente. Multiplataforma y extensible. Fue diseñado para unir la expresividad de Smalltalk con la velocidad de C.
- Inspirado en: Smalltalk (principalmente), Lisp, Lua, Self.
Instalación: En Ubuntu:
- Descarga
- Descomprime
- Ingresa al directorio
mkdir build && cd build
cmake ..
sudo make install
ldconfig
Ejemplo:
for ( i, 1, 10, write(i, " ") )
2. Clojure
- Año de creación: 2007.
- Paradigma: Funcional, pero de propósito general.
- Descripción: Compilado, eficiente, robusto, multihilado, con sistema de macros. Corre sobre dos máquinas virtuales: JVM y CLR.
- Inspirado en: Lisp, Haskell.
Instalación:
- En Ubuntu:
sudo apt-get install clojure
. - De otra forma, descarga el código; entonces compila e instala con ant.
- En Ubuntu:
Ejemplo:
(dotimes [i 10] (print (inc i) ""))
3. D
- Año de creación: 1999.
- Paradigma: Multiparadigma, pero sobre todo orientado a objetos e imperativo.
- Descripción: Es muy parecido a C/C++, pero intenta ser mucho más práctico. Gdc y ldc son compiladores libres para el lenguaje D.
- Inspirado en: C++, Java.
Instalación:
- En Ubuntu:
sudo apt-get install gdc
- De otra forma, descarga el código oficial, descomprime y entra a
./dmd/linux/bin
.
- En Ubuntu:
Ejemplo:
import std.stdio; int main() { for (int i = 1; i <= 10; i++) writef(i, " "); return 0; }
4. Go
- Año de creación: 2009.
- Paradigma: Imperativo y concurrente.
- Descripción: Es como C, pero sin declaración de tipos de datos como en Python. Su sintaxis es sencilla. La compilación es, sin exagerar, excepcionalmente rápida. Ken Thompson, también co-creador de C, ayudó en el diseño.
- Inspirado en: C, Pascal.
Instalación: Cambia el valor de las variables según tu conveniencia. En Ubuntu:
export GOROOT=$HOME/gosource export GOARCH=386 export GOOS=linux export GOBIN=$HOME/gobin export PATH=$PATH:$GOBIN source ~/.bashrc sudo apt-get install bison gcc libc6-dev ed gawk make sudo apt-get install python-setuptools python-dev build-essential sudo easy_install mercurial hg clone -r release https://go.googlecode.com/hg/ $GOROOT cd $GOROOT/src ./all.bash
Ejemplo:
package main import "fmt" func main() { for i:=1; i<=10; i++ { fmt.Printf("%d ", i) } }
5. Factor
- Año de creación: 2003.
- Paradigma: Orientado a pila, _concatenativo_ (sobre todo) y funcional.
- Descripción: Definición dinámica de los tipos de datos, manejo automático de memoria, compilador o, si se quiere, también interactivo.
- Inspirado en: Forth, Self.
Instalación: En Ubuntu:
- Descarga
- Descomprime
- Ingresa al directorio
./factor
Ejemplo: (Sé que se puede hacer mejor. Ya aprenderé.)
{ 1 2 3 4 5 6 7 8 9 10} [ "" write . ] each