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/>