% Linux Installation and Getting Started    -*- TeX -*-
% programming.tex
% Copyright (c) 1992-1994 by Matt Welsh <mdw@sunsite.unc.edu>
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by the 
% copyright for the entire document, in the file "copyright.tex".

% Traduccion realizada por Eduardo Lluna Gil. Envie sus comentarios a:
%            Eduardo Lluna Gil, 2:346/207.8 (FidoNet)
%            elluna@aii.upv.es (InterNet)
% $Log: programming.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:11  rcamus
% Primera beta publica
%
%

\subsection{Lenguajes de programaci\'on y utilidades}

Linux proporciona un completo entorno de programaci\'on UNIX, incluyendo
todas las librer\'{\i}as estandard, herramientas de programaci\'on, compiladores,
depuradores y todo aquello que esperar\'{\i}as encontrar en otro sistema UNIX.
\index{programaci\'on|(}
En el mundo del desarrollo de programas UNIX, las aplicaciones y sistemas
suelen ser programados en C \'o C++. El compilador estandard de C
y C++ para Linux es el GNU {\tt gcc}, el cual es un avanzado y moderno
compilador que permite multitud de opciones. Es tambi\'en capaz de compilar
C++ (incluyendo las caracter\'{\i}sticas de AT\&T 3.0) as\'{\i} como en
Objetive-C y otros dialectos de C orientados a objetos.

Adem\'as de C y C++ han sido llevados a Linux muchos otros lenguajes de
programaci\'on tanto interpretados como compilados, como Smalltalk, FORTRAN,
Pascal, LISP, Scheme, Ada (si es tan masoquista como para programar en
Ada, no le detendremos). Adem\'as hay disponibles varios ensambladores para
escribir c\'odigo del 80386 en modo protegido. Los lenguajes favoritos de UNIX 
como Perl (el lenguaje de guiones para terminar con todos los lenguajes de
guiones) y Tcl/Tk (un procesador de \'ordenes al estilo del int\'erprete de
comandos incluyendo soporte para desarrollar aplicaciones simples para
X~Window).
\index{programaci\'on!lenguajes}

El depurador avanzado {\tt gdb} tambi\'en ha sido llevado a Linux.  
Permite
\index{gdb@{\tt gdb}}
\index{programaci\'on!utilidades}
examinar los programas para localizar errores, o examinar la causa de un
``cuelgue'' usando un volcado del sistema (core dump). {\tt gprof} utilidad
de perfilado que permite obtener estad\'{\i}sticas de prestaciones
\index{gprof@{\tt gprof}}
de sus programas, permitiendo saber en que parte de su programa se va la
mayor parte del tiempo de ejecuci\'on. El editor Emacs proporciona un
entorno interactivo de edici\'on y compilaci\'on para varios lenguajes de
programaci\'on. Otras herramientas incluyen GNU {\tt make} e {\tt imake},
usados para dirigir el proceso de compilaci\'on de aplicaciones grandes \'o
RCS, sistema de control de revisiones.

Linux dispone de librer\'{\i}as compartidas enlazadas din\'amicamente, lo que
permite a los ejecutables ser mucho menores al enlazar el c\'odigo de las
librer\'{\i}as en tiempo de ejecuci\'on. Estas librer\'{\i}as DLL (Dinamically 
Linked Library) tambi\'en permiten al programador de aplicaciones sustituir
\index{librer\'{\i}as}\index{programaci\'on!librer\'{\i}as}
funciones ya definidas con su propio c\'odigo. Por ejemplo, si un
programador desea escribir su propia versi\'on de la funci\'on de librer\'{\i}a 
{\tt malloc()}, el editor de enlaces usar\'{\i}a la nueva rutina del programador
en lugar de la que se encuentra en las librer\'{\i}as.

Linux es ideal para desarrollar aplicaciones UNIX, proporciona un moderno
\index{programaci\'on!UNIX}
entorno de programaci\'on con todos los detalles y funcionalidad necesarios. 
Se soportan varios estandards como POSIX.1, permitiendo a los programas
escritos para Linux ser f\'acilmente llevados a otros sistemas. Los
programadores profesionales de UNIX y administradores de sistemas pueden usar
Linux para desarrollar programas en casa y luego transferir los programas a
los sistemas UNIX del trabajo. Esto no solo puede ahorrar una gran cantidad
de tiempo y dinero, sino que tambi\'en le permitir\'a trabajar con la comodidad
de su propia casa.\footnote{El autor usa su sistema Linux para desarrollar y
probar aplicaciones X~Window en casa, que pueden ser directamente
compiladas en estaciones de trabajo en cualquier parte.} Los estudiantes de
inform\'atica pueden usar Linux para aprender la programaci\'on en UNIX y
explorar otros aspectos del sistema como la arquitectura del n\'ucleo.

Con Linux, no solo tienes acceso a un conjunto completo de librer\'{\i}as y
utilidades de programaci\'on, tambi\'en tiene acceso al c\'odigo fuente
completo del n\'ucleo y las librer\'{\i}as.

\index{programaci\'on|)}
