C es un lenguaje muy importante en el «mundo real». Se utiliza en muchísimas aplicaciones realmente interesantes, que abarcan cosas como los microcontroladores, las redes de sensores, los sistemas en tiempo real, los sistemas operativos y los juegos, por poner algunos ejemplos.
Sin embargo, el C que se utiliza no es la introducción básica a la programación que se enseña con C, que emplea cosas como cin, cout, y una serie de «trucos» para no «ver» cosas como los punteros. Los punteros están ahí, y no puedes evitarlos: para que C sea útil como lenguaje, tendrás que usar sus punteros. Y no se estudian en Programación I ni en Programación II. De hecho, la gran sorpresa de los alumnos de este curso cuando lo comienzan es que se dan cuenta hasta qué punto desconocen C.
El problema de usar las características de C que lo han hecho -y lo hacen- grande es que es muy difícil de depurar. Además, los programas grandes en C tienen cientos de miles de líneas, y eso hace ingobernable el editor simple de texto. Y con frecuencia trabajan decenas de personas en el mismo proyecto.
Parece evidente que los programas en C se terminan, se terminan sin errores, incluso los más grandes y los que involucran muchas personas. Pero eso se debe a que C no es apenas un compilador: la persona que programa profesionalmente en C conoce multitud de herramientas, que le facilitan la tarea de desarrollo para obtener productividades similares a los lenguajes de más alto nivel.
Y de eso va el curso.
Mi objetivo en el curso es darte un repaso de C, para «refrescar» conceptos (o aprenderlos; pero en ese caso, el curso te llevará más tiempo que el estimado. De cualquier forma, si entras sin tener ni idea de C, tanto por la documentación del curso como por los foros y las preguntas que me hagas, puedes aprender). Después pasamos a los punteros, que son el «gran olvidado» de muchos cursos donde se aprende a programar, y se aprende con C.
Y finalmente, viene la parte «divertida»: las herramientas. Decenas de herramientas que se utilizan para:
- Depurar código: Aplicaciones como lclint son capaces de localizar errores comunes, de forma estática, en tu código. Errores en el paso de parámetros, y el uso de punteros. Valgrind también te permite depurar programas con facilidad.
- Optimizar código: Valgrind también genera informes muy detallados de dónde «pierde el tiempo» tu aplicación, y dónde te interesa optimizar. Esto puede incluir partes del código, o funciones del sistema que realmente sean el cuello de botella de tu aplicación.
- Desarrollar proyectos grandes: Herramientas como Makefile son imprescindibles para los proyectos grandes, al permitir compilar por separado partes del código, sin obligarte a recompilar partes ya compiladas.
- Desarrollar proyectos entre varios: Sistemas de control de versiones como CVS o Subversion, que te permite saber quién ha hecho qué en cada momento, y hacer y deshacer según tus necesidades.
- Hacer código portable: Herramientas como autoconf y automake te permitirán hacer código portable, e independiente de la plataforma.
- Acelerar las compilaciones: Mediante herramientas como ccache y distcc, podrás acelerar las compilaciones en órdenes de magnitud.
- Interpretar archivos de configuración: lex y yacc sirven para más cosas que para hacer compiladores: con una fracción del lex y el yacc, puedes leer e intepretar archivos de configuración muy complejos, con poco trabajo.
Además de todo esto, te enseñaré bibliotecas que me han sido de mucha utilidad y me han permitido desarrollar aplicaciones en el «mundo real» en muy poco tiempo, suponiendo mejora de eficiencia por utilizar estas bibliotecas una ventaja respecto a mi competencia. Dentro de estas, veremos RPC, que permite hacer aplicaciones cliente-servidor en red con una facilidad pasmosa (y sin tocar un socket); a intercomunicar procesos en una misma máquina con las bibliotecas de System V, y también te enseñaré algunos trucos y técnicas para hacer tus programas más seguros en C, así como a usar el splint para buscar agujeros de seguridad.
El curso será por teleformación. El curso requiere una base mínima: saber programar en algún lenguaje de programación -no explicaré qué es un bucle ni qué es una función; sí como se hacen en C-.
En el curso cubro muchísimas herramientas, por lo tanto. Todas las documento; y te responderé las dudas que tengo sobre todas ellas. Como en todos los cursos que imparto, me gusta dar mucho valor por el curso que ofrezco, y le podrás dedicar mucho tiempo al aprendizaje de muchas cosas útiles. Como en el caso del curso de LaTeX y el de Perl, tengo que acotar la parte necesaria para obtener el certificado de aprovechamiento a 25 horas; por lo que solo serán cuatro las actividades para el certificado de aprovechamiento. La lectura del material relativo a dichas práctica, su estudio y la ejecución de dichas prácticas debería llevarte aproximadamente 25 horas; aunque depende de tu nivel previo el tiempo efectivo que tardes. El resto de las prácticas serán opcionales, y te recomiendo que las realices para aprender más y sacar el máximo partido a este curso.
La Universidad de Málaga convalida dos créditos de libre configuración por curso para los alumnos de titulaciones de plan antiguo, y un crédito ETCS para los de plan nuevo (grados) . El curso costará 50€ a alumnos de la Universidad de Málaga, y 70€ a alumnos del curso que no pertenezcan a la UMA. La matriculación, por lo tanto, está abierta a gente de todo el mundo, y quizás os interese el curso.
Con el curso te llevas su documentación: un manual propio, en formato PDF, con más de seiscientas páginas de documentación original sobre C, herramientas para programar en C, y algunos de sus APIs más importantes.
Si tienes interés en saber como es el material, mándame tu nombre, tus apellidos, y tu correo electrónico, y te mandaré un par de capítulos y unas hojas del curso de ejemplo, para que veas la calidad del material y decidas si te interesa o no el curso. El correo es irbis arroba orcero.org, cambia el «arroba» por el signo @ para obtener el correo.
La matriculación puedes hacerla aquí: curso de C. Si estás con dudas, te recomiendo que preguntes a otros alumnos sobre los otros cursos que han realizado conmigo (el de LaTeX, este de C, el de informática forense, o el de Perl) y que te cuenten cómo les ha ido.
Además de este curso, también oferto otro curso de teleformación sobre LaTeX: curso de LaTeX.
Espero verte en el curso.