Thursday, June 11, 2015

LED es mi nuevo Hello World - Tiempo de Pony

Como saben...siempre estoy en la búsqueda de nuevos, extraños y excitantes lenguajes de programación...bueno...esta vez...el lenguaje vino a mi -;)

Me contactó @scblessing para avisarme de un nuevo lenguaje en el cual su compañía está trabajando...llamado...Pony.

Así que...que es Pony exactamente? Pony es un lenguaje de alto rendimiento, orientado a objetos, actor-modelo y con seguridad en las capacidades .

Algo así como una mezcla entre C++ y Erlang -;)

La documentación aún no está completa...pero es un buen punto de partida...y además...nos proporciona un Sandbox donde puedes leer el código fuente de las librerías de Pony y ejecutar algunos interesántes ejemplos...

Así que, por supuesto...no podía quedarme feliz con solo leer y jugar un poco...tenía que programar mi LED tal como le hecho con todos los demás lenguajes...así que aquí está -;)

main.pony
actor Main
 var _env: Env
 
 new create(env: Env) =>
  _env = env
  let leds: Array[Array[String]] = [[" _  ","| | ","|_| "],
        ["  ","| ","| "],
        [" _  "," _| ","|_  "],
        ["_  ","_| ","_| "],
        ["    ","|_| ","  | "],
        [" _  ","|_  "," _| "],
        [" _  ","|_  ","|_| "],
        ["_   "," |  "," |  "],
        [" _  ","|_| ","|_| "],
        [" _  ","|_| "," _| "]]

  var num: String = try env.args(1) else "" end
  var i: I64 = 0
  var j: I64 = 0
  var line: String = ""
  while i < 3 do
   while j < num.size().string().i64() do
    try line = line.insert(line.size().string().i64(),
             leds(num.substring(j,j).u64())(i.string().u64())) else "" end
    j = j + 1
   end
   i = i + 1
   j = 0
   _env.out.print(line)
   line = ""
  end
  _env.out.print("")

Y aquí...pueden verlo en acción -:D



Lo que yo pienso es que Pony aunque aún es un lenguaje muy joven, tiene mucho potencial y mi rápida experiencia con el no fué nada más que divertida y emocionante...voy a manterme atento para ver como se desarrolla -;)

Saludos,

Blag.
Development Culture.

No comments: