Saturday, October 17, 2015

MapReduce: Simplified Data Processing on Large Clusters

MapReduce: Simplified Data Processing on Large Clusters es el artículo que nos tocó leer esta vez. MapReduce es un modelo de programación que se utiliza para análisis de datos muy grandes. Esto se logra con la ayuda de concurrencia a lo largo de múltiples computadores para su buen funcionamiento y con una gran tolerancia a fallas. Este modelo de programación es muy conocido en muchas áreas de programación, en la materia de Lenguajes de Programación utilizamos alguna versión un poco “primitiva” de la misma para resolver problemas que requieran mucho tiempo de cálculo. MapReduce es una herramienta clave para la utilización en sistemas para el análisis de big data. Con la ayuda de este, se puede utilizar hardware más barato pero en masa para lograr resultados increíbles ya que MapReduce puede acceder fácilmente a sistemas de datos, bases de datos e incluso en el manejo de archivos no estructurados.
Por la forma en la que se maneja MapReduce, sería bastante interesante verlo ser usado en lenguajes de programación como Erlang, que están enfocados principalmente en multi threading y que al igual que el mismo modelo de programación, también tiene sus partes que lo convierten libre de errores.

Viendo desde un punto de vista la implementación de un método MapReduce, me puedo dar cuenta que hasta cierto punto es muy sencillo y de lo que he aprendido en Clojure, muy fácil de utilizar y reutilizar. Una vez que puedas entender que hace cada una de sus componentes, puedes verdaderamente domar el método por completo, Map lo utilizamos muchísimo cuando trabajamos con datos que requieren de muchos incides,  o que puede estar en algún formato que en realidad no necesitamos. Y el Reduce es algo nuevo que conocí y lo vi en Clojure, este recibe todas las entradas posibles de una lista y los reduce a partir de un operador que se le dé.

Sunday, October 11, 2015

Teaching Concurrency with Erlang

Teaching Concurrency with Erlang es el artículo que nos tocó leer esta vez. El articulo habla acerca de la experiencia que fue dar la clase de Lenguajes de programación enseñándoles a los alumnos Erlang en el campus Estado de México. De solo pensarlo puedo decir como estudiante que tuvo que haber sido un poco difícil y posiblemente muy frustrante ( ha ha).
La materia la dio Ariel nuestro profesor y platica de lo importante que es ver la diversidad que existe en los lenguajes de programación y romper un poco la monotonía de que nos enseñen lenguajes como C/C++ y Java para resolver casi todas las aplicaciones que se nos presentan. Aunque para varios también les fue enseñando Python, a mí me tocó ver objective-c para la materia de aplicaciones móviles, en el que nos enseñaron a crear aplicaciones para iOS y también fue una experiencia diferente a lo que normalmente estamos acostumbrados.
En cuanto a nuestra educación, puedo imaginar que Erlang les abrió los ojos a los estudiantes bastante ya que al ser un lenguaje de programación que su principal enfoque sea la concurrencia, las aplicaciones con casi ilimitadas para la utilización de Erlang. En mi caso, Lenguajes de programación es todo Clojure, y eso no quiere decir que sea malo, al contrario, siento que Clojure también te abre los ojos a una nueva forma de resolver problemas con su programación funcional a comparación de lo usual que es programación orientada a objetos.

El articulo sostiene muchas ideas de las ventajas que tiene aprender a utilizar Erlang y que están bastante bien fundamentadas para mantenerse a favor de que siga siendo enseñado. La materia de Lenguajes de programación me gustó mucho gracias a que aprendimos algo fuera de lo usual que es Clojure, pero considero que posiblemente hubiera disfrutado el curso igual si además nos hubieran enseñado Erlang.

Monday, October 5, 2015

Joe Armstrong on Erlang

En este blog nos tocó hablar acerca del podcast titulado Joe Armstrong on Erlang. Él nos platica un poco de cómo está diseñado Erlang y de sus múltiples aplicaciones posibles. Empezando porque este lenguaje ha sido diseñado con el propósito de manejarse de manera concurrente y que puede ser muy tolerando a distintas fallas que pueden ocurrir.
Joe habla acerca del sistema de mensajes que se desarrolló que funciona muy bien en cuanto a múltiples llamadas concurrentes, al ser de este tipo quiere decir que siempre se respeta el orden de ejecución y casi nada se puede correr de manera errónea. El chiste de este sistema es tomar en cuenta el hecho de que fue diseñado para controlarse en ambientes paralelos y hay que aprovechar esos features al máximo. Aunque este diseñado para ser a prueba de fallas, no siempre se podrá evitar un error pero gracias a la forma en la que está hecho es muy fácil también percibir cuando se producen errores y manejarlos con un superior que se encarga de que todo siga funcionando correctamente y hace registro de los errores que aparecen.
Ya que entramos en una era en la que es importante considerar paralelismo en nuestros programas, Erlang ha ido creciendo y es utilizado en algunas de las más populares aplicaciones que utilizamos día a día como lo es en WhatsApp y el chat en Facebook.

Erlang puede que sea uno de muchos lenguajes de programación que surgirán para manejar casi nativamente el manejo de multi threading, ya que toda la tecnología que nos rodea en este momento se va cada vez más a que los procesadores seguirán creciendo en cuanto a núcleos. Las aplicaciones que tiene Erlang son casi infinitas y debo decir que ya que lo veo no es tan fácil entenderlo pero es un lenguaje muy padre.