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]
Recursos de programación en
GNU/Linux
● Lenguajes
● Frameworks
● Entornos de desarrollo
● Otros recursos
● Colaborando
Lenguajes
● C
● C++
● Java / C#
● Python / Perl / Ruby
● Otros: Objective-C, Fortran, Eiffel, Haskell
C
● La base de GNU/Linux y UNIX
● Gran cantidad de bibliotecas
● glibc, GCC
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
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
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
Python
● Multiplataforma
● Dinámico
● Orientado a objetos
● Sencillo
● Web y escritorio
Perl
● Multiplataforma
● Hereda features de C, sh, Awk
● Potente manejo de XML
● Fácilmente trabaja con C/C++
● DBI, simplifica accesoa BBDD
Ruby
● Multiplataforma
● Dinámico
● Javascript + Python + Java
● Fácil extender en C
Otros
● Haskell
● Eiffel
● Fortran
● R
● ML
● Objective-C
Frameworks
● Java
● Mono / .NET
● QT / KDE
● Gtk+ / GNOME
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
Java (II)
● Swing/AWT para aplicaciones gráficas
● Soporte de Ruby además de Java
● ... hasta tiempo real
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
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
gtk+ / GNOME
● creación de aplicaciones gtk/GNOME
● tipos básicos portables (glib)
● manejo de gráficos, animaciones
● GNOME: manejo de archivos, multimedia
(gstreamer),
Entornos de desarrollo
● Eclipse
● Netbeans
● Anjuta
● Kdevelop
● Vim / Emacs
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)
Eclipse (II)
Netbeans
● Java, C++ y Ruby
● Editor visual de aplicaciones Java
● Muy extensible: plugins
● Multiplataforma
● Requiere bastantes recursos
Netbeans (II)
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
Anjuta (II)
GLADE
Kdevelop
● Orientado a QT/KDE
● Gran soporte de C++
● Soporta C, Java, Pascal, PHP, Ruby, etc
● Integración con autotools, qmake y ant
● Ligero
Kdevelop (II)
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
Vim (II)
Emacs
● Editor altamente extensible
● Soporta cualquier lenguaje
● Integración con sistemas de control de
versiones, compiladores, debuggers, etc
● Es un IDE sin ser IDE
Emacs
Otros recursos
● SCM: control de versiones
● Buscando software
● Alojamiento
● Licencias
SCM
● “Gestión del código fuente”
● “Control de versiones”
● SVN, el “bueno”
● git, arch, bazaar, los “feos”
● CVS, el “malo”
Subversion (SVN)
● Desarrollo centralizado
● Sencillo
● “Compatible” con comandos del CVS
● Soporta directorios
● El nuevo estándar para los habituados al
CVS
CVS
● Desarrollo centralizado
● Sencillo
● Muy estable
● Un “estándar”
● Obsoleto
SCM´s distribuidos
● git
● arch
● bazaar
git
● sencillo
● complejo
● potente
● flexible
● escalable
Buscando software
● Freshmeat
● Sourceforge
● Directorio del proyecto GNU
● Savannah
● Proyecto Debian
● GNOME, KDE, ...
Alojamiento
● Savannah
● Sourceforge
Licencias
● GPL “todos somos iguales ante el
código”
● LGPL “somos iguales excepto los
desiguales”
● BSD / MIT X11 “somos iguales los que
queremos serlo”
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
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
Elegir un módulo
● Según el nivel de cada uno
● Sencillez para empezar
● Pensar funcionalidades no presentes
Elegir una tarea
● Bugzilla
● TODO
● Roadmap
● Bounties (€)
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
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
Reimplementar
● Aceptar las críticas
● Argumentar las decisiones
● Buscar la excelencia técnica
● Y finalmente, conseguir que acepten el
parche
Fin
Licencia
Creative Commons
Reconocimiento-No comercial-Compartir bajo la
misma licencia 2.5 España
Comentarios de: Recursos de programación en GNU/Linux (0)
No hay comentarios