  Traduccin: 5 marzo 2000.  Lenguajes de programacin Mini-
  COMO.
  Risto S. Varanka mailto:risto.varanka@helsinki.fi
  Traduccin: Antonio lvarez Platero uji01380@uji.infomail.es
  6 enero 2000.

  Una breve comparacin de los principales lenguajes de programacin
  para Linux y de las principales libreras para la creacin de inter
  faces grficas de usuario (GUIs) en Linux.
  ______________________________________________________________________

  ndice general


  1. Introduccin
     1.1 Copyright
     1.2 Licencia
        1.2.1 Requisitos para los documentos modificados.
     1.3 Exencin de Responsabilidad
     1.4 Autor
     1.5 Agradecimientos
     1.6 Enlaces

  2. Lenguajes de programacin
     2.1 Conceptos en la Tabla
     2.2 Lenguajes Principales
     2.3 Programacin del shell
     2.4 Otros Lenguajes
     2.5 Enlaces

  3. Conjuntos de herramientas para la construccin de interfaces grficos (GUI Toolkits)
     3.1 Conceptos en la Tabla
     3.2 Principales conjuntos de herramientas para la creacin de interfaces grficas de usuario.
     3.3 Enlaces


  ______________________________________________________________________

  11..  IInnttrroodduucccciinn

  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 confusin a los
  desarrolladores principiantes. Este documento hace un listado de las
  opciones ms comunes existentes para el desarrollo diario. (Bueno, el
  ms comn y el principal, segn yo lo veo). Mi propsito no es ni el
  de resear los lenguajes ni el de determinar cul es el mejor. Cada
  lenguaje es una herramienta que sirve para determinados trabajos y
  gustos. Puede obtener ms informacin (a menudo conflictiva) con
  facilidad, si pregunta por ah o si mantine los odos alerta. La
  seccin de enlaces en este documento le dar indicaciones para que
  pueda investigar por su cuenta.



  Hay una plyade de lenguajes y libreras de programacin para Linux,
  as que este documento solamente cubre los lenguajes ms comunes y los
  conjuntos de herramientas para la construccin de interfaces grficas
  de usuario del momento. Ntese tambin que, tanto los lenguajes como
  las herramientas para construccin de interfaces de usuario, se vern
  desde el punto de vista de Linux: no se tratarn sus caractersticas
  para otras plataformas.

  Este documento se ha sumado recientemente al LDP (Linux Documentation
  Project: Proyecto de Documentacin 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 estn interesados en programar en Linux. Un signo de
  interrogacin en las tablas indica que se carece de informacin. Si
  puede completarla, por favor, contacte con el autor.

  11..11..  CCooppyyrriigghhtt

  Copyright (c) 2000 Risto Varanka.

  Copyright (c) de la traduccin 2000 Antonio lvarez.

  11..22..  LLiicceenncciiaa

  Los siguientes trminos de licencia son de aplicacin 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 fsico o electrnico,
  siempre que se reproduzca este aviso de licencia en dicha
  reproduccin. Se permite y se anima a su redistribucin comercial. En
  caso de redistribucin, se agradecer la comunicacin de la misma, va
  correo electrnico, a los autores con treinta das de antelacin, para
  darles tiempo a poner al da los documentos.

  11..22..11..  RReeqquuiissiittooss ppaarraa llooss ddooccuummeennttooss mmooddiiffiiccaaddooss..

  Todos los documentos que sean modificados, incluyendo traducciones,
  antologas o documentos parciales, deben cumplir los siguientes
  requisitos:


  1. La versin 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 localizacin del documento original no
     modificado.

  5. El nombre (o nombres) del autor (o autores) originales, no puede
     ser utilizado para afirmar o implicar la aprobacin 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 electrnico de las
     modificaciones antes de su redistribucin, si se da direccin
     electrnica en el documento.

  Como excepcin especial, las antologas de documentos de LDP pueden
  incluir una nica copia de estos trminos de licencia en un lugar
  visible dentro de la antologa 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 propsitos
  de esta seccin.

  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 trminos de
  licencia ms restrictivos que stos, excepto en el caso de requerir a
  los distribuidores que hagan disponible el cdigo fuente del documento
  resultante.

  11..33..  EExxeenncciinn ddee RReessppoonnssaabbiilliiddaadd

  ESTE DOCUMENTO CUBRE UN CAMPO AMPLIO Y EN CONSTANTE CAMBIO. AS PUES,
  LA INFORMACIN QUE CONTIENE PUEDE SER INCORRECTA O ESTAR DESFASADA. EL
  USO QUE SE HAGA DE ESTE DOCUMENTO Y TODA INFORMACIN EN L CONTENIDA,
  QUEDA BAJO SU RESPONSABILIDAD. EL AUTOR (Y EL TRADUCTOR) NO DA NINGN
  TIPO DE GARANTA EXPLCITA O IMPLCITA.

  11..44..  AAuuttoorr

  Se agradece el envo de comentarios al autor en:
  risto.varanka@helsinki.fi <mailto:risto.varanka@helsinki.fi>.

  La pgina del autor se encuentra en:http://www.helsinki.fi/~rvaranka/
  <http://www.helsinki.fi/~rvaranka/>.

  11..55..  AAggrraaddeecciimmiieennttooss

  Quiero expresar mi agradecimiento a todas las personas que han
  remitido sus comentarios sobre temas de lenguajes de programacin.
  Esta informacin me ha proporcionado una mejor visin 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 tambin
  pra Stig Erik Sandoe por sus tiles consejos.

  11..66..  EEnnllaacceess

  Listas exhaustivas de libreras 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 sicolgicos
  del desarrollo del cdigo libre.

  Otros documentos LDP <http://www.linuxdoc.org/> que cubren temas
  generales de programacin incluyen el Reading List HOWTO and the Linux
  Programmer's Guide - se han escrito algunos ms para temas
  especficos.

  22..  LLeenngguuaajjeess ddee pprrooggrraammaacciinn

  22..11..  CCoonncceeppttooss eenn llaa TTaabbllaa



     LLeenngguuaajjee
        Indica el nombre comn del lenguaje.


     PPrriinncciippiiaannttee
        Indica lo apropiado que es el lenguaje para personas con poca
        experiencia en programacin. Un lenguaje que se encuentre
        marcado por un ``s'' debera ser viable como primer lenguaje de
        programacin para un principiante.


     RReennddiimmiieennttoo
        La probable velocidad de ejecucin de sus aplicaciones cuando se
        usen comercialmente. Las prestaciones dependen ms de sus
        habilidades algortmicas de programacin que del propio
        lenguaje.  Empricamente, 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 sera la
        implementacin de un sencillo algoritmo de ordenacin en todos
        ellos y la comparacin posterior de los tiempos de ejecucin.
        Alguien querra ayudarme con sto?



     PPOOOO,, PPrrooggaammaacciinn OOrriieennttaaddaa aa OObbjjeettooss vvss.. oottrrooss ppaarraaddiiggmmaass
        La Programacin Orientada a Objetos es un paradigma de
        programacin importante que est ganando popularidad.  En la
        programacin orientada aobjetos, las estructuras de datos y los
        algoritmos se integran en unidades, a menudo llamadas clases. La
        POO contrasta con la programacin 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
        caractersticas especiales o aadidos 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 programacin lgica (Prolog),
        tambin llamada programacin declarativa, por otro lado, no
        tiene relacin con otros tipos de programacin en un sentido
        similar.


     RRAADD,, RRaappiidd AApppplliiccaattiioonn DDeevveellooppmmeenntt ((DDeessaarrrroolllloo rrppiiddoo ddee
        aplicaciones)" Ms dependientes de las herramientas que se usan
        que del lenguaje propiamente dicho. Hay un COMO de herramientas
        de desarrollo para GUI (Interfaz grfico de susuario), aunque
        est desfasado. Con una buena herramienta grfica se pueden
        realizar RAD. A veces los RAD se basan en la reutilizacin de
        cdigo tambin, por lo que el software libre nos puede
        proporcionar un buen punto de partida.


     EEjjeemmppllooss
        Describe los campos de programacin en los que normalmente se
        usa el lenguaje. Se dan otros tipos de usos, buenos y malos,
        aunque no son tan frecuentes.



     CCoommeennttaarriiooss
        Informacin adicional sobre el lenguaje, como son sus
        capacidades y dialectos.


  22..22..  LLeenngguuaajjeess PPrriinncciippaalleess



  PERL
  Principiantes: S - POO: S
  Ejemplos: Scripts, administracin de sistemas, www
  Comentarios: Potente para la manipulacin de textos y cadenas

  Python
  Principiantes: S - POO: S
  Ejemplos: Scripts, scripts de aplicaciones, www
  Comentarios:

  TCL
  Principiantes: S - POO: No
  Ejemplos: Scripts, administracin 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 matemticas
  Comentarios: Variantes f77 y f90/95

  C
  Principiantes: No  - POO: No
  Ejemplos: Programacin de sistemas, aplicaciones
  Comentarios: Muy popular

  C++
  Principiantes: No  - POO: S
  Examples: Aplicaciones
  Comentarios:



  22..33..  PPrrooggrraammaacciinn ddeell sshheellll

  Los shell son tambin unos entornos de programacin importantes. No
  los cubro aqu porque no domino el tema con la suficiente profundidad
  an. El conocimiento de los shell es importante para quien trabaje con
  Linux regularmente, y ms aun para los administradores de sistemas.
  Hay similitudes entre la programacin del shell y los scripts -a
  menudo consiguen los mismos propsitos y tenemos la oportunidad de
  elegir entre los shell nativos o un lenguaje de scripts. Entre los ms
  populares estn los shell bash, tcsh, csh, ksh y zsh.  Puede obtener
  informacin acerca de su shell con _m_a_n comando, _m_a_n _b_a_s_h por ejemplo.

  22..44..  OOttrrooss LLeenngguuaajjeess

  Otros lenguajes dignos de mencin: AWK, SED, Smalltalk, Eiffel, ADA,
  Prolog, assembler, Objective C, Logo, Pascal (p2c converter)



  22..55..  EEnnllaacceess


    Un sitio de informacin general
     <http://www.tunes.org/Review/Languages.html> sobre lenguajes de
     programacin, mucha informacin 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>

  33..  CCoonnjjuunnttooss ddee hheerrrraammiieennttaass ppaarraa llaa ccoonnssttrruucccciinn ddee iinntteerrffaacceess
  ggrrffiiccooss ((GGUUII TToooollkkiittss))

  33..11..  CCoonncceeppttooss eenn llaa TTaabbllaa



     LLiibbrreerraa//BBiibblliiootteeccaa
        Nombre comn o abreviatura del conjunto de herramientas


     PPrriinncciippiiaanntteess
        Si el conjunto de herramientas es adecuado para un programador
        principiante.


     LLiicceenncciiaa
        Los diferentes tipos de licencias para los distintos conjuntos
        de herramientas grficas tienen una importancia prctica. Las
        licencias de GTK+ y de TK le permiten desarrollar tanto
        aplicaciones de cdigo libre como de cdigo propietario sin
        tener que pagar licencia. La licencia de Motif requera pagar,
        mientras que la licencia de QT requera pagar solamente si se
        escriba cdigo propietario. [N. del R.: actualmente Motif es
        OpenSource y QT tiene licencia GPL, es decir, licencia libre].



     LLeenngguuaajjee
        El lenguaje que con ms frecuencia se usa con el conjunto de
        herramientas.


     VViinnccuullaaddooss
        Otros lenguajes que pueden hacer uso del conjunto de
        herramientas.


     EEjjeemmppllooss
        Aplicaciones que usan el conjunto de herramientas.


     CCoommeennttaarriiooss
        Informacin adicional sobre el conjunto de herramientas.


  33..22..  PPrriinncciippaalleess ccoonnjjuunnttooss ddee hheerrrraammiieennttaass ppaarraa llaa ccrreeaacciinn ddee iinntteerr
  ffaacceess ggrrffiiccaass ddee uussuuaarriioo..


  Librera   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 (a elegir GPL y QPL)   C++        Python, PERL, C, otros?          KDE
  Motif      No             Propietaria y OpenSource     C/C++      Python, otros?                   Netscape, Wordperfect


  33..33..  EEnnllaacceess


    TK <http://www.scriptics.com/>

    GTK+ <http://www.gtk.org/>

    QT <http://www.troll.no/>

    Motif <http://www.metrolink.com/>



