miércoles, 25 de enero de 2017

The Free Lunch Is Over

Hoy voy a hablar sobre el artículo: "The free lunch is over: A fundamental turn toward concurrency in software" por Herb Sutter.

Pero antes, empecemos con la canción para esta entrada, será "Vidas Paralelas" de Ximena Sariñana.


The free lunch se refiere a la vieja práctica en la que los desarolladores, sabiendo que cada dos años se duplicaba la capacidad de procesamiento de las computadoras podían ser relativamente irresponsables al momento de implementar una solución, con la confianza de que en máximo dos años (al terminar el desarollo de la aplicación). Las computadoras comunes serían capaces de ejecutarlo sin problemas.

El problema es que antes del 2005 la ley de Moore ya no aplica del todo con procesadores actuales, la velocidad base de un procesador se ha estancado alrededor de 3.0 Ghz. Lo que los fabricantes de hardware han hecho para compensar esto (además de optimizaciones y arquitecturas macabras, sí, estoy hablando de ti, Cannonlake) es agregar núcleos y hyperthreads, esto implica que los desarrolladores, si quieren realmente aumentar el rendimiento de sus aplicaciones deben tomar en cuenta las siguientes cosas:

Tener disponibles más núcleos no duplica (o cuatriplica) la velocidad de un proceso, en primera, porque agrega overhead que es el tiempo que tarda en que ambos núcleos se coordinen, en segunda, si una aplicación no soporta programación multinúcleo, su tiempo de ejecución va a ser similar en una computadora que tenga 1, 2, 4 u 8 núcleos. Sin embargo, si la aplicación ocupa un 100% del procesador, un usuario con más núcleos va a sentir su computadora más fluida, al poder usar los demás núcleos para otras tareas (cómo abrir Facebook, escuchar la nueva canción de Justin Bieber o leer mi último post) mientras la tarea se ejecuta.

Sin embargo, cualquier aplicación que esté diseñada para obtener el máximo rendimiento de una computadora (sí, ahora estoy hablando de ti, No Man's Sky). Debe estar diseñada y programada para soportar concurrencia.

Esto también implica una revolución en lenguajes de programación, ya que éstos deben estar diseñados para soportar concurrencia de una forma lo más simple posible para el desarrollador sí, ahora estoy hablando de lenguajes que no soportan programación multinúcleo sin llamar a otro low level language como C, haciendo prácticamente inútil haber utilizado al lenguaje de alto nivel desde un principio (LUA).

Es por ello que el futuro aparenta ser lenguajes funcionales, ya que por su naturaleza no necesitan utilizar locks para evitar corromper la información, hablo de lenguajes como Clojure o cualquier dialecto de Lisp, Perl, o Elixir.

Como el artículo lo menciona, la programación multinúcleo es para los desarrolladores actuales el equivalente a la programación orientada a objetos, ya que aprovechará mejor los cambios en hardware de las computadores de los últimos 15 años.

Eso es todo por esta entrada, espero haya sido una lectura agradable.

Wololo.

lunes, 23 de enero de 2017

Sillicon Valley

En esta entrada hablaré de un video y un lugar donde nació no solo la innovación tecnológica sino también la cultura que define a prácticamente cualquier computólogo, nuestro Atenas, Sillicon Valley.

La canción de esta entrada será "California Deamin'", hecha cover por Calix.

Nuestra historia empieza con un recién premio novel, un grupo de científicos y un sueño. Dejar Shockley Semiconductor para fundar su propia compañia, el año es 1957, cuando aún no existía este paradigma social que valora más fundar tu propia compañía que quedarte toda la vida y retirarte.

El documental habla de las dificultades que Robert Noyce, junto con los científicos de su nueva empresa, Fairchild Semiconductor, tuvieron para tener éxito en la industria de los semiconductores, en ese entonces casi dominada por Texas Instruments. Desde conseguir inversionistas, sus batallas legales por patentes, hasta dejar nuevamente la empresa por problemas con los inversionistas para fundar una nueva empresa, Intel.





Se menciona mucho en el documental cómo los inventos llegan a la sociedad en un momento crítico, y que si Robert Noyce junto con su equipo no hubieran desarrollado la tecnología que eventualmente se convirtió en el procesador, alguien más lo hubiera hecho. Sin embargo, el documental también menciona que las condiciones en las que el equipo de Noyce fue desarrollando los avances tecnológicos, junto con la personalidad de Noyce y su visión de equipo y liderazgo, fue un pilar importante en la creación de lo que ahora conocemos cómo la cultura de Sillicon Valley, de una región dedicada casi en su totalidad a la cuna del avance tecnológico.



Sillicon Valley es ahora sinónimo de emprendimiento y de tecnología, para cualquier computólogo es el equivalente para un artista de Los Angeles. Con compañías como Google, Apple, Intel y Facebook teniendo sus oficinas centrales en Sillicon Valley y otras miles de startups. Todo eso es en gran medida resultado de la historia de Robert Noyce y su equipo, que hace más de cincuenta años decidieron buscar su sueño en California.

Wololo.



lunes, 16 de enero de 2017

Introducción a programación multinucleo

Antes de comenzar la entrada de hoy, como es tradición, compartiré una canción por si desean acompañar la lectura de esta entrada con algo de música, para esta entrada es "Parallel Universe" de Red Hot Chili Peppers, porque hasta ahora hablar de lo que sucede en programación multinúcleo es como tratar de explicar lo que sucede en universos paralelos (espero que eso cambie a lo largo del curso).




Mi nombe es Kevin y en este blog escribiré sobre las lecturas, videos y actividades que realice en la clase de programación multinucleo impartida por el profesor Ariel Ortiz en el Tecnológico de Monterrey, campus Estado de México.

Encontrarán en este blog un espacio de reflexión sobre la programación multinucleo en C, Java y Erlang (también sobre mis legendarios chistes malos de programar en Lua).

Esta es la primera entrada del blog así que si es la primera vez que lees uno de mis blogs, aquí encontrarás una breve introducción:


Actualmente estudio ingeniería en sistemas computacionales en el Tecnológico de Monterrey,
me encuentro en último semestre. Me dedico a programar aplicaciones móviles por el momento. Músico de closet. Mis series favoritas son Rick and Morty, Lost, Adventure Time, Mr. Robot.
Creo en los lenguages de programación experimentales. Pseudo-gamer.

Y eso es todo por esta entrada, la vida es corta, inviten a esa chica a salir.

Wololo.