Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Diciembre del 2017)
660 visualizaciones desde el 11 de Diciembre del 2017
1,0 MB
49 paginas
Creado hace 13a (27/10/2010)
GNU/Linux, software libre para la comunidad universitaria
Recursos de programación en
GNU/Linux
Ramón Rey Vicente
Universidad de Salamanca, 27 de octubre de 2010
Recursos de programación en
GNU/Linux
● Lenguajes
● Frameworks
● Entornos de desarrollo
● Otros recursos
● Colaborando
Lenguajes
● C
● C++
● Java / C#
● Python / Perl / Ruby
● Otros: ObjectiveC, 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 acceso a BBDD
Ruby
● Multiplataforma
● Dinámico
● Javascript + Python + Java
● Fácil extender en C
Otros
● Haskell
● Eiffel
● Fortran
● R
● ML
● ObjectiveC
Frameworks
● Java
● Mono / .NET
● QT / KDE
● Gtk+ / GNOME
Java (I)
● 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#
● Soporta 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 (I)
● 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 (I)
● Java, C++ y Ruby
● Editor visual de aplicaciones Java
● Muy extensible: plugins
● Multiplataforma
● Requiere bastantes recursos
Netbeans (II)
Anjuta (I)
● 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 (I)
● 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 (I)
● 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 (I)
● Editor altamente extensible
● Soporta cualquier lenguaje
● Integración con sistemas de control de
versiones, compiladores, debuggers, etc.
● Es un IDE sin ser IDE
Emacs (II)
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
Esta obra está bajo una licencia ReconocimientoNo comercialCompartir bajo
la misma licencia 2.5 España de Creative Commons. Para ver una copia de
esta licencia, visite http://creativecommons.org/licenses/byncsa/2.5/es/
o envíe una carta a Creative Commons, 171 Second Street, Suite 300, San
Francisco, California 94105, USA.
Comentarios de: Recursos de programación en GNU/Linux (0)
No hay comentarios