Posts

#8 Lin Clark on Web Assembly

Web Assembly me parece un proyecto muy interesante por como es una visión en común de varios desarrolladores muy grandes como Apple, Microsoft, Mozilla y Google con un objetivo en común: correr código en la web de la manera más rápida posible. La historia de como Web Assembly llego a ser es muy interesante, más que nada me parece una historia de optimización de un compilador de javascript que se transformó y se acabo convirtiendo en una herramienta que ha sido esencial para el desarrollo web en los últimos años.  A pesar de que Web Assembly soporta lenguaje ensamblador me parece muy interesante que la mayoría de las personas prefiere usar C o Rust ya que al parecer a nadie, o casi nadie (yo incluido) le gusta escribir código en lenguaje ensamblador.  Por lo que entiendo, Web Assembly facilita mucho usar aplicaciones que corren en código de bajo nivel en un navegador web y se conectan con el engine de javascript, esto puede funcionar para correr juegos, reproductores de media u otros pr

#7 Building Server-Side Web Language Processors

Desde que comencé a estudiar sistemas computacionales la mayor parte de mis cursos de programación nos pedían que instalaramos algún IDE para realizar nuestras tareas y proyectos, ya sea en C, C#, Java, Python o Clojure, todos estos los hice en archivos que solo existen en el disco duro de mi computadora. La idea de que en un futuro estas herramientas de programación se puedan hacer mucho más accesibles gracias al procesamiento server side me parece increíble ya que abre nuevas puertas y oportunidades para programadores en todo el mundo. No fue sino hasta hace poco que comence a utilizar Google Colaboratory, un procesador de lenguaje en la web de Google que permite la programación de un mismo archivo en equipos de 2 o más personas y me pareció algo completamente increíble. Creo que gran parte del futuro de las tecnologías de la información yace en la programación por pares como nos han enseñado en nuestros cursos de desarrollo de software. También si algo nos ha enseñado la pandemia de

#6 Ruby and the Interpeter Pattern

El artículo del profesor Ariel Ortiz sobre el SIF (S-expression Interpeter Framework) me resultó muy interesante, sobre todo por como explica que se ha usado como herramienta de enseñanza en el mismo Tecnológico de Monterrey, lo que hace que me parezca una realidad muy cercana. Las reglas de evaluación que se usan me recuerdan un poco al proyecto de compilador que estamos desarrollando ya que hay que asignar como se evalua cada elemento y cual es el resultado de dicha evaluación. Sobre el lenguaje de programación Ruby realmente no sabía (y siento que aún no sé) mucho al respecto, nunca he tenido un acercamiento directo que me haya hecho utilizar Ruby en ningún contexto pero por lo que he leído y escuchado al respecto, parece ser un lenguaje relativamente simple pero que no sacrficia poder computacional por simplicidad, es decir, es capaz de realizar y evaluar tareas complejas mientras mantiene una sintaxis relativamente sencilla. A pesar de que el profesor menciona que el curso que uti

#5 Mother of Compilers

A pesar de que estaba relativamente enterado de que es Cobol y cuál es su función como lenguaje de programación para los sistemas bancarios jamás me hubiera imaginado que fue la admirante de retaguardia Grace Brewster Murray Hopper quien lo desarrollo. Leer y aprender sobre los esfuerzos de Hopper por impulsar a la industria tecnológica en abrir más espacios y oportunidades para mujeres en los espacios que normalmente eran (y aun son) dominados realmente es triste porque en la actualidad podemos ver que a pesar de que ha habido avances, el área de tecnologías de la información realmente sigue siendo un ambiente dominado por el género masculino. Creo que todos los estudiantes de tecnologías de la información alguna vez escuchan la historia de donde viene la palabra bug, aunque sea de manera superficial, por lo que me sorprende que a pesar de que es un hecho especulativo, casi nunca se meciona que fue Grace Hopper la que encontro una polilla dentro de su computadora y la pego a su cuader

#4 Internals of GCC

El GCC o GNU Compiler Collection me parece uno de muchos increíbles proyectos comunitarios que le hacen la vida significantemente más fácil a todos los que hacemos y usamos código, sobre todo Java, C y C++. Entender con más profundidad como funciona un compilador, que funciones tiene que cumplir y la efectivdad con la que lo tienen que hacer hace que me resulte mucho más intimidante la idea de tener que desarrollar todo un compilador como proyecto para esta clase, sobre todo para un lenguaje sobre el que no sé virtualmente nada. Escuchar sobre los "ins and outs" de GCC realmente me hizo valorar mucho más la función que cumplen los compiladores, sobre todo por lo optimizados que son la mayoría de los compiladores modernos. Me sorprende saber la cantidad de personas, esfuerzo y tiempo que se le han dedicado a hacer que GCC funcione, aún más sabiendo que incluso hoy en día recibe actualizaciones y mantenimiento constante. Para mi una de las cosas más impactantes es cuantos proye

#3 The Hundred-Year Language

La idea de plantear e imaginar escenarios de problematicas que podrían o no suceder dentro de cien años no me parece correcta; en parte porque personalmente dudo que la situación climática actual nos permita preocuparnos por lenguajes de programación dentro de cien, cincuenta e incluso quizás diez años y en parte porque pienso que ya existen suficientes problemas que requieren nuestra atención actualmente. Entiendo, o creo que entiendo, la preocupación del autor por llegar a un punto de estanque en la evolución de los lenguajes de programación, pero si los avances tecnológicos de la última década son indicio de algo, es que la programación y los lenguajes continuan avanzando y creo que casi veinte años después de la publicación original de su artículo sabríamos si Java es un "dead end" o no, de igual manera hay otros lenguajes como Python que llevan años y años constantemente evolucionando y continuan siendo relevantes hoy en día.  Definitivamente hay ciertos factores que se

#2 Making Compiler Design Relevant for Students

Para esta entrega se nos pidió leer un artículo de Saumya Debray sobre la relevancia de las herramientas y conocimientos que se adquieren en los cursos de diseño de compiladores y como la mayoría de los estudiantes de ciencias computacionales no les damos la importancia debida. Tengo que admitir que no estoy del todo de acuerdo con el artículo, pienso que si la teoría de diseño de compiladores fuera tan relevante como alega el profesor Debray las universidades moldearían la currícula alrededor de ella; por ejemplo, para mi plan de estudios que es ISC 11 solo tomamos una materia de diseño de compiladores y es hasta el penúltimo semestre de la carrera, ya sea porque el contenido de la materia es complicado y requiere amplios conocimientos previos o porque la aplicación de los conocimientos es un nicho en el mercado laboral para los ingenieros en sistemas, esta clase es una de las ultimas materias que se cursan en la carrera y solo se aplican a lo largo de un semestre los conceptos que se