Traducci�n: 5 marzo 2000. Lenguajes de programaci�n Mini-
COMO.
Risto S. Varanka mailto:
[email protected]
Traducci�n: Antonio �lvarez Platero
[email protected]
6 enero 2000.
Una breve comparaci�n de los principales lenguajes de programaci�n
para Linux y de las principales librer�as para la creaci�n de inter�
faces gr�ficas de usuario (GUIs) en Linux.
______________________________________________________________________
�ndice general
1. Introducci�n
1.1 Copyright
1.2 Licencia
1.2.1 Requisitos para los documentos modificados.
1.3 Exenci�n de Responsabilidad
1.4 Autor
1.5 Agradecimientos
1.6 Enlaces
2. Lenguajes de programaci�n
2.1 Conceptos en la Tabla
2.2 Lenguajes Principales
2.3 Programaci�n del shell
2.4 Otros Lenguajes
2.5 Enlaces
3. Conjuntos de herramientas para la construcci�n de interfaces gr�ficos (GUI Toolkits)
3.1 Conceptos en la Tabla
3.2 Principales conjuntos de herramientas para la creaci�n de interfaces gr�ficas de usuario.
3.3 Enlaces
______________________________________________________________________
11.. IInnttrroodduuccccii��nn
Linux es un sistema operativo fascinante porque permite a cualquier
usuario participar en su desarrollo. La variedad de lenguajes
disponibles, sin embargo, puede llevar a la confusi�n a los
desarrolladores principiantes. Este documento hace un listado de las
opciones m�s comunes existentes para el desarrollo diario. (Bueno, el
m�s com�n y el principal, seg�n yo lo veo). Mi prop�sito no es ni el
de rese�ar los lenguajes ni el de determinar cu�l es el mejor. Cada
lenguaje es una herramienta que sirve para determinados trabajos y
gustos. Puede obtener m�s informaci�n (a menudo conflictiva) con
facilidad, si pregunta por ah� o si mantine los o�dos alerta. La
secci�n de enlaces en este documento le dar� indicaciones para que
pueda investigar por su cuenta.
Hay una pl�yade de lenguajes y librer�as de programaci�n para Linux,
as� que este documento solamente cubre los lenguajes m�s comunes y los
conjuntos de herramientas para la construcci�n de interfaces gr�ficas
de usuario del momento. N�tese tambi�n que, tanto los lenguajes como
las herramientas para construcci�n de interfaces de usuario, se ver�n
desde el punto de vista de Linux: no se tratar�n sus caracter�sticas
para otras plataformas.
Este documento se ha sumado recientemente al LDP (Linux Documentation
Project: Proyecto de Documentaci�n de Linux), de modo que no ha habido
muchas oportunidades de recibir comentarios por parte de la comunidad.
Sin embargo, se saca a la luz con la esperanza de que pueda ser �til a
los que est�n interesados en programar en Linux. Un signo de
interrogaci�n en las tablas indica que se carece de informaci�n. Si
puede completarla, por favor, contacte con el autor.
11..11.. CCooppyyrriigghhtt
Copyright (c) 2000 Risto Varanka.
Copyright (c) de la traducci�n 2000 Antonio �lvarez.
11..22.. LLiicceenncciiaa
Los siguientes t�rminos de licencia son de aplicaci�n a todos los
documentos de LDP, a menos que as� se especifique en el documento. Los
documentos de LDP pueden ser reproducidos y redistribuidos por
completo o parcialmente, en cualquier medio f�sico o electr�nico,
siempre que se reproduzca este aviso de licencia en dicha
reproducci�n. Se permite y se anima a su redistribuci�n comercial. En
caso de redistribuci�n, se agradecer� la comunicaci�n de la misma, v�a
correo electr�nico, a los autores con treinta d�as de antelaci�n, para
darles tiempo a poner al d�a los documentos.
11..22..11.. RReeqquuiissiittooss ppaarraa llooss ddooccuummeennttooss mmooddiiffiiccaaddooss..
Todos los documentos que sean modificados, incluyendo traducciones,
antolog�as o documentos parciales, deben cumplir los siguientes
requisitos:
1. La versi�n modificada debe estar etiquetada como tal.
2. La persona que haga las modificaciones debe identificarse.
3. Se debe conservar el reconocimiento al autor original.
4. Se debe identificar la localizaci�n del documento original no
modificado.
5. El nombre (o nombres) del autor (o autores) originales, no puede
ser utilizado para afirmar o implicar la aprobaci�n del documento
resultante sin el permiso del (o de los) autor (o autores)
originales.
Ademas se pide que:
1. Las modificaciones (incluidas las supresiones) sean comunicadas.
2. El autor sea notificado por correo electr�nico de las
modificaciones antes de su redistribuci�n, si se da direcci�n
electr�nica en el documento.
Como excepci�n especial, las antolog�as de documentos de LDP pueden
incluir una �nica copia de estos t�rminos de licencia en un lugar
visible dentro de la antolog�a y reemplazar otras copias de esta
licencia haciendo refrencia a esta �nica copia de la licencia sin que,
por ello, el documento sea considerado modificado para los prop�sitos
de esta secci�n.
El hecho de agregar documentos de LDP a otros documentos o programas
en el mismo medio no conlleva a que esta licencia se aplique a esos
otros trabajos
Todas las traducciones, documentos derivados, o documentos modificados
que incorporen cualquier documento LDP no pueden tener t�rminos de
licencia m�s restrictivos que �stos, excepto en el caso de requerir a
los distribuidores que hagan disponible el c�digo fuente del documento
resultante.
11..33.. EExxeennccii��nn ddee RReessppoonnssaabbiilliiddaadd
ESTE DOCUMENTO CUBRE UN CAMPO AMPLIO Y EN CONSTANTE CAMBIO. AS� PUES,
LA INFORMACI�N QUE CONTIENE PUEDE SER INCORRECTA O ESTAR DESFASADA. EL
USO QUE SE HAGA DE ESTE DOCUMENTO Y TODA INFORMACI�N EN �L CONTENIDA,
QUEDA BAJO SU RESPONSABILIDAD. EL AUTOR (Y EL TRADUCTOR) NO DA NING�N
TIPO DE GARANT�A EXPL�CITA O IMPL�CITA.
11..44.. AAuuttoorr
Se agradece el env�o de comentarios al autor en:
[email protected] <mailto:
[email protected]>.
La p�gina del autor se encuentra en:
http://www.helsinki.fi/~rvaranka/
<
http://www.helsinki.fi/~rvaranka/>.
11..55.. AAggrraaddeecciimmiieennttooss
Quiero expresar mi agradecimiento a todas las personas que han
remitido sus comentarios sobre temas de lenguajes de programaci�n.
Esta informaci�n me ha proporcionado una mejor visi�n de los
diferentes lenguajes, y espero que en el futuro ayuden a este mini-
COMO a madurar con el tiempo. Quisiera, sobre todo, agradecer a las
personas de IRCnet channel #linux: Morphy, Bluesmurf, Vadim, Zonk^,
Rikkus y otros cuyos nombres haya olvidado. Agradecimientos tambi�n
pra Stig Erik Sandoe por sus �tiles consejos.
11..66.. EEnnllaacceess
Listas exhaustivas de librer�as y herramientas de desarrollo en Linux:
� Freshmeat <
http://www.freshmeat.net/appindex/development/>
� Linux Development Tools <
http://www.hotfeet.ch/~gemi/LDT/>
� linuxprogramming.com <
http://www.linuxprogramming.com/>
El Hacker FAQ <
http://www.tuxedo.org/~esr/faqs/hacker-howto.html> de
Eric S. Raymond es otro texto interesante para los desarrolladores
principiantes en Linux. Se centra an aspectos culturales y sicol�gicos
del desarrollo del c�digo libre.
Otros documentos LDP <
http://www.linuxdoc.org/> que cubren temas
generales de programaci�n incluyen el Reading List HOWTO and the Linux
Programmer's Guide - se han escrito algunos m�s para temas
espec�ficos.
22.. LLeenngguuaajjeess ddee pprrooggrraammaaccii��nn
22..11.. CCoonncceeppttooss eenn llaa TTaabbllaa
LLeenngguuaajjee
Indica el nombre com�n del lenguaje.
PPrriinncciippiiaannttee
Indica lo apropiado que es el lenguaje para personas con poca
experiencia en programaci�n. Un lenguaje que se encuentre
marcado por un ``s�'' deber�a ser viable como primer lenguaje de
programaci�n para un principiante.
RReennddiimmiieennttoo
La probable velocidad de ejecuci�n de sus aplicaciones cuando se
usen comercialmente. Las prestaciones dependen m�s de sus
habilidades algor�tmicas de programaci�n que del propio
lenguaje. Emp�ricamente, C, C++ y Fortran son necesarios a
veces porque pueden dar mejores prestaciones que otros lenguajes
-otras veces pueden ser pesados para el proposito original. (Una
idea para las pruebas de rendimiento de los lenguajes ser�a la
implementaci�n de un sencillo algoritmo de ordenaci�n en todos
ellos y la comparaci�n posterior de los tiempos de ejecuci�n.
�Alguien querr�a ayudarme con �sto?
PPOOOO,, PPrrooggaammaaccii��nn OOrriieennttaaddaa aa OObbjjeettooss vvss.. oottrrooss ppaarraaddiiggmmaass
La Programaci�n Orientada a Objetos es un paradigma de
programaci�n importante que est� ganando popularidad. En la
programaci�n orientada aobjetos, las estructuras de datos y los
algoritmos se integran en unidades, a menudo llamadas clases. La
POO contrasta con la programaci�n procedimental (que usa
algoritmos y estructuras de datos separados). No depende
estrictamente del lenguaje: se puede hacer POO con lenguajes no
clasificados como tales (por ejemplo C), y se puede programar en
estilo procedimental con lenguajes clasificados como Orientados
a Objetos. He clasificado como de POO a lenguajes que tienen
caracter�sticas especiales o a�adidos que facilitan la POO. Los
lenguajes funcionales (LISP, por ejemplo) son de una clase un
poco diferente -entre otras cosas, los lenguajes funcionales son
un superconjunto de POO. La programaci�n l�gica (Prolog),
tambi�n llamada programaci�n declarativa, por otro lado, no
tiene relaci�n con otros tipos de programaci�n en un sentido
similar.
RRAADD,, RRaappiidd AApppplliiccaattiioonn DDeevveellooppmmeenntt ((DDeessaarrrroolllloo rr��ppiiddoo ddee
aplicaciones)" M�s dependientes de las herramientas que se usan
que del lenguaje propiamente dicho. Hay un COMO de herramientas
de desarrollo para GUI (Interfaz gr�fico de susuario), aunque
est� desfasado. Con una buena herramienta gr�fica se pueden
realizar RAD. A veces los RAD se basan en la reutilizaci�n de
c�digo tambi�n, por lo que el software libre nos puede
proporcionar un buen punto de partida.
EEjjeemmppllooss
Describe los campos de programaci�n en los que normalmente se
usa el lenguaje. Se dan otros tipos de usos, buenos y malos,
aunque no son tan frecuentes.
CCoommeennttaarriiooss
Informaci�n adicional sobre el lenguaje, como son sus
capacidades y dialectos.
22..22.. LLeenngguuaajjeess PPrriinncciippaalleess
PERL
Principiantes: S� - POO: S�
Ejemplos: Scripts, administraci�n de sistemas, www
Comentarios: Potente para la manipulaci�n de textos y cadenas
Python
Principiantes: S� - POO: S�
Ejemplos: Scripts, scripts de aplicaciones, www
Comentarios:
TCL
Principiantes: S� - POO: No
Ejemplos: Scripts, administraci�n de sistemas, aplicaciones
Comentarios:
PHP
Principiantes: S� - POO: S�
Ejemplos: Www
Comentarios: Popular para las bases de batos basadas en web
Java
Principiantes: S� - POO: S�
Ejemplos: Aplicaciones para plataformas cruzadas, www
Comentarios:
Lisp
Principiantes: S� - POO: Funcional
Ejemplos: Modos de Emacs (para elisp), AI
Comentarios: Variantes Elisp, Clisp y Scheme
Fortran
Principiantes: No - POO: No
Ejemplos: Aplicaciones matem�ticas
Comentarios: Variantes f77 y f90/95
C
Principiantes: No - POO: No
Ejemplos: Programaci�n de sistemas, aplicaciones
Comentarios: Muy popular
C++
Principiantes: No - POO: S�
Examples: Aplicaciones
Comentarios:
22..33.. PPrrooggrraammaaccii��nn ddeell sshheellll
Los shell son tambi�n unos entornos de programaci�n importantes. No
los cubro aqu� porque no domino el tema con la suficiente profundidad
a�n. El conocimiento de los shell es importante para quien trabaje con
Linux regularmente, y m�s aun para los administradores de sistemas.
Hay similitudes entre la programaci�n del shell y los scripts -a
menudo consiguen los mismos prop�sitos y tenemos la oportunidad de
elegir entre los shell nativos o un lenguaje de scripts. Entre los m�s
populares est�n los shell bash, tcsh, csh, ksh y zsh. Puede obtener
informaci�n acerca de su shell con _m_a_n comando, _m_a_n _b_a_s_h por ejemplo.
22..44.. OOttrrooss LLeenngguuaajjeess
Otros lenguajes dignos de menci�n: AWK, SED, Smalltalk, Eiffel, ADA,
Prolog, assembler, Objective C, Logo, Pascal (p2c converter)
22..55.. EEnnllaacceess
� Un sitio de informaci�n general
<
http://www.tunes.org/Review/Languages.html> sobre lenguajes de
programaci�n, mucha informaci�n y opiniones
� TCL <
http://www.scriptics.com/>
� PERL <
http://www.perl.org/>
� Python <
http://www.python.org/>
� PHP <
http://www.php.net>
� Java <
http://www.javasoft.com/>
� clisp <
http://clisp.cons.org/~haible/packages-clisp.html>
33.. CCoonnjjuunnttooss ddee hheerrrraammiieennttaass ppaarraa llaa ccoonnssttrruuccccii��nn ddee iinntteerrffaacceess
ggrr��ffiiccooss ((GGUUII TToooollkkiittss))
33..11.. CCoonncceeppttooss eenn llaa TTaabbllaa
LLiibbrreerr��aa//BBiibblliiootteeccaa
Nombre com�n o abreviatura del conjunto de herramientas
PPrriinncciippiiaanntteess
Si el conjunto de herramientas es adecuado para un programador
principiante.
LLiicceenncciiaa
Los diferentes tipos de licencias para los distintos conjuntos
de herramientas gr�ficas tienen una importancia pr�ctica. Las
licencias de GTK+ y de TK le permiten desarrollar tanto
aplicaciones de c�digo libre como de c�digo propietario sin
tener que pagar licencia. La licencia de Motif requiere pagar,
mientras que la licencia de QT requiere pagar solamente si se
escribe c�digo propietario.
LLeenngguuaajjee
El lenguaje que con m�s frecuencia se usa con el conjunto de
herramientas.
VViinnccuullaaddooss
Otros lenguajes que pueden hacer uso del conjunto de
herramientas.
EEjjeemmppllooss
Aplicaciones que usan el conjunto de herramientas.
CCoommeennttaarriiooss
Informaci�n adicional sobre el conjunto de herramientas.
33..22.. PPrriinncciippaalleess ccoonnjjuunnttooss ddee hheerrrraammiieennttaass ppaarraa llaa ccrreeaaccii��nn ddee iinntteerr��
ffaacceess ggrr��ffiiccaass ddee uussuuaarriioo..
Librer�a Principiante Licencia Lenguaje Vinculados Ejemplos
TK S� Libre TCL PERL, Python, otros make xconfig, TKDesk
GTK+ No Libre (LGPL) C PERL, C++, Python, muchos otros GNOME, Gimp
QT No Libre para c�digo abierto C++ Python, PERL, C, �otros? KDE
Motif No Propietaria C/C++ Python, �otros? Netscape, Wordperfect
33..33.. EEnnllaacceess
� TK <
http://www.scriptics.com/>
� GTK+ <
http://www.gtk.org/>
� QT <
http://www.troll.no/>
� Motif <
http://www.metrolink.com/>