-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpresentacion.tex
398 lines (326 loc) · 19.6 KB
/
presentacion.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
%Autor: miguev
%miguev: 7
\chapter*{Presentación}
\section*{Historia}
Desde el curso académico 2001--2002 la \FMAT~ de la \ULL~ dispone de
sistemas Debian GNU/Linux en las aulas de ordenadores destinadas a
impartir clases prácticas. Estas aulas están destinadas a que los
alumnos realicen sus prácticas académicas, tales como programación
en Pascal, Fortran, C o Java, análisis estadísticos o cálculos
simbólicos. Sin embargo, los alumnos no disponían en su mayoría de los
conocimientos mínimos necesarios para utilizar un equipo bajo sistema
operativo GNU/Linux.
Ante tal panorama, y con el objetivo urgente de proporcionar a
los alumnos la destreza mínima que necesitaban para utilizar los
ordenadores de la facultad con Debian GNU/Linux, {\sc Miguel Ángel
Vilela} (miembro del \GULiC~ y administrador de los sistemas Debian
GNU/Linux de las aulas) propuso paralelamente la realización de un
{\bf\CILA} a {\sc Sergio Alonso} (Vicedecano de Estadística) y a otros
miembros del el \GULiC. En ambas partes la idea tuvo buena aceptación
y en sólo 10 días el \GULiC~ y la Facultad de Matemáticas, con el
patrocinio de IDE System Canarias S.L., organizaron la primera edición
del \CILA.
Tras el éxito del \CILA~ (30 inscritos, 27 asistentes y más de 50
alumnos en lista de espera) se organizó la primera edición de la
{\bf\PILA}, a la que no asistieron tantos alumnos debido (suponemos) a
que la asistencia implicaba traer el ordenador personal. Sin embargo,
el balance final de ambas actividades se consideró muy positivo, por
lo que el \GULiC~ se embarcó en el siguente reto: ampliar el \CILA~
para aumentar el temario (incluyendo la \PILA).
El \CILA~ se ha realizado ya dos años consecutivos en la \FMAT~ y para
los próximos años pretendemos seguir realizándolo, ampliando su radio
de acción a otras facultades de la \ULL. Este libro es una puerta
abierta para que el \CILA sea realizado en otras universidades y
centros docentes.
Parte de este proyecto ha sido reformar los apuntes del \CILA,
inicialmente escritos en {\sc SGML} (con DTD de LinuxDoc), para
traducirlos a {\LaTeX} y así generar este libro, que constituye los
apuntes del curso. Este libro es una publicación de ``contenido
abierto'', lo que significa que está abierto a las aportaciones que
pueda hacer cualquier persona y seguirá evolucionando con el tiempo.
\section*{Objetivos}
El objetivo del \CILA~ y de este libro es el aprendizaje del alumno (o
lector), a ser posible de una forma amena. En adelante trataremos de
tú tanto al alumno como al lector. Esperamos que no te sientas
ofendido.
Este libro está dirigido principalmente a usuarios, con un enfoque
fuertemente académico. Si hace poco que llegaste al maravilloso mundo
de GNU/Linux y necesitas una guía práctica para empezar a trabajar,
este libro puede resultarte de utilidad. Si además eres estudiante y
necesitas hacer tus prácticas en ordenadores con GNU/Linux pero no te
orientas aún, este libro puede ser tu salvación. Si ya tienes
experiencia con GNU/Linux (no eres un novato) no encontrarás muchas
cosas nuevas aquí, aunque tampoco te vendrá mal leerlo.
La finalidad del \CILA~ es que los alumnos adquieran los conocimientos
necesarios para utilizar los ordenadores con GNU/Linux en sus
prácticas académicas, y tal vez se animen a instalar GNU/Linux en sus
propios ordenadores personales. Como se ha mencionado anteriormente,
el \CILA~ consta de unas clases teórico-prácticas, en las que los
alumnos toman apuntes mientras prueban lo que van aprendiendo con un
ordenador delante, y unas jornadas práctico-teóricas en la que cada
alumno es invitado a traer su propio ordenador personal para instalar
GNU/Linux por sí mismo, contando siempre con la ayuda de los
profesores.
Dada la posible variedad de los alumnos, la cantidad de materia que se
desea impartir y las limitaciones de disponibilidad de puestos en las
aulas de informática en cuanto a número y tiempo, el \CILA~ se ha
dividido en varios módulos, todos ellos opcionales.
Las tareas rutinarias de administración y mantenimiento de un equipo
bajo sistema operativo GNU/Linux no se tratan en este libro, entre
otras razones porque suelen depender mucho de la máquina en la que se
practiquen y de las necesitades de su(s) usuario(s). Esta parte del
aprendizaje de GNU/Linux es demasiado práctica para un libro como
éste. Para esto es mejor comprar algún libro de iniciación a Linux que
incluya una distribución de GNU/Linux para instalar. Este tipo de
libros se pueden encontrar en casi cualquier librería técnica en
variedad para todos los gustos, desde pequeñas guías de 10 minutos con
CD de instalación rápida hasta libros gruesos de sabiduría condensada,
elige el que más te guste y reserva grandes ratos en tu agenda.
Uno de los motivos por los que publicamos este libro bajo la licencia
GNU Free Documentation Licence es porque queremos que tenga toda la
divulgación que sus lectores quieran. Este libro no es copyright de
ninguna editorial, sólo de los autores, y damos nuestro permiso para
que este material sea fotocopiado y redistribuido libremente. Nuestro
objetivo es acercar GNU/Linux y sus herramientas a cuantos más alumnos
y usuarios sea posible.
\section*{Contenidos}
Este libro está dividido en módulos atendiendo a la división de
contenidos que hacemos a la hora de impartir las clases, los cuales a
su vez están divididos en temas, cuyos contenidos resumimos a
continuación.
\begin{description}
\item[\chaptername~ \ref{introduccion.tex}: Introducción a GNU/Linux]
~\\ Cuando hablamos de GNU/Linux nos referimos a algo que ha sido
formado por un sistema operativo llamado Linux y una gran cantidad de
software libre proviniente del proyecto GNU. Daremos un repaso
histórico desde los orígenes de Linux y GNU hasta la actualidad.
\item[\chaptername~\ref{comandos.tex}: El intérprete de comandos] ~\\
El primer mejor entorno de trabajo que puedas encuentrar al entrar en
un sistema GNU/Linux es el intérprete de comandos. Aunque cada día es
más frecuente entrar a Linux por las ventanas, no debemos dejar de
lado la enorme libertad que nos da un intérprete de comandos. Y,
aunque no lo parezca, es un entorno sumamente cómodo.
\item[\chaptername~\ref{xwindow.tex}: El entorno X-Window] ~\\ El
entorno favorito de casi todos los usuarios de computadores es el
entorno de ventanas, en el que el ratón y el teclado se suman para dar
al usuario libertad y comodidad. Verás que existe una amplia variedad
de entornos de ventanas, y aprenderás trucos útiles para cada uno de
ellos.
\item[\chaptername~\ref{editores.tex}: Editores: VIM, GNU Emacs, Joe]
~\\ Una de las tareas más frecuentes que tendrás que hacer frente a un
ordenador es escribir en un fichero. Programas, documentos, correos
electrónicos, páginas web, tal vez configuraciones de programas. Este
tema te enseñará el manejo básico de los editores de texto más usuales
en GNU/Linux.
% Existen multitud de editores de texto, pero en este tema aprenderás a
% manejar los dos más ampliamente utilizados. Luego elige el que más te
% guste y a picar código.
\item[\chaptername~\ref{internet.tex}: Aplicaciones para Internet] ~\\
Hoy en día un ordenador sin conexión a Internet es algo tristemente
aislado. En el caso de GNU/Linux esto se hace más notorio porque es un
sistema que ha nacido y crecido a través de Internet, se puede decir
que está hecho en y para Internet. Un uso básico de las herramientas
para Internet te resultará imprescindible para seguir adelante en tu
aprendizaje sobre GNU/Linux, ya que casi todas las respuestas están en
Internet.
% \item[\chaptername~\ref{aplicaciones.tex}: Aplicaciones diversas] ~\\
% De las miles de aplicaciones interesantes disponibles en GNU/Linux
% haremos un breve repaso de las más destacadas.
\item[\chaptername~\ref{documentacion.tex}: Documentación y ayuda] ~\\
Cuando te sientas perdido con GNU/Linux y sus herramientas tendrás a
tu disposición una amplia ayuda y documentación, aprender a utilizarla
es la clave del éxito como usuario del software libre.
\item[\chaptername~\ref{instalacion.tex}: Instalación de GNU/Linux]
~\\ ¿Te animas a instalar GNU/Linux en tu ordenador? ¡Felicidades!
Ahora bien, antes de atacar la tarea hay unas cuantas cosas que debes
saber para que te salga bien.
\item[\chaptername~\ref{administracion.tex}: Administración básica]
~\\ Cuando por fín te animes a instalar GNU/Linux en tu propio
ordenador tendrás que enfrentarte con la tarea más dura: administrar
tu propio sistema, para mantenerlo funcionando. Hay muchos libros
dedicados exclusivamente a esta materia, así que en este tema sólo
aprenderás lo fundamental para mantener un ordenador personal sin
grandes pretensiones. Para aprender más necesitarás dedicarle tiempo y
leer bastante.
\item[\chaptername~\ref{bash.tex}: Bash] ~\\ Cuando quieras
automatizar algo sencillo puede que sea suficiente un script, que no
tendrás que compilar. Bash es el intérprete de comandos más extendido
en GNU/Linux, y tiene su propio lenguaje de programación.
% \item[\chaptername~\ref{gimp.tex}: The GIMP] ~\\ Fotografías, logos,
% animaciones, composiciones, montajes y mucho más está a tu alcance
% gracias a The GIMP. Este tema te dará la introducción necesaria para
% habituarte al entorno de trabajo de The GIMP y aprovechar sus
% capacidades.
% \item[\chaptername~\ref{graficos.tex}: Edición de gráficos] ~\\
% Esquemas, ilustraciones, fotografías, logos, animaciones,
% composiciones, montajes... todo esto puede hacerse también en
% GNU/Linux utilizando software libre. En este tema verás un par de
% aplicaciones para ello.
\item[\chaptername~\ref{staroffice.tex}: StarOffice] ~\\ Si piensas
que no podrás sobrevivir en GNU/Linux porque no tiene Word o
WordPerfect estás equivocado. StarOffice es una suite ofimática de
calidad, potente, que responderás a tus necesidades. Además, como es
libre, está disponible en varias plataformas además de GNU/Linux.
\item[\chaptername~\ref{html.tex}: El lenguaje HTML] ~\\ Todos los
ficheros que aprenderás a manejar en este curso están en formatos
libres, de modo que cualquier otra persona puede utilizarlos (al menos
leerlos) sin necesidad de comprar ni piratear programas especiales.
Con el aprendizaje del lenguaje HTML estarás en condiciones de
escribir documentos que cualquier persona podrá leer directamente en
la web con su navegador.
\item[\chaptername~\ref{lyx.tex}: \LyX] ~\\ Para escribir rápidamente
y que quede bien presentado nada mejor que concentrarte en el
contenido de lo que escribes y dejar al ordenador que se encarge del
trabajo de formato y composición del documento. Lyx está hecho
exactamente para eso.
\item[\chaptername~\ref{latex.tex}: \LaTeX] ~\\ \TeX y \LaTeX~ son los
lenguajes más potentes que encontrarás para componer documentos de
calidad profesional, aunque como era de esperar requiere un cierto
esfuerzo de aprendizaje. Sin duda vale la pena, valga como ejemplo el
este libro escrito íntegramente en \LaTeX.
\item[\chaptername~\ref{octave.tex}: GNU Octave] ~\\ Para casi
cualquier científico se hace muy necesaria la computación rápida de
cálculos matemáticos aplicados mediante un lenguaje que permita
programar los cálculos. Octave te dará la solución para los
cálculos que necesites para física, ingeniería, matemáticas y otras
disciplinas.
\item[\chaptername~\ref{gnuplot.tex}: GNUplot] ~\\ La elaboración de
gráficas elaboradas es otra tarea fundamental en el campo de las
ciencias, y GNUplot tiene amplias posibilidades para esto.
\item[\chaptername~\ref{r.tex}: GNU R] ~\\ Otro lenguaje de cálculo y
representación de datos, pero esta vez con capacidades especiales para
cálculos estadísticos.
\item[\chaptername~\ref{yacas.tex}: Yacas] ~\\ Este lenguaje es
diferente, para cálculo simbólico. Esto es especialmente útil en
Matemáticas, donde a veces es necesario manipular las expresiones
matemáticas sin evaluarlas.
\item[\chaptername~\ref{freepascal.tex}: Free Pascal] ~\\ Pascal es un
lenguaje de programación ampliamente utilizado en las asignaturas de
programación de primer año en ingenierías y otras carretas técnicas
como Matemáticas y Física.
\item[\chaptername~\ref{gnufortran.tex}: GNU Fortran] ~\\ {\sf
Fortran} es un lenguaje de programación específico para cálculo
numérico. Aún se utiliza en entornos científicos como centros de
cálculo o facultades de Matemáticas y Física.
\item[\chaptername~\ref{gnuc.tex}: GNU C/C++] ~\\ El lenguaje C es sin
duda ``El'' lenguaje de programación por excelencia. GNU/Linux se ha
construido mayoritariamente sobre este lenguaje, por lo que conviene
saber manejar las herramientas de programación para programar en C.
Además es el lenguaje de programación más ampliamente utilizado en
prácticas académicas de programación.
\item[\chaptername~\ref{gnumake.tex}: GNU Make] ~\\ Cuando un proyecto
crece, sea del tipo que sea, siempre viene bien una herramienta que
automatice las labores de compilación del código. Esto se aplica no
sólo a programas, sino también a libros como éste.
\item[\chaptername~\ref{depuradores.tex}: Depuradores] ~\\ La mayor
parte del tiempo que dedicamos a programar lo pasamos buscando y
corrigiendo errores en el código. Esta tarea te resultará mucho menos
ingrata cuando conozcas el estupendo depurador DDD.
\item[\chaptername~\ref{gprof.tex}: GNU gprof] ~\\ Una herramienta muy
útil a la hora de optimizar tu código puede ser el profiler de GNU,
que te ayudará a encontrar cuellos de botella y otros puntos débiles
de tus programas.
\item[\chaptername~\ref{java.tex}: Java] ~\\ El lenguaje Java es
ampliamente utilizado como lenguaje de programación multiplataforma.
Es útil para aplicaciones y applets en documentos HTML.
\item[\chaptername~\ref{regex.tex}: Expresiones regulares] ~\\ Una de
las mejoras ayudas que encontrarás a la hora de programar son las
expresiones regulares. Éstas te permitirán filtrar texto para editar
tus programas de forma más eficiente, o convertir ficheros con
información mal organizada en tablas de datos de información bien
organizada.
% \item[\chaptername~\ref{php.tex}: PHP] ~\\ es un lenguaje ``Open
% Source'' interpretado de alto nivel, especialmente pensado para
% programación web.
\end{description}
\section*{Convenciones tipográficas}
\label{convenciones_tipograficas}
En la escritura de este libro hemos utilizado algunas convenciones
para facilitar su lectura. Usaremos los diferentes tipos de letra para
fines determinados:
\begin{itemize}
\item {\sf sin adornos}: nombres de programas, paquetes, protocolos,
lenguajes, etc. También para menús y botones.
\item {\tt máquina de escribir}: comandos, código fuente, pulsasiones
y/o combinaciones de teclas; todo aquello que haya que teclear o leer
de la pantalla.
\item {\em itálica}: términos nuevos o que haya que resaltar.
\item {\bf negrita}: elementos de una descripción o aquello que
necesite especial atención.
\item {\sc versalita}: para nombres de personas, organizaciones y
entidades en general.
\end{itemize}
Cuando hagamos referencia a combinaciones de teclas utilizaremos la
siguiente notación:
\begin{itemize}
\item ``{\tt C-}'' indica la tecla {\tt Control}.
\item ``{\tt S-}'' indica la tecla {\tt Shift}.
\item ``{\tt A-}'' indica la tecla {\tt Alt} (a veces llamada {\tt Meta}).
\item ``{\tt F1}'' \dots ``{\tt F1}'' son las teclas de función.
\item ``{\tt ESC}'' indica la tecla de Escape.
\item ``{\tt TAB}'' indica la tecla del tabulardor.
\item ``{\tt Enter}'' indica la tecla del retorno de carro.
\end{itemize}
Además, cuando tengamos que mostrar comandos y/o la salida que éstos
produzcan lo haremos de la siguiente forma:
\begin{verbatim}
$ comando
salida
del
comando
\end{verbatim}
El símbolo del dólar \verb+$+ es lo que comúnmente se denomina el {\em
prompt} del sistema, lo que el intérprete muestra a la espera de
nuestras órdenes. En las distribuciones de GNU/Linux actuales no es
normal que este prompt sea únicamente el símbolo del dólar, sino que
suele contener también el nombre de la máquina, el nombre del usuario,
o el directorio en el que nos encontramos. Estos detalles serán
explicados en el tema ``El intérprete de comandos''.
En los temas referentes a lenguajes de programación, documentación o
cálculo incluiremos algunos ejemplos de código fuente de programas,
scripts o documentos. Estos ejemplos están en el directorio {\tt
ejemplos} del paquete que contiene el código fuente de este libro,
cuya localización en internet te facilitamos en la siguiente sección.
Estos ficheros se utilizan en las clase teórico/prácticas para
aprender el manejo de compiladores y herramientas de cálculo o
documentación.
\newpage
\begin{ejemplo}{ejemplo.txt}{Ejemplo de ejemplo}
Éste es un ejemplo de cómo te mostraremos los ejemplos de código
fuente. Éstos pueden ser programas, scripts o documentos escritos en
diferentes lenguajes como C/C++, Fortran, Pascal, HTML, PHP, \LaTeX,
Octave, GNUplot, R, Yacas, etc. Los ejemplos que aparezcan de este
modo estarán disponibles por separado en sendos ficheros cuyo nombre
se indica en la cabecera del ejemplo. Así te ahorras tener que teclear
los ejemplos a la hora de probar los lenguajes. Cuando necesites
buscar uno de estos ejemplos puedes encontrar su página en el índice
de ejemplos de la página \pageref{IndiceDeEjemplos}.
\end{ejemplo}
\section*{Sobre este documento}
Este libro ha sido escrito gracias a la iniciativa de algunos miembros
y amigos del \GULiC, para el \CILA~ organizado conjuntamente por el
\GULiC~ y la \FMAT~ de la \ULL, en Tenerife (España). Mira en la
página \pageref{Agradecimientos} para saber quiénes participaron en la
elaboración de este libro.
Como indica la nota de copyright, estos apuntes son libremente
distribuibles bajo los términos de la {\sf Licencia de Documentación
Libre de GNU}, lo que a grosso modo significa que se permite su copia,
redistribución y modificación siempre que se nombre a los autores
originales, no se reclame la autoría de trabajo ajeno ni se pierda la
libertad de los contenidos.
En el apéndice de la página \pageref{GFDL} encontrarás una traducción
{\bf no oficial} de la {\sf Licencia de Documentación Libre GNU}.
Para leer la versión original de la {\sf GNU Free Documentation
License} acude a la página oficial del proyecto {\sf GNU}, {\tt
http://www.gnu.org/licenses/fdl.html}
La última versión de estos apuntes se mantendrá en {\tt
http://cila.gulic.org}, tanto su código fuente como las versiones en
PostScript y PDF, además de un paquete con los ejemplos por separado.
Este libro es un proyecto {\sf abierto} y en desarrollo, por eso no
está completo y posiblemente tarde en estarlo (siempre hay algo que
añadir, mejorar, corregir, actualizar, etc.). Si quieres colaborar en
él ponte en contacto con nosostros enviando un correo electrónico a la
la dirección {\tt [email protected]}. Nos gustaría recibir tus
opiniones, correcciones y sugerencias críticas constructivas. Las
críticas destructivas serán redireccionadas, como siempre, a {\tt
/dev/null}