Taller de Herramientas Computacionales
Antonio Carrillo Ledesma y Karla Ivonne GonzÆlez Rosas
Facultad de Ciencias, UNAM
http://academicos.fciencias.unam.mx/antoniocarrillo
Una copia de este trabajo se puede descargar de la pÆgina:
http://132.248.182.159/acl/thc/
http://132.248.182.159/acl/Textos/
Connamiento 2020, Versin 1.01
1El presente trabajo estÆ licenciado bajo un esquema Creative Commons
Atribucin CompartirIgual (CC-BY-SA) 4.0 Internacional. Los textos que compo-
nen el presente trabajo se publican bajo formas de licenciamiento que permiten la
copia, la redistribucin y la realizacin de obras derivadas siempre y cuando Østas
se distribuyan bajo las mismas licencias libres y se cite la fuente. ¡Copia este libro!
... Compartir no es delito.
Taller de Herramientas Computacionales
˝ndice
1 Introduccin
1.2 El Cmputo en las Carreras de Ciencias
1.1 Software Propietario y Libre . . . . . . . . . . . . . . . . . . .
1.1.1 Software Propietario . . . . . . . . . . . . . . . . . . .
1.1.2 Software Libre . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
8
. . . . . . . . . . . . 10
1.2.1 Algunos Cursos que Usan Cmputo . . . . . . . . . . . 13
1.3 Paquetes de Cmputo de Uso Comœn . . . . . . . . . . . . . . 16
1.3.1 Sistemas Operativos
. . . . . . . . . . . . . . . . . . . 19
1.3.2 MÆquinas Virtuales . . . . . . . . . . . . . . . . . . . . 20
1.3.3 Lenguajes de Programacin y Entornos de Desarrollo . 20
1.3.4 Paquetes de CÆlculo NumØrico . . . . . . . . . . . . . . 21
1.3.5 Paquetes de CÆlculo Simblico . . . . . . . . . . . . . . 22
1.3.6 Paquetes Estadsticos . . . . . . . . . . . . . . . . . . . 22
1.3.7 Paquetes OmÆticos
. . . . . . . . . . . . . . . . . . . 23
1.3.8 Otros Programas de Cmputo . . . . . . . . . . . . . . 24
2 Sistemas Operativos
25
2.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2 Mac OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4.1 Sistema de Archivos y Estructura de Directorios . . . . 35
2.4.2 Trabajando con Linux . . . . . . . . . . . . . . . . . . 40
Interprete de rdenes de Consola BASH . . . . . . . . 61
2.4.3
2.4.4 Compresores y Descompresores de Archivos
. . . . . . 70
2.4.5 Copiar Archivos entre Equipos . . . . . . . . . . . . . . 76
2.4.6 Linux «Seguros»
. . . . . . . . . . . . . . . . . . . . . 80
2.4.7 Linux Desde la Nube . . . . . . . . . . . . . . . . . . . 88
2.4.8
Instalar Debian GNU/Linux . . . . . . . . . . . . . . . 92
2.5 Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3 Creacin, Uso y Optimizacin de MÆquinas Virtuales Usando
QEMU/KVM
104
3.1 Tipo de Virtualizacin Soportado por la MÆquina HuØsped . . 107
3.2 Salida GrÆca de la Virtualizacin Usando VNC . . . . . . . . 111
3.3 Usando un Sistema Operativo Live como una MÆquina Virtual 113
[email protected]
1
Antonio Carrillo Ledesma, Et alii
Taller de Herramientas Computacionales
3.4 Usando un Archivo ISO como una MÆquina Virtual
. . . . . . 114
3.5 Creacin de MÆquinas Virtuales . . . . . . . . . . . . . . . . . 114
3.6 Uso de Virtualizacin Dentro de Otra Virtualizacin . . . . . . 118
3.7 Manipulacin del Estado de la MÆquina Virtual
. . . . . . . . 119
3.8 Optimizacin de ImÆgenes . . . . . . . . . . . . . . . . . . . . 119
3.8.1 Trabajar con una Imagen Virtual sin que se Altere
. . 120
3.8.2 Aumento de Desempeæo . . . . . . . . . . . . . . . . . 120
3.9 Uso de MÆquinas Virtuales de VirtualBox en KVM/QEMU . . 124
3.10 Conversin de MÆquinas Virtuales a KVM/QEMU . . . . . . 125
3.11 Comunicacin de las MÆquinas Virtuales con el Sistema An-
trin e Internet
. . . . . . . . . . . . . . . . . . . . . . . . . 129
3.12 Signicado de las Banderas de /proc/cpuinfo . . . . . . . . . . 133
4 Lenguajes de Programacin y Entornos de Desarrollo
139
4.1 Conceptos Transversales . . . . . . . . . . . . . . . . . . . . . 154
4.2 Algo de Programacin . . . . . . . . . . . . . . . . . . . . . . 160
4.3 Introduccin a los Paradigmas de Programacin . . . . . . . . 172
4.4 Errores de Redondeo y de AritmØtica en la Programacin
. . 181
4.5 Lenguajes y Entornos de Desarrollo . . . . . . . . . . . . . . . 192
4.6 Documentacin del Cdigo Fuente . . . . . . . . . . . . . . . . 202
4.6.1 Documentar en C, C++ y Java . . . . . . . . . . . . . 203
4.6.2 Documentar en Python . . . . . . . . . . . . . . . . . . 212
4.7 Herramientas de Programacin . . . . . . . . . . . . . . . . . 216
4.8 Programando Desde la Nube . . . . . . . . . . . . . . . . . . . 231
5 Programacin Orientada a Objetos
235
5.1 Herencia y Composicin . . . . . . . . . . . . . . . . . . . . . 242
5.2 Clase Abstracta . . . . . . . . . . . . . . . . . . . . . . . . . . 255
5.3 Polimorsmo y Programacin GenØrica . . . . . . . . . . . . . 260
5.4 Ejemplo de Altas, Bajas y Cambios en Java . . . . . . . . . . 265
5.5 Ejemplo de Altas, Bajas y Cambios en Python . . . . . . . . . 278
5.6 Excepciones en Java . . . . . . . . . . . . . . . . . . . . . . . 280
5.7 Excepciones en Python*** . . . . . . . . . . . . . . . . . . . . 288
6 Paquetes de CÆlculo NumØrico
289
6.1 CÆlculo NumØrico con Octave . . . . . . . . . . . . . . . . . . 292
6.2 Trabajando con Octave . . . . . . . . . . . . . . . . . . . . . . 293
6.3 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
[email protected]
2
Antonio Carrillo Ledesma, Et alii
Taller de Herramientas Computacionales
303
7 Paquetes de CÆlculo Simblico
7.1 CÆlculo Simblico con Maxima
. . . . . . . . . . . . . . . . . 305
7.2 Trabajando con Maxima . . . . . . . . . . . . . . . . . . . . . 307
7.3 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
8 Paquetes Estadsticos
314
8.1 CÆlculo Estadstico con R . . . . . . . . . . . . . . . . . . . . 316
8.2 Trabajando con R . . . . . . . . . . . . . . . . . . . . . . . . . 317
8.2.1 R y Python . . . . . . . . . . . . . . . . . . . . . . . . 321
8.3 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
9 El Cmputo en Paralelo
323
9.1 Arquitecturas de Software y Hardware . . . . . . . . . . . . . 323
9.1.1 Clasicacin de Flynn . . . . . . . . . . . . . . . . . . 323
9.2 Categoras de Computadoras Paralelas . . . . . . . . . . . . . 327
9.2.1 Equipo Paralelo de Memoria Compartida . . . . . . . . 327
9.2.2 Equipo Paralelo de Memoria Distribuida . . . . . . . . 330
9.2.3 Equipo Paralelo de Memoria Compartida-Distribuida . 331
9.2.4 Cmputo Paralelo en Multihilos . . . . . . . . . . . . . 335
9.2.5 Cmputo Paralelo en CUDA . . . . . . . . . . . . . . . 336
9.3 Escalabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
9.4 MØtricas de Desempeæo . . . . . . . . . . . . . . . . . . . . . . 345
9.5 Programacin de Cmputo de Alto Rendimiento . . . . . . . . 349
9.5.1 Programando con OpenMP para Memoria Compartida 351
9.5.2 Programando con MPI para Memoria Distribuida . . . 355
9.5.3 Esquema de Paralelizacin Maestro-Esclavo . . . . . . 360
9.5.4 Opciones de Paralelizacin Hbridas . . . . . . . . . . . 362
10 Paquetes OmÆticos
364
10.1 Hojas de CÆlculo . . . . . . . . . . . . . . . . . . . . . . . . . 365
10.2 Bases de Datos
. . . . . . . . . . . . . . . . . . . . . . . . . . 367
10.3 Herramientas de Presentacin y Multimedia . . . . . . . . . . 369
10.4 Procesamiento de ImÆgenes
. . . . . . . . . . . . . . . . . . . 370
10.5 Procesamiento de Textos . . . . . . . . . . . . . . . . . . . . . 371
10.6 Trabajando con LaTeX . . . . . . . . . . . . . . . . . . . . . . 373
10.7 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
[email protected]
3
Antonio Carrillo Ledesma, Et alii
Taller de Herramientas Computacionales
11 Otros Programas de Cmputo
393
11.1 Otros Programas MatemÆticos . . . . . . . . . . . . . . . . . . 393
11.2 Programas de Visualizacin y Gracacin . . . . . . . . . . . . 395
11.3 Navegadores Web . . . . . . . . . . . . . . . . . . . . . . . . . 396
11.4 Compresores y Descompresores de Archivos
. . . . . . . . . . 397
11.5 Virtualizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
11.6 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
12 Ejemplitos
400
12.1 Sistemas DinÆmicos Discretos . . . . . . . . . . . . . . . . . . 403
12.2 Fractales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
12.3 Derivadas
12.4 Integrales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
12.5 Matrices y Vectores . . . . . . . . . . . . . . . . . . . . . . . . 427
12.6 Resolucin de Sistemas Lineales . . . . . . . . . . . . . . . . . 435
12.7 Ecuaciones Diferenciales Ordinarias . . . . . . . . . . . . . . . 457
12.8 Ecuaciones Diferenciales Parciales . . . . . . . . . . . . . . . . 462
13 Consideraciones y Comentarios Finales
468
13.1 Integracin del Cmputo en las Carreras de Ciencias
. . . . . 469
13.2 Ventajas, Desventajas y Carencias del Software Libre . . . . . 470
13.3 Comentarios Finales
. . . . . . . . . . . . . . . . . . . . . . . 471
14 ApØndice A: El Cmputo en Instituciones Educativas
474
15 ApØndice B: Software Libre y Propietario
478
15.1 Software Libre . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
. . .
Comentarios de: Taller de Herramientas Computacionales (0)
No hay comentarios