[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT?] Desarrollo aplicaciones multiplataforma (casi filosofia. Un poco largo)



Ipsissima verba Armando Paz:
> Antes de nada me gustaría pedir perdón si el tema que trato es
> off-topic (nunca me ha quedado muy claro eso del off-topic, al final
> muchas de las cuestiones buscan el utilizar de forma más completa
> nuestro Debian, ¿no?).

Hace tiempo que busco una lista de correo en español sobre
programación en C para Linux (quiero decir lista de correo como ésta,
no foros web, que de esos vi varios).  Lo más cercano que he
encontrado es:

  http://www.sld.cu/pipermail/linux-prog

Estoy suscrito, pero aún no escribo nada.  Estoy en proceso de
familiarizarme con la lista y los parroquianos regulares.  Es una
lista de muy poco tráfico, por lo que he visto.

Como sea, creo que estos temas no están tan "off-topic" aquí.  Si de
una discusión como ésta sale un nuevo programa (o programador) para
Debian, ya habrá valido la pena.

> Creo que lo que busco es una "herramienta de desarrollo gráfico de
> aplicaciones multiplataforma", y creo que esto se llama IDE=entorno
> de desarrollo integrado + librerías gráficas + compilador +
> depurador + miles de cosas más que no alcanzo a adivinar.

Ya.  Pues mira, posiblemente no soy la persona más indicada para
hacerte recomendaciones, porque no soporto los IDEs :-) (yo programo
en Emacs y construyo con make, y de cualquier forma rara vez programo
GUIs).  Sin embargo, tengo algo de experiencia desarrollando software
portable, de manera que intentaré redactar algo útil.

Primero, considera aprender Java.  No hay nada más portable que Java,
al menos en lo que toca a aplicaciones GUI.  Estoy seguro de que hay
docenas de IDEs, comerciales y libres, que podrás usar.  Y en mi
opinión es un lenguaje muy bueno para principiantes---un poco como
Pascal, que hace difícil al novato cometer errores garrafales o
acostumbrarse a prácticas sucias.  Además Java está de moda.  Tu valor
como programador en el mercado aumentará si sabes Java.

El problema con Java es que requiere muchísimos recursos, lo cual lo
hace lento a menos que tus máquinas sean grandes.  Y quiero decir
*grandes*: en mi vieja laptop (K6 @ 450MHz con 192M RAM) javac es
exasperante y Swing es simplemente insufrible.  Peor, la interfaz
gráfica es inconsistente con el resto del sistema operativo---cosa que
en Linux no significa mucho, pero vaya, yo pienso que los
programadores de GUI en Linux deberían empujar hacia corregir ésto, no
perpetuar el status quo.

Quitando Java, puedes intentar un "lenguaje de alto nivel" con algún
tipo de "binding" hacia bibliotecas de GUI.  Digamos Perl, Python o
Ruby.  No te recomiendo Tcl/Tk, porque las aplicaciones se ven
espantosas (de nuevo estoy siendo subjetivo).  Python+wxWindows parece
ser una buena combinación: el cliente de BitTorrent está programado
así, y a mi me gusta.  Perl ó Ruby + GTK + Glade me parecen
combinaciones muy interesantes, particularmente para gente a la que le
gusta hacer sus GUIs en un editor "visual", aunque no sé cuántos
problemas tengas para hacerlas funcionar en el S.O. cuyo nombre no ha
de ser mencionado.

Una alternativa interesante: considera explorar el desarrollo de
aplicaciones usando XUL, sobre Mozilla.

En este punto debo confesar que yo probablemente no consideraría
siquiera la posibilidad de usar algo de lo que he recomendado arriba
para desarrollos "serios".  Quizá es que ya soy un perro muy viejo
para estar aprendendiendo nuevos trucos :-) , pero mis programas
"serios" los hago en C.  Ó C++, si es *absolutamente* necesario.

Para desarrollar GUIs portables en un lenguaje de bajo nivel necesitas
compilador, debugger (¿"depurador" se entiende?) y una biblioteca de
portabilidad.  En Linux, el compilador es GCC y el debugger es GDB,
así que no busques mucho.  Lo que quizá querrás elegir es un
"front-end" gráfico, pero eso seguro lo tendrá tu IDE.

De la biblioteca, bueno, si vas a programar en C tu única opción,
hasta donde sé, es GTK.  Si vas por C++, yo exploraría gtkmm, Qt y
wxWindows.  Esta última en particular es formidable: la he usado para
desarrollar software "serio" (aplicaciones bancarias, principalmente)
y definitivamente la recomiendo.  De hecho, a mis programadores los
obligo a usarla cuando hay que hacer GUIs.  Es elegante, madura y
razonablemente fácil de entender; y las aplicaciones funcionan
correctamente y se ven "bonitas" en todas las plataformas a las que
quieras portar.  Las nuestras las probamos cotidianamente en Linux,
Solaris y el S.O. cuyo nombre no ha de ser mencionado, y siempre se
ven "profesionales".  Quizá es ese "look nativo" lo que da ese efecto,
no sé.

En fin.  Sobre IDEs...  Pues te recomiendo buscar IDEs con
aptitude/dselect, o a través de http://packages.debian.org/ .  Te paso
el primero que vi:

 http://packages.debian.org/testing/devel/widestudio.html

Parece acercarse mucho a lo que quieres.  Creo que el proyecto
wxWindows también tiene un IDE, echa un ojo en su sitio web.

Nota que, si vas a programar software libre para GNU/Linux y *BSD,
quizá no deberías encariñarte mucho con el IDE.  Piensa que tarde o
temprano querrás (o tus usuarios te pedirán) un sistema de "build" con
base en las "autotools" (autoconf, automake, et al).  De forma que
considera apartar un poco de tiempo para aprender algo de sh, m4 y
make.

Finalmente, considera que una alternativa a programar GUIs es
programar aplicaciones "web".  En muchos casos es más fácil y más
conveniente, y la gama de herramientas que puedes usar es más amplia.

Saluditos.

 -CR



Reply to: