domingo, 31 de enero de 2016

Teach yourself programming in ten years (Comentario)



Debo admitir que hice lo imposible por no sentirme identificado o culpado por el artículo, después de todo, soy ese tipo de personas a las que les gusta saber un poco de todo, por lo que lo más básico suele bastar para saciar mi curiosidad. Sí, soy culpable, en mi biblioteca personal se encuentran joyas como "Android Application Development for Dummies" (me he encargado de desarrollar ese campo más a fondo por mi cuenta, no se preocupen) y "Teach youself C in 21 days".

En mi defensa, busco estos libros como puerta de entrada, en ningún momento pretendí volverme un experto en Android de la noche a la mañana, y todavía tengo problemas entendiendo conceptos que podrían ser básicos en C, pero este material sirve para generar un interés en mí. No es que defienda esta práctica, es terrible si lo que queremos es ser unos expertos, pero creo que es algo de sentido común saber que no bastan 21 días para convertirse en todo un buenazo en uno de los lenguajes de programación más complejos.

Al contrario, entiendo que la práctica hace al maestro y el fracaso es el mejor profesor, por lo que leer unos cuantos capítulos no tiene ninguna comparación con una vida entera de trabajar con diferentes lenguajes de programación. Noto esto cuando paso mucho tiempo sin programar y después no puedo ni escribir un if porque tengo la sintaxis en otros 15 lenguajes diferentes.

Si bien, no son la mejor opción para aprender a programar, o simplemente no son la mejor opción para nada, creo que los libros de aprendizaje intensivo (no sé de qué otra forma llamarlos) sirven para otros fines menos trascendentales, como dar los primeros pasos hacia un nuevo paradigma de programación, o aprender a resolver una tarea con requerimientos específicos.


Eso, o nunca sobra un tope para puertas.

domingo, 24 de enero de 2016

El mundo habla C (After all these years, the world is still powered by C programming) (Comentario)




Uno de mis primeros acercamientos hacia la programación se remonta a mis épocas de preparatoria en el ITESM CEM, donde llevábamos un curso de ingeniería básico trabajando sobre la plataforma Arduino. Para los que no estén informados al respecto, el Arduino es una plataforma open source de programación y sistemas electrónicos embebidos en una pequeña tarjeta programable. El lenguaje que utilizábamos (antes de movernos a Pyserial, la plataforma de Python) era C, y de buenas a primeras me pareció muy útil para lo que se estaba haciendo, pues podíamos manipular directamente el voltaje de cada uno de los puertos de la tarjeta con un simple "HIGH" o un "LOW".

Aun empezada la carrera de Sistemas Computacionales, C siempre me pareció un lenguaje un tanto primitivo por su cercanía al hardware, entre otras manías del lenguaje como plataforma de alto nivel (declarar el iterador de un for como una variable aparte, usar caracteres como números, etc.) Sin embargo, reconozco la omnipresencia que este lenguaje tiene en todos y cada uno de los sistemas computacionales y electrónicos de todos los días, vamos, incluso llego a preguntarme si el tope para puertas está programado en C al igual que todo lo demás.

El artículo "After All These Years, the World is Still Powered by C Programming" nos habla sobre las diferentes ventajas que tiene el lenguaje C sobre el resto de las plataformas, aunque decir "ventajas" me parece inapropiado puesto que C en si mismo ya es una plataforma dominante de la programación de sistemas. El autor celebra la portabilidad del lenguaje, su simpleza y sobre todas las cosas, su eficiencia sobre el resto de las plataformas.

La eficiencia es el producto de esta cercanía al hardware que he mencionado, ya que aunque C se puede usar para tareas de alto nivel (calcular cada cuantas horas alimentar a mi gato, entre otros cálculos simples), su principal uso es para programación a nivel sistema, por lo que no sorprende que se mencionen ejemplos de sistemas que de buenas a primeras parecen ser muy simples como un microondas. Yo, sinceramente nunca reparé en pensar sobre el nivel de sofisticación de la programación de un microondas, en realidad pensé que sería nula, pero comprendiendo la simpleza y la extensión corta de un programa en C, veo cómo entraría algo así en una de las máquinas más simples.

Si se pudiera hacer un símil, diría que C es el inglés de los lenguajes de programación, plaga nuestra vida con pequeñas expresiones (palabras como "boiler", siendo similares al uso cotidiano del microondas), y, para bien o para mal, los programadores o desarrolladores de software deben de conocerlo bien para ser eficientes en su trabajo. La universalidad del idioma inglés puede ponerse al nivel de la portabilidad del lenguaje C, por lo que casi cualquier persona podrá entender si les hablamos en inglés, como casi cualquier plataforma entenderá un programa de C si está dirigido hacia ella por su modularidad.


Tras esta comparación no cabe duda que, si bien no es vital, es bastante recomendable aprender C para poder tener un mejor entendimiento de diferentes sistemas y para poder manejar esta plataforma que se encuentra en cada rincón de nuestras vidas.

-Francisco Geada Rodríguez

Referencias:
Arduino. (s.f.). What is Arduino? Recuperado el 22 de Enero de 2015, de Arduino: https://www.arduino.cc/

Trejo, D. A. (s.f.). After all these years, the world is still powered by C programming. Recuperado el 22 de Enero de 2015, de Toptal: http://www.toptal.com/c/after-all-these-years-the-world-is-still-powered-by-c-programming

martes, 12 de enero de 2016

Francisco Geada

Buenos días, mi nombre es Francisco Geada Rodríguez, soy estudiante de Ingeniería en Sistemas Computacionales en el Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Estado de México. Este blog está dedicado exclusivamente a la materia de Programación Avanzada impartida por el profesor Ariel Ortiz Ramírez.

Sobre mí...

Nací el 8 de diciembre de 1993 en Tampico, Tamaulipas, donde viví los primeros 16 años de mi vida asistiendo al Instituto Cultural Tampico hasta terminar la secundaria. Me mudé al Estado de México en el 2010 donde estudié la preparatoria en el CEM y formé parte del equipo de robótica Buluk. Al terminar comencé a estudiar la carrera de ISC en el mismo campus, y esa historia se sigue escribiendo.

Mis intereses incluyen (pero no se limitan a) la música, los libros, la historia, los videojuegos, la informática, los comics, las películas entre muchas otras cosas dependiendo de mi tiempo libre. Tengo dos gatos que por azar del destino son un gato negro y una gata blanca llamados Mikael y Arya respectivamente.

Me gusta escuchar música en todo momento, tratar de tocar música cuando tengo tiempo, leer antes de dormir, ver documentales (de historia mejor), jugar videojuegos durante horas, aprender nuevos lenguajes de programación, y escribir, aunque eso último todavía no está bien desarrollado.

Hablo español bien, domino el inglés pero me atraganto al hablarlo, y mastico el alemán lo mejor que puedo. Los lenguajes que sí conozco bien son Python, Java, Ruby, C# y C a medias (muy a medias).

Si les interesa saber más sobre mí, me pueden escuchar en Frecuencia Geek, de la emisora del campus Frecuencia CEM de 9 a 10 de la mañana los miércoles.

El curso...

Lo que espero del curso es dominar el lenguaje C y ver un paradigma enfocado a programación de bajo nivel, pues solo he visto programación en alto nivel y me parece que es algo limitada en cuanto a lo que puede hacer a nivel sistema.