Catálogo de lenguajes de programación

A la vista de que al menos en HxC el problema de con que lenguaje de programación comenzar es algo recurrente, me he decidido a hacer una recopilación de mini programas en distintos lenguajes para que quien comience pueda encontrar facilmente uno que se acerce a su forma de ver las soluciones de los problemas (personalmente creo que es un buen criterio para escojer un primer lenguaje).

Para no quedarse en los 4 de siempre me he tomado la libertad en escojer unos cuantos lenguajes que no suelen tener tanta visibilidad (sin ser tipo brainf*ck), he intentado también ser todo lo imparcial posible pero como humano que soy eso no es algo que suela salir bien ;).

Por ahora contiene alrededor de 30 lenguajes, pero solo un código de cada uno, así que aún queda mucho por andar, los códigos serían:

  • Uno que calcule un número de la secuencia de fibonacci y lo muestre por pantalla indicando el índice y el número (me parece que es simple y da una buena visión de como se ve el lenguaje). (este es el ejemplo que ya está programado).

  • Otro que muestre los tipos basicos de datos, los comentarios, que muestre como crear una estructura a partir de los tipos basicos y como crear una clase (si es posible).

  • Condicionales, bucles, y subrutinas.

Y seguramente uno o dos más que estan sin decidir.

Nota: Este es un trabajo en curso, cualquier aportación es enormemente bienvenida. Todo el código se encuentra bajo la licencia WTFPL en este repositorio [ https://gitlab.com/kenkeiras/language-catalog ]. Además todos los lenguajes que se encuentran aquí disponen de algún intérprete o compilador libre.

A+

A+ es un lenguaje de programación de arrays descendiente del lenguaje A, diseñado este para sustituir a APL, fue diseñado para programas con muy centradas en los números, especialmente para las aplicaciones financieras.

Como curiosidad comentar que el lenguaje suele utilizarse con un editor y una fuente especiales, lo que permite escribir código casi como ecuaciones matemáticas, aunque también es posible sustituir los símbolos por caracteres ASCII, como en el ejemplo. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$mode ascii

fibonacci n: if (n < 2) n else (fibonacci(n - 1)) + (fibonacci(n - 2))

numero := 10
resultado := fibonacci numero

'<Elemento nº >,I2,< de fibonacci: >,I5' _fmt (numero; resultado)

sys.exit 0

Ada

Ada es un lenguaje orientado a objetos y concurrente diseñado por encargo del Departamente de Defensa de los EEUU, se utiliza principalmente en entornos que requiren mucha seguridad y fiabilidad. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;

procedure Fibonacci_Recursivo is
    function Fibonacci(n : in Integer) return Integer is
    begin
            if n < 2 then
                return n;
            else
                return Fibonacci(n - 1) + Fibonacci(n - 2);
            end if;
    end Fibonacci;


    Numero : Integer := 10;
    Resultado : Integer := Fibonacci(Numero);

begin

    Put_Line(Item => "Elemento nº" & Integer'Image (Numero) &
                     " de fibonacci:" & Integer'Image(Resultado));

end Fibonacci_Recursivo;

Assembler (ensamblador)

El lenguaje ensamblador es el lenguaje más cercano a la máquina, sus códigos se traducen directamente a binario, lo que permite un control total sobre las operaciones dando la posibilidad de afinarlo para obtener el mejor rendimiento a costa de no tener ninguna capa de abstracción.

Una consecuencia lógica es que el código no es portable entre sistemas operativos ni distintas arquitecturas de procesador, el ejemplo se probó en Gnu/Linux en un x86, ensamblado con NASM. (por comodidad utiliza la librería de C para mostrar el resultado por pantalla) fibonacci_recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[bits 32]
section .data
    numero: dd 10
    format_string: db 'Elemento nº %i de fibonacci: %i', 10, 0

section .text

global main
extern printf

; pasaremos el parametro por eax
fibonacci:
    ; solo hay cambios si eax es menor que 2
    cmp eax, 2
    jl .fibonacci_done

    ; Si n >= 2
    ;  a = fibonacci(n - 1)
    push dword eax ; guardamos n
    dec eax        ; le restamos 1
    call fibonacci ; llamamos a fibonacci
pop ebx        ; recuperamos el original en ebx

;  b = fibonacci(n - 2)
push eax       ; guardamos fibonacci(n - 1)
mov eax, ebx   ; pasamos el original a eax
sub eax, 2     ; le restamos 2
call fibonacci ; llamamos a fibonacci
pop ebx        ; recuperamos el original

; a + b
add eax, ebx   ; y los sumamos

fibonacci_done:
ret


main:
    mov eax, [numero]
    call fibonacci

    ; a C los parametros se le pasan al reves
    push dword eax            ; resultado
    push dword [numero]       ; numero
    push dword format_string  ; "Elemento nº %i de fibonacci: %i\n"
    call printf

    ; exit_syscall, se llama al kernel para salir
       mov eax, 1
    mov ebx, 0
    int 0x80

Bash

Bash es realmente un lenguaje de intérprete de comandos, por ello no es un lenguaje prominente en la manipulación de datos, en cambio si el problema se puede resolver encadenando otros programas se convierte en una solución extremadamente potente.

Es importante tener en cuenta que Bash es el shell por defecto en la mayoría de sistemas GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas operativos tipo UNIX. También se ha portado a Microsoft Windows por el proyecto Cygwin. (Wikipedia). fibonacci_recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
fibonacci(){
    if [ $1 -lt 2 ];then
        echo $1;
    else
        echo $(( `fibonacci $(( $1 - 1 ))` + `fibonacci $(( $1 - 2 ))` ));
    fi
}

numero=10
resultado=`fibonacci $numero`

echo "Numero $numero de fibonacci: $resultado"

BASIC

BASIC es un lenguaje de progamación estructurado diseñado en los '60 como una herramienta de enseñanza para los principiantes. Fue una vez un lenguaje importante en la programación sobre Windows, pero últimamente está siendo desplazado poco a poco por C#.

El lenguaje sufrió una cierta fragmentación, el ejemplo esta probado con Yabasic. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
sub fibonacci(n)
  if n < 2 then 
      return n
  else 
      return (fibonacci(n - 1) + fibonacci(n - 2))
  endif
end sub

numero = 10
resultado = fibonacci(numero)

print "Elemento nº ", numero, " de fibonacci: ", resultado

C

C es un lenguaje de programación que a diferencia del resto de los que se presentan aquí, considerados de alto nivel, se observa como de medio nivel ya que aunque presenta construcciones propias de lenguajes de alto nivel también permite ejercer un contro de bajo nivel.

Es uno de los lenguajes más utilizados en la programación de entornos Unix, y el lenguaje de facto en el desarrollo de sistemas operativos. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

int fibonacci(int n){
    if (n < 2){
        return n;
    }
    else{
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

int main(){
    int numero = 10;
    int resultado = fibonacci(numero);

    printf("Elemento nº %i de fibonacci: %i\n", numero, resultado);

    return 0;
}

C#  

C# es un lenguaje orientado a objetos desarrollado por Microsoft para la plataforma .NET. Es un lenguaje en el que se puede observar la sintaxis de la familia C y el modelo fuertemente orientado a objetos de Java. Existe una implementación libre que permite ejecutar el código C# sobre distintos sistemas operativos, Mono. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;

class Program{

    static int fibonacci(int n){
        if (n < 2){
            return n;
        }
        else{
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }

    static void Main(){
        int numero = 10;
        int resultado = fibonacci(numero);
        Console.Write("Elemento nº ");
        Console.Write(numero);
        Console.Write(" de fibonacci: ");
        Console.WriteLine(resultado);
    }
}

Common Lisp

Common Lisp no es realmente un lenguaje de programación, sinó una especificación que estandariza el lenguaje Lisp, normalmente utilizado en la investigación de IA y el desarrollo rápido de aplicaciones.

Como anécdota sobre la potencia del debugger de Lisp se cuenta el caso de la sonda Deep Space 1 donde un programa en Lisp controlaba una secuencia de experimentos, y medio año después del lanzamiento, a 160 millones de Kilometros de la Tierra, un equipo fue capaz de diagnosticar y corregir sobre la marcha un escurridizo fallo que no había aparecido durante las pruebas en la tierra. Practical Common Lisp. fibonacci recursivo

1
2
3
4
5
6
7
8
(defun fibonacci (n)
  (if (< n 2)
      n
      (+ (fibonacci (- n 1)) (fibonacci (- n 2)))))

(defvar numero 10)
(defvar resultado (fibonacci numero))
(format t "Numero ~D de fibonacci: ~D~%" numero resultado)

Dart

Dart es un lenguaje de programación estructurado diseñado por Google como un lenguaje de programación web en el lado del cliente, como un intento de actualizar el panorama de la programación web en el cliente dominado por Javascript.

Es un lenguaje que aunque aún no ha sido implementado en ningún navegador (excepto quizá chrome), pero puede ser convertido a código Javascript. fibonacci_recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
int fibonacci(int n) {
    if (n < 2){
        return n;
    }
    else{
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

main() {
  int numero = 10;
  int resultado = fibonacci(numero);
  // ó print('Elemento nº ${numero} de fibonacci: ${fibonacci(numero)');
  print('Elemento nº ${numero} de fibonacci: ${resultado}');
}

Erlang

Erlang es un lenguaje de programación concurrente desarrollado por Ericsson para realizar aplicaciones distribuidas, tolerantes a fallos, soft-real-time y de funcionamiento ininterrumpido. (Wikipedia).

Es un lenguaje funcional, un paradigma que pretende acercarse a la lógica formal a través de variables no mutables ('X' siempre tiene el mismo valor) y evitar funciones con efectos secundarios (que la llamada a una función tenga algun efecto en el programa mas que el valor que devuelve). fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
-module(fibonacci_recursivo).
-export([start/0, fibonacci/1]).

fibonacci(0) -> 0;
fibonacci(1) -> 1;
fibonacci(N) -> fibonacci(N - 1) + fibonacci(N - 2).


start() -> 
     Numero = 10,
     Resultado = fibonacci(Numero),
     io:format("Elemento nº ~p de fibonacci: ~p~n", [Numero, Resultado]).

Factor

Factor es un lenguaje de programación orientado a pila, esto es: para hacer una operación se introducen los datos en una pila global y después se llama a una función, por ejemplo para sumar dos números haríamos '10 20 +', añadiendo primero el 10 a la pila, después el 20 y a continuación llamando a la operación suma.

Aunque realmente es posible hacer operaciones con datos sin seguir ese esquema a través de llamadas a funciones o dentro de una misma función. fibonacci recursivohttps://gitlab.com/kenkeiras/language-catalog/blob/master/factor/fibonacci_recursivo.factor)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
USING: kernel math formatting ;
IN: fibonacci_recursivo

: fibonacci ( int -- int ) dup 2 < [ [ 1 - fibonacci ] [ 2 - fibonacci ] bi + ] unless ;

10
dup
fibonacci

"Elemento nº %d de fibonacci: %d" printf

FORTRAN

Fortran es un lenguaje de programación que pone especial énfasis en el cálculo numérico, fue uno de los primeros lenguajes de programación que no se limitó a poner mnemónicos a instrucciones del procesador.

Fortran se utiliza en la programación de alto rendimiento y los test de rendimiento de los supercomputadores. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
! Escrito para Fortran 95
PROGRAM fibonacci_recursivo
    IMPLICIT NONE
    INTEGER :: numero = 10, resultado
    resultado = fibonacci(numero)

    PRINT *, "Elemento nº ", numero, " de fibonacci: ", resultado

CONTAINS

RECURSIVE FUNCTION fibonacci(n) RESULT (r)
    INTEGER :: n, r

    IF (n < 2) THEN
        r = n
    ELSE
        r = fibonacci(n - 1) + fibonacci(n - 2)
    END IF
END FUNCTION fibonacci

END PROGRAM fibonacci_recursivo

Genie

Genie es un lenguaje desarrollado por el proyecto GNOME como un dialecto más simple y limpio para el compilador de vala, manteniendo las funcionalidades de ese lenguaje.

Dado que Genie es fundamentalmente una representación alternativa del código vala, se pueden usar funciones, clases y demás de uno en el otro. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def fibonacci(n: int): int
    if n < 2 do
        return n
    else
        return fibonacci(n - 1) + fibonacci(n - 2)

init
    var numero = 10
    var resultado = fibonacci(numero)
    print "Elemento nº %i de fibonacci: %i", numero, resultado

Go

Desarrollado en Google, Go es un lenguaje de programación concurrente pensado para ofrecer la eficiencia de un lenguaje con tipado estático y la facilidad de programación de un lenguaje con tipado dinámico.

Curiosamente utiliza distintos nombres para el compilador y el enlazador según la arquitectura de la CPU. No confundir con el lenguaje Go!. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import "fmt"

func fibonacci(n int)(r int){
    if (n < 2){
        r = n
    }else{
        r = fibonacci(n - 1) + fibonacci(n - 2)
    }
    return
}

func main() {
    numero := 10
    resultado := fibonacci(numero)
    fmt.Printf("Elemento nº %v de fibonacci: %v\n", numero, resultado)
}

Haskell

Haskell es un lenguaje funcional puro. A pesar de que por su constitucion pueda parecer lo contrario es posible utilizarlo para, por ejemplo, programar gestores de ventanas, como Xmonad. fibonacci recursivo branching sintaxis

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import Text.Printf

fibonacci 0 = 0
fibonacci 1 = 1
fibonacci n = fibonacci(n - 1) + fibonacci (n - 2)

main = do
    let numero = 10
    let resultado = fibonacci numero
    printf "Elemento nº %i de fibonacci: %i\n" (numero::Int) (resultado::Int)

Java

Java es un lenguaje de programación fuertemente orientado a objetos desarrollado por Sun, hasta el punto de que todo en el programa es un objeto. Es un lenguaje que se utiliza para programación de teléfonos móviles, desde los clásicos con Java SE hasta smartphones Android. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class fibonacci_recursivo{
    static int fibonacci(int n){
        if (n < 2){
            return n;
        }
        else{
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
    }

    public static void main(String argv[]){
        int numero = 10;
        int resultado = fibonacci(numero);

        System.out.println("Elemento nº "+ numero +" de fibonacci: " + resultado);

    }
}

Javascript

Javascript (que no tiene nada que ver con Java, de hecho se llamaba originalmente ECMAscript) es el lenguaje de programación web en lado de cliente, terrento en el que no tiene ningún competidos exceptuando el reciente Dart, que aún está en desarrollo. Además en 2009 comenzó el desarrollo de la ya madura plataforma node.js que permite utilizarlo en una arquitectura orientada a eventos muy práctica para la programación de servidores. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function fibonacci(n){
    if (n < 2){
        return n;
    }
    else{
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

var numero = 10;
var resultado = fibonacci(numero);

// Esto cambia segun el entorno, para webs
//document.write("Elemento nº "+ numero +" de fibonacci: "+resultado+"<br />");

// Para nodejs
process.stdout.write("Elemento nº "+ numero +" de fibonacci: "+resultado+"\n");

Logo

Logo es un lenguaje de programación diseñado como lenguaje de fácil aprendizaje, es especialmente conocido por que soporta de forma estándar los gráficos de tortuga, es decir, permite usar una "tortuga" a la que se le dan una serie de pasos a seguir (Avanza 10, Gira a la derecha, ...) y que deja un trazo como lo haría un lápiz, para hacer dibujos.

Hay varios intérpretes que permiten escribir las instrucciones en otros idiomas a parte del inglés, por ejemplo "Avanza" en vez de "Forward" o "Gira a la derecha" en vez de "Rotate right". fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
TO fibonacci :n
    if :n < 2 [output :n]
              output sum fibonacci difference n 2 fibonacci difference n 1
end

make "numero 10
make "resultado fibonacci :numero

print (word "Elemento\ nº\  :numero "\ de\ fibonacci:\  :resultado)

BYE

Lua

Lua es un lenguaje de scripting que por su sencillez se suele utilizar como lenguaje que interpretan los motores de programas grandes como juegos, escritos normalmente en lenguajes de más bajo nivel.

Además se puede utilizar para programar aplicaciones no oficiales en Wii y PSP, el gestor de ventanas AWESOME utiliza sus scripts como archivos de configuración y como lenguaje para extender juegos. (Lua uses). fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function fibonacci(n)
    if n < 2 then
        return n
    else
        return fibonacci(n - 1) + fibonacci(n - 2)
    end
end

numero = 10
resultado = fibonacci(numero)

io.write(string.format("Elemento nº %i de fibonacci: %i\n", numero, resultado))

Objective C

Objective C es un lenguaje de programación orientado a objetos creado como una extension del lenguaje C.

Es el principal lenguaje de programación en Mac OS X e IPhone, pero también es posible utilizarlo en otras plataformas. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#import <stdio.h>

int fibonacci(int n){
    if (n < 2){
        return n;
    }
    else{
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

int main(){
    int numero = 10;
    int resultado = fibonacci(numero);

    printf("Elemento nº %i de fibonacci: %i\n", numero, resultado);

    return 0;
}

Ocaml

Ocaml es un lenguaje de la familia ML que permite los paradigmas de programación funcional, imperativa (se describen los pasos a realizar) y orientado a objetos. fibonacci recursivo

1
2
3
4
5
6
7
let rec fibonacci n = if n < 2 then n
                      else fibonacci (n - 1) + fibonacci(n - 2)
in
let numero = 10 in
let resultado = fibonacci numero in
print_string "Elemento numero "; print_int numero;
print_string " de fibonacci: ";  print_int resultado; print_newline();;

Octave

Octave es un programa y lenguaje de programación de alto nivel diseñado para realizar análisis numérico.

Se puede considerar la alternativa libre a MATLAB, con el que mantiene cierta compatibilidad. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
function ret = fibonacci(n)
   if (n < 2)
      ret = n;
   else
      ret = fibonacci(n - 1) + fibonacci(n - 2);
   end
end

numero = 10;
resultado = fibonacci(numero);
printf("Elemento nº %i de fibonacci: %i\n", numero, resultado);

Pascal

Pascal es un lenguaje de programación estructurado diseñado con el objetivo de crear un lenguaje que facilitase el aprendizaje de la programación.

Hay un cierto número de dialectos bastante compatibles, el compilador utilizado en este ejemplo es FreePascal, pero debería funcionar sobre cualquiera que respete el estándar básico. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
program fibonacci_recursivo;

function fibonacci(n: integer): integer;
    var r: integer;
begin
    if (n < 2) then
        r := n
    else
        r := fibonacci(n - 1) + fibonacci(n - 2);
    fibonacci := r;
end;

var
    numero, resultado: integer;

begin
    numero := 10;
    resultado := fibonacci(numero);
    writeln('Elemento nº ', numero, ' de fibonacci: ', resultado);
end.

Perl

Perl es un lenguaje de scripting desarrollado para la manipulación de textos que provee de una gran flexibilidad. Cuenta con un repositorio de módulos central, CPAN que aloja código para programar compresores, servidores, web, interfaces gráficas, utilidades de red...

Es un lenguaje que ganó fama de ser poco legible precisamente por la libertad que da al programador pero en última instancia la claridad del código depende solo de quien lo escribe. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
sub fibonacci{
    my $n = $_[0];
    if ($n < 2){
        return $n;
    }
    else{
        return fibonacci($n - 1) + fibonacci($n - 2);
    }
}

my $numero = 10;
my $resultado = fibonacci($numero);

print "Elemento nº $numero de fibonacci: $resultado\n";

PHP

PHP es un lenguaje de programación web del lado del servidor (aunque es posible utilizarlo en aplicaciones que no lo sean) siendo uno de los más utilizados, y normalmente el único lenguaje que suelen soportar los alojamientos web gratuitos.

Es un lenguaje especialmente diseñado para poder mezclarse con código HTML de forma cómoda. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
    function fibonacci($n){
        if ($n < 2){
            return $n;
        }
        else{
            return fibonacci($n - 1) + fibonacci($n - 2);
        }
    }

$numero = 10;
$resultado = fibonacci($numero);

echo "Elemento nº $numero de fibonacci: $resultado\n";
?>

Python/Python3

Python es un lenguaje de programación multiparadigma que puede ser usada como lenguaje de scripting, o para la programación web.

De python suele llamar la atención el hecho de los bloques del programa se definen a través de la indentación (es decir, con espacios en blanco al principio de la línea), al contrario que en otros que se delimitan con simbolos '{', '}' o palabras clave 'begin', 'end', esto hay quien lo considera un estorbo y hay quien piensa que es una buena forma de forzar a escribir código legible. La versión ultima versión, 3, añade unos cambios que no son compatibles hacia atrás. fibonacci recursivo py2 py3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def fibonacci(n):
    if n < 2:
        return n
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)


numero = 10
resultado = fibonacci(numero)

# En python2
print "Elemento numero", numero, "de fibonacci:", resultado

# En python3
print ("Elemento numero", numero, "de fibonacci:", resultado)

R

R es un entorno y un lenguaje de programación orientado a objetos pensado para el análisis estadístico.

Además el código en R puede ser invocado desde otros lenguajes como Perl y Python. fibonacci recursivo

1
2
3
4
5
6
7
8
9
fibonacci <- function(n){
    return (ifelse (n < 2, n, fibonacci(n - 2) + fibonacci(n - 1)))
}

numero <- 10
resultado <- fibonacci(numero)

s <- sprintf("Elemento nº %i de fibonacci: %i", numero, resultado)
print(s)

Ruby

Ruby es un lenguaje de programación reflexivo y orientado a objetos. Es un lenguaje que ha tomado mucha fuerza en la comunidad de programación web gracias al framework Ruby On Rails. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def fibonacci(n)
    if n < 2
        return n
    else
        return fibonacci(n - 1) + fibonacci(n - 2)
    end
end

numero = 10
resultado = fibonacci numero

print "Elemento n ", numero, " de fibonacci: ", resultado, "\n"

Scala

Scala es un lenguaje de programación funcional orientado a objetos que funciona sobre la máquina virtual de java. fibonacci recursivo

1
2
3
4
5
6
7
def fibonacci(n: Int): Int = if (n < 2) n
                             else fibonacci(n - 1) + fibonacci(n - 2)

val numero = 10
val resultado = fibonacci(numero)

Console.printf("Elemento nº %s de fibonacci: %s\n", numero, resultado)

Scheme

Scheme es un dialecto minimalista de Lisp.

El estándar de Scheme es realmente minimalista y específico en sí. Ello provoca que existan multitud de implementaciones diferentes, cada una de las cuales introduce extensiones y bibliotecas propias que las hace incompatibles entre sí. Los Scheme Requests for Implementation (SRFI) tratan de poner remedio a este problema. (Wikipedia). fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
(define (fibonacci n)
 (if (< n 2)
  n
  (+ (fibonacci (- n 2)) (fibonacci (- n 1)))
 )
)

(define numero 10)
(define resultado (fibonacci numero))

(display "Elemento nº"    )
(display numero           )
(display " de fibonacci: ")
(display resultado        )
(newline                  )

Tcl

Tcl es un lenguaje de scripting utilizado para el desarrollo de prototipos y de interfaces gráficas.

En su momento consiguió cierta popularidad gracias al plugin Expect que permitia automatizar tareas sobre herramientas como FTP, Telnet o SSH. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
proc fibonacci n {
    if { $n < 2 } {
        return $n
    } else {
        return [expr [fibonacci [expr $n - 1]] + [fibonacci [expr $n - 2]]]
    }
}

set numero 10
set resultado [fibonacci $numero]
puts [format "Elemento nº %i de fibonacci: %i" $numero $resultado]

Unicon

Unicon es un lenguaje de programación orientado a objetos de muy alto nivel descendiente de Icon, siendo ambos especiamente útiles para tratar con cadenas de texto. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
procedure fibonacci(n)
    if (n < 2) then
        return n
    else
        return fibonacci(n - 1) + fibonacci(n - 2);
end

procedure main()
    numero := 10
    resultado := fibonacci(numero)
    write( stdout, "Elemento nº ", numero, " de fibonacci: ", resultado)
end

Vala

Vala es un lenguaje orientado a objetos desarrollado por el proyecto GNOME como un lenguaje con las posibilidades de un lenguaje actual sin necesidad de librerías de runtime a mayores que las de C y con un coste adicional mínimo.

Vala se compila a código C, por ello es posible utilizar librerías y recursos escritos en este lenguaje. fibonacci recursivo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
int fibonacci(int n){
    if (n < 2){
        return n;
    }
    else{
        return fibonacci(n - 2) + fibonacci(n - 1);
    }
}

void main(){
     int numero = 10;
     int resultado = fibonacci(numero);

     stdout.printf("Elemento nº %i de fibonacci: %i\n",numero, resultado);
}

Que aproveche ;)

All your buckets are belong to us: DOSeando PHP a través de arrays asociativos » « Obteniendo las bases de datos de concejales