{"id":197,"date":"2016-01-12T20:09:11","date_gmt":"2016-01-12T18:09:11","guid":{"rendered":"https:\/\/www.orcero.org\/blog\/?p=197"},"modified":"2016-01-12T20:09:11","modified_gmt":"2016-01-12T18:09:11","slug":"curso-de-teleformacion-de-c-y-sus-herramientas-4","status":"publish","type":"post","link":"http:\/\/almacen\/blog\/index.php\/curso-de-teleformacion-de-c-y-sus-herramientas-4\/","title":{"rendered":"Curso de teleformaci\u00f3n de C y sus herramientas"},"content":{"rendered":"<p>C es un lenguaje muy importante en el \u00abmundo real\u00bb. Se utiliza en much\u00edsimas 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.<\/p>\n<p>\nSin embargo, el C que se utiliza no es la introducci\u00f3n b\u00e1sica a la programaci\u00f3n que se ense\u00f1a con C, que emplea cosas como <em>cin<\/em>, <em>cout<\/em>, y una serie de \u00abtrucos\u00bb para no \u00abver\u00bb cosas como los punteros. Los punteros est\u00e1n ah\u00ed, y no puedes evitarlos: para que C sea \u00fatil como lenguaje, tendr\u00e1s que usar sus punteros. Y no se estudian en Programaci\u00f3n I ni en Programaci\u00f3n II. De hecho, la gran sorpresa de los alumnos de este curso cuando lo comienzan es que se dan cuenta hasta qu\u00e9 punto desconocen C.\n<\/p>\n<p>\nEl problema de usar las caracter\u00edsticas de C que lo han hecho -y lo hacen- grande es que es muy dif\u00edcil de depurar. Adem\u00e1s, los programas grandes en C tienen cientos de miles de l\u00edneas, y eso hace ingobernable el editor simple de texto. Y con frecuencia trabajan decenas de personas en el mismo proyecto.\n<\/p>\n<p>\nParece evidente que los programas en C se terminan, se terminan sin errores, incluso los m\u00e1s 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\u00e1s alto nivel.\n<\/p>\n<p>\n Y de eso va el curso.\n<\/p>\n<p>\nMi objetivo en el curso es darte un repaso de C, para \u00abrefrescar\u00bb conceptos (o aprenderlos; pero en ese caso, el curso te llevar\u00e1 m\u00e1s tiempo que el estimado. De cualquier forma, si entras sin tener ni idea de C, tanto por la documentaci\u00f3n del curso como por los foros y las preguntas que me hagas, puedes aprender). Despu\u00e9s pasamos a los punteros, que son el \u00abgran olvidado\u00bb de muchos cursos donde se aprende a programar, y se aprende con C.\n<\/p>\n<p>\n Y finalmente, viene la parte \u00abdivertida\u00bb: las herramientas. Decenas de herramientas que se utilizan para:<\/p>\n<ul>\n<li><em>Depurar c\u00f3digo:<\/em> Aplicaciones como lclint son capaces de localizar errores comunes, de forma est\u00e1tica, en tu c\u00f3digo. Errores en el paso de par\u00e1metros, y el uso de punteros. Valgrind tambi\u00e9n te permite depurar programas con facilidad.<\/li>\n<li><em>Optimizar c\u00f3digo:<\/em> Valgrind tambi\u00e9n genera informes muy detallados de d\u00f3nde \u00abpierde el tiempo\u00bb tu aplicaci\u00f3n, y d\u00f3nde te interesa optimizar. Esto puede incluir partes del c\u00f3digo, o funciones del sistema que realmente sean el cuello de botella de tu aplicaci\u00f3n.<\/li>\n<li><em>Desarrollar proyectos grandes:<\/em> Herramientas como Makefile son imprescindibles para los proyectos grandes, al permitir compilar por separado partes del c\u00f3digo, sin obligarte a recompilar partes ya compiladas.<\/li>\n<li><em>Desarrollar proyectos entre varios:<\/em> Sistemas de control de versiones como CVS o Subversion, que te permite saber qui\u00e9n ha hecho qu\u00e9 en cada momento, y hacer y deshacer seg\u00fan tus necesidades. <\/li>\n<li><em>Hacer c\u00f3digo portable:<\/em> Herramientas como autoconf y automake te permitir\u00e1n hacer c\u00f3digo portable, e independiente de la plataforma.<\/li>\n<li><em>Acelerar las compilaciones:<\/em> Mediante herramientas como ccache y distcc, podr\u00e1s acelerar las compilaciones en \u00f3rdenes de magnitud.<\/li>\n<li><em>Interpretar archivos de configuraci\u00f3n:<\/em> lex y yacc sirven para m\u00e1s cosas que para hacer compiladores: con una fracci\u00f3n del lex y el yacc, puedes leer e intepretar archivos de configuraci\u00f3n muy complejos, con poco trabajo.<\/li>\n<\/ul>\n<p> Adem\u00e1s de todo esto, te ense\u00f1ar\u00e9 bibliotecas que me han sido de mucha utilidad y me han permitido desarrollar aplicaciones en el \u00abmundo real\u00bb 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\u00e1quina con las bibliotecas de System V, y tambi\u00e9n te ense\u00f1ar\u00e9 algunos trucos y t\u00e9cnicas para hacer tus programas m\u00e1s seguros en C, as\u00ed como a usar el splint para buscar agujeros de seguridad.\n<\/p>\n<p>\nEl curso ser\u00e1 por teleformaci\u00f3n. El curso requiere una base m\u00ednima: saber programar en alg\u00fan lenguaje de programaci\u00f3n -no explicar\u00e9 qu\u00e9 es un bucle ni qu\u00e9 es una funci\u00f3n; s\u00ed como se hacen en C-.\n<\/p>\n<p>\n En el curso cubro much\u00edsimas herramientas, por lo tanto. Todas las documento; y te responder\u00e9 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\u00e1s dedicar mucho tiempo al aprendizaje de muchas cosas \u00fatiles. 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\u00e1n cuatro las actividades para el certificado de aprovechamiento. La lectura del material relativo a dichas pr\u00e1ctica, su estudio y la ejecuci\u00f3n de dichas pr\u00e1cticas deber\u00eda llevarte aproximadamente 25 horas; aunque depende de tu nivel previo el tiempo efectivo que tardes. El resto de las pr\u00e1cticas ser\u00e1n opcionales, y te recomiendo que las realices para aprender m\u00e1s y sacar el m\u00e1ximo partido a este curso.\n<\/p>\n<p>\n La Universidad de M\u00e1laga convalida dos cr\u00e9ditos de libre configuraci\u00f3n por curso para los alumnos de titulaciones de plan antiguo, y un cr\u00e9dito ETCS para los de plan nuevo (grados) . El curso costar\u00e1 50\u20ac a alumnos de la Universidad de M\u00e1laga, y 70\u20ac a alumnos del curso que no pertenezcan a la UMA. La matriculaci\u00f3n, por lo tanto, est\u00e1 abierta a gente de todo el mundo, y quiz\u00e1s os interese el curso.\n<\/p>\n<\/p>\n<p>\nCon el curso te llevas su documentaci\u00f3n: un manual propio, en formato PDF, con m\u00e1s de seiscientas p\u00e1ginas de documentaci\u00f3n original sobre C, herramientas para programar en C, y algunos de sus APIs m\u00e1s importantes.\n<\/p>\n<p>\n<strong>Si tienes inter\u00e9s en saber como es el material, m\u00e1ndame tu nombre, tus apellidos, y tu correo electr\u00f3nico, y te mandar\u00e9 un par de cap\u00edtulos 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 \u00abarroba\u00bb por el signo @ para obtener el correo.<\/strong>\n<\/p>\n<p>\nLa matriculaci\u00f3n puedes hacerla aqu\u00ed: <a href=\"http:\/\/www.uma.es\/vrue\/cursos_verano.html\">curso de C<\/a>. Si est\u00e1s 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\u00e1tica forense, o el de Perl) y que te cuenten c\u00f3mo les ha ido.\n<\/p>\n<p>\nAdem\u00e1s de este curso, tambi\u00e9n oferto otro curso de teleformaci\u00f3n sobre LaTeX: <a href=\"http:\/\/www.orcero.org\/irbis\/latex2016\">curso de LaTeX<\/a>.<\/p>\n<p>\nEspero verte en el curso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C es un lenguaje muy importante en el \u00abmundo real\u00bb. Se utiliza en much\u00edsimas 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 &hellip; <a href=\"http:\/\/almacen\/blog\/index.php\/curso-de-teleformacion-de-c-y-sus-herramientas-4\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/posts\/197"}],"collection":[{"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":1,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/posts\/197\/revisions"}],"predecessor-version":[{"id":199,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/posts\/197\/revisions\/199"}],"wp:attachment":[{"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=197"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/almacen\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}