Programando C y los ojos rojos...

Publicado el Martes, 2 de octubre de 2007

Ayer lunes era la fecha de entrega de un trabajo para la clase de Algoritmos y Estructuras de datos. El trabajo consistía en recibir un código numérico, y un texto, y con un algoritmo encriptar el texto.
El año pasado nos comentaban sobre la diferencia de la forma de pensar de los programadores que usan C, y los demás. Supuestamente los que usan C, decía el profesor, piensan distinto. Es que es tan a bajo nivel en comparación con Java, .NET y demás orientados a objetos (que nos enseñaron en el primer año), que sí hay que ver las cosas de forma distinta. Aparte también de la diferencia de paradigmas. Pero es un lenguaje muy bueno para programar, y muy potente.

Lo que puedo decir de mi experiencia con C, es que me está gustando más de lo que esperaba. Había empezado el trabajo experimentando con algunos programitas para leer archivos, escribir en archivos, ejercicios con punteros, etc.
Pero la noche del domingo, me decidí a empezarlo formalmente y terminarlo. Debo haber empezado pasada la media noche. Empezé con lo que había aprendido de archivos y punteros, usando el editor de texto Kate (LA herramienta: AWK, Bash, Java, C) y gcc para ir compilando. También me ayudé con la documentación de la librería de C de GNU: libc. Se puede bajar en formato html desde el sitio de GNU y probablemente esté en los repositorios de la mayoría de las distribuciones.

Experiencias: Violación de segmento (segmentation fault) a cada rato! Es difícil ir debugueando a mano, sin un programa que lo vaya haciendo por nosotros. Ir poniendo banderas y "printf" por todos lados para ir testeando los resultados. Los punteros que apuntan a memoria que no pedimos! Al principio puede ser un poco frustrante, pero así se aprende. Sirvió mucho para aprender y buscarle la vuelta a las cosas hasta que salen. Más tomando en cuenta que no tenía a San Google para consultar en caso de trancarme.

Y así fue, que hasta las 7 y media de la mañana, de corrido, estuve programando, debugueando a mano y escribiendo código en C en la computadora. Pero la satisfacción de haber terminado el trabajo al amanecer, valió la pena. A pesar de no haber dormido, fue una noche totalmente productiva. Pensé que lo iba a terminar en ciento y pocas líneas, pero el trabajo final llevó más de 200. Es que le hice algunas cosas extra que no pedía la letra, solo por probar. Y hubiera seguido agregando cosas (me quedaron un par de ideas en el tintero) si no fuera porque tenía que ir a trabajar.

Así que a las 10 de la mañana sin dormir, entré a trabajar. Es bastante incómodo programar en Visual Basic después de haber programado una noche entera con C. Obviamente son incomparable porque no tienen nada que ver entre sí. Pero es complicado sacarse la costumbre de terminar con ";" las sentencias, o no escribir el "\n", entre otras cosas.

Los punteros son una costumbre muy práctica, pero poco sirve en VB. Busqué algo de información respecto a su aplicación en .NET pero ni siquiera vale la pena. De última confío un poco en el Garbage Collector y me olvido de la optimización de memoria y demás. No vale la pena, al final hay que aprovechar el framework.
Me ardían los ojos de tanto mirar la pantalla, pero en la tarde pude descansar un poco la mirada de la computadora, con unas diligencias laborales.

En conclusión, el trabajo fue mi primer entrega "publicada" bajo GPL. Como había comenzado probando con KDevelop, y traía una plantilla de código con la GPL incluida, la dejé. Para los que les interese ver el código en C como ejemplo y ejercicio para encriptar, acá lo dejo:

32px-nuvola_mimetypes_source_c.png Obligatorio C


La GPL v2 y v3 están alojadas en el sitio.

6 comentarios en este post

Feed de comentarios
  1. Avatar

    ZeruGiran 2 octubre. 2007 - 14:01

    Para programar en C y C++ a mi me gusta Eclipse con el plugin CDT.

    Internamente usa GCC y GDB para debuguear, te deja poner break points y mirar los valores de las variables, pausar la ejecución, etc.

    Esta en los repositorios de ubuntu.

  2. Avatar

    fernando 2 octubre. 2007 - 14:18

    Zeru,
    Gracias por la recomendación. Tengo el plugin de CDT para instalarle al Eclipse. Probablemente de ahora en más lo empieze a usar, ahora que ya “aprendí” lo que es programar a huevo, me puedo poner a usar un IDE.
    Y más si usa internamente el gcc, que es lo que venía usando, y el gdb es muy bienvenido. Hasta ahora no lo he probado.
    Saludos

  3. Avatar

    zarta 2 octubre. 2007 - 20:02

    Estudias y trabajas al mismo tiempo? Y ademas programando hasta la mil horas!!! Fijo que ese día para las 8 estabas en el sofá roncando.. xD

  4. Avatar

    fernando 3 octubre. 2007 - 14:25

    Ese día no, pero al día siguiente, llegué de trabajar a las 6 y media, y 7 de la tarde estaba acostado. Me desperté para cenar, miré Los Simpsons, escribí sobre corte de control y me acosté de nuevo 🙂
    No es fácil la vida de superhéroe…

  5. Avatar

    David 14 junio. 2011 - 08:03

    Hola,
    Te quería felicitar por tu página web. Ahora mismo estoy estudiando Informática de Sistemas, una de las asignaturas es Programación Estructurada, y por lo tanto damos C. Te agrego en mis favoritos 🙂
    Saludos desde Barcelona (España)

    • Avatar

      Fernando 15 junio. 2011 - 22:45

      ¡Muchas gracias! Espero leer más comentarios tuyos por acá entonces.

      Si bien hace un buen tiempo que no programo con C, hay algunos artículos por el archivo del blog que te pueden llegar a servir para tus estudios. ¡Suerte con la carrera!

      Saludos desde Uruguay.

Dejar un comentario

Toasty!