1 Utilización y administración avanzadas de sistemas GNU/Linux y aplicaciones Software Libre para estudiantes universitarios Recursos de programación en GNU/Linux Ramón Rey Vicente [email protected]@ramonrey.net
2 Recursos de programación en GNU/Linux ● Lenguajes ● Frameworks ● Entornos de desarrollo ● Otros recursos ● Colaborando
3 Lenguajes ● C ● C++ ● Java / C# ● Python / Perl / Ruby ● Otros: Objective-C, Fortran, Eiffel, Haskell
4 C ● La base de GNU/Linux y UNIX ● Gran cantidad de bibliotecas ● glibc, GCC
5 C++ ● Permite usar muchos de los recursos disponibles en C ● Problemas de estandarización de compiladores ● Ventajas en el diseño e implementación de aplicaciones ● GCC
6 Java ● Ya es libre !!! ● Existen implementaciones ajenas al control de SUN ● Independiente de plataforma, en teoría ● El mejor camino para migrar de entornos de desarrollo privativos a entornos libres ● JDK, GCJ
7 C# ● “Java” de Microsoft ● MONO ● Buen framework de desarrollo, moderno ● Intenta seguir a Microsoft con su.NET ● Incompleto, siempre por detrás ● Complicado migrar de MONO a.NET y viceversa
8 Python ● Multiplataforma ● Dinámico ● Orientado a objetos ● Sencillo ● Web y escritorio
9 Perl ● Multiplataforma ● Hereda features de C, sh, Awk ● Potente manejo de XML ● Fácilmente trabaja con C/C++ ● DBI, simplifica accesoa BBDD
10 Ruby ● Multiplataforma ● Dinámico ● Javascript + Python + Java ● Fácil extender en C
11 Otros ● Haskell ● Eiffel ● Fortran ● R ● ML ● Objective-C
12 Frameworks ● Java ● Mono /.NET ● QT / KDE ● Gtk+ / GNOME
13 Java ● Bytecode ● Recolector de basura ● JDBC, acceso a bases de datos ● aplicaciones web, servlets ● introspección, plantillas ● manejo de xml, cifrado y seguridad ● programación distribuida
14 Java (II) ● Swing/AWT para aplicaciones gráficas ● Soporte de Ruby además de Java ●... hasta tiempo real
15 Mono /.Net ● clon de Java ● integra XML, multihilo, seguridad y cifrado ● interfaz gráfica con gtk#/gnome# ● sopora Python, Perl, Javacript, VB.net, Java, etc además de C# ● no es recomendable para multiplataforma
16 QT / KDE ● creación de aplicaciones gráficas QT/KDE ● manejo de multihilo ● XML ● red ● tipos básicos portables ● KDE: multimedia, manejo de archivos, componentes con dcop
17 gtk+ / GNOME ● creación de aplicaciones gtk/GNOME ● tipos básicos portables (glib) ● manejo de gráficos, animaciones ● GNOME: manejo de archivos, multimedia (gstreamer),
18 Entornos de desarrollo ● Eclipse ● Netbeans ● Anjuta ● Kdevelop ● Vim / Emacs
19 Eclipse ● multiplataforma ● toolkit propio SWT, nativo para cada plataforma ● soporta Java, C++, PHP, a través de plugins ● soporta múltiples SCM ● editores visuales (incompletos)
20 Eclipse (II)
21 Netbeans ● Java, C++ y Ruby ● Editor visual de aplicaciones Java ● Muy extensible: plugins ● Multiplataforma ● Requiere bastantes recursos
22 Netbeans (II)
23 Anjuta ● Orientado a gtk+/GNOME ● Integración con autotools (automake, autoconf, etc) ● Integración con gdb ● Soporte para Pascal, Perl, Java, por archivo ● Ligero, ideal para máquinas modestas
24 Anjuta (II)
25 GLADE
26 Kdevelop ● Orientado a QT/KDE ● Gran soporte de C++ ● Soporta C, Java, Pascal, PHP, Ruby, etc ● Integración con autotools, qmake y ant ● Ligero
27 Kdevelop (II)
28 Vim ● Editor con muchas posibilidades ● Soporta virtualmente cualquier lenguaje ● Únicamente para editar código ● Obliga a conocer autotools, etc ● Ideal para máquinas muy modestas
29 Vim (II)
30 Emacs ● Editor altamente extensible ● Soporta cualquier lenguaje ● Integración con sistemas de control de versiones, compiladores, debuggers, etc ● Es un IDE sin ser IDE
31 Emacs
32 Otros recursos ● SCM: control de versiones ● Buscando software ● Alojamiento ● Licencias
33 SCM ● “Gestión del código fuente” ● “Control de versiones” ● SVN, el “bueno” ● git, arch, bazaar, los “feos” ● CVS, el “malo”
34 Subversion (SVN) ● Desarrollo centralizado ● Sencillo ● “Compatible” con comandos del CVS ● Soporta directorios ● El nuevo estándar para los habituados al CVS
35 CVS ● Desarrollo centralizado ● Sencillo ● Muy estable ● Un “estándar” ● Obsoleto
36 SCM´s distribuidos ● git ● arch ● bazaar
37 git ● sencillo ● complejo ● potente ● flexible ● escalable
38 Buscando software ● Freshmeat ● Sourceforge ● Directorio del proyecto GNU ● Savannah ● Proyecto Debian ● GNOME, KDE,...
39 Alojamiento ● Savannah ● Sourceforge
40 Licencias ● GPL “todos somos iguales ante el código” ● LGPL “somos iguales excepto los desiguales” ● BSD / MIT X11 “somos iguales los que queremos serlo”
41 Colaborando ● Elegir un proyecto ● Elegir un módulo o componente ● Elegir un tarea o bug ● Desarrollar la solución ● Exponerla a los miembros del proyecto ● Reimplementar
42 Elegir un proyecto ● Según lenguaje de programación ● Según la licencia ● Según el tamaño ● Según la ayuda y la comunidad creada
43 Elegir un módulo ● Según el nivel de cada uno ● Sencillez para empezar ● Pensar funcionalidades no presentes
44 Elegir una tarea ● Bugzilla ● TODO ● Roadmap ● Bounties (€)
45 Implementar solución ● Seguir las convenciones y guías de estilo ● Realizar los cambios mínimos necesarios en el código de los demás ● El software libre no es solo Linux ● Considerar la licencia del proyecto
46 Mostrar el trabajo ● Mostrar el trabajo a la comunidad ● Buscar la aceptación del mantenedor del proyecto ● Modificar y reimplementar todo en función de la respuesta ● Trabajo colaborativo
47 Reimplementar ● Aceptar las críticas ● Argumentar las decisiones ● Buscar la excelencia técnica ● Y finalmente, conseguir que acepten el parche
48 Fin
49 Licencia Creative Commons Reconocimiento-No comercial-Compartir bajo la misma licencia 2.5 España