29 julio, 2015
Esta nota fue publicada originalmente en la edición 288 de revista USERS. Podes suscribirte a la versión impresa y/o digital aquí
Por Fernando Luna
Si viajásemos a través del tiempo recorriendo la era de la computación, encontraríamos un sinfín de personajes que aportaron grandes desarrollos a esta era, creando entre otras cosas grandes equipos computacionales para diversos fines. Y si de equipos computacionales hablamos, no podemos dejar de pensar que, para que estos funcionen, se necesita al menos un lenguaje de programación y un compilador o intérprete, para que el código cobre vida y vuelva útil a la máquina.
Parados en el presente más próximo, seguramente hemos notado que la programación cobra cada vez más protagonismo en la vida del ser humano y que, tarde o temprano, todo niño en su período de educación inicial terminará aprendiendo programación de la misma manera que hoy aprende matemática, lengua, o historia.
PHP es uno de los lenguajes que podemos considerar como de la vieja escuela. Está detrás de exitosas web como lo son Twitter, Facebook, y WordPress, entre otras.
Si debemos expresar a través de la literatura el significado de un lenguaje de programación, podemos decir que este es un conjunto de algoritmos o sentencias, predefinidos a través de una estructura básica, conocida como lengua o lenguaje. Esta puede requerir, o no, de un compilador o intérprete intermedio para traducir el significado de cada instrucción en una orden que será ejecutada como proceso por una máquina o computadora.
Con los años, los lenguajes de programación expandieron sus fronteras dándole vida no solo a las aplicaciones básicas que todos ejecutamos dentro de una computadora, sino también a las páginas web por las que navegamos, los videojuegos que nos ayudan a despuntar el vicio en nuestra tablet o en nuestra consola favorita, las apps que nos permiten interactuar a diario con nuestro smartphone, y también en los microcontroladores Arduino y Raspberry.
El objetivo de esta nota es invitarlos a recorrer el camino de los nuevos jugadores que existen actualmente en el campo de la programación. Esta nueva legión de lenguajes viene haciendo historia en los terrenos más influyentes de estos últimos años. Conozcamos a continuación cada uno de los lenguajes de programación más importantes de hoy en día, y qué alcance tienen estos en el desarrollo de soluciones para la vida cotidiana.
Phonegap Build, el compilador de aplicaciones híbridas que saca provecho de la fortaleza de JavaScript en el terreno móvil.
JavaScript
Si de lenguajes modernos hablamos, no podemos dejar de mencionar a JavaScript. Este maravilloso lenguaje de scripting nació en 1995 bajo el nombre LiveScript, para luego rebautizarse con el nombre con el que hoy lo conocemos.
JavaScript basó su sintaxis en el lenguaje Java, orientando su uso al terreno de los navegadores web, para resolver principalmente determinadas funciones que no requieren de mucho procesamiento. Las cuales pueden ejecutarse sin problemas del lado del cliente, reduciendo así los tiempos de respuesta del lado del servidor.
En sus inicios, las páginas que utilizaban JavaScript eran mal vistas dado que la Internet en sí era lenta y la utilización del lenguaje JavaScript, el cual resuelve sus instrucciones en tiempo real, ralentizaban más el proceso de visualización de sitios web. Con los años, se desarrollaron diversos frameworks que utilizan a JavaScript como lenguaje base para interactuar del lado del servidor. Entre los frameworks más conocidos, podemos destacar a Node JS.
Hoy, con velocidades de navegación más aceptables, sumado al poder de procesamiento de las computadoras y la memoria RAM de sobra que éstas incluyen, JavaScript es utilizado no solo para resolver funciones simples en sitios web, sino también para intervenir y dotar a otros frameworks (como Jquery, AngularJS, TypeScript, Ionic y Sencha Touch, etc.), de la lógica básica necesaria para crear y simplificar funcionalidades de este lenguaje, que le permitan resolver tareas de diversa índole dentro de funciones optimizadas según el navegador web o sistema operativo donde se ejecutan.
La próxima generación del lenguaje JavaScript contempla una evolución significativa dentro del lenguaje, ya que incluirá características tales como ser el manejo de paquetes, namespaces, y definición explícita de clases previa a su uso, acercándose así a la sintaxis utilizada en los lenguajes de programación orientados a objetos.
Windows 8 y superior, basaron la tecnología de desarrollo de las apps en el éxito de JavaScript, HTML5 y CSS3, bautizando a su propio port como TypeScript.
El mundo mobile
Otro ámbito donde ha crecido mucho JavaScript es en el terreno del mundo mobile. Tanto para tablets como para smartphones y handhelds en general, JavaScript comenzó a jugar un papel importante en este segmento, ya que los navegadores web suman cada vez más comunicación entre el hardware de los dispositivos, y el navegador en sí.
Así, aprovechando el componente WebView, presente en la mayoría de los sistemas operativos móviles, cualquier desarrollador puede combinar JavaScript con HTML5 y CSS, para acceder a funcionalidades de hardware. Como puede ser la cámara, acelerómetro, brújula, almacenamiento interno, de modo que puedan ser explotados desde lo que se conoce como aplicaciones híbridas.
Johnny Five Framework
Aprovechando el auge de estos últimos años en el terreno de la electrónica básica y la microcomputación (gracias a proyectos como Arduino), JavaScript se instaló también en el terreno de los controladores electrónicos. Allí pudo aprovechar el framework Johnny Five para desarrollar aplicaciones que manipulen el comportamiento de dispositivos basados en Arduino.
Johnnny Five Framework incorpora diversos módulos para desarrollar soluciones en JavaScript, combinado con Node JS, que permitan manipular el hardware de la placa Arduino, como también los puertos series, los componentes que utilizan los pines o jumpers, los LED, los servo motores, motores básicos, motores paso a paso, sonares, sensores de ultrasonido, relays, Joystick, displays LCD, y sensores acelerómetro, giroscopio y de temperatura, entre otros.
Actualmente se considera a JavaScript como un punto de partida excelente que permite aprender las bases y conceptos necesarios para manejar la programación en todos sus tipos. A su vez, JavaScript cumple de manera excelente su función en los terrenos web, mobile, robótica y videojuegos. Por lo tanto, su aprendizaje nos permitirá desplazarnos hacia el terreno de nuestra preferencia con un mínimo de aprendizaje específico adicional.
Scala
Scala es un lenguaje de programación, nacido en el año 2003 en el laboratorio de la Escuela Superior Politécnica de Lausana. Fue diseñado para expresar patrones comunes de programación de una forma más elegante que la que nos puede brindar un lenguaje de programación promedio. Scala integra, dentro de su sintaxis, características de lenguajes de programación orientado a objetos, como también características propias de un lenguaje funcional. Su sintaxis tiene mucha reminiscencia a Java y depende del Runtime Java, por lo tanto, posee compatibilidad con las aplicaciones Java existentes.
Scala es un lenguaje orientado a objetos, que transforma en objeto cualquier declaración, variable o valor que se utilice dentro de este.
La orientación a objetos con la que cuenta Scala es total. A tal nivel que cada valor manejado dentro de las líneas de código de este lenguaje se transforma en un objeto, describiendo el comportamiento de éstos por medio de clases y traits. En base a las características de los lenguajes funcionales, Scala soporta funciones de nivel superior, anidadas y anónimas, entre otros tipos.
Dada su fuerte orientación para resolver cálculos matemáticos, Scala incluye en su sintaxis la técnica de Pattern Matching. Esta permite modelar tipos algebraicos, usados en muchos lenguajes de programación con orientación funcional. Al igual que su lenguaje modelo, de donde hereda gran parte de la lógica, Scala fue desarrollado para soportar extensiones específicamente desarrolladas para este lenguaje. Dichas extensiones se las conoce como bibliotecas.
Como bien dijimos, al ser compatible con Java y como depende del Runtime de este para ejecutarse, Scala puede ser utilizado sin problema tanto en aplicaciones web, como también en aplicaciones de escritorio, y en diferentes sistemas operativos que soporten a Java Runtime.
Punto de partida y documentación
Scala posee un sitio web muy bien equipado (www.scala-lang.org). Allí podremos acceder a toda la información importante que necesitamos para poder sacar partido de este asombroso lenguaje de programación. A su vez, la documentación también es bastante completa, y dado el auge que está teniendo todo el campo científico en esta última década, podemos encontrar cursos gratuitos de introducción a Scala, en los portales Coursera y EDX.
FreeMat es un IDE para desarrollo de prototipos científicos y de ingeniería que se complementa muy bien con lenguajes de programación como MATLAB.
Go
El lenguaje de programación Go, fue desarrollado por Robert Griesemer, Ken Thompson y Rob Pike, para Google. Lanzado en 2009, este lenguaje de programación compilado soporta paradigmas imperativo, estructurado, y es orientado a objetos. Fue desarrollado para los sistemas basados en *NIX, por lo cual es compatible en un 100% solo para las plataformas OS-X, FreeBSD, Linux y Unix.
Go utiliza la sintaxis basada en C, por lo tanto, para quienes programen con soltura en el lenguaje C o C++, el uso de Go será casi transparente. Si bien Go es orientado a objetos, no soporta la herencia de tipos, ni palabras clave, o definición de un tipo de clase determinada.
El lenguaje de programación Go, es uno de los más utilizados para la creación de Shell Scripts para plataformas basadas en *Nix.
Uso de packages
Como la mayoría de los lenguajes de programación livianos o de alto nivel, Go utiliza packages. Con un package se obtiene la sintaxis de código requerida para un identificador determinado. De esta manera, importamos dentro del proyecto los tipos, funciones, variables y constantes necesarias para, por ejemplo, acceder a una base de datos, tablas y registros, y realizar operaciones del tipo ABM sobre estos.
Con el uso de packages la lectura del compilador del lenguaje es mucho más rápida, y al procesar el programa desarrollado en Go, éste poseerá una agilidad importante respecto a los programas que incluyen todas las referencias a sus librerías.