mailto:risto.varanka@helsinki.fi
uji01380@uji.infomail.es
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.
Copyright (c) 2000 Risto Varanka.
Copyright (c) de la traducción 2000 Antonio Álvarez.
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.
Todos los documentos que sean modificados, incluyendo traducciones, antologías o documentos parciales, deben cumplir los siguientes requisitos:
Ademas se pide que:
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.
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.
Se agradece el envío de comentarios al autor en: risto.varanka@helsinki.fi.
La página del autor se encuentra en: http://www.helsinki.fi/~rvaranka/.
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.
Listas exhaustivas de librerías y herramientas de desarrollo en Linux:
El Hacker FAQ 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 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.
Indica el nombre común del lenguaje.
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.
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?
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.
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.
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.
Información adicional sobre el lenguaje, como son sus capacidades y dialectos.
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:
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 man comando, man bash por ejemplo.
Otros lenguajes dignos de mención: AWK, SED, Smalltalk, Eiffel, ADA, Prolog, assembler, Objective C, Logo, Pascal (p2c converter)
Nombre común o abreviatura del conjunto de herramientas
Si el conjunto de herramientas es adecuado para un programador principiante.
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 requería pagar, mientras que la licencia de QT requería pagar solamente si se escribía código propietario. [N. del R.: actualmente Motif es OpenSource y QT tiene licencia GPL, es decir, licencia libre].
El lenguaje que con más frecuencia se usa con el conjunto de herramientas.
Otros lenguajes que pueden hacer uso del conjunto de herramientas.
Aplicaciones que usan el conjunto de herramientas.
Información adicional sobre el conjunto de herramientas.
Librería | Principiante | Licencia | Lenguaje | Vinculados | Ejemplos | Comentarios |
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 | |