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:

    1. Descarga
    2. Descomprime
    3. Ingresa al directorio
    4. mkdir build && cd build
    5. cmake ..
    6. sudo make install
    7. 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:

    1. En Ubuntu: sudo apt-get install clojure.
    2. De otra forma, descarga el código; entonces compila e instala con ant.
  • 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:

    1. En Ubuntu: sudo apt-get install gdc
    2. De otra forma, descarga el código oficial, descomprime y entra a ./dmd/linux/bin.
  • 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:

    1. Descarga
    2. Descomprime
    3. Ingresa al directorio
    4. ./factor
  • Ejemplo: (Sé que se puede hacer mejor. Ya aprenderé.)

      { 1 2 3 4 5 6 7 8 9 10} [ "" write . ]  each
    

38 respuestas a “Lenguajes de programación emergentes (1a. parte)”