el cómputo en los cursos de la facultad...

269

Upload: others

Post on 14-Aug-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras
Page 2: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad deCiencias, UNAM

Antonio Carrillo Ledesma y Karla Ivonne González RosasFacultad 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/Textos/

Verano 2019, Versión 1.0�1

1El presente trabajo está licenciado bajo un esquema Creative CommonsAtribución CompartirIgual (CC-BY-SA) 4.0 Internacional. Los textos que compo-nen el presente trabajo se publican bajo formas de licenciamiento que permiten lacopia, la redistribución y la realización de obras derivadas siempre y cuando éstasse distribuyan bajo las mismas licencias libres y se cite la fuente. ¡Copia este libro!... Compartir no es delito.

Page 3: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Índice

1 Introducción 51.1 Software Propietario y Libre . . . . . . . . . . . . . . . . . . . 5

1.1.1 Software Propietario . . . . . . . . . . . . . . . . . . . 61.1.2 Software Libre . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 El Cómputo en las Carreras de Ciencias . . . . . . . . . . . . 91.2.1 Algunos Cursos que Usan Cómputo . . . . . . . . . . . 12

1.3 Paquetes de Cómputo de Uso Común . . . . . . . . . . . . . . 151.3.1 Sistemas Operativos . . . . . . . . . . . . . . . . . . . 191.3.2 Paquetes de Cálculo Numérico . . . . . . . . . . . . . . 191.3.3 Paquetes de Cálculo Simbólico . . . . . . . . . . . . . . 201.3.4 Paquetes Estadísticos . . . . . . . . . . . . . . . . . . . 211.3.5 Paquetes O�máticos . . . . . . . . . . . . . . . . . . . 221.3.6 Lenguajes de Programación y Entornos de Desarrollo . 221.3.7 Otros Programas de Cómputo . . . . . . . . . . . . . . 22

2 Paquetes de Cálculo Numérico 242.1 MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.2 Octave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3 FreeMat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.4 Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.5 Julia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.6 Scipy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7 Ventajas, Desventajas y Carencias . . . . . . . . . . . . . . . . 342.8 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3 Paquetes de Cálculo Simbólico 393.1 Mathematica . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.2 Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.3 Maxima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.4 Ventajas, Desventajas y Carencias . . . . . . . . . . . . . . . . 503.5 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4 Paquetes Estadísticos 524.1 SPSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.2 R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.3 SAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

[email protected] 1 Antonio Carrillo Ledesma, Et alii

Page 4: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

4.4 Ventajas, Desventajas y Carencias . . . . . . . . . . . . . . . . 574.5 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5 Paquetes O�máticos 595.1 Hojas de Cálculo . . . . . . . . . . . . . . . . . . . . . . . . . 605.2 Bases de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . 625.3 Herramientas de Presentación y Multimedia . . . . . . . . . . 645.4 Procesamiento de Imágenes . . . . . . . . . . . . . . . . . . . 655.5 Procesamiento de Textos . . . . . . . . . . . . . . . . . . . . . 665.6 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6 Lenguajes de Programación y Entornos de Desarrollo 696.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696.2 C y C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.3 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.4 Herramientas de Programación . . . . . . . . . . . . . . . . . 956.5 Programando Desde la Nube . . . . . . . . . . . . . . . . . . . 100

7 Otros Programas de Cómputo 1037.1 Otros Programas Matemáticos . . . . . . . . . . . . . . . . . . 1037.2 Programas de Visualización y Gra�cación . . . . . . . . . . . . 1047.3 Navegadores Web . . . . . . . . . . . . . . . . . . . . . . . . . 1067.4 Compresores y Descompresores de Archivos . . . . . . . . . . 1077.5 Virtualización . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097.6 Desde la Nube . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

8 Consideraciones y Comentarios Finales 1118.1 Integración del Cómputo en las Carreras de Ciencias . . . . . 1128.2 Ventajas, Desventajas y Carencias del Software Libre . . . . . 1138.3 Comentarios Finales . . . . . . . . . . . . . . . . . . . . . . . 114

9 Apéndice A: Cómputo en Instituciones Educativas 117

10 Apéndice B: Software Libre y Propietario 12110.1 Software Libre . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

10.1.1 Tipos de Licencias . . . . . . . . . . . . . . . . . . . . 12410.2 Software Propietario . . . . . . . . . . . . . . . . . . . . . . . 12610.3 Implicaciones Económico-Políticas . . . . . . . . . . . . . . . . 128

[email protected] 2 Antonio Carrillo Ledesma, Et alii

Page 5: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

11 Apéndice C: Máquinas Virtuales 13211.1 Tipos de Máquinas Virtuales . . . . . . . . . . . . . . . . . . . 13311.2 Técnicas de Virtualización . . . . . . . . . . . . . . . . . . . . 13311.3 ¿Qué Necesito para Crear y Usar una Máquina Virtual? . . . . 13411.4 ¿Cómo Funciona una Máquina Virtual? . . . . . . . . . . . . . 13511.5 Aplicaciones de las Máquinas Virtuales de Sistema . . . . . . . 13911.6 Ventajas y Desventajas . . . . . . . . . . . . . . . . . . . . . . 140

11.6.1 Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . 14111.6.2 Desventajas . . . . . . . . . . . . . . . . . . . . . . . . 14311.6.3 Consideraciones Técnicas y Legales de la Virtualización 144

11.7 Máquinas Virtuales en la Educación, Ciencias e Ingeniería . . 145

12 Apéndice D: Creación, Uso y Optimización de Máquinas Vir-tuales Usando QEMU/KVM 14812.1 Tipo de Virtualización Soportado por la Máquina Huésped . . 15112.2 Salida Grá�ca de la Virtualización Usando VNC . . . . . . . . 15512.3 Usando un Sistema Operativo Live como una Máquina Virtual 15712.4 Usando un Archivo ISO como una Máquina Virtual . . . . . . 15812.5 Creación de Máquinas Virtuales . . . . . . . . . . . . . . . . . 15812.6 Uso de Virtualización Dentro de Otra Virtualización . . . . . . 16212.7 Manipulación del Estado de la Máquina Virtual . . . . . . . . 16312.8 Optimización de Imágenes . . . . . . . . . . . . . . . . . . . . 163

12.8.1 Trabajar con una Imagen Virtual sin que se Altere . . 16412.8.2 Aumento de Desempeño . . . . . . . . . . . . . . . . . 164

12.9 Uso de Máquinas Virtuales de VirtualBox en KVM/QEMU . . 16812.10Conversión de Máquinas Virtuales a KVM/QEMU . . . . . . 16912.11Comunicación de las Máquinas Virtuales con el Sistema An-

�trión e Internet . . . . . . . . . . . . . . . . . . . . . . . . . 17312.12Signi�cado de las Banderas de /proc/cpuinfo . . . . . . . . . . 177

13 Apéndice E:Sistemas Operativos 18313.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18513.2 Mac OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18613.3 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18813.4 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

13.4.1 Sistema de Archivos y Estructura de Directorios . . . . 19313.4.2 Trabajando con Linux . . . . . . . . . . . . . . . . . . 19813.4.3 Interprete de Órdenes de Consola BASH . . . . . . . . 219

[email protected] 3 Antonio Carrillo Ledesma, Et alii

Page 6: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.4 Compresores y Descompresores de Archivos . . . . . . 22713.4.5 Copiar Archivos entre Equipos . . . . . . . . . . . . . . 23313.4.6 Linux «Seguros» . . . . . . . . . . . . . . . . . . . . . 23713.4.7 Linux Desde la Nube . . . . . . . . . . . . . . . . . . . 24513.4.8 Instalar Debian GNU/Linux . . . . . . . . . . . . . . . 249

13.5 Otros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

14 Bibliografía 261

[email protected] 4 Antonio Carrillo Ledesma, Et alii

Page 7: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

1 Introducción

La Facultad de Ciencias de la Universidad Nacional Autónoma de México esuna institución de educación superior que tiene comomisión formar cientí�cosen las áreas de biología, física y matemáticas; realizar investigación y sudifusión; hacer la divulgación que permita elevar sustancialmente la culturacientí�ca del país; y propiciar la vinculación con los sectores de la sociedad.El Departamento de Matemáticas de la Facultad de Ciencias atiende a las

carreras de Actuaría, Ciencias de la Computación, Matemáticas, Matemáti-cas Aplicadas y los cursos de Matemáticas de las demás carreras de la Fa-cultad (véase [1]), preparando alumnos que estudian, plantean, formulan yaplican modelos de contenido matemático, con el �n de proveer informaciónpara la planeación, previsión y la toma de decisiones, para resolver problemasEconómicos, Sociales y de Ciencias e Ingenierías.Por lo anterior, un eje fundamental de desarrollo, es el que se re�ere a la

formación en cómputo. Ante los retos que el vertiginoso y dinámico cambioenfrenta el mundo global en que vivimos, ante las exigencias de la sociedadde la información se requiere el manejo de las Tecnologías de la Informacióny de la Comunicación (TIC) por ello, el modelo educativo de cualquier ca-rrera universitaria y en particular las carreras en la Facultad de Ciencias dela UNAM, tiene la necesidad imperiosa de atender una formación computa-cional como parte integral de una formación omnilateral de los educandos;por ello, la Facultad de Ciencias cuenta, para lograr este objetivo, con asig-naturas que hacen uso de Laboratorios y Talleres de cómputo para ponerseal día en el manejo de esta importante herramienta. Los Laboratorios yTalleres de cómputo de los Edi�cios Tlahuizcalpan, Yelizcalli, Amoxcalli yen el Nuevo Edi�cio cuentan con el equipo y programas de cómputo quepermiten estar a la vanguardia y que facilitan el trabajo académico en lasmaterias que cursan los estudiantes.

1.1 Software Propietario y Libre

Con el constante aumento de la comercialización de las computadoras y surelativo bajo costo, las computadoras se han convertido en un objeto om-nipresente, ya que estas se encuentran en las actividades cotidianas de mi-llones de usuarios, en formas tan diversas como teléfonos celulares, tabletas,computadoras portátiles y de escritorio, etc.Las computadoras por si solas no resuelven los problemas para los que

[email protected] 5 Antonio Carrillo Ledesma, Et alii

Page 8: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

los usuarios las compran. El Software � Sistema operativo y los programasde aplicaciones� son los que realmente generan las soluciones al interactuaruno o más paquetes informáticos con los datos del usuario. También, escomún que al comprar una computadora, en el costo total, se integre el delsistema operativo, aplicaciones o�máticas y de antivirus, sean estos usadospor el usuario o no; y en la mayoría de los casos no es posible solicitar queno sean incluidos en el costo de la computadora.Por otro lado, el Software comercial suele quedar obsoleto muy rápido, ya

que constantemente se le agregan nuevas funcionalidades al mismo y estas engeneral son vendidas como versiones independientes de la adquirida original-mente. Esto obliga al usuario � si quiere hacer uso de ellas� a comprar lasnuevas versiones del Software para satisfacer sus crecientes necesidades infor-máticas. Por lo anterior y dada la creciente complejidad de los paquetes decómputo y el alto costo de desarrollo de aplicaciones innovadoras, en muchoscasos, el costo total del Software que comúnmente los usuarios instalan � yque no necesariamente usan las capacidades avanzadas del programa, por lascuales el Software tiene un alto costo comercial� en su computadora, sueleser más caro que el propio equipo en el que se ejecutan.

1.1.1 Software Propietario

En entornos comerciales, es posible por parte de la empresa, adquirir y man-tener actualizado el Software necesario para sus actividades comerciales, puesel costo del mismo se traslada al consumidor �nal del bien o servicio que laempresa proporcione. En entornos educativos, de instituciones sin �nes lu-crativos e incluso, el sector gubernamental, no se cuenta con los recursosnecesarios para adquirir y mantener actualizado el Software necesario paratodas y cada una de las aplicaciones usadas en las computadoras, ya queen general, las licencias de uso del Software propietario son asignadas enforma individual a cada computadora y no es fácilmente transferible a otracomputadora.Dado que existe una gran demanda de programas de cómputo tanto de

uso común como especializado por nuestras crecientes necesidades informáti-cas, y por la gran cantidad de recursos económicos involucrados, existe unagran cantidad de empresas que tratan de satisfacer dichas necesidades, paragenerar y comercializar, además de proveer la adecuada documentación yopciones de capacitación que permita a las empresas contratar recursos hu-manos capacitados.

[email protected] 6 Antonio Carrillo Ledesma, Et alii

Page 9: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Por otro lado, generalmente se deja la investigación y desarrollo de pro-ductos computacionales nuevos o innovadores a grandes empresas o Universi-dades � que cuenten con la infraestructura y el capital humano, que muchasveces es de alto riesgo� con la capacidad de analizar, diseñar y programarlas herramientas que requieran para sus procesos de investigación, enseñanzao desarrollo.Existe hoy en día, una gran cantidad de paquetes y sistemas operativos

comerciales de Software propietario (véase apéndice 10.2) que mediante unpago oneroso, permiten a los usuarios de los mismos ser productivos en todasy cada una de las ramas comerciales que involucra nuestra vida globalizada,pero el licenciamiento del uso de los programas comerciales es en extremorestrictivo en su uso y más en su distribución.

1.1.2 Software Libre

El Software libre (véase apéndice 10.1) son programas de cómputo � el sis-tema operativo, paquetes de uso común y especializados� , desarrollados porusua-rios y para usuarios que, entre otras cosas, comparten el código fuente,el programa ejecutable y dan libertades para estudiar, adaptar y redistribuira quien así lo requiera el programa y todos sus derivados.El Software libre es desarrollado por una creciente y pujante comunidad

de programadores y usuarios que tratan de poner la mayor cantidad de pro-gramas a disposición de todos los interesados, tal que, le permitan al usuariopromedio sacar el mayor provecho de la computadora que use.

¿Qué es el Software Libre? La de�nición exacta y sus diversas variantesse plasman en el apéndice 10, pero podemos entender el espíritu a través delos documentos de la fundación para el Software libre (véase [19], [20], [12],[13], [11] y [15]). El Software libre concierne a la libertad de los usuarios paraejecutar, copiar, distribuir, cambiar y mejorar el Software:

0. La libertad de usar el programa, con cualquier propósito.

1. La libertad de estudiar cómo funciona el programa y modi�carlo, adap-tándolo a tus necesidades.

2. La libertad de distribuir copias del programa, con lo cual puedes ayudara tu prójimo.

[email protected] 7 Antonio Carrillo Ledesma, Et alii

Page 10: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

3. La libertad de mejorar el programa y hacer públicas esas mejoras a losdemás, de modo que toda la comunidad se bene�cie.

La lista de proyectos de este tipo es realmente impresionante (véase [19],[18] y [16]). Algunos han conseguido un uso y alta calidad, por ejemplo elcompilador GCC (véase [21]), el Kernel de Linux (véase [22]) y el sistemaoperativo Debian GNU/Linux (véase [23]) y Android (véase [6]). Mientrasque otros proyectos han caído en el olvido, pero en la gran mayoría, se tienecopia del código fuente que permitiría a quienes esten interesados en dichoproyecto, el poder revivirlo y en su caso ampliarlo.La característica más importante que aparece típicamente en un proyecto

de este tipo, es que un conjunto de personas separadas a gran distancia,sean capaces, a través de la Web, de los e-mail y de foros, de aunar susesfuerzos para crear, mejorar, distribuir un producto, de forma que todosellos se bene�cian unos de otros. Evidentemente, la mayor parte del pesorecae en los desarrolladores, pero también es necesaria una difusión para quelos usuarios documenten, encuentren errores, hagan foros de discusión, etc.

¿Por qué se Interesan los Autores, Alumnos y Profesores Univer-sitarios, en el Software Libre? Porque bajo el Software libre subyacela idea de compartir conocimiento y favorecer la existencia de nuevas ideas;y ¿qué es investigar y enseñar sino crear conocimiento y procurar que losalumnos aprendan e incluso vayan más allá de lo aprendido? Se comparte laidea, que el espíritu del Software libre es similar al que debería reinar en lasinstituciones educativas.Concretando estas ideas, profesores e investigadores necesitan herramien-

tas para la investigación y docencia, y estas deben de tener una calidadmínima y ser fácilmente distribuibles entre los alumnos. En muchos casoslas compañías desarrolladoras y distribuidoras de programas de cómputo nohan sabido ofrecer sus productos con la �exibilidad adecuada para las laboresdocentes o, en otros casos, los productos desarrollados no tienen la calidadesperada.El Software libre es aún joven, pese a las decenas de miles de proyectos

actuales (véase [16] y [17]) � en los que se trabaja constantemente en mejo-rar la parte computacional de los algoritmos involucrados en el proyecto,haciendo y puliendo interfaces grá�cas, generando ayuda en línea así comola documentación necesaria para que usuarios noveles y avanzados usen la

[email protected] 8 Antonio Carrillo Ledesma, Et alii

Page 11: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

mayor cantidad de opciones programadas � existen muchas otras necesi-dades profesionales y de investigación que requieren el desarrollo innovadorde programas de cómputo para automatizarlas y hacerlas e�cientes. Estoqueda plasmado en las decenas de proyectos que a diario son registrados enlas páginas especializadas en busca de difusión y apoyo para su proyecto(véase [16] y [17]).En los últimos años, muchos proyectos han pasado de ser simples pro-

gramas en línea de comandos a complejas aplicaciones multiplataforma � seejecutan en distintos sistemas operativos como son Windows, Linux, Unix,Mac OS, Android� con ambientes grá�cos multimedia que en muchos casoshan superado a sus contrapartes comerciales � por ejemplo los navegadoresWeb� . Para muestra de este maravilloso avance, tomemos el proyecto delsistema operativo Android, que actualmente ejecuta en millones de equipos� como celulares, tabletas, electrodomésticos, etc.� y en los cuales se puedendescargar miles de aplicaciones y esta soportado por una gran cantidad deusuarios y empresas comerciales como Google e IBM. Este ha logrado des-plazar a muchos de sus competidores por sus múltiples bondades y bajo costode desarrollo, al reusar miles de aplicaciones ya existentes que usan Softwarelibre y permitir desarrollar otro tanto de aplicaciones bajo una plataformaque se ejecurá en los más diversos procesadores.Además, el uso de Software libre y su posibilidad de ampliarlo y/o es-

pecializarlo según sea necesario, ha permitido crear de forma cada vez másrápida y con�able; y poner a disposición de un gran público programas deuso común, así como especializado que satisfagan las nuevas necesidades delos usuarios.

1.2 El Cómputo en las Carreras de Ciencias

Existe una gran variedad de programas de cómputo que permite automatizar,la cada vez más creciente cantidad de tareas inherentes al desarrollo de lasactividades profesionales y de investigación; y en particular en la Carrera deActuaría, Ciencias de la Computación, Matemáticas, Matemáticas Aplicadasy los cursos de Matemáticas de las demás carreras de la Facultad.Es común que las grandes y pequeñas empresas compren programas de

cómputo especializados � algunos con un alto costo comercial� para inver-tir lo menos posible en el desarrollo de herramientas computacionales quesatisfagan sus necesidades. Donde es común que una empresa desarrolle másde una versión del programa, donde al menos una versión es libre y ge-

[email protected] 9 Antonio Carrillo Ledesma, Et alii

Page 12: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

neralmente usada como versión de desarrollo y prueba; y las demás versionessean propietarias y sean comercializadas, dando como servicios adicionalesel soporte y capacitación del mismo. La capacitación en el uso de dichosprogramas es cada vez más, delegada a las formadoras de recursos humanos,entre las que destacan las universidades.La capacitación de capital humano especializado en uno o más paquetes

de cómputo, requiere por un lado el conocimiento teórico que sustente elfuncionamiento del paquete y por otro lado contar con la plataforma com-putacional adecuada � Hardware y Software� para ejecutar dicho paquete.El creciente costo monetario de la licencia de uso de un paquete de cómputo� y no necesariamente incluye las versiones siguientes del mismo� implicaun gasto no justi�cable para la gran mayoría de las universidades a nivelmundial.En las universidades, no se busca enseñar el uso de uno o más paquetes

de cómputo per se, la enseñanza de herramientas de cómputo, es un procesoinherente a la adquisición de conocimiento de las diferentes materias que esnecesario cursar para egresar de una carrera universitaria. Así, mediante eluso de uno o más paquetes similares de bajo o nulo costo se puede enseñarlos conocimientos necesarios que le permitirán al educando conocer en pocotiempo las peculiaridades de los paquetes especializados y de alto costo usadosen las empresas.

El Software libre tiene miles de proyectos actualmente activos (véase [16]y [17]), estos tratan de satisfacer la gran mayoría de las necesidades de losusuarios noveles y avanzados; y por el uso de dicho Software no es necesariopagar grandes cantidades de dinero. Además, todas las actualizaciones ynuevas versiones de los paquetes por lo general son puestas en la red paraque se puedan descargar y ser usadas por cualquier usuario, sin recurrir agastos onerosos.Esto queda de mani�esto en uno de los proyectos insignia del Software

libre, como lo es el Kernel Linux (véase [22]), que en su versión 3.10 cuentacon más de quince millones de líneas de código y en la versión 4.12 cuentacon 24,170,860 líneas de código; que ha sido creado desde 1990 hasta la fechapor miles de programadores distribuidos por todo el mundo e intercomuni-cados casi exclusivamente por Internet. Este proyecto es la base de diversasdistribuciones de sistemas operativos � entre ellos de Android, Ubuntu yDebian GNU/Linux entre otras cientos de distribuciones� que se ejecutanen aparatos tan heterogéneos como electrodomésticos, teléfonos celulares,

[email protected] 10 Antonio Carrillo Ledesma, Et alii

Page 13: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

tabletas, computadoras portátiles y de escritorio, así como en la mayoría delas supercomputadoras. Además, estos sistemas operativos se ejecuten enuna gran gama de procesadores, tanto de última generación como en los yaclásicos 80386.Basándose en los proyectos de Software libre, existen diversas distribu-

ciones de sistemas operativos como Debian GNU/Linux (véase [23]) que inte-gra más de cuarenta mil aplicaciones todas ellas de Software libre que permiteejecutar todos los programas de cómputo de uso común � dado que tambiénsoporta la virtualización (véase [49], [55], [48] y [47]), es posible ejecutar otrossistemas operativos como Windows dentro del propio sistema operativo deSoftware libre� .En el caso de Software comercial o propietario como MATLAB (véase

[35]), SAS (véase [42]), SPSS (véase [43]), Microsoft O¢ ce (véase [24]) entreotros, se ha invertido una gran cantidad de trabajo y recursos económicospara generar interfaces de usuario pulidas y perfectamente integradas, asícomo, una gran cantidad de ayuda y en algunos casos con un asistente vir-tual en el mismo paquete para que guíen al usuario en su uso. La docu-mentación integrada del paquete, se complementa con una gran cantidad deayuda en línea, libros, artículos y páginas blancas � en algunos casos en másde 80 idiomas� que detallan como usar el Software para solucionar una grangama de problemas de diversos grupos de usuarios, tanto usuarios ocasionalescomo especializados. En el caso de que el Software sea usado en ambientesuniversitarios, estos cuentan con guías, tutoriales o centros de entrenamientoque capacitan en cada uno de los tópicos necesarios para dominar el paquetehasta llegar a dominar las opciones avanzadas del mismo.En contraste, en el Software libre, es común que en muchos proyectos

incipientes, la documentación, ayuda en línea e interfaz grá�ca es un aspectopoco logrado. En muchos casos, los entornos de trabajo (IDEs) son dejadosa otros proyectos. De tal forma que los creadores � programadores� delpaquete, se centren en el desarrollo computacional de la infraestructura basedel paquete, delegando a otros, las partes que tienen que ver con el usuario�nal y la documentación del mismo. Por ejemplo el paquete de GNUPlot quese encarga de la visualización de grá�cas en dos y tres dimensiones es usadopor decenas de paquetes en línea de comandos � por ejemplo Python, Perl, Cy C++� que cuando requieren hacer grá�cas se las solicitan a dicho paquete,de esta forma se reutiliza lo ya creado y se simpli�ca por mucho el desarrollodel paquete, permitiendo a los desarrolladores centrarse en las característicasque necesitan programar para innovar y satisfacer las crecientes necesidades

[email protected] 11 Antonio Carrillo Ledesma, Et alii

Page 14: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

de los usuarios.Por el incipiente desarrollo de las aplicaciones de Software libre que com-

piten con el Software privativo o comercial al que estamos tan acostumbra-dos a usar � programas para cálculo numérico y simbólico, estadístico y deo�mática, entre otros, comúnmente usados para la enseñanza y resoluciónde problemas cientí�cos y técnicos� , al menos en un corto plazo, el Soft-ware libre parece no ser una opción viable de reemplazo. Pero ya son losu�cientemente maduras para ser tomadas en cuenta, en un ambiente de tra-bajo multiplataforma cada vez más competitivo, en donde es necesario que elusuario � estudiante y eventual profesionista� tenga acceso a todos y cadauno de los paquetes de cómputo que se le muestran en clase, así como en lasprácticas profesionales, que le permitan adquirir soltura y pericia en el usode los mismos.

1.2.1 Algunos Cursos que Usan Cómputo

En la Facultad de Ciencias, cada semestre, se imparten centenas de cursos� algunos compartidos por las distintas carreras y otros especí�cos de la ca-rreras de Actuaría, Ciencias de la Computación, Matemáticas, MatemáticasAplicadas y los cursos de Mátemáticas de las demás carreras de la Facultad�y desde hace varios años, crece semestre a semestre el número de cursos1 quesolicitan hacer uso de equipos de cómputo y tener acceso a múltiples versionesde paquetería especializada (véase apéndice 9), algunos de estos cursos son(véase [2]):

� Cálculo Diferencial e Integral I

� Geometría Analítica I

� Problemas Socio-Económicos de México

� Taller de Herramientas Computacionales

� Cálculo Diferencial e Integral II

� Geometría Analítica II1Los cursos solicitan, desde el uso de un equipo de cómputo y un proyector, hasta

la asignación de una máquina por estudiante que tenga instalado múltiples programasespecializados corriendo en más de un sistema operativo.

[email protected] 12 Antonio Carrillo Ledesma, Et alii

Page 15: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Matemáticas Financieras

� Programación

� Cálculo Diferencial e Integral III

� Probabilidad I

� Programación II

� Manejo de Datos

� Taller de Modelación I

� Cálculo Diferencial e Integral IV

� Finanzas I

� Matemáticas Actuariales del Seguro de Personas I

� Probabilidad II

� Estadística I

� Finanzas II

� Investigación de Operaciones

� Matemáticas Actuariales del Seguro de Personas II

� Taller de Modelación II

� Economía I

� Estadística II

� Matemáticas Actuariales del Seguro de Daños

� Procesos Estocásticos

� Sistemas Dinamicos no Lineales

� Análisis Numérico

� Demografía I

[email protected] 13 Antonio Carrillo Ledesma, Et alii

Page 16: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Demografía Avanzada

� Estadística III

� Seguridad Social

� Pensiones Privadas

� Teoría del Riesgo

� Administración de Riesgos

� Almacenes y Minería de Datos

� Administración de Riesgos Financieros

� Análisis de Regresión

� Análisis Multivariado

� Bases de Datos

� Ecuaciones Diferenciales Ordinarias

� Ecuaciones Diferenciales Parciales

� Carteras de Inversión

� Demografía II

� Econometría I

� Econometría II

� Estadística Bayesiana

� Diseño de Experimentos

� Fianzas

� Inteligencia Arti�cial

� Muestreo

� Planeación Estratégica

[email protected] 14 Antonio Carrillo Ledesma, Et alii

Page 17: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Modelos no Paramétricos y de Regresión

� Productos Financieros Derivados I

� Productos Financieros Derivados II

� Optimización Numérica

� Álgebra Matricial Numérica

� Reaseguro

� Redes de Computadoras

� Seminario de Aplicaciones Actuariales

� Seminario de Matemáticas Aplicadas

� Seminario de Matemáticas Actuariales Aplicadas

� Solución Numérica de Ecuaciones Diferenciales Ordinarias

� Solución Numérica de Ecuaciones Diferenciales Parciales

� Simulación Estocástica

� Sistemas Dinámicos Discretos

� Teoría de Grá�cas

� Teoría de Juegos en Economía

� Temas Selectos de Análisis Numérico

� Valuación de Opciones

1.3 Paquetes de Cómputo de Uso Común

Dada la diversidad de cursos y la gran cantidad de profesores y ayudantes delos mismos, el abanico de paquetes de cómputo solicitados es grande (véaseapéndice 9), entre los que destacan (véase [2]):

� Java JRE y JDK

[email protected] 15 Antonio Carrillo Ledesma, Et alii

Page 18: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Code Blocks IDE

� NetBeans IDE

� DrJava IDE

� IntelliJ IDEA

� BlueJ IDE

� SciTE

� JetBrains IDE

� SharpDevelop IDE

� Alice

� DFD

� Turbo C IDE

� Developer Studio-Fortran IDE

� Microsoft Visual Studio

� Microsoft Windows SDK

� Compaq Visual Fortran

� Microsoft O¢ ce

� Libre O¢ ce

� OpenO¢ ce

� MathType

� Scienti�c WorkPlace

� Microsoft SQL Server

� PostgreSQL

� SPSS

[email protected] 16 Antonio Carrillo Ledesma, Et alii

Page 19: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� PSPP

� SAS

� Vensim PLE

� Statgraphics

� GPower

� EViews

� Systat

� Stata

� Statistica

� ITSM2000

� R

� Tinn-R

� RStudio

� Gretl

� MATLAB

� Scilab

� Octave

� FreeMat

� Maple

� Mathematica

� NetLogo

� GeoGebra

� Compresores y descompresores de archivos Winzip, WinRAR, 7-zip

[email protected] 17 Antonio Carrillo Ledesma, Et alii

Page 20: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� SSH Secure File Transfer

� PDFCreator

� Adobe Reader

� Navegadores de páginas Web: Internet Explorer, Google Chrome, Mozilla,Konquerror

Estos paquetes pueden ser clasi�cados de forma burda en:

� Sistemas Operativos

� Programas de Cálculo Numérico

� Programas de Cálculo Simbólico

� Programas de Estadística

� Programas O�máticos

� Lenguajes de Programación y Entornos de Desarrollo

� Programación Desde la Nube

� Otros Programas de Cómputo

En el presente trabajo, nos centraremos en los rubros más usados, peroel tipo de programas usados, las plataformas de ejecución soportada y lasdiferentes versiones de un mismo paquete que solicitan los profesores y ayu-dantes, crecen constantemente, así mismo, su complejidad y en su caso, elcosto monetario de las licencias de uso también se incrementa de maneraonerosa.

[email protected] 18 Antonio Carrillo Ledesma, Et alii

Page 21: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

1.3.1 Sistemas Operativos

Los sistemas operativos son un conjunto de programas de cómputo que ges-tionan los recursos de Hardware y provee servicios a los programas de apli-caciones, ejecutándose en modo privilegiado respecto a los restantes. Entrelos más usados tenemos:

� Windows

� Linux

� Mac OS

� Android

� UNIX

Hay cientos de sistemas operativos y miles de distribuciones, pero losusuarios estan más familiarizados con Windows para equipos de escritorio yen dispositivos móviles Android. En cualquier sistema operativo es posibleejecutar una gran variedad de paquetes de cómputo y más ahora con la vir-tualización, es posible ejecutar múltiples sistemas operativos y sus paquetescorrespondientes simultáneamente en un mismo equipo de cómputo (véaseapéndice 11).

1.3.2 Paquetes de Cálculo Numérico

Los paquetes de cálculo numérico, son programas matemáticos que ofrecenun entorno de desarrollo integrado (IDE) con un lenguaje de programaciónpropio. Entre sus prestaciones básicas se hallan:

� Manejo de números reales y complejos

� La manipulación de vectores y matrices tanto reales como complejas

� Manejo de funciones elementales y especiales

� Resolución de problemas de álgebra lineal

� Resolución de ecuaciones no lineales

� La representación de datos y funciones

[email protected] 19 Antonio Carrillo Ledesma, Et alii

Page 22: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� La implementación de algoritmos

� Integración de funciones

� Máximos y mínimos de funciones

� Manipulación de polinomios

� Integración de ecuaciones diferenciales

� Gra�cación de funciones en 2D y 3D

� La comunicación con programas en otros lenguajes y con otros dispositivosde Hardware

1.3.3 Paquetes de Cálculo Simbólico

Los paquetes de cálculo Sombólico, son programas matemáticos que realizanmanipulación algebraica y ofrecen un entorno de desarrollo integrado (IDE)con un lenguaje de programación propio. Entre sus prestaciones básicas sehallan:

� Expresiones y funciones simbólicas

� Simpli�car expresiones

� Manejo de polinomios

� Ecuaciones e inecuaciones

� Evaluar una relación

� Factorización

� Resolver ecuaciones y sistemas de ecuaciones

� Integrar y diferenciar expresiones

� Matrices con parámetros

� Computación matemática

� Teoría de números

[email protected] 20 Antonio Carrillo Ledesma, Et alii

Page 23: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Análisis de datos

� Computación geométrica

� Manipulación algebraica

1.3.4 Paquetes Estadísticos

Los paquetes estadísticos, son programas matemáticos que ofrecen un entornode desarrollo integrado (IDE) con un lenguaje de programación propio. Entresus prestaciones básicas destacan:

� Análisis de datos mediante operadores para cálculos sobre arreglos, matricesy/o tablas

� Tablas cruzadas

� Reordenamiento de datos

� Análisis de la varianza (ANOVA)

� Frecuencias

� Estadística descriptiva

� Estadística lineal

� Estadística no lineal

� Estadística biestadística

� Pruebas estadísticas clásicas

� Análisis de serie de temporales

� Modelos de regresión

� Clasi�cación

� Fiabilidad

� Categorías

� Clustering

[email protected] 21 Antonio Carrillo Ledesma, Et alii

Page 24: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Validación de datos

� Tendencias

� Grá�cos y diagramas

1.3.5 Paquetes O�máticos

En la actualidad, los llamados paquetes o�máticos, no son otra cosa queprogramas de cómputo integrado, que permiten automatizar multiples ta-reas que permiten idear, crear, manipular, transmitir, almacenar informaciónnecesaria en una o�cina. Entre sus prestaciones básicas destacan:

� Procesamiento de Textos � con formato enriquecido y notación cientí�ca�

� Hojas de cálculo

� Bases de datos

� Herramientas de presentación y multimedia

1.3.6 Lenguajes de Programación y Entornos de Desarrollo

� Lenguajes de programación

� Entornos de desarrollo integrados y editores para programación

� Depuradores

� Formateadores de código

� Manejadores de versiones

� Generadores de documentanción

1.3.7 Otros Programas de Cómputo

Dentro del abanico de programas que son usados en las carreras de Actuaría,Ciencias de la Computación, Matemáticas, Matemáticas Aplicadas y los cur-sos de Mátemáticas de las demás carreras de la Facultad, y que no tienencabida en los rubros anteriores, destacan:

[email protected] 22 Antonio Carrillo Ledesma, Et alii

Page 25: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Otros programas matemáticos

� Programas de visualización y gra�cación

� Programas de navegación en la red

� Compresores y descompresores de archivos

� Virtualización

[email protected] 23 Antonio Carrillo Ledesma, Et alii

Page 26: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

2 Paquetes de Cálculo Numérico

El cálculo numérico permite diseñar e implementar algoritmos para que através de números y reglas matemáticas, simular procesos matemáticos com-plejos aplicados a la resolución de problemas de Ciencias e Ingenierías. Deesta forma los paquetes de cálculo numérico proporcionan todo el andamiajepara llevar a cabo todos aquellos procedimientos matemáticos susceptiblesde expresarse algorítmicamente que permitan su simulación o cálculo en pro-cesos más sencillos empleando números.Los paquetes de cálculo numérico, son programas matemáticos que ofre-

cen un entorno de desarrollo integrado (IDE) con un lenguaje de progra-mación propio con un amplio abanico de herramientas numéricas para lalectura, manipulación, análisis y gra�cación de datos. Entre sus prestacionesbásicas se hallan:

� Manejo de números reales y complejos

� La manipulación de vectores y matrices tanto reales como complejas

� Manejo de funciones elementales y especiales

� Resolución de problemas de álgebra lineal

� Resolución de ecuaciones no lineales

� La representación de datos y funciones

� La implementación de algoritmos

� Integración de funciones

� Máximos y mínimos de funciones

� Manipulación de polinomios

� Integración de ecuaciones diferenciales

� Gra�cación de funciones en 2D y 3D

� La comunicación con programas en otros lenguajes de programación ycon otros dispositivos de Hardware.

[email protected] 24 Antonio Carrillo Ledesma, Et alii

Page 27: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

El programa comercial líder para el cálculo numérico es MATLAB (véase[35]) de la compañía MathWorks, este paquete salió a la venta en el año de1984 con la versión 1.0 y casi año con año, ha generado nuevas versiones de supaquete y múltiples sistemas de licenciamiento. Actualmente se comercializala versión 7.14 (R2012a) del año 2012 con más de 8 tipos de licenciamiento.Esta empresa cuenta con más de mil empleados y o�cinas en más de docepaíses alrededor del mundo.La idea detrás de paquetes como MATLAB es la de emplear grupos de

subrutinas escritas en principio en el lenguaje de programación FORTRANcomo son las librerías LINPACK (véase [56]) y EISPACK (véase [57]) paramanipular matrices y vectores y proporcionar un sencillo acceso a dicho Soft-ware y así, ser usado en los cursos de álgebra lineal y análisis numérico, sinnecesidad de escribir programas en lenguajes de bajo nivel.Estos paquetes, pueden disponer de herramientas adicionales que ex-

panden sus prestaciones, como son el diseño y simulación de sistemas decontrol. Además, se pueden ampliar las capacidades base de dichos pro-gramas con las cajas de herramientas y con los paquetes de bloques. Enalgunos casos existen versiones para cómputo secuencial y paralelo � tantoen memoria compartida como distribuida, también para usar los múltiplesCores grá�cos CUDA (GPUs) de las tarjetas NVIDIA� .Los paquetes de cómputo para el Cálculo Numérico más usados actual-

mente son:

� MATLAB (véase [35]) (abreviatura de MATrix LABoratory, "labora-torio de matrices") es un Software matemático que ofrece un entornode desarrollo integrado (IDE) con un lenguaje de programación pro-pio (lenguaje M). Entre sus prestaciones básicas se hallan: la mani-pulación de matrices, la representación de datos y funciones, la imple-mentación de algoritmos, la creación de interfaces de usuario (GUI) yla comunicación con programas en otros lenguajes y con otros dispo-sitivos Hardware. El paquete MATLAB dispone de dos herramientasadicionales que expanden sus prestaciones, a saber, plataforma de si-mulación multidominio Simulink (véase [59]) y editor de interfaces deusuario GUIDE. Además, se pueden ampliar las capacidades de MAT-LAB con su caja de herramientas (Tool Box) y las de Simulink con lospaquetes de bloques.

� Octave (véase [39]) es un programa de cálculo numérico de licenciaGNU (véase [15]), conocido por buscar una sintaxis similar a la de

[email protected] 25 Antonio Carrillo Ledesma, Et alii

Page 28: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

MATLAB, existiendo una gran compatibilidad en las funciones de cál-culo numérico.

� FreeMat (véase [38]) es un programa de cálculo numérico de licenciaGPL (véase [15]) que proporciona un ambiente libre para el rápidodesarrollo de prototipos para la Ciencia y la Ingeniería, además delprocesamiento de datos. Es similar a MATLAB y Octave, pero cuentacon una interfaz externa de código en los lenguajes de programaciónC, C++ y Fortran, incluso distribuye el desarrollo de algoritmos enparalelo con la interfaz de paso de mensajes llamada MPI.

� Scilab (véase [36]) es un programa de cálculo numérico de licencia Ce-CILL compatible con GPL (véase apéndice 10.1), desarrollado princi-palmente en Francia, que incluye su propia librería para grá�cos. Essimilar a MATLAB, pero no busca una compatibilidad total, como lopuede hacer FreeMat y Octave. Scilab tiene una herramienta para eldiseño y simulación de sistemas de control Scicos (véase [58]) similar aSimulink (véase [59]) de MATLAB.

� Julia (véase [37]) es un lenguaje de programación homoicónico, multi-plataforma y multiparadigma de tipado dinámico de alto nivel y altodesempeño para la computación genérica, técnica y cientí�ca, con unasintaxis similar a la de otros entornos de computación similares, conlicencia MIT (véase apéndice 10.1).

� Scipy (véase [40]) es una librería de herramientas numéricas para Python(véase [41]) con licencia Open Source (véase [15]). En su �losofía no hatratado de imitar a ninguno de los paquetes anteriores y tiene detrás elrespaldo de un auténtico lenguaje de programación orientado a objetose interpretado que también puede ser compilado para ganar velocidaden la ejecución. Este hecho le con�ere una gran potencia y la capacidadde bene�ciarse de las mejoras del lenguaje base.

Existen otros paquetes que pueden ser usados en el cálculo numérico� estos poseen características que enriquecen las opciones clásicas de los pa-quetes de cálculo numérico� :

� R (véase [46])

� Maple (véase [75])

[email protected] 26 Antonio Carrillo Ledesma, Et alii

Page 29: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Mathematica (véase [76])

� Maxima (véase [77])

2.1 MATLAB

El paquete MATLAB (véase [35]) tiene cientos de características, tan varia-das como el segmento de usuarios al que dicho Software esta dirigido. Al serun paquete tan completo, es difícil que un usuario promedio use las carac-terísticas avanzadas de dicho paquete; esto repercute en que el usuario prome-dio pague un alto costo por el valor de las licencias de uso sin usar dichascaracterísticas; y esto contrasta con un vertiginoso desarrollo de nuevas ca-racterísticas, que permite a la compañía lanzar una o más versiones por año,cada una con múltiples opciones de licenciamiento, según las necesidades delsegmento al que estan dirigidas.Las múltiples características y los miles de usuarios, han creado una comu-

nidad robusta, la que ha logrado una gran cantidad de funciones optimizadas,que han permitido la publicación de decenas libros, cientos de artículos ymiles de páginas Web en los cuales se muestra como resolver diversos pro-blemas concomitantes en Ciencias e Ingenierías usando dicho paquete y lainteracción con otros lenguajes como son C/C++, Fortran o Java.Entre las principales aplicaciones de MATLAB incluyen la de métodos

secuenciales y paralelos para resolver problemas de álgebra lineal con matri-ces (ralas, dispersas y densas), estadística, análisis de Fourier, optimización,integración numérica, resolución de ecuaciones diferenciales ordinarias y par-ciales, creación de grá�cos y visualización de datos. Además de opciones parahacer interpolación y regresión de datos, cálculo de eigen-valores y valoressingulares, etc.

Entornos de Programación Uno de los aspectos más agradables de MAT-LAB es su entorno de programación, que permite centralizar la informaciónen un entorno de ventanas. El depurador esta también incorporado en eleditor. Desgraciadamente, estas facilidades no se encuentran del todo desa-rrolladas en las otras herramientas � Octave, FreeMat, Scilab, Scipy� , peroes posible obtener la misma efectividad para las opciones básicas usando lalínea de comandos.

[email protected] 27 Antonio Carrillo Ledesma, Et alii

Page 30: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

2.2 Octave

El paquete Octave (véase [39]), al mantener una sintaxis similar a la deMATLAB, la gran mayoría de funcionalidades básicas son compatibles. Lasmúltiples características y los miles de usuarios, han creado una comunidadrobusta, la que ha logrado una gran cantidad de funciones optimizadas, quehan permitido la publicación de decenas libros, cientos de artículos y milesde páginas Web en los cuales se muestra como resolver diversos problemasconcomitantes en Ciencias e Ingenierías usando dicho paquete y la interaccióncon otros lenguajes como son C/C++, Fortran o Java.Entre las principales aplicaciones de Octave/MATLAB incluyen la de

métodos secuenciales y paralelos para resolver problemas de álgebra linealcon matrices (ralas, dispersas y densas), estadística, análisis de Fourier, op-timización, integración numérica, resolución de ecuaciones diferenciales or-dinarias y parciales, creación de grá�cos y visualización de datos. Ademásde opciones para hacer interpolación y regresión de datos, cálculo de eigen-valores y valores singulares, etc.Uno de los aspectos más agradables de Octave/MATLAB es su entorno

de programación, que permite centralizar la información en un entorno deventanas. El depurador esta también incorporado en el editor.

2.3 FreeMat

El paquete FreeMat (véase [38]) es un programa de cálculo numérico de li-cencia GPL (véase [15]) que proporciona un ambiente libre para el rápidodesarrollo de prototipos para la Ciencia y la Ingeniería, además del proce-samiento de datos, además cuenta con una interfaz externa de código en loslenguajes de programación en C, C++ y Fortran, incluso distribuye el desa-rrollo de algoritmos en paralelo con la interfaz de paso de mensajes llamadaMPI.Es similar a MATLAB, pero según sus desarrolladores es casi 95% com-

patible con MATLAB, actualmente trabaja en Windows, Linux, MAC yalgunas versiones de UNIX, las características soportadas son:

� Manipulación de arreglos N-dimensionales (N esta limitado a 6)

� Soporta enteros de 8, 16 y 32 bits y números de punto �otante de 32 y64 bits y tipo complejos de 64 y 128 bits

[email protected] 28 Antonio Carrillo Ledesma, Et alii

Page 31: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Soporta la aritmética de todos los tipos de datos soportados

� Resolución de sistemas de ecuaciones

� Descomposición de eigen-valores y valores singulares

� Arreglos heterogéneos

� Soporte completo para la estructura de arreglos dinámicos

� Soporte para FFT

� Paso por referencia

� Interfase para código externo C/C++/Fortran

� Soporte nativo para matrices dispersas

� Clases y sobrecarga de operadores

� Visualización de grá�cos en dos y tres dimensiones

Algunas diferencias básicas son:

� Soporte parcial para construcción de Widgets/GUI

� FreeMat a MEX interfase para portar archivos de MEX de MATLAB

� No implementación de GUI/Widgets

En cuanto al ambiente de desarrollo, FreeMat instala todo lo necesariopara un trabajo cómodo y funcional. Ya que permite abrir el editor de textoen el cual podemos hacer la depuración del mismo, ejecutar los programas dedemostración, acceder a las ventanas grá�cas, controlar la ejecución en curso,abrir �cheros y ejecutarlos, observar el estado de las variables de�nidas, entreotras cosas.

[email protected] 29 Antonio Carrillo Ledesma, Et alii

Page 32: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

2.4 Scilab

El paquete Scilab(véase [36]) tiene una licencia compatible con la de GPL,que por su madurez y la gran cantidad de usuarios, Universidades y Centrosde Investigación que lo usan y dan retroalimentación del paquete, ha logradoser un Software que permite hacer todas las opciones básicas de MATLABy algunas avanzadas también, es similar a MATLAB y permite cómputosecuencial y paralelo, pero no busca una compatibilidad total, por ello haydiferencias entre ambos paquetes. Scilab provee una forma para tratar deimportar código de MATLAB y generar su equivalente en Scilab.Algunas diferencias básicas son:

� Funciones: Las funciones en Scilab no son consideradas como archivospor separado � como archivos con extensión M en MATLAB� , unao más funciones pueden ser de�nidas en un solo archivo y el nom-bre de archivo no necesariamente tiene que estar relacionado con elnombre de las funciones. También, la(s) función(es) no se cargarán au-tomáticamente en Scilab, como lo es en MATLAB, después de que sunombre es invocado. Por lo general, se tiene que ejecutar el comandoGETF(�funcion_name�) antes de ser capaz de utilizar la función. Lasfunciones también se pueden de�nir en línea con el comando: de¤,además en Scilab para ejecutar un archivo de comandos se debe deusar exec(�archivo�), en MATLAB solo es necesario escribir el nombredel archivo.

� Comentarios: En MATLAB los comentarios inician con: %, en Scilablos comentarios inician con: //

� Variables: En Scilab las variables prede�nidas usualmente tienen el pre-�jo % (%i, %inf, etc.) estas son protegidas y no pueden ser rede�nidas.MATLAB prede�ne a las variables i y j como la unidad imaginaria ypueden ocasionar problemas si se tratan de usar estas en índices dearreglos, esto no pasa en Scilab.

� Variables Booleanas: En Scilab las variables booleanas son %T, %F y0, 1 en MATLAB, ellas corresponden con los conceptos de verdadero yfalso respectivamente. Haciendo uso de las variables booleanas puedenno producir el mismo valor en MATLAB como en Scilab. Por ejemplox=[1,2]; x([1,1]) [which is NOT x([%T,%T])] retorna [1,1] en SCILAB

[email protected] 30 Antonio Carrillo Ledesma, Et alii

Page 33: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

y [1,2] en MATLAB. También si x es una matriz x(1:n,1)=[] or x(:)=[]no son validas en MATLAB.

� Polinomios: En Scilab los polinomios y las matrices polinomiales sonde�nidas por la función poly, ellas son consideradas como vectores decoe�cientes en MATLAB.

� Gra�cación: Excepto para los grá�cos simples plot y mesh en MATLABy plot3D en Scilab, estos no son compatibles y no siempre es posibleobtener grá�cos con la calidad de MATLAB.

� En Scilab existe un tipo de dato distinto, las listas, que en la prácticapermiten de�nir una nueva clase. Aunque hay también celdas y estruc-turas como en MATLAB, Scilab en sus últimas versiones recomiendausar las listas.

Estas y otras diferencias hacen que no sean compatibles los programasde MATLAB en Scilab, pero si se usa como una plataforma en la cual se leenseñe a los alumnos la sintaxis del paquete, Scilab proporciona todas lascapacidades básicas de MATLAB.Por otro lado, Scilab tiene una interfaz para integrar funciones escritas

en C o Fortran de manera relativamente sencilla, al menos para los tipos dedatos habituales. También, puede ser llamado desde un programa en Fortran,C, C++ o Java las rutinas de Scilab, o incluso traducir un programa de Scilaba Fortran.En cuanto al ambiente de desarrollo, Scilab instala todo lo necesario para

un trabajo cómodo y funcional. Ya que permite abrir el editor de texto enel cual podemos hacer la depuración del mismo, ejecutar los programas dedemostración, acceder a las ventanas grá�cas, controlar la ejecución en curso,abrir �cheros y ejecutarlos, observar el estado de las variables de�nidas, entreotras cosas.

2.5 Julia

Julia (véase [37]) es un lenguaje de programación homoicónico, multiplatafor-ma y multiparadigma � soporta programación orientada a objetos, por pro-cedimientos, funcional y meta además de multietapas� de tipado dinámicode alto nivel y alto desempeño para la computación genérica, técnica y cientí-�ca, con una sintaxis similar a la de otros entornos de computación similares,con licencia MIT (véase apéndice 10.1).

[email protected] 31 Antonio Carrillo Ledesma, Et alii

Page 34: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Dispone de un compilador avanzado (JIT), mecanismos para la ejecu-ción en paralelo y distribuida, además de una extensa biblioteca de funcionesmatemáticas. La biblioteca, desarrollada fundamentalmente en Julia, tam-bién contiene código desarrollado en C o Fortran, para el álgebra lineal, ge-neración de números aleatorios, procesamiento de señales, y procesamientode cadenas. Adicionalmente, la comunidad de desarrolladores de Julia con-tribuye con la creación y distribución de paquetes externos a través del gestorde paquetes integrado de Julia a un paso acelerado. IJulia es el resultadode la colaboración entre las comunidades de IPython y Julia, provee de unapoderosa interfaz grá�ca basada en el navegador para Julia.Algunas características básicas son:

� El despacho múltiple: permite de�nir el comportamiento de las fun-ciones a través de diversas combinaciones de tipos de argumentos

� Sistema de tipado dinámico: tipos para la documentación, la opti-mización y el despacho de funciones

� Buen desempeño, acercándose al de lenguajes estaticamente compiladoscomo C

� Gestor de paquetes integrado

� Macros tipo Lisp y otras herramientas para la meta-programación

� Llamar funciones de Python: mediante el paquete PyCall

� Llamar funciones de C directamente: sin necesidad de usar envoltoriosu APIs especiales

� Poderosas características de línea de comandos para gestionar otrosprocesos

� Diseñado para la computación paralela y distribuida

� Corutinas: hilos ligeros

� Los tipos de�nidos por el usuario son tan rápidos y compactos comolos tipos estandar integrados.

� Generación automática de código e�ciente y especializado para difer-entes tipos de argumentos

[email protected] 32 Antonio Carrillo Ledesma, Et alii

Page 35: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Conversiones y promociones para tipos numéricos y de otros tipos, ele-gantes y extensibles

� Soporte e�ciente para Unicode, incluyendo UTF-8 pero sin limitarsesolo a este

� Es de uso general, pero tiene todo lo necesario para hacer ciencia dedatos, aprendizaje automático, ecuaciones diferenciales, resolvedores desistemas lineales, etc.

Julia incluye una terminal interactiva, llamada REPL en donde se puedevisualizar automáticamente los resultados de la ejecución del programa osegmento de código. Tanto el compilador justo a tiempo (JIT) basado enLLVM así como el diseño del lenguaje le permiten a Julia acercarse e inclusoigualar a menudo el desempeño de C. Julia no le impone al usuario ningúnestilo de paralelismo en particular. En vez de esto, le provee con bloques deconstrucción clave para la computación distribuida, logrando hacer lo su�-cientemente �exible el soporte de varios estilos de paralelismo y permitiendoque los usuarios añadan más.

2.6 Scipy

El paquete Scipy (véase [40]) es parte de Python (véase [41]) y es imposiblecondensar en unas pocas páginas todas las posibilidades de un lenguaje depropósito general como Python. Al ser este un lenguaje interpretado, puedeteclearse línea a línea desde la entrada de comandos, pero también es posibleusar �cheros, estos por claridad suelen tener la extensión .py, este podría serejecutado con la orden python nombre_�chero.py. En este sentido es similara MATLAB.Ya que en su �losofía no ha tratado de imitar a ningún otro paquete y

tiene detrás el respaldo de un auténtico lenguaje de programación orientadoa objetos e interpretado que también puede ser compilado para ganar veloci-dad en la ejecución. Este hecho le con�ere una gran potencia y la capacidadde bene�ciarse de las mejoras del lenguaje base y posee herramientas secuen-ciales y paralelas � en memoria compartida y distribuida además de usar losCores grá�cos CUDA (GPUs) de las tarjetas NVIDIA� .Algunas diferencias básicas son:

[email protected] 33 Antonio Carrillo Ledesma, Et alii

Page 36: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� La sintaxis para introducir arreglos debe de incluir comas entre loselementos. Además, debe haber tantos símbolos �[�como dimensionesdel arreglo � y sus correspondientes cierres� .

� Los índices en los arreglos empiezan en 0.

� Es posible indicar el tipo de dato de cada elemento del arreglo en sucreación.

� Existen verdaderas operaciones entre enteros, como en C.

� Salvo los tipos de datos muy simples, todos los demás objetos que sepasan de una función lo hacen por referencia.

� En los arreglos de dos dimensiones las operaciones * y / se realizanelemento a elemento. La multiplicación de matrices y la multiplicaciónpor la inversa deben hacerse con dot e inv. Pero también se puede usarel tipo matrix en lugar de un arreglo, donde se recupera una sintaxissimilar a MATLAB.

En cuanto al entorno de programación por omisión se tiene acceso a IDLE(véase [62]), el entorno de desarrollo típico de Python. Permite compatibilizaruna ventana interactiva con la edición de los programas. La ventana inte-ractiva es similar a una consola normal de IPython (véase [63]), pero permitever de forma grá�ca los módulos accesibles, las clases y sus métodos, y sobretodo, una ventana de depuración que puede ser de gran ayuda. Existenotros entornos de programación como son Pydev (véase [64]), el cual es unprograma que permite desarrollar código dentro del entorno de programaciónECLIPSE (véase [65]). Otra opción es usar The Eric Python IDE (véase[66]), el cual es un auténtico entorno de desarrollo y gestión de proyectos dePython, este permite trabajar varias ventanas e incorpora el depurador.

2.7 Ventajas, Desventajas y Carencias

Notemos que el tener múltiples herramientas para realizar operaciones ele-mentales y avanzadas de cálculo numérico, es en sí misma una gran ventaja.Para los centros universitarios y usuarios ocasionales, las herramientas deSoftware libre son una herramienta invaluable. En el caso de empresas o

[email protected] 34 Antonio Carrillo Ledesma, Et alii

Page 37: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

usuarios avanzados que requieren usar opciones especializadas o generadaspor terceros, MATLAB destaca como la mejor herramienta de trabajo.Pero hay que hacer notar que:

� Funcionalidades básicas: Todos los paquetes implementan las funciona-lidades básicas, ya que todos llevan años desarrollándose.

� Funcionalidades especializadas: Por mucho, MATLAB tiene implemen-tadas cientos de funciones especializadas que pueden ser muy útiles parausuarios avanzados, pero rara vez son usados por los usuarios noveleso cotidianos.

� Grá�cos e imágenes: Todos los paquetes permiten hacer grá�cos en 2Dy 3D y controlar las marcas, poner títulos, etc. Pero los que mejoresprestaciones tienen para los usuarios �nales son MATLAB, FreeMat yScilab.

� Potencia del lenguaje de programación: En este caso Scipy destaca porsu modularidad, por tener una orientación a objetos más convencional,por su mayor precisión en los tipos de datos y porqué Python poseemuchos módulos que permiten integrar otras tareas típicas de progra-mación con el cálculo numérico.

� Fiabilidad: En los paquetes en desarrollo son comunes las caídas delprograma, pero MATLAB destaca por ser más �able que los demás.

� Información: MATLAB es el paquete con una abundante bibliografíay la propia ayuda del programa. FreeMat y Octave también tienemanuales aceptables y mucha información en Internet, aunque la ayudaes escasa. La documentación de Scipy es algo escasa, pero se estatrabajando en ella. Scilab tiene menos difusión y al �nal casi toda ladocumentación proviene de su página Web o�cial, pero la ayuda delprograma es buena.

� Facilidad de Manejo: Ninguno de los programas presenta grandes di�-cultades a la hora de su utilización. MATLAB destaca por su entornointegrado, por las facilidades grá�cas y por la opción de realizar ac-ciones desde sus menús. Pero en menor o mayor medida, todos lospaquetes presentan entornos de desarrollo funcional, pero perfectible.

[email protected] 35 Antonio Carrillo Ledesma, Et alii

Page 38: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Costo: El costo de las diversas versiones de MATLAB supera los dos milpesos por licencia estudiantil, en el caso del Software libre, los paquetesse pueden descargar de la red sin más costo que el acceso a Internet.

Así, es posible resumir las características de los paquetes libres como:

� FreeMat y Octave son programas con una sintaxis muy similar a MAT-LAB. Su uso no debe suponer problemas para aquellos usuarios habi-tuados a usar MATLAB. En el caso de Octave quizás echará de menosalgunas funciones, pero las que posee cubren un gran espectro de apli-caciones, y a partir de ellas se pueden implementar fácilmente las quefalten, por otro lado, ambos proyectos son jóvenes y con gran empujepor parte de la comunidad GNU, lo cual, en algunos años permitirátener productos maduros y de gran calidad, pero por el momento eldesarrollo de la interfaz de usuario es algo limitada, al igual que sudocumentación, pero permiten hacer uso de los cada vez más comunesmultiCores en los equipos de cómputo mediante el cómputo en paralelo.

� Scilab es también parecido a MATLAB, pero dado que no busca teneruna sintaxis similar, los nombres de las funciones pueden cambiar. Hayguías de paso de una herramienta a otra (véase [67]). Además, existela utilidad de conversión directa de un �chero de MATLAB a uno deScilab. El comando se llama: m�le2sci, aunque esta herramienta no esperfecta, es sin duda muy interesante contar con esta posibilidad.

� En cuanto a Scipy o Julia, los cuales más di�eren de MATLAB, al serlenguajes ricos en funcionalidades, también permite usar herramientassecuenciales y paralelas � en memoria compartida y distribuida ademásde usar los Cores Grá�cos CUDA (GPUs) de las tarjetas NVIDIA� . Apesar de que al principio pueden parecer algo más pesado escribir conScipy o Julia, pronto se comprueba la elegancia del lenguaje de progra-mación y su lógica. Ser estrictos permite, a la larga, evitar errores yorganizar mejor las ideas del programador. Además, hay que destacarlos numerosos módulos disponibles para tareas distintas a las del cál-culo numérico: transmisión de datos por Internet, e-mail, manejo debases de datos, creación de interfaces grá�cas, etc.

Por otro lado existe Anaconda, una Suite de código abierto que abarcauna serie de aplicaciones, librerías y conceptos diseñados para el desarrollo

[email protected] 36 Antonio Carrillo Ledesma, Et alii

Page 39: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

de la Ciencia de datos con Python. En líneas generales Anaconda Distribu-tion es una distribucción de Python que funciona como un gestor de en-torno, un gestor de paquetes y que posee una colección de más de 720 pa-quetes de código abierto. Anaconda Distribution se agrupa en 4 sectoreso soluciones tecnológicas, Anaconda Navigator, Anaconda Project, Las li-brerías de Ciencia de datos y Conda. Todas estas se instalan de maneraautomática y en un procedimiento muy sencillo. Para más información ver:https://www.anaconda.com/.También esta SageMath, una Suite de código abierto bajo la licencia GPL

de Software matemático como: NumPy, SciPy, matplotlib, Sympy, Maxi-ma, GAP, FLINT, R, entre otros. Además combina acceso a una poderosacombinación del lenguaje basada en Python o directamente vía interfaceso Wrappers. La misión del proyecto es crear una alternativa de Softwarelibre a Magma, Maple, Mathematica y Matlab. Para más información ver:http://www.sagemath.org/.

2.8 Desde la Nube

Existen diferentes servicios Web2 que permiten editar, compilar y ejecutarcódigo de diversos lenguajes y paquetes desde el navegador, esto en aras deque los estudiantes y profesores que cuenten con algún sistema de acceso ared y un navegador puedan programar en los más diversos lenguajes, IDEs yTerminales sin hacer instalación alguna en su equipo de cómputo, tableta oteléfono celular.Algunos ejemplos de estos servicio son:

� Para Octave https://nclab.com/free-portal/

� Para Octave https://octave-online.net/

� Para SciLab http://cloud.scilab.in/

2Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 37 Antonio Carrillo Ledesma, Et alii

Page 40: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Para SciLab http://hotcalcul.com/on-line-calculator/scilab

� Para Julia https://juliabox.com

� Para Scipy https://www.jdoodle.com

� Para Scipy https://try.jupyter.org/

� Para Scipy http://browxy.com

[email protected] 38 Antonio Carrillo Ledesma, Et alii

Page 41: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

3 Paquetes de Cálculo Simbólico

En Matemáticas y Ciencias de la Computación, el cálculo simbólico, tam-bién conocido como cálculo algebraico o álgebra computacional, es un áreacientí�ca que se re�ere al estudio y desarrollo de algoritmos y Software parala manipulación de expresiones matemáticas y otros objetos matemáticos.Aunque, hablando con propiedad, el álgebra computacional debe ser un sub-campo de la computación cientí�ca, estos son considerados generalmentecomo campos distintos, porque la computación cientí�ca se basa general-mente en el análisis numérico con números aproximados en punto �otante;mientras que, el álgebra computacional enfatiza el cálculo exacto con expre-siones que contengan variables que no tienen un valor dado y por lo tanto sonmanipulados como símbolos (de ahí se debe el nombre de cálculo simbólico).Las aplicaciones de Software que realizan cálculos simbólicos son cono-

cidas como sistemas de álgebra computacional, con el término sistema, alu-diendo a la complejidad de las principales aplicaciones que incluyen, al menos,un método para representar los datos matemáticos en una computadora, unlenguaje de programación de usuario (por lo general diferente del lenguajeusado para la ejecución), un administrador de memoria, una interfaz deusuario para la entrada/salida de expresiones matemáticas, un gran con-junto de subrutinas para realizar operaciones usuales, como la simpli�caciónde expresiones, la regla de la cadena utilizando diferenciación, factorizaciónde polinomios, integración inde�nida, etc.El álgebra computacional es ampliamente utilizada para experimentar en

matemática y diseñar las fórmulas que se utilizan en los programas numéricos.También se usa para cálculos cientí�cos completos, cuando los métodos pu-ramente numéricos fallan, como en la criptografía asimétrica o para algunosproblemas no lineales.

Los paquetes de cálculo simbólico, son programas matemáticos que ofre-cen un entorno de desarrollo integrado (IDE) con un lenguaje de progra-mación propio con un amplio abanico de herramientas simbólicas y numéri-cas para la lectura, manipulación, análisis y gra�cación de datos. Entre susprestaciones básicas se hallan:

� Bibliotecas de funciones matemáticas elementales y especiales

� Matrices y manipulación de datos

[email protected] 39 Antonio Carrillo Ledesma, Et alii

Page 42: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Soporte para números complejos, precisión arbitraria, computación deintervalos aritméticos y simbólicos

� Datos en 2D y 3D, función, visualización geográ�ca y herramientas deanimación

� Solucionadores para sistemas de ecuaciones, ecuaciones diofánticas, ecua-ciones diferenciales ordinarias, parciales, diferenciales algebraicas, deretraso, diferenciales estocásticas y relaciones de recurrencia

� Herramientas numéricas y simbólicas para cálculo de variable continuao discreta

� Bibliotecas de Estadística multivariable, incluyendo ajuste, pruebas dehipótesis, y cálculos de probabilidad

� Soporte para datos censurados, datos temporales, series temporales ydatos basados en unidades

� Cálculos y simulaciones en procesos aleatorios y Queues

� Geometría computacional en 2D, 3D y dimensiones mayores

� Optimización restringida y no restringida, local y global

� Herramientas para problemas combinatorios

� Soporta el desarrollo de cálculos matemáticos de manera simbólica ynumérica con precisión arbitraria

� Librerías para funciones matemáticas básicas y avanzadas

� Manejo de números complejos y sus diversas operaciones

� Aritmética, álgebra, operaciones para desarrollo de polinomios multi-variados

� Límites, series y sucesiones

� Álgebra diferencial

� Herramientas para la manipulación de matrices incluyendo matricesdispersas

[email protected] 40 Antonio Carrillo Ledesma, Et alii

Page 43: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Sistemas de solución para ecuaciones diferenciales en sus diferentes va-riedades (ODE, DAE, PDE, DDE)

� Herramientas simbólicas y numéricas para cálculo discreto y continuo,incluye integración de�nida e inde�nida, diferenciación

� Optimización con restricciones y sin restricciones

� Herramientas para la resolución de problemas en el campo de la pro-babilidad

� Herramientas para el uso de series de tiempo

� Conexión a datos en línea, recopilados para aplicaciones �nancieras yeconómicas

� Herramientas para cálculos �nancieros, incluyendo: bonos, anualidades,etc.

� Cálculos y simulaciones para procesos aleatorios

� Herramientas para el desarrollo de sistemas lineales y no lineales

� Incluye matemáticas discretas

Los programas líderes para el cálculo simbólico son Mathemática y Maple,los costos de sus licencias respectivas son onerosos, pero para la UNAM setienen licencias académicas disponibles para profesores y estudiantes. Existenotros paquetes como Maxima que tiene licencia GPL (véase apéndice 10.1)y estan disponibles para los usuarios en múltiples plataformas.Estos paquetes, pueden disponer de herramientas adicionales que ex-

panden sus prestaciones en modo local como en la Web. En algunos casosexisten versiones para cómputo secuencial y paralelo � tanto en memoriacompartida como distribuida, también para usar los múltiples Cores grá�cosCUDA (GPUs) de las tarjetas NVIDIA� .Los paquetes de cómputo para el Cálculo Simbólico más usados actual-

mente son:

� Mathematica (véase [76])

� Maple (véase [75])

� Maxima (véase [77])

[email protected] 41 Antonio Carrillo Ledesma, Et alii

Page 44: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

3.1 Mathematica

Mathematica (véase [76]) es un programa utilizado en áreas cientí�cas, de in-geniería, matemática y áreas computacionales. Originalmente fue concebidopor Stephen Wolfram, quien continúa siendo el líder del grupo de matemáti-cos y programadores que desarrollan el producto en Wolfram Research, com-pañía ubicada en Champaign, Illinois. Comúnmente considerado como unsistema de álgebra computacional, Mathematica es también un poderosolenguaje de programación de propósito general.Los atributos de Mathematica incluyen:

� Bibliotecas de funciones matemáticas elementales y especiales

� Matrices y manipulación de datos, así como soporte de matrices tipoSparse

� Soporte para números complejos, precisión arbitraria, computación deintervalos aritméticos y simbólicos

� Datos en 2D y 3D, función, visualización geográ�ca y herramientas deanimación

� Solucionadores para sistemas de ecuaciones, ecuaciones diofánticas, ecua-ciones diferenciales ordinarias, parciales, diferenciales algebraicas, deretraso, diferenciales estocásticas y relaciones de recurrencia

� Herramientas numéricas y simbólicas para cálculo de variable continuao discreta

� Bibliotecas de Estadística multivariable, incluyendo ajuste, pruebas dehipótesis, cálculos de probabilidad y expectativa en más de 140 dis-tribuciones

� Soporte para datos censurados, datos temporales, series temporales ydatos basados en unidades

� Cálculos y simulaciones en procesos aleatorios y Queues

� Herramientas de aprendizaje de máquina supervisadas y no super-visadas para datos, imágenes y sonidos

� Geometría computacional en 2D, 3D y dimensiones mayores

[email protected] 42 Antonio Carrillo Ledesma, Et alii

Page 45: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Análisis de elementos �nitos incluyendo generación de malla adaptivaen 2D y 3D

� Optimización restringida y no restringida, local y global

� Lenguaje de programación que da soporte a construcciones de proce-dimiento, funcionales y orientados a objetos

� Juego de herramientas para agregar interfaces de usuario a cálculos yaplicaciones

� Herramientas para procesamiento de imágenes en 2D y 3D, y proce-samiento morfológico de imágenes incluyendo reconocimiento de imá-genes

� Herramientas para visualización y análisis de grafos dirigidos y no di-rigidos

� Herramientas para problemas combinatorios

� Herramientas para minería de textos incluyendo expresiones reguralesy análisis semántico

� Herramientas de minería de datos tales como análisis de grupos, ali-neación de secuencias y búsqueda de patrones

� Biblioteca de funciones de teoría de números

� Herramientas para cálculos �nancieros, incluyendo bonos, anualidades,derivados, opciones

� Teoría de grupo y funciones de tensor simbólicas

� Bibliotecas para procesamiento de señales, incluyendo análisis de ondasen sonidos, imágenes y datos

� Bibliotecas de sistemas de control lineales y no lineales

� Transformaciones integrales continuas y discretas

� Importación y exportación de �ltros para datos, imágenes, video, sonido,CAD, GIS, formato de documento y biomédicos

[email protected] 43 Antonio Carrillo Ledesma, Et alii

Page 46: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Colección de base de datos para información matemática, cientí�ca ysocioeconómica y acceso a datos de WolframAlpha y cálculos

� Procesamiento de palabras técnicas incluyendo edición de fórmulas yreportes automatizados

� Herramientas para conectarse a sistemas basados en DLL, SQL, Java,.NET, C++, Fortran, CUDA, OpenCL y HTTP

� Herramientas para programación paralela

� Usando ambas "entradas lingüística de forma libre" (una interfaz deusuario de lenguaje natural) yWolfram Language en el cuaderno cuandoesta conectado a internet

Interfaces La interfaz preseleccionada por Mathematica tiene extensascaracterísticas y capacidades grá�cas, ofreciendo analogías a un cuadernode trabajo: la entrada de datos por parte del usuario y los resultados envia-dos por el núcleo (incluyendo grá�cas y sonidos), son colocados en formade celdas jerárquicas (igual que Maple), lo cual permite seguir con facilidadla secuencia de las manipulaciones algebraicas o cálculos que se estan de-sarrollando en una sesión. Comenzando con la versión 3.0 del Software, loscuadernos se representan como expresiones que puedan ser manipuladas, asu vez, por el núcleo.Para permitir a aquellos usuarios que no tienen una licencia, la visua-

lización de los cuadernos de trabajo escritos en Mathematica, se creó unpaquete de lectura dedicado. Este paquete, llamado MathReader puede ba-jarse de la red gratuitamente.Otras interfaces se encuentran disponibles, como, JMath o Mash, pero la

interfaz estandar de Mathematica es la más popular.

Conexiones con otras aplicaciones Las comunicaciones con otras apli-caciones ocurren a través del protocolo llamado MathLink. Este protocolopermite no solo comunicaciones entre el núcleo de Mathematica y las pan-tallas, sino que también provee la interfaz entre el núcleo y aplicaciones arbi-trarias. Wolfram Research distribuye de forma gratuita un kit para enlazaraplicaciones escritas en el lenguaje de programación C hacia el núcleo deMathematica a través de MathLink. Otros componentes de Mathematica,

[email protected] 44 Antonio Carrillo Ledesma, Et alii

Page 47: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

que usan el protocolo Mathlink, permite a los desarrolladores establecer co-municaciones entre el núcleo y Java o para programas .NET como J/Link y.NET/LinkUsando J/Link, un programa de Java puede decirle a Mathematica que

ejecute cálculos; también Mathematica puede cargar cualquier clase de Java,manipular objetos de Java y desempeñar llamadas a métodos, haciendo posi-ble construir interfaces grá�cas desde Mathematica. De forma similar, laplataforma .NET puede enviarle órdenes al núcleo para que ejecute cálcu-los, y devuelva los resultados, también los desarrolladores de Mathematicapueden acceder con facilidad a la funcionalidad de la plataforma .NET.Mathematica 9 es compatible con varias versiones de Linux, OS X de

Apple, Windows (XP SP3, Vista, 7 y 8) de Microsoft y Raspberry Pi. Todasestas plataformas son compatibles con implementaciones de 64 bits. Ver-siones anteriores de Mathematica hasta la 6.0.3 son compatibles con otrossistemas operativos, incluyendo Solaris, AIX, Convex, HP-UX, IRIX, MS-DOS, NeXTSTEP, OS/2, Ultrix y Windows Me.Mathematica puede conectarse a una variedad de servicios en la nube

para recuperar o enviar datos, incluido ArXiv, Bing, ChemSpider, Dropbox,Facebook, el Sistema de la Reserva Federal, Fitbit, Flickr, Google (Analyti-cs, Calendar, Contacts, Custom search, Plus, Search, Translate), Instagram,LinkedIn, Mailchimp, Open Library, PubChem, PubMed, Reddit, Survey-Monkey, Twitter y Wikipedia.

Funcionalidades de Mathematica para Internet Wolfram Researchcuenta con un programa denominado WebMathematica que añade funciona-lidades para publicación Web capaz de hacer cálculos y desplegar visualiza-ciones de Mathematica en línea.Como demostración de las capacidades de Mathematica y WebMathema-

tica, Wolfram Research mantiene un sitio Web en la que es posible realizarintegrales inde�nidas simples "The Integrator" en:

http : ==www:wolframalpha:com=calculators=integral � calculator=

así como el "Demonstrations project" que consiste en pequeños programasencapsulados que muestran un concepto matemático o una función de Mathe-matica de manera simpli�cada, visual y libre ya que el código fuente tambiénpuede descargarse. Estos pequeños programas pueden visualizarse inclusosin contar con Mathematica sino directamente en el browser o con el Mathe-

[email protected] 45 Antonio Carrillo Ledesma, Et alii

Page 48: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

matica Player que es gratuito y puede descargarse en la página de WolframResearch.

3.2 Maple

Maple (véase [75]) es un programa orientado a la resolución de problemasmatemáticos, capaz de realizar cálculos simbólicos, algebraicos y de álgebracomputacional. Fue desarrollado originalmente en 1981 por el Grupo de Cál-culo Simbólico en la Universidad de Waterloo en Waterloo, Ontario, Canadá.Desde 1988 ha sido mejorado y vendido comercialmente por Waterloo MapleInc. (también conocida como Maplesoft), compañía canadiense con sede enla misma localidad. La última versión es Maple 2018.Maple se basa en un pequeño núcleo escrito en C, que proporciona el

lenguaje Maple. Maple es un lenguaje de programación interpretado. Lasexpresiones simbólicas son almacenadas en memoria como grafos dirigidossin ciclos. La mayoría de funcionalidades son proporcionadas por librerías:unas escritas en lenguaje Maple, con acceso a su código fuente; pero tambiénhace uso de otras librerías bien conocidas como las NAG, ATLAS o GMP.Estas son algunas de las características mas relevantes del Software:

� Soporta el desarrollo de cálculos matemáticos de manera simbólica ynumérica con precisión arbitraria

� Librerías para funciones matemáticas básicas y avanzadas

� Manejo de números complejos y sus diversas operaciones

� Aritmética, álgebra, operaciones para desarrollo de polinomios multi-variados

� Límites, series y sucesiones

� Bases Groebner

� Álgebra diferencial

� Herramientas para la manipulación de matrices incluyendo matricesdispersas

� Herramientas para grá�cos y animaciones matemáticas

[email protected] 46 Antonio Carrillo Ledesma, Et alii

Page 49: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Sistemas de solución para ecuaciones diferenciales en sus diferentes va-riedades (ODE, DAE, PDE, DDE)

� Herramientas simbólicas y numéricas para cálculo discreto y continuo,incluye integración de�nida e inde�nida, diferenciación

� Optimización con restricciones y sin restricciones

� Herramientas estadísticas que incluyen adaptación a diversos modelos,pruebas de hipótesis y distribuciones probabilísticas

� Herramientas para la manipulación, visualización y análisis de datos

� Herramientas para la resolución de problemas en el campo de la proba-bilidad

� Herramientas para el uso de series de tiempo

� Conexión a datos en línea, recopilados para aplicaciones �nancieras yeconómicas

� Herramientas para cálculos �nancieros, incluyendo: bonos, anualidadesetc.

� Cálculos y simulaciones para procesos aleatorios

� Herramientas para el procesamiento de señales

� Herramientas para el desarrollo de sistemas lineales y no lineales

� Incluye matemáticas discretas

� Herramientas para visualizar y analizar grá�cos

� Importación y exportación de �ltros para datos, imágenes, sonido, CADy documentos

� Procesamiento de texto, incluyendo formulas matemáticas

� Herramientas para agregar interfaces de usuario para el desarrollo decálculos y aplicaciones

� Herramientas para conectarse a SQL, Java, .NET, C++, Fortran yHTTP

[email protected] 47 Antonio Carrillo Ledesma, Et alii

Page 50: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Herramientas para la generación de códigos en lenguajes C, C++, For-tran, Java, JavaScript, Julia, Matlab, Perl, Python, R y Visual Basic.

� Herramientas para programación paralela.

3.3 Maxima

El sistema de álgebra computacional Maxima (véase [77]) es un motor decálculo simbólico escrito en lenguaje Lisp publicado bajo licencia GNU GPL(véase apéndice 10.1). Cuenta con un amplio conjunto de funciones parahacer manipulación simbólica de polinomios, matrices, funciones racionales,integración, derivación, manejo de grá�cos en 2D y 3D, manejo de númerosde coma �otante muy grandes, expansión en series de potencias y de Fourier,entre otras funcionalidades. Además tiene un depurador a nivel fuente parael código de Maxima.Maxima esta basado en el sistema original de Macsyma desarrollado por

MIT en los años 70. Es bastante �able, tiene un buen recolector de basura,por lo que no desperdicia memoria. Viene con cientos de auto pruebas (test-suite). Maxima funciona en modo consola, sin embargo incluye las intefacesgrá�cas xMaxima y wxMaxima para facilitar su uso.El editor de texto cientí�co GNU TeXmacs también puede ser usado para

facilitar una interfaz grá�ca de usuario para Maxima. Otras opciones son,imaxima, y el modo interactivo de Emacs. También puede hacer uso de la in-terfaz grá�ca de SageMath, que facilita su integración con otras herramientasCASE.Como esta escrito en Common Lisp, es fácilmente accesible para la pro-

gramación, desde la capa inferior de Lisp puede llamarse a Maxima.Como la mayoría de sistemas algebraicos, Maxima se especializa en ope-

raciones simbólicas. También ofrece capacidades numéricas especiales, comoson los números enteros y racionales, los cuales pueden crecer en tamaño sólolimitado por la memoria de la máquina; y números reales en coma �otante,cuya precisión puede ser arbitrariamente larga (b�oat). Permite el manejode expresiones simbólicas y numéricas, y además produce resultados con unaalta precisión.Para cálculos intensivos en reales de coma �otante, Maxima ofrece la posi-

bilidad de generar código en otros lenguajes de programación, como Fortran,que quizá se ejecuten de manera más e�ciente.

[email protected] 48 Antonio Carrillo Ledesma, Et alii

Page 51: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Maxima es un sistema de propósito general; como tal los cálculos espe-ciales como la factorización de números grandes, la manipulación de poli-nomios extremadamente grandes, etc. son normalmente realizados de formamás e�ciente y rápida en sistemas especializados.

� Números

� Listas, arreglos y Matrices

� Transformaciones algebraicas

� Resolución de ecuaciones

� Límites, derivadas e integrales

� Conjuntos

� Vectores y campos

� Grá�cos

� Ecuaciones diferenciales

� Probabilidades y análisis de datos

� Interpolación numérica

� Inecuaciones racionales

� Ecuaciones diferenciales ordinarias

� Sistemas de ecuaciones diferenciales ordinarias

� Series de potencias

� Transformada de Laplace

� Ecuaciones recurrentes

� Generacion de expresiones en Tex

� Programación en Maxima

[email protected] 49 Antonio Carrillo Ledesma, Et alii

Page 52: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

3.4 Ventajas, Desventajas y Carencias

Notemos que el tener múltiples herramientas para realizar operaciones ele-mentales y avanzadas de cálculo simbólico, es en sí misma una gran ventaja.Para los centros universitarios y usuarios ocasionales, las herramientas deSoftware libre son una herramienta invaluable. En el caso de empresas ousuarios avanzados que requieren usar opciones especializadas o generadaspor terceros, Maple y Mathematica son grandes herramientas de trabajo.Pero hay que hacer notar que:

� Funcionalidades básicas: Todos los paquetes implementan las funciona-lidades básicas, ya que todos llevan años desarrollándose

� Funcionalidades especializadas: Mathematica y Maple tienen imple-mentadas cientos de funciones especializadas que pueden ser muy útilespara usuarios avanzados, pero rara vez son usados por los usuarios nove-les o cotidianos

� Grá�cos e imágenes: Todos los paquetes permiten hacer grá�cos en 2Dy 3D. Pero Mathematica y Maple poseen prestaciones de alto desem-peño para los usuarios �nales

� Potencia del lenguaje de programación

� Fiabilidad: En los paquetes en desarrollo son comunes las caídas delprograma, pero Maple y Mathematica destacan por ser más �ables

� Información: Maple y Mathematica son paquetes con una abundantebibliografía y la propia ayuda del programa

� Facilidad de Manejo: Ninguno de los programas presenta grandes di�-cultades a la hora de su utilización

� Costo: El costo de las diversas versiones de Maple y Mathematicasupera los dos mil pesos por licencia estudiantil, en el caso del Softwarelibre, los paquetes se pueden descargar de la red sin más costo que elacceso a Internet

[email protected] 50 Antonio Carrillo Ledesma, Et alii

Page 53: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

3.5 Desde la Nube

Existen diferentes servicios Web3 que permiten editar, compilar y ejecutarcódigo de diversos lenguajes y paquetes desde el navegador, esto en aras deque los estudiantes y profesores que cuenten con algún sistema de acceso ared y un navegador puedan programar en los más diversos lenguajes, IDEs yTerminales sin hacer instalación alguna en su equipo de cómputo, tableta oteléfono celular.Algunos ejemplos de estos servicio son:

� https://mathics.angusgri¢ th.com/ Clon de Mathematica

� http://www.wolframalpha.com/

� http://www.quickmath.com/

� http://maxima-online.org

3Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 51 Antonio Carrillo Ledesma, Et alii

Page 54: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

4 Paquetes Estadísticos

Los paquetes estadísticos, son programas matemáticos que ofrecen un en-torno de desarrollo integrado (IDE) con un lenguaje de programación propiocon un amplio abanico de herramientas la lectura, manipulación, análisis ygra�cación de datos estadísticos. Entre sus prestaciones básicas destacan:

� Análisis de datos mediante operadores para cálculos sobre arreglos,matrices y/o Tablas

� Tablas Cruzadas

� Reordenamiento de Datos

� Análisis de la Varianza (ANOVA)

� Frecuencias

� Estadística Descriptiva

� Estadística Lineal

� Estadística no Lineal

� Estadística Biestadística

� Pruebas Estadísticas Clásicas

� Análisis de Serie de Temporales

� Modelos de Regresión

� Clasi�cación

� Fiabilidad

� Categorías

� Clustering

� Validación de Datos

� Tendencias

[email protected] 52 Antonio Carrillo Ledesma, Et alii

Page 55: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Grá�cos y Diagramas

Actualmente, los paquetes estadísticos usados en las carreras de Actua-ría, Ciencias de la Computación, Matemáticas, Matemáticas Aplicadas y loscursos de Mátemáticas de las demás carreras de la Facultad (véase [2]) son:

� SPSS (véase [43])

� R (véase [46])

� SAS (véase [42])

� PSPP (véase [44])

� EViews (véase [68])

� Gretel (véase [69])

� Stata (véase [67])

� Statgraphics (véase [71])

� Statistica (véase [72])

� Systat (véase [73])

� Vensim (véase [74])

� Maple (véase [75])

� Mathematica (véase [76])

� MATLAB (véase [35])

� FreeMat (véase [38])

� Octave (véase [39])

� Maxima (véase [77])

� Scipy (véase [40])

[email protected] 53 Antonio Carrillo Ledesma, Et alii

Page 56: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

En el presente trabajo nos centraremos en los tres primeros paquetes,pero el resto de los paquetes son muy usados ya sea por sus características,facilidad de uso o la accesibilidad del paquete para los estudiantes. Cabeaclarar, que los paquete SPSS y SAS tienen un alto costo monetario, en elcaso de SAS existe una versión estudiantil gratuita y SPPS hay una versiónde prueba.

4.1 SPSS

El paquete SPSS (véase [43]) es un programa estadístico informático muyusado en las ciencias sociales y las empresas de investigación de mercado.Originalmente SPSS fue creado como el acrónimo de «Statistical Packagefor the Social Sciences» aunque también se ha referido como «StatisticalProduct and Service Solutions» . Sin embargo, en la actualidad la parteSPSS del nombre completo del paquete es IBM SPSS4 el cual no es acrónimode nada.Es uno de los programas estadísticos más conocidos teniendo en cuenta

su capacidad para trabajar con grandes bases de datos y una sencilla interfazpara la mayoría de los análisis. En las últimas versiones de SPSS se podíanrealizar análisis con millones de registros y miles de variables. El programaconsiste en un módulo base y módulos anexos que se han ido actualizandoconstantemente con nuevos procedimientos estadísticos. Cada uno de estosmódulos se compra por separado. SPSS soporta hacer interfase con lenguajesde programación como Python, R, C, C++, Visual Basic, .NET

Existe una versión incipiente que pretende ser un reemplazo libre paraSPSS, se llama PSPP (véase [44]) con una interfaz llamada PSPPire (véase[45]), esta es aplicación de Software libre para el análisis de datos multi-plataforma, se presenta en modo grá�co y esta escrita en el lenguaje de pro-gramación C. Usa la biblioteca cientí�ca GNU para sus rutinas matemáticas,y plotutils para la generación de grá�cos. PSPP puede importar formatos de:Gnumeric, OpenDocument, hojas de Excel, bases de datos Postgres, valoresseparados por coma y archivos ASCII. Puede exportar archivos en formatoSPSS y archivos ASCII. Algunas de las bibliotecas usadas por PSPP puedenser accedidas vía programación.

4Existe una versión gratuita del paquete IBM SPSS para todo aquel que desee conocerel producto y puede ser descargada de su página Web.

[email protected] 54 Antonio Carrillo Ledesma, Et alii

Page 57: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

4.2 R

El paquete R (véase [46]) es un lenguaje y entorno de programación paraanálisis estadístico y grá�co. Se trata de un proyecto de Software libre,resultado de la implementación GNU del premiado lenguaje S. SPSS, R yS-Plus � versión comercial de S� son, probablemente, los tres lenguajes másutilizados en investigación por la comunidad estadística, siendo además muypopulares en el campo de la investigación biomédica, la bioinformática y lasmatemáticas �nancieras. A esto contribuye la posibilidad de cargar diferentesbibliotecas o paquetes con �nalidades especí�cas de cálculo o grá�co.Además, R puede integrarse con distintas bases de datos y existen bi-

bliotecas que facilitan su utilización desde lenguajes de programación inter-pretados como Perl y Python. R soporta hacer interfase con lenguajes deprogramación como C, C++ y Fortran.Otra de las características de R es su capacidad grá�ca, que permite

generar grá�cos con alta calidad. R posee su propio formato para la do-cumentación basado en LaTeX (véase [34]). R también puede usarse comoherramienta de cálculo numérico, campo en el que puede ser tan e�caz comootras herramientas especí�cas tales como FreeMat, GNU Octave y su equi-valente comercial, MATLAB. Se ha desarrollado una interfaz RWeka parainteractuar con Weka (véase [78]) que permite leer y escribir �cheros en elformato ar¤ y enriquecer R con los algoritmos de minería de datos de dichaplataforma.Los ambientes de desarrollo integrado para R existen como proyectos

externos, como pueden ser editores � que sólo soportan la sintaxis� , los IDEs(Integrate Development Environments) y los GUI (Graphical User Interfaces)� permiten editar, ejecutar y depurar código desarrollado para R� . Hay másde 20 proyectos activos, dos de los más conocidos son Tinn-R (véase [79]) yRStudio (véase [80]).

4.3 SAS

SAS Institute es uno de los principales fabricantes de Business IntelligenceSoftware (véase [81]). Su nombre es el acrónimo de «Statistical Analysis Sys-tems» (sistemas de análisis estadístico) aunque, posteriormente, al extendersu oferta de productos más allá de los meramente dedicados al análisis es-tadístico, pasó a utilizarlo como nombre propio. El primer producto de SASInstitute fue el SAS Software Package (véase [42]), un lenguaje de progra-

[email protected] 55 Antonio Carrillo Ledesma, Et alii

Page 58: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

mación para el análisis estadístico de datos en mainframes de IBM.Actualmente, este lenguaje de programación, llamado SAS Base, es el

motor de una serie de herramientas para la dirección estratégica de empresas,la gestión del riesgo �nanciero, el desarrollo de modelos de minería de datos,etc.El lenguaje SAS opera principalmente sobre tablas de datos: puede leer-

las, transformarlas, combinarlas, resumirlas, crear informes a partir de ellas,etc. El núcleo del lenguaje (conocido habitualmente como SAS Base) incluye:

� Pasos data que permiten realizar operaciones sobre las �las de un con-junto de datos.

� Procedimientos de manipulación de datos que permiten ordenar tablas,enlazarlas, etc.

� Un intérprete de SQL.

� Un super lenguaje de macros.

SAS Institute comercializa paquetes de procedimientos adicionales parael análisis estadístico de los datos, tales como:

� SAS/IML, módulo que implementa un lenguaje alternativo similar aOctave, MATLAB o R.

� SAS/STAT, un módulo con procedimientos para realizar determinadosanálisis estadísticos (regresiones, etc.)

� SAS/ETS para el análisis estadístico de series temporales

� SAS/OR para la resolución de problemas de investigación operativa

� SAS/GRAPH para generar grá�cos

Además, SAS Institute5 ha desarrollado aplicaciones, denominadas inter-fases, tales como SAS Enterprise Guide, SAS Data Integration Studio, SASEnterprise Miner y otras que generan código SAS para aplicaciones especí�-cas: ETL, minería de datos, etc.

5Existe una versión de SAS llamada Free SAS Software para uso académico, en la queuna vez registrado el usuario, se tiene acceso al programa, documentación y una comunidaden línea con acceso a una gran cantidad de las aplicaciones de SAS.

[email protected] 56 Antonio Carrillo Ledesma, Et alii

Page 59: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

4.4 Ventajas, Desventajas y Carencias

Las organizaciones actuales, manejan una gran cantidad de información,la cual puede o no estar dispersa en sus múltiples sistemas operacionales.Además, en un mercado tan competitivo como el actual, las organizacionesfocalizan sus recursos en las estrategias más adecuadas para conducir a lacompañía hacia el éxito. Los paquetes estadísticos pueden ayudar a conseguireste objetivo, completando la inversión ya realizada en sistemas operacionalesy el hecho de usar paquetes estadísticos que tengan integrado el manejo delas grandes bases de datos ofrece bene�cios adicionales.De los paquetes mencionados, SAS ofrece soluciones en forma de una

suite completa para la gestión de datos y Software analítico para encontrarel llamado poder del conocimiento. En general, los paquetes estadísticosproveen un ambiente integrado de análisis de datos, de la gran cantidadde Software existente, la determinación de cual usar en un caso particular,depende de la cantidad de datos y la forma de acceder a ellos.Pese a existir versiones de prueba para SPSS o estudiantiles para SAS,

por el tipo de licencia6 del paquete, no se pueden instalar en los equipos de laUNAM, pues violaría la licencia de dichos paquetes. El costo de las versionescompletas es prohibitivo para la gran mayoría de las instituciones educativas,en particular para la UNAM. Por ello, el resto de los paquetes estadísticoslibres ofrecen una ventaja competitiva, al permitirle al profesor y sus es-tudiantes contar con versiones completas y funcionales en las que puedenser aplicados los conocimientos adquiridos en los diversos cursos de las car-reras de Actuaría, Ciencias de la Computación, Matemáticas, MatemáticasAplicadas y los cursos de Mátemáticas de las demás carreras de la Facultad,dejando el manejo especializado de paquetes como SAS y SPSS a cursos avan-zados o para cuando el educando realice sus prácticas profesionales. De estaforma se pueden preparar a los estudiantes para aplicar sus conocimientosal egresar en diversas áreas de las carreras de Actuaría, Ciencias de la Com-putación, Matemáticas, Matemáticas Aplicadas y los cursos de Mátemáticasde las demás carreras de la Facultad y con pocos conocimientos técnicosadicionales puedan laborar en pequeñas, medianas y grandes empresas.Por otro lado existe Anaconda, una Suite de código abierto que abarca

6Estas versiones de prueba o estudiantiles piden que se instale en el equipo del estudian-te o académico que se registra para el uso del paquete, no esta permitida su instalación enmúltiples equipos o en equipos compartidos por varios estudiantes, además caduca en uncorto período de tiempo.

[email protected] 57 Antonio Carrillo Ledesma, Et alii

Page 60: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

una serie de aplicaciones, librerías y conceptos diseñados para el desarrollode la Ciencia de datos con Python. En líneas generales Anaconda Distrib-ution es una distribucción de Python que funciona como un gestor de en-torno, un gestor de paquetes y que posee una colección de más de 720 pa-quetes de código abierto. Anaconda Distribu-tion se agrupa en 4 sectoreso soluciones tecnológicas, Anaconda Navigator, Anaconda Project, Las li-brerías de Ciencia de datos y Conda. Todas estas se instalan de maneraautomática y en un procedimiento muy sencillo. Para más información ver:https://www.anaconda.com/.También esta SageMath, una Suite de código abierto bajo la licencia GPL

de Software matemático como: NumPy, SciPy, matplotlib, Sympy, Maxi-ma, GAP, FLINT, R, entre otros. Además combina acceso a una poderosacombinación del lenguaje basada en Python o directamente vía interfaceso Wrappers. La misión del proyecto es crear una alternativa de Softwarelibre a Magma, Maple, Mathematica y Matlab. Para más información ver:http://www.sagemath.org/.

4.5 Desde la Nube

Existen diferentes servicios Web7 que permiten editar, compilar y ejecutarcódigo de diversos lenguajes y paquetes desde el navegador, esto en aras deque los estudiantes y profesores que cuenten con algún sistema de acceso ared y un navegador puedan programar en los más diversos lenguajes, IDEs yTerminales sin hacer instalación alguna en su equipo de cómputo, tableta oteléfono celular.Algunos ejemplos de estos servicios son:

� Para R https://nclab.com/free-portal/

� Para R https://cdn.datacamp.com/dcl-react-prod/example.html

7Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 58 Antonio Carrillo Ledesma, Et alii

Page 61: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

5 Paquetes O�máticos

En la actualidad, los llamados paquetes o�máticos, no son otra cosa queprogramas de cómputo integrado, que permiten automatizar multiples ta-reas que ayudan a idear, crear, manipular, transmitir, almacenar informaciónnecesaria en una o�cina. Entre sus prestaciones básicas destacan:

� Hojas de Cálculo

� Bases de Datos

� Herramientas de Presentación y Multimedia

� Procesamiento de Imágenes

� Procesamiento de Textos

Existe una gran cantidad de paquetes o�máticos, que van, desde los ins-talados hasta los asequibles a través de la Web, entre los más comunes ten-emos:

� Microsoft O¢ ce (véase [24])

� Libre O¢ ce (véase [26])

� OpenO¢ ce (véase [25])

� Calligra (véase [28])

� Google Docs (véase [27])

� Lotus Symphony (véase [33])

� Only O¢ ce (véase [29])

� WPS O¢ ce (véase [30])

� O¢ ce Online (véase [31])

� Collabora (véase [32])

[email protected] 59 Antonio Carrillo Ledesma, Et alii

Page 62: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

5.1 Hojas de Cálculo

Es un Software a través del cual se pueden usar datos numéricos y realizarcálculos automáticos de números que estan en una tabla. También es posibleautomatizar cálculos complejos al utilizar una gran cantidad de parámetrosy al crear tablas llamadas hojas de trabajo.Las hojas de cálculo permiten a los usuarios elaborar tablas y formatos

que incluyan cálculos matemáticos mediante fórmulas, las cuales pueden usaroperadores matemáticos como son: + (suma), - (resta), * (multiplicación), /(división) y ^(exponenciación), además de poder utilizar elementos denomi-nados funciones como por ejemplo: Suma(), Promedio(), Buscar(), etc.Así mismo las hojas de cálculo son útiles para gestionar Listas o Bases

de Datos; es decir Ordenar y Filtrar la información. Por lo tanto, la hojade cálculo es una herramienta multiuso que sirve tanto para actividades deo�cina, que implican la organización de grandes cantidades de datos, comopara niveles estratégicos y de toma de decisiones al crear representacionesgrá�cas de la información sintetizada.Existe una gran variedad de paquetes para el manejo hojas de cálculo �

los cuales existen tanto en las plataformas de Windows, Linux, Mac� , entrelos que destacan:

� Excel: Paquete de Microsoft O¢ ce (véase [24])

� Calc: Paquete Libre O¢ ce (véase [26])

� OpenCalc: Paquete OpenO¢ ce (véase [25])

� Spread Sheet: Google Docs (véase [27])

� Sheets: Paquete Calligra (véase [28])

Por otro lado, Microsoft VBA (Visual Basic for Applications) es el lenguajede macros de Microsoft Visual Basic que se utiliza para programar aplica-ciones Windows y que se incluye en varias aplicaciones Microsoft. VBA per-mite a usuarios y programadores ampliar la funcionalidad de programas dela suite Microsoft O¢ ce. Visual Basic para Aplicaciones es un subconjuntocasi completo de Visual Basic 5.0 y 6.0.Microsoft VBA viene integrado en aplicaciones de Microsoft O¢ ce, como

Word, Excel, Access y PowerPoint. Prácticamente cualquier cosa que sepueda programar en Visual Basic 5.0 o 6.0 se puede hacer también dentro

[email protected] 60 Antonio Carrillo Ledesma, Et alii

Page 63: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

de un documento de O¢ ce, con la sola limitación que el producto �nal no sepuede compilar separadamente del documento, hoja o base de datos en quefue creado; es decir, se convierte en una macro (o más bien súper macro).Esta macro puede instalarse o distribuirse con sólo copiar el documento,presentación o base de datos.Su utilidad principal es automatizar tareas cotidianas, así como crear

aplicaciones y servicios de bases de datos para el escritorio. Permite accedera las funcionalidades de un lenguaje orientado a eventos con acceso a la APIde Windows.Al provenir de un lenguaje basado en Basic tiene similitudes con lenguajes

incluidos en otros productos de o�mática como Libre O¢ ce y Openo¢ ce, perono hay compatibilidad entre productos.Así también, es común que en los cursos de la carreras de Actuaría, Cien-

cias de la Computación, Matemáticas, Matemáticas Aplicadas y los cursos deMátemáticas de las demás carreras de la Facultad, se requiera hacer análi-sis estadísticos de datos, esto se realiza mediante el uso de complementosde Excel � Herramientas para análisis y Solver� . En donde al usar estasherramientas, se proporcionan los datos y parámetros para cada análisis y laherramienta utilizará las funciones de macros estadísticas o técnicas corres-pondientes para realizar los cálculos y mostrar los resultados en una tablade resultados. Algunas herramientas generan grá�cos además de tablas deresultados.Entre las herramientas para análisis se incluyen:

� Análisis de Fourier

� Correlación

� Covarianza

� Estadística descriptiva

� Generación de números aleatorios

� Histograma

� Jerarquía y percentil

� Media móvil

� Muestreo

[email protected] 61 Antonio Carrillo Ledesma, Et alii

Page 64: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Prueba t

� Prueba t para varianzas de dos muestras

� Prueba z

� Regresión

� Suavización exponencial

� Varianza

El acceso a tablas de Excel usando Visual Basic for Applications, ademásdel uso de los complementos de Excel � Herramientas para análisis y Solver�para manejo de datos, ha generalizado el uso de los paquetes de MicrosoftO¢ ce, esto redunda en el uso de dicha suite en una importante cantidad decursos dentro de las carreras de la Facultad de Ciencias.

5.2 Bases de Datos

Una parte importante de la Modelación Matemática es trabajar con datosde prueba, lo más cercano posible a la realidad. Ello implica que, es nece-sario contar con mecanismos para almacenar, editar y consultar una cantidadgrande de datos, esto se logra usando las bases de datos.Existe una gran variedad de paquetes para el manejo de base de datos

� los cuales se ejecutan en las plataformas de Windows, Linux, Mac� , entrelos que destacan:

� Access en Microsoft O¢ ce para Windows (véase [24])

� Microsoft SQL Server (véase [94])

� PostgreSQL (véase [95])

� MySQL (véase [96])

� MongoBD (véase [97])

En donde, entendemos a un Sistema de Gestión de Bases de Datos (SGBD)como un conjunto de programas que permiten el almacenamiento, modi�-cación y extracción de la información en una base de datos, además de pro-porcionar herramientas para añadir, borrar modi�car y analizar los datos.

[email protected] 62 Antonio Carrillo Ledesma, Et alii

Page 65: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Los usuarios pueden acceder a la información usando herramientas especí�-cas de interrogación y de generación de informes, o bien mediante aplicacionesdiseñadas para este �n.Los SGBD también proporcionan métodos para mantener la integridad

de los datos, para administrar el acceso de usuarios a los datos y recuperarla información si el sistema se corrompe. Permite presentar la informaciónde la base de datos en varios formatos. La mayoría de los SGBD incluyen ungenerador de informes. También puede incluir un módulo grá�co que permitapresentar la información con grá�cos y diagramas.Hay muchos tipos de SGBD distintos según manejen los datos y muchos

tamaños distintos según funcionen sobre ordenadores personales y con pocamemoria a grandes sistemas que funcionan en mainframes con sistemas dealmacenamiento especiales.Generalmente se accede a los datos mediante lenguajes de interrogación8,

lenguajes de alto nivel que simpli�can la tarea de construir las aplicaciones.También simpli�can la interrogación y la presentación de la información.Un SGDB permite controlar el acceso a los datos, asegurar su integridad,gestionar el acceso concurrente a ellos, recuperar los datos tras un fallo delsistema y hacer copias de seguridad.El uso generalizado de los paquetes de Microsoft O¢ ce, en particular el

acceso a el paquete Access mediante tablas de Excel usando Visual Basicfor Applications, además del uso de los complementos de Excel para manejode datos, hace que sean propicios para que un importante número de cursosdentro de las carreras de la Facultad de Ciencias hagan uso extensivo dedicha suite.

Instalación de Manejadores de Bases de Datos e IDEs en DebianGNU/Linux Existen diversas versiones de paquetes para manejar basesde Datos en Linux, para instalar las más comunes en Debian GNU/Linux esnecesario hacer:

# apt install apache2 libapache2-mod-evasive apachetop# apt install php libapache2-mod-php php-mysql php-gd ph-

pmyadmin

8Lenguajes tipo SQL (Structured Query Languaje) que es un lenguaje de consultaestructurada que da acceso a un sistema de gestión de bases de datos.

[email protected] 63 Antonio Carrillo Ledesma, Et alii

Page 66: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install mysql-common mysql-client mysql-server mytopmysql-admin ferret mysql-workbench mysql-workbench-data my-cli# apt install postgresql postgresql-client postgresql-doc postgresql-

contrib pgcli# apt install sqlite3 sqlite3-doc sqlitebrowser# apt install mongodb mongodb-clients mongodb-server

5.3 Herramientas de Presentación y Multimedia

El programa líder del mercado es Microsoft PowerPoint (véase [24]), estees un programa de presentación desarrollado por la empresa Microsoft parasistemas operativos Microsoft Windows y Mac OS, ampliamente usado endistintos campos como la enseñanza, negocios, etc. Pero todos los paqueteso�máticos tienen una herramienta pera realizar presentaciones, en algunoscasos son altamente compatibles con la desarrollada por Microsoft.Estos programas se han diseñado para hacer presentaciones con texto

esquematizado, animaciones de texto e imágenes prediseñadas o importadasdesde imágenes de la computadora. Se le pueden aplicar distintos diseñosde fuente, plantilla y animación. Este tipo de presentaciones suelen ser másprácticas que las de los paquetes de edición de textos.Las herramientas de Presentación vienen integrados en los paquetes o�má-

ticos como un elemento más, que puede aprovechar las ventajas que le ofrecenlos demás componentes del paquete para obtener un resultado óptimo.En el caso de PowerPoint, se puede usar como complemento para la edi-

ción de texto cientí�co a MathType (véase [82]) para Microsoft O¢ ce, este esun paquete adicional pero es uno de los más usados en cuanto a la tipografíamatemática.Por otro lado, esta ganando terreno en la Facultad de Ciencias el uso

de Beamer (véase [93]), el cual es una clase de LaTeX (véase [34]) parala creación de presentaciones. Este funciona con pd�atex, dvips, LyX entreotros. Al estar basado en LaTeX, Beamer es especialmente útil para prepararpresentaciones en las que es necesario mostrar gran cantidad de expresionesmatemáticas. En los últimos semestres se ha hecho una amplia difusión a lospaquetes que usan a LaTeX como base, pues son ampliamente usados por lacomunidad cientí�ca mundial.

[email protected] 64 Antonio Carrillo Ledesma, Et alii

Page 67: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

5.4 Procesamiento de Imágenes

Existe una gran cantidad de usos para los programas de edición de imágenes,pero en las carreras de la Facultad de Ciencias, la edición y manipulación degrá�cos vectoriales9 es común. Es por ello que la gran mayoría de los paquetesde edición y manipulación de imágenes no proporcionan las herramientasnecesarias para procesar adecuadamente imágenes vectoriales. En caso deproveer dichas herramientas, muchas de ellas son de uso tedioso, pues estandiseñadas para uso ocasional.Para subsanar este hecho, existen herramientas y editores hechos a ex-

profeso, para permitir la edición y manipulación de grá�cos vectoriales en loscuales su procesamiento es una tarea sencilla de realizar. Existe una granvariedad de paquetes para edición de grá�cos vectoriales � los cuales existentanto en las plataformas de Windows, Linux, Mac� , entre los que destacan:

� Adobe InDesign

� Scribus

� Inkscape

� Gravit

� Vectr

� Libre O¢ ce Draw

� SK1

� Maya

� Blender

� Autodesk 3Ds Max

� Gimp9Una imagen vectorial es una imagen digital formada por objetos geométricos depen-

dientes, cada uno de ellos de�nido por atributos matemáticos de forma, posición, etc. Yson completamente diferentes a las imágenes de mapa de bits. El interés principal de losgrá�cos vectoriales es poder ampliar el tamaño de la imagen a voluntad sin sufrir perdidade calidad que sufren los mapas de bits. Pero todos los ordenadores traducen los grá�cosvectoriales a mapas de bits para poderlos representar en la pantalla, impresora, etc.

[email protected] 65 Antonio Carrillo Ledesma, Et alii

Page 68: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Corel Photo-Paint

� Adobe Photoshop

� CorelDRAW

� Adobe illustrator

� Photoshop

5.5 Procesamiento de Textos

Existe una gran cantidad de usos para los programas de edición de texto, peroen las carreras de la Facultad de Ciencias, la edición de textos con tipografíacientí�ca es común. Es por ello que la gran mayoría de los procesadores detextos no proporcionan las herramientas necesarias para incluir en el textofórmulas y/o notación matemática. En caso de proveer dichas herramientas,muchas de ellas son de uso tedioso, pues estan diseñadas para uso ocasional.Para subsanar este hecho, existen herramientas y editores hechos a ex-

profeso, para permitir la edición de textos cientí�cos en los cuales numerarecuaciones, usar tipografía matemática, manipular bibliografía y referenciascruzadas es una tarea sencilla de realizar.Existe una gran variedad de paquetes para la edición de textos cientí�cos

� los cuales existen tanto en las plataformas de Windows, Linux, Mac� ,entre los que destacan:

� Editor de ecuaciones integrado en Word en Microsoft O¢ ce (véase [24])

� MathType para Word en Microsoft O¢ ce para Windows (véase [82])

� Scienti�c WorkPlace LaTex para Windows (véase [83])

� Gummi LaTeX (véase [84])

� Kile LaTeX (véase [85])

� LED LaTeX (véase [86])

� LyX LaTeX (véase [87])

� Texmaker LaTeX (véase [88])

[email protected] 66 Antonio Carrillo Ledesma, Et alii

Page 69: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� TeXnicCenter LaTeX (véase [89])

� TextPad LaTeX (véase [90])

� TeXstudio LaTeX (véase [91])

� WinEdt LaTeX (véase [92])

� Formula de Libre O¢ ce (véase [26])

� Math de OpenO¢ ce (véase [25])

� Formula de Calligra (véase [28])

Salvo para los productos de Microsoft O¢ ce, el resto de los paquetestienen una curva de aprendizaje de media a alta, pero en contraste permitendesarrollar textos y grá�cos con tipografía cientí�ca de alta calidad. Enla Facultad de Ciencias, desde hace ya varios años, semestre a semestre seimparten cursos a estudiantes, tesistas y profesores de LaTeX y el manejo deuno o mas editores que lo soportan; una cantidad importante de ellos se hanimpartido en las Aulas y Talleres del Departamento de Matemáticas en elTlahuizcalpan, además de contar con el repositorio o�cial de LaTeX (véase[99]) dentro de la Facultad.

Instalación de Procesadores de Texto e IDEs en Debian GNU/LinuxExisten diversas versiones de paquetes para procesar texto en Linux, parainstalar las más comunes en Debian GNU/Linux es necesario hacer:

# apt install science-typesetting texlive-science texstudio pan-doc texmaker inkscape kile gummi texstudio enchant texlive-latex-base texlive-latex-recommended latexila lyx medit texworkstexlive-full latexila libreo¢ ce calligra abiword evince gnumerickexi texlive-extra-utils pdf-viewer msttcorefonts djview4 okulargv zathura di¤pdf mupdf pdf-presenter-console evince xpdf okularpoppler-utils atril pdftk pdfgrep xpdf-utils pdfcrack qpdf pdfsampdfshu­ er htmldoc pdf2svg pdfmod pdfposter pdfchain pdf2djvugpdftext catdoc chktex cxref cxref-doc latex2rtf antiword uno-conv a2ps bookletimposer qpdfview rst2pdf xchm chm2pdf arch-mage qpdfview-ps-plugin qpdfview qpdfview-djvu-plugin kchmviewerispanish wspanish texlive-lang-spanish myspell-es myspell-en-ustranslate-shell

[email protected] 67 Antonio Carrillo Ledesma, Et alii

Page 70: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Aprender a Trabajar en LaTeX En la red existen múltiples sitios espe-cializados y una amplia bibliografía para aprender a programar cada uno delos distintos aspectos de LaTeX, nosotros hemos seleccionado diversos textosque ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/O�mática/Latex/

5.6 Desde la Nube

Existen diferentes servicios Web10 que permiten editar, compilar y generar elarchivo PDF o DVI desde el navegador, esto en aras de que los estudiantesy profesores que cuenten con algún sistema de acceso a red y un navegadorpuedan trabajar en LaTeX sin hacer instalación alguna en su equipo de cóm-puto, tableta o teléfono celular.Algunos ejemplos de estos servicio son:

� Para LaTex https://es.sharelatex.com/

� Para LaTex https://papeeria.com/

� Para LaTex https://www.overleaf.com/

� Para LaTex https://www.authorea.com/

� Para LaTex https://latexbase.com/

� Para LaTex https://www.codecogs.com/latex/eqneditor.php

10Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar al navegador.

[email protected] 68 Antonio Carrillo Ledesma, Et alii

Page 71: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

6 Lenguajes de Programación y Entornos deDesarrollo

Un lenguaje de programación es un lenguaje formal que especi�ca una seriede instruciones para que una computadora produzca diversas clases de datos.Esta formado por un conjunto de símbolos y reglas sintácticas y semánticasque de�nen su estructura y el signi�cado de sus elementos y expresiones.Existe una gran variedad de lenguajes de programación y su grado de uso

depende de diversos factores, en la Facultad de Ciencias se estudian algunasdecenas de ellos, entre los que destacan:

� Java

� Python

� C y C++

6.1 Java

Java (véase [7]) es un lenguaje de programación de propósito general, con-currente, orientado a objetos, que fue diseñado especí�camente para tenertan pocas dependencias de implementación como fuera posible. Su inten-ción es permitir que los desarrolladores de aplicaciones «escriban el pro-grama una vez y lo ejecuten en cualquier dispositivo (Write Once, Run Any-where» o WORA)» , lo que quiere decir que el código que es ejecutado enuna plataforma no tiene que ser recompilado para ejecutarse en otra.El lenguaje de programación Java fue originalmente desarrollado por

James Gosling, de Sun Microsystems (constituida en 1982 y posteriormenteadquirida el 27 de enero de 2010 por la compañía Oracle), y publicado en 1995como un componente fundamental de la plataforma Java de Sun Microsys-tems. Su sintaxis deriva en gran medida de C y C++, pero tiene menosutilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Javason compiladas a bytecode (clase Java), que puede ejecutarse en cualquiermáquina virtual Java (JVM) sin importar la arquitectura de la computadorasubyacente.La compañía Sun desarrolló la implementación de referencia original para

los compiladores de Java, máquinas virtuales y librerías de clases en 1991, ylas publicó por primera vez en 1995. A partir de mayo de 2007, en cumpli-miento de las especi�caciones del Proceso de la Comunidad Java, Sun volvió

[email protected] 69 Antonio Carrillo Ledesma, Et alii

Page 72: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

a licenciar la mayoría de sus tecnologías de Java bajo la Licencia PúblicaGeneral de GNU (véase [15]). Otros también han desarrollado implementa-ciones alternas a estas tecnologías de Sun, tales como el Compilador de Javade GNU y el GNU Classpath.

Orientado a Objetos La primera característica, orientado a objetos (OO),se re�ere a un método de programación y al diseño del lenguaje. Aunquehay muchas interpretaciones para OO, una primera idea es diseñar el Soft-ware de forma que los distintos tipos de datos que usen, esten unidos a susoperaciones. Así, los datos y el código (funciones o métodos) se combinanen entidades llamadas objetos. Un objeto puede verse como un paquete quecontiene el "comportamiento" (el código) y el "estado" (datos). El princi-pio es separar aquello que cambia de las cosas que permanecen inalterables.Frecuentemente, cambiar una estructura de datos implica un cambio en elcódigo que opera sobre los mismos, o viceversa. Esta separación en objetoscoherentes e independientes ofrece una base más estable para el diseño de unsistema Software. El objetivo es hacer que grandes proyectos sean fáciles degestionar y manejar, mejorando como consecuencia su calidad y reduciendoel número de proyectos fallidos.Otra de las grandes promesas de la programación orientada a objetos

es la creación de entidades más genéricas (objetos) que permitan la reuti-lización del Software entre proyectos, una de las premisas fundamentales dela Ingeniería del Software.La reutilización del Software ha experimentado resultados dispares, en-

contrando dos di�cultades principales: el diseño de objetos realmente genéri-cos es pobremente comprendido y falta una metodología para la amplia comu-nicación de oportunidades de reutilización. Algunas comunidades de códigoabierto quieren ayudar en este problema dando medios a los desarrolladorespara diseminar la información sobre el uso y versatilidad de objetos reutili-zables y bibliotecas de objetos.

Independencia de la plataforma La segunda característica, la indepen-dencia de la plataforma, signi�ca que programas escritos en el lenguaje Javapueden ejecutarse igualmente en cualquier tipo de Hardware. Este es el sig-ni�cado de ser capaz de escribir un programa una vez y que pueda ejecutarseen cualquier dispositivo, tal como reza el axioma de Java, "write once, runanywhere".

[email protected] 70 Antonio Carrillo Ledesma, Et alii

Page 73: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para ello, se compila el código fuente escrito en lenguaje Java, paragenerar un código conocido como "bytecode" (especí�camente Java byte-code), instrucciones máquina simpli�cadas especí�cas de la plataforma Java.Esta pieza esta "a medio camino" entre el código fuente y el código máquinaque entiende el dispositivo destino. El bytecode es ejecutado entonces en lamáquina virtual (JVM), un programa escrito en código nativo de la plataformadestino (que es el que entiende su Hardware), que interpreta y ejecuta elcódigo. Además, se suministran bibliotecas adicionales para acceder a lascaracterísticas de cada dispositivo (como los grá�cos, ejecución mediante he-bras o threads, la interfaz de red) de forma uni�cada. Se debe tener presenteque, aunque hay una etapa explícita de compilación, el bytecode generadoes interpretado o convertido a instrucciones máquina del código nativo por«compilación al vuelo JIT (Just In Time)» .Hay implementaciones del compilador de Java que convierten el código

fuente directamente en código objeto nativo, como GCJ. Esto elimina laetapa intermedia donde se genera el bytecode, pero la salida de este tipo decompiladores sólo puede ejecutarse en un tipo de arquitectura.La licencia sobre Java de Sun insiste en que todas las implementaciones

sean "compatibles". Esto dio lugar a una disputa legal entre Microsoft ySun, cuando este último alegó que la implementación de Microsoft no dabasoporte a las interfaces RMI y JNI además de haber añadido características�dependientes� de su plataforma. Sun demandó a Microsoft y ganó pordaños y perjuicios (unos 20 millones de dólares), así como una orden judicialforzando el acatamiento de la licencia de Sun. Como respuesta, Microsoft noofrece Java con su versión de sistema operativo, y en recientes versiones deWindows, su navegador Internet Explorer no admite la ejecución de appletssin un «conector (Plugin)» aparte. Sin embargo, Sun y otras fuentes ofrecenversiones gratuitas para distintas versiones de Windows.Las primeras implementaciones del lenguaje usaban una máquina virtual

interpretada para conseguir la portabilidad. Sin embargo, el resultado eranprogramas que se ejecutaban comparativamente más lentos que aquellos es-critos en C o C++. Esto hizo que Java se ganase una reputación de lento enrendimiento. Las implementaciones recientes de la JVM dan lugar a progra-mas que se ejecutan considerablemente más rápido que las versiones antiguas,empleando diversas técnicas, aunque sigue siendo mucho más lentos que otroslenguajes.La primera de estas técnicas es simplemente compilar directamente en

código nativo como hacen los compiladores tradicionales, eliminando la etapa

[email protected] 71 Antonio Carrillo Ledesma, Et alii

Page 74: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

del bytecode. Esto da lugar a un gran rendimiento en la ejecución, pero tapael camino a la portabilidad. Otra técnica, conocida como «compilación alvuelo JIT (Just In Time)» , convierte el bytecode a código nativo cuando seejecuta la aplicación. Otras máquinas virtuales más so�sticadas usan una"recompilación dinámica" en la que la VM es capaz de analizar el compor-tamiento del programa en ejecución y recompila y optimiza las partes críticas.La recompilación dinámica puede lograr mayor grado de optimización que lacompilación tradicional (o estatica), ya que puede basar su trabajo en elconocimiento que de primera mano tiene sobre el entorno de ejecución y elconjunto de clases cargadas en memoria. La compilación JIT y la recompi-lación dinámica permiten a los programas Java aprovechar la velocidad deejecución del código nativo sin por ello perder la ventaja de la portabilidaden ambos.La portabilidad es técnicamente difícil de lograr, y el éxito de Java en ese

campo ha sido dispar. Aunque es de hecho posible escribir programas parala plataforma Java que actúen de forma correcta en múltiples plataformasde distinta arquitectura, el gran número de estas con pequeños errores oinconsistencias llevan a que a veces se parodie el eslogan de Sun, "Writeonce, run anywhere" como "Write once, debug everywhere" (o "Escríbelouna vez, ejecútalo en cualquier parte" por "Escríbelo una vez, depúralo entodas partes").El concepto de independencia de la plataforma de Java cuenta, sin em-

bargo, con un gran éxito en las aplicaciones en el entorno del servidor, comolos Servicios Web, los Servlets, los Java Beans, así como en sistemas empo-trados basados en OSGi, usando entornos Java empotrados.

El recolector de basura En Java el problema fugas de memoria se evitaen gran medida gracias a la «recolección automática de basura (o automaticgarbage collector)» . El programador determina cuándo se crean los objetos yel entorno en «tiempo de ejecución de Java (Java runtime)» es el responsablede gestionar el ciclo de vida de los objetos. El programa, u otros objetos,pueden tener localizado un objeto mediante una referencia a este. Cuandono quedan referencias a un objeto, el recolector de basura de Java borrael objeto, liberando así la memoria que ocupaba previniendo posibles fugas(ejemplo: un objeto creado y únicamente usado dentro de un método sólotiene entidad dentro de este; al salir del método el objeto es eliminado).Aun así, es posible que se produzcan fugas de memoria si el código almacena

[email protected] 72 Antonio Carrillo Ledesma, Et alii

Page 75: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

referencias a objetos que ya no son necesarios; es decir, pueden aún ocurrir,pero en un nivel conceptual superior. En de�nitiva, el recolector de basura deJava permite una fácil creación y eliminación de objetos y mayor seguridad.

Instalación de Java e IDEs en Debian GNU/Linux Existen diversasversiones de Java para Linux, la más usada es JDK de Oracle pero tam-bién esta una versión abierta llamada OpenJDK, para instalar por ejemploOpenJDK 8 en Debian GNU/Linux es necesario hacer:

# apt install openjdk-8-jre openjdk-8-jdk openjdk-8-doc

y después actualizar la versión por omisión de JAVA

# update-java-alternatives -s java-1.8.0-openjdk-amd64

Además se pueden instalar diversas herramientas e IDEs para facilitar laprogramación en Java, para ello usar:

# apt install scite jedit kate gedit nedit emacs medit kscopegeany geany-plugins editra qtcreator anjuta anjuta-extras codelitecodelite-plugins tea vim-gtk mousepad eric# apt install eclipse eclipse-cdt eclipse-pydev netbeans blue-

�sh codeblocks codeblocks-contrib# apt install fte fte-console fte-terminal nano joe vim vim-

python-jedi vim-tlib vim-latexsuite vim-nox# apt install kdi¤3 meld di¤use dirdi¤ kompare numdi¤ col-

ordi¤ wdi¤ xxdi¤ tkdi¤ ndi¤# apt install alleyoop astyle c2html java2html code2html c2html

autodia txt2html html2text

Aprender a Programar en Java En la red existen múltiples sitios espe-cializados y una amplia bibliografía para aprender a programar cada uno delos distintos aspectos de Java, nosotros hemos seleccionado diversos textosque ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/Lenguajes/Java/

[email protected] 73 Antonio Carrillo Ledesma, Et alii

Page 76: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

6.2 C y C++

C (véase [9]) es un lenguaje de programación originalmente desarrollado porDennis Ritchie entre 1969 y 1972 en los Laboratorios Bell, como evolucióndel lenguaje anterior B, a su vez basado en BCPL. Es un lenguaje orientadoa la implementación de Sistemas operativos, concretamente Unix, Linux y elKernel de Linux. C es apreciado por la e�ciencia del código que produce yes el lenguaje de programación más popular para crear Software de sistemas,aunque también se utiliza para crear aplicaciones.Se trata de un lenguaje de tipos de datos estaticos, débilmente tipi�cado,

de medio nivel, ya que dispone de las estructuras típicas de los lenguajes dealto nivel pero, a su vez, dispone de construcciones del lenguaje que permitenun control a muy bajo nivel. Los compiladores suelen ofrecer extensionesal lenguaje que posibilitan mezclar código en ensamblador con código C oacceder directamente a memoria o dispositivos periféricos.

Filosofía Uno de los objetivos de diseño del lenguaje C es que sólo seannecesarias unas pocas instrucciones en lenguaje máquina para traducir cadaelemento del lenguaje, sin que haga falta un soporte intenso en tiempo deejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho,C se usó como intermediario entre diferentes lenguajes.En parte, a causa de ser relativamente de bajo nivel y tener un modesto

conjunto de características, se pueden desarrollar compiladores de C fácil-mente. En consecuencia, el lenguaje C esta disponible en un amplio abanicode plataformas (más que cualquier otro lenguaje). Además, a pesar de sunaturaleza de bajo nivel, el lenguaje se desarrolló para incentivar la progra-mación independiente de la máquina. Un programa escrito cumpliendo losestandares e intentando que sea portátil puede compilarse en muchos com-putadores.C se desarrolló originalmente (conjuntamente con el sistema operativo

Unix, con el que ha estado asociado mucho tiempo) por programadores paraprogramadores. Sin embargo, ha alcanzado una popularidad enorme, y se hausado en contextos muy alejados de la programación de Software de sistemas,para la que se diseñó originalmente.

Propiedades Núcleo del lenguaje simple, con funcionalidades añadidasimportantes, como funciones matemáticas y de manejo de archivos, propor-cionadas por bibliotecas. Es un lenguaje muy �exible que permite programar

[email protected] 74 Antonio Carrillo Ledesma, Et alii

Page 77: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

con múltiples estilos. Uno de los más empleados es el estructurado "no lle-vado al extremo", entre sus principales propiedades destacan:

� Un sistema de tipos que impide operaciones sin sentido

� Usa un lenguaje de preprocesado, el preprocesador de C, para tareascomo de�nir macros e incluir múltiples archivos de código fuente

� Acceso a memoria de bajo nivel mediante el uso de punteros

� Interrupciones al procesador con uniones

� Un conjunto reducido de palabras clave

� Por defecto, el paso de parámetros a una función se realiza por valor. Elpaso por referencia se consigue pasando explícitamente a las funcioneslas direcciones de memoria de dichos parámetros

� Punteros a funciones y variables estaticas, que permiten una formarudimentaria de encapsulado y polimor�smo

� Tipos de datos agregados (struct) que permiten que datos relacionados(como un empleado, que tiene un id, un nombre y un salario) se combi-nen y se manipulen como un todo (en una única variable "empleado")

Carencias Aunque la lista de las características útiles de las que careceC es larga, éstos factores han sido importantes para su aceptación, porqueescribir rápidamente nuevos compiladores para nuevas plataformas, mantienelo que realmente hace el programa bajo el control directo del programador, ypermite implementar la solución más natural para cada plataforma. esta es lacausa de que a menudo C sea más e�ciente que otros lenguajes. Típicamente,sólo la programación cuidadosa en lenguaje ensamblador produce un códigomás rápido, pues da control total sobre la máquina, aunque los avances enlos compiladores de C y la complejidad creciente de los microprocesadoresmodernos han reducido gradualmente esta diferencia, Algunas carencias son:

� Recolección de basura nativa, sin embargo se encuentran a tal efectobibliotecas como la "libgc" desarrollada por Sun Microsystems, o elRecolector de basura de Boehm

[email protected] 75 Antonio Carrillo Ledesma, Et alii

Page 78: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Soporte para programación orientada a objetos, aunque la implementa-ción original de C++ fue un preprocesador que traducía código fuentede C++ a C. Véase también la librería GObject

� Funciones anidadas, aunque GCC tiene esta característica como exten-sión

� Soporte nativo para programación multihilo. Disponible usando libre-rías como libpthread

Ventajas estas se pueden resumie en:

� Lenguaje muy e�ciente puesto que es posible utilizar sus característicasde bajo nivel para realizar implementaciones óptimas

� A pesar de su bajo nivel es el lenguaje más portado en existencia, ha-biendo compiladores para casi todos los sistemas de cómputo conocidos

� Proporciona facilidades para realizar programas modulares y/o utilizarcódigo o bibliotecas existentes

Inconvenientes El mayor problema que presenta el lenguaje C frentea los lenguajes de tipo de dato dinámico es la gran diferencia en velocidadde desarrollo: es más lento programar en C, sobre todo para el principiante.La razón estriba en que el compilador de C se limita a traducir código sinapenas añadir nada. La gestión de la memoria es un ejemplo clásico: enC el programador ha de reservar y liberar la memoria explícitamente. Enotros lenguajes (como BASIC, MATLAB o C#) la memoria es gestionadade forma transparente para el programador. Esto alivia la carga de trabajohumano y en muchas ocasiones evita errores, aunque también supone mayorcarga de trabajo para el procesador.El mantenimiento en algunos casos puede ser más difícil y costoso que

con ciertos lenguajes de más alto nivel. El código en C se presta a sentenciascortas y enrevesadas de difícil interpretación.Cabe destacar el contexto y época en la que fue desarrollado C. En aque-

llos tiempos existían muy pocos programadores, los cuales, a su vez, eranprácticamente todos expertos en el área. De esta manera, se asumía quelos programadores eran conscientes de sus trabajos y capaces de manejar

[email protected] 76 Antonio Carrillo Ledesma, Et alii

Page 79: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

perfectamente el lenguaje. Por esta razón es muy importante que los re-cién iniciados adopten buenas prácticas a la hora de escribir en C y manejarla memoria, como por ejemplo un uso intensivo de indentación y conocer afondo todo lo que implica el manejo de punteros y direcciones de memoria.

Aplicabilidad Hecho principalmente para la �uidez de programaciónen sistemas UNIX. Se usa también para el desarrollo de otros sistemas ope-rativos como Windows o GNU/Linux. Igualmente para aplicaciones de es-critorio como GIMP, cuyo principal lenguaje de programación es C.De la misma forma, es muy usado en aplicaciones cientí�cas (para exper-

imentos informáticos, físicos, químicos, matemáticos, entre otros, conocidoscomo modelos y simuladores), industriales (industria robótica, cibernética,sistemas de información y base de datos para la industria petrolera y petro-química). Predominan también todo lo que se re�ere a simulación de máquinasde manufactura, simulaciones de vuelo (es la más delicada, ya que se tienenque usar demasiados recursos tanto de Hardware como de Software para de-sarrollar aplicaciones que permitan simular el vuelo real de una aeronave).Se aplica por tanto, en diversas áreas desconocidas por gran parte de losusuarios noveles.Los ordenadores de �nales de los 90 son varios órdenes de magnitud más

potentes que las máquinas en que C se desarrolló originalmente. Programasescritos en lenguajes de tipo dinámico y fácil codi�cación (Ruby, Python,Perl, etc.) que antaño hubieran resultado demasiado lentos, son lo bastanterápidos como para desplazar en uso a C. Aun así, se puede seguir encontrandocódigo C en grandes desarrollos de animaciones, modelados y escenas en 3Den películas y otras aplicaciones multimedia.Actualmente, los grandes proyectos de Software se dividen en partes, den-

tro de un equipo de desarrollo. Aquellas partes que son más "burocráticas"o "de gestión" con los recursos del sistema, se suelen realizar en lenguajesde tipo dinámico o de guion (script), mientras que aquellas partes "críti-cas", por su necesidad de rapidez de ejecución, se realizan en un lenguaje detipo compilado, como C o C++. Si después de hacer la división, las partescríticas no superan un cierto porcentaje del total (aproximadamente el 10%)entonces todo el desarrollo se realiza con lenguajes dinámicos. Si la partecrítica no llega a cumplir las expectativas del proyecto, se comparan las al-ternativas de una inversión en nuevo Hardware frente a invertir en el costede un programador para que reescriba dicha parte crítica.

[email protected] 77 Antonio Carrillo Ledesma, Et alii

Page 80: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Ya que muchos programas han sido escritos en el lenguaje C existe unagran variedad de bibliotecas disponibles. Muchas bibliotecas son escritas enC debido a que C genera código objeto rápido; los programadores luegogeneran interfaces a la biblioteca para que las rutinas puedan ser utilizadasdesde lenguajes de mayor nivel, tales como Java, Perl y Python.

C++ (véase [10]) es un lenguaje de programación diseñado a mediados de1979 por Bjarne Stroustrup. La intención de su creación fue el extender allenguaje de programación C mecanismos que permiten la manipulación deobjetos. En ese sentido, desde el punto de vista de los lenguajes orientadosa objetos, C++ es un lenguaje híbrido.Posteriormente se añadieron facilidades de programación genérica, que

se sumaron a los paradigmas de programación estructurada y programaciónorientada a objetos. Por esto se suele decir que el C++ es un lenguaje deprogramación multiparadigma.Actualmente existe un estandar, denominado ISO C++, al que se han ad-

herido la mayoría de los fabricantes de compiladores más modernos. Existentambién algunos intérpretes, tales como ROOT.Una particularidad de C++ es la posibilidad de rede�nir los operadores,

y de poder crear nuevos tipos que se comporten como tipos fundamentales.El nombre "C++" fue propuesto por Rick Mascitti en el año 1983, cuando

el lenguaje fue utilizado por primera vez fuera de un laboratorio cientí�co.Antes se había usado el nombre "C con clases". En C++, la expresión"C++" signi�ca "incremento de C" y se re�ere a que C++ es una extensiónde C.

El concepto de clase Los objetos en C++ son abstraídos medianteuna clase. Según el paradigma de la programación orientada a objetos unobjeto consta de:

� Identidad, que lo diferencia de otros objetos (Nombre que llevará laclase a la que pertenece dicho objeto).

� Métodos o funciones miembro

� Atributos o variables miembro

[email protected] 78 Antonio Carrillo Ledesma, Et alii

Page 81: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Diferencias de tipos respecto a C En C++, cualquier tipo de datosque sea declarado completo (fully quali�ed, en inglés) se convierte en un tipode datos único. Las condiciones para que un tipo de datos T sea declaradocompleto son a grandes rasgos las siguientes:

� Es posible al momento de compilación conocer el espacio asociado altipo de datos (es decir, el compilador debe conocer el resultado desizeof(T))

� T Tiene al menos un constructor, y un destructor, bien declarados

� Si T es un tipo compuesto, o es una clase derivada, o es la especi�caciónde una plantilla, o cualquier combinación de las anteriores, entonces lasdos condiciones establecidas previamente deben aplicar para cada tipode dato constituyente

� En general, esto signi�ca que cualquier tipo de datos de�nido haciendouso de las cabeceras completas, es un tipo de datos completo

� En particular, y a diferencia de lo que ocurría en C, los tipos de�nidospor medio de struct o enum son tipos completos. Como tales, ahorason sujetos a sobrecarga, conversiones implícitas, etcétera

Los tipos enumerados, entonces, ya no son simplemente alias para tiposenteros, sino que son tipos de datos únicos en C++. El tipo de datos bool,igualmente, también pasa a ser un tipo de datos único, mientras que en Cfuncionaba en algunos casos como un alias para alguna clase de dato de tipoentero.

Compiladores Uno de los compiladores libres de C++ es el de GNU, elcompilador G++ (parte del proyecto GCC, que engloba varios compiladorespara distintos lenguajes). Otros compiladores comunes son Intel C++ Com-piler, el compilador de Xcode, el compilador de Borland C++, el compiladorde CodeWarrior C++, el compilador g++ de Cygwin, el compilador g++ deMinGW, el compilador de Visual C++, Carbide.c++, entre otros.

Instalación de C y C++ e IDEs en Debian GNU/Linux Para ins-talar los compiladores de GNU para C y C++ en Debian GNU/Linux esnecesario hacer:

[email protected] 79 Antonio Carrillo Ledesma, Et alii

Page 82: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install build-essential manpages-dev glibc-doc glibc-doc-reference gcc-doc-base gcc-doc c++-annotations-pdf c++-compilerc-compiler g++ cppcheck splint cccc autoconf automake makecmake scons jam ohcount

Además se pueden instalar diversas herramientas e IDEs para facilitar laprogramación en C y C++, para ello usar:

# apt install scite jedit kate gedit nedit emacs medit kscopegeany geany-plugins editra qtcreator anjuta anjuta-extras codelitecodelite-plugins tea vim-gtk mousepad eric# apt install eclipse eclipse-cdt eclipse-pydev netbeans blue-

�sh codeblocks codeblocks-contrib# apt install fte fte-console fte-terminal nano joe vim vim-

python-jedi vim-tlib vim-latexsuite vim-nox# apt install kdi¤3 meld di¤use dirdi¤ kompare numdi¤ col-

ordi¤ wdi¤ xxdi¤ tkdi¤ ndi¤# apt install ddd-doc ddd gdb xxgdb kdbg valgrind valgrind-

mpi kcachegrind cppcheck time nemiver# apt install ggcov lcov gcov# apt install alleyoop astyle c2html java2html code2html c2html

autodia txt2html html2text

Aprender a Programar en C y C++ En la red existen múltiples sitiosespecializados y una amplia bibliografía para aprender a programar cada unode los distintos aspectos de C y C++, nosotros hemos seleccionado diversostextos que ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/Lenguajes/CyC++/

Programando con C y C++ Al programar en C y C++, es habitualusar algunas herramientas de programación de uso muy extendido, sobretodo en entornos de tipo Unix, Linux:

� make: automatizador del proceso de compilación y enlazado

� lint: detector de código sospechoso, confuso o incompatible entre dis-tintas arquitecturas

[email protected] 80 Antonio Carrillo Ledesma, Et alii

Page 83: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� valgrind: Rastrea errores en la manipulación de memoria y punterosdesbordados, otra opción es DUMA

� gdb: depurador (debugger) usado en GNU

� dbx: depurador preinstalado en UNIX

� ddd: interfaz grá�co para los depuradores gdb o dbx, además existenotros depuradores según el ambiente grá�co usado, por ejemplo paraKDE existe kgdb

� gprof: Programas para hacer análisis de rendimiento, otras opcionesson callgrind y kcachegrind

6.3 Python

Python (véase [8]) es un lenguaje de programación interpretado cuya �losofíahace hincapié en una sintaxis que favorezca un código legible. Se trata de unlenguaje de programación multiparadigma, ya que soporta orientación a ob-jetos, programación imperativa y, en menor medida, programación funcional.Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.Es administrado por la Python Software Foundation. Posee una licencia

de código abierto, denominada Python Software Foundation License, que escompatible con la Licencia pública general de GNU a partir de la versión2.1.1, e incompatible en ciertas versiones anteriores (véase apéndice 10.1).Python fue creado a �nales de los ochenta por Guido van Rossum en

el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde& Informatica), en los Países Bajos, como un sucesor del lenguaje de pro-gramación ABC, capaz de manejar excepciones e interactuar con el sistemaoperativo Amoeba. Van Rossum es el principal autor de Python, y su con-tinuo rol central en decidir la dirección de Python es reconocido, re�riéndosea él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator forLife, BDFL).

Características y paradigmas Python es un lenguaje de programaciónmultiparadigma. Esto signi�ca que más que forzar a los programadores aadoptar un estilo particular de programación, permite varios estilos: progra-mación orientada a objetos, programación imperativa y programación fun-cional. Otros paradigmas estan soportados mediante el uso de extensiones.

[email protected] 81 Antonio Carrillo Ledesma, Et alii

Page 84: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Python usa tipado dinámico y conteo de referencias para la administraciónde memoria.Una característica importante de Python es la resolución dinámica de

nombres; es decir, lo que enlaza un método y un nombre de variable durantela ejecución del programa (también llamado enlace dinámico de métodos).Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se

pueden escribir nuevos módulos fácilmente en C o C++. Python puedeincluirse en aplicaciones que necesitan una interfaz programable.Aunque la programación en Python podría considerarse en algunas situa-

ciones hostil a la programación funcional tradicional del Lisp, existen bas-tantes analogías entre Python y los lenguajes minimalistas de la familia Lispcomo puede ser Scheme.El intérprete de Python estandar incluye un modo interactivo en el cual

se escriben las instrucciones en una especie de intérprete de comandos: lasexpresiones pueden ser introducidas una a una, pudiendo verse el resultado desu evaluación inmediatamente, lo que da la posibilidad de probar porciones decódigo en el modo interactivo antes de integrarlo como parte de un programa.Esto resulta útil tanto para las personas que se estan familiarizando con ellenguaje como para los programadores más avanzados.Existen otros programas, tales como IDLE, bpython o IPython, que

añaden funcionalidades extra al modo interactivo, como el autocompletadode código y el coloreado de la sintaxis del lenguaje.

Elementos del lenguaje Python fue diseñado para ser leído con facilidad.Una de sus características es el uso de palabras donde otros lenguajes uti-lizarían símbolos. Por ejemplo, los operadores lógicos: !, jj y &&, en Pythonse escriben; not, or y and, respectivamente. Curiosamente el lenguaje Pascales junto con COBOL uno de los lenguajes con muy clara sintaxis y ambosson de la década de los 70. La idea del código claro y legible no es algo nuevo.El contenido de los bloques de código (bucles, funciones, clases, etc.)

es delimitado mediante espacios o tabuladores, conocidos como indentación,antes de cada línea de órdenes pertenecientes al bloque. Python se diferen-cia así de otros lenguajes de programación que mantienen como costumbredeclarar los bloques mediante un conjunto de caracteres, normalmente entrellaves {}. Se pueden utilizar tanto espacios como tabuladores para indentarel código, pero se recomienda no mezclarlos.Debido al signi�cado sintáctico de la indentación, cada instrucción debe

[email protected] 82 Antonio Carrillo Ledesma, Et alii

Page 85: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

estar contenida en una sola línea. No obstante, si por legibilidad se quieredividir la instrucción en varias líneas, añadiendo una barra invertida: n al�nal de una línea, se indica que la instrucción continúa en la siguiente.

Variables Las variables se de�nen de forma dinámica, lo que signi�caque no se tiene que especi�car cuál es su tipo de antemano y puede tomardistintos valores en otro momento, incluso de un tipo diferente al que teníapreviamente. Se usa el símbolo = para asignar valores.

Módulos Existen muchas propiedades que se pueden agregar al lenguajeimportando módulos, que son "minicódigos" (la mayoría escritos también enPython) que proveen de ciertas funciones y clases para realizar determinadastareas. Un ejemplo es el módulo: Tkinter, que permite crear interfaces grá-�cas basadas en la biblioteca Tk. Otro ejemplo es el módulo: os, que proveeacceso a muchas funciones del sistema operativo. Los módulos se agregan alos códigos escribiendo la palabra reservada import seguida del nombre delmódulo que queramos usar.Python tiene una gran biblioteca estandar, usada para una diversidad de

tareas. Esto viene de la �losofía "pilas incluidas" ("batteries included") enreferencia a los módulos de Python11. Los módulos de la biblioteca estandarpueden mejorarse por módulos personalizados escritos tanto en C como enPython. Debido a la gran variedad de herramientas incluidas en la bibliotecaestandar, combinada con la habilidad de usar lenguajes de bajo nivel como Cy C++, los cuales son capaces de interactuar con otras bibliotecas, Python esun lenguaje que combina su clara sintaxis con el inmenso poder de lenguajesmenos elegantes.

Algunos Módulos para Python

TensorFlow Models sirve para el aprendizaje automático y apren-dizaje profundo. TensorFlow Models es el repositorio de fuente abierta paraencontrar muchas bibliotecas y modelos relacionados con el aprendizaje pro-fundo.11Una lista de módulos disponibles en Python esta en su página o�cial.Para la versión 2 en: https://docs.python.org/2/py-modindex.htmlPara la versión 3 en: https://docs.python.org/3/py-modindex.html

[email protected] 83 Antonio Carrillo Ledesma, Et alii

Page 86: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Keras es una API de redes neuronales de alto nivel, escrita en Python yes capaz de ejecutarse sobre TensorFlow, CNTK o Theano. Fue desarrolladocon un enfoque para permitir la experimentación rápida.

Frasco es un framework ligero de aplicaciones Web WSGI. esta dise-ñado para que el inicio sea rápido y fácil, con la capacidad de escalar hastaaplicaciones complejas. Comenzó como un simple envoltorio alrededor deWerkzeug y Jinja y se ha convertido en uno de los frameworks de aplicaciónWeb Python más populares.

Scikit-learn es un módulo de Python para el aprendizaje automáticoconstruido sobre SciPy y distribuido bajo la licencia BSD.

Zulip es una poderosa aplicación de chat grupal de código abierto quecombina la inmediatez del chat en tiempo real con los bene�cios de produc-tividad de las conversaciones enhebradas. Zulip es utilizado por proyectosde código abierto, compañías de Fortune 500, cuerpos de grandes estandaresy otros que necesitan un sistema de chat en tiempo real que les permita alos usuarios procesar fácilmente cientos o miles de mensajes al día. Con másde 300 colaboradores que fusionan más de 500 commits por mes, Zulip estambién el proyecto de chat grupal de código abierto más grande y de másrápido crecimiento.

Django es un framework Web Python de alto nivel que fomenta un de-sarrollo rápido y un diseño limpio y pragmático de desarrollo Web de códigoabierto, escrito en Python, que respeta el patron de diseño conocido comomodelo-vista-template. Fue desarrollado en origen para gertionar varias pági-nas orientadas a noticias de la World Company de Lawrence, Kanzas y fúeliberada al público bajo unalicencia BSD en julio del 2005.

Rebound es una herramienta de línea de comandos que obtiene instan-táneamente los resultados de desbordamiento de pila cuando se produce unerror de compilación.

Google Images Download Este es un programa de línea de comandode Python para buscar palabras clave / frases clave en Google Imágenes y op-

[email protected] 84 Antonio Carrillo Ledesma, Et alii

Page 87: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

cionalmente descargar imágenes a su computadora. También puede invocareste script desde otro archivo Python.

YouTube-dl es usado para descargar videos de: youtube.com u otrasplataformas de video.

System Design Primer este repositorio es una colección organizadade recursos para ayudar a aprender a construir sistemas a escala.

Mask R-CNN es para detección y segmentación de objetos. Esta esuna implementación de Mask R-CNN en Python 3, Keras y TensorFlow. Elmodelo genera cuadros de delimitación y máscaras de segmentación para cadainstancia de un objeto en la imagen. Se basa en Feature Pyramid Network(FPN) y ResNet101 backbone.

Face Recognition es usado para reconocer y manipular caras desdePython o desde la línea de comandos con la biblioteca de reconocimientofacial más simple del mundo. Esto también proporciona una herramienta delínea de comandos: face_recognition simple que permite hacer reconocimientode rostros en una carpeta de imágenes desde la línea de comandos.

Snallygaster Herramienta para buscar archivos secretos en servidoresHTTP.

Ansible es un sistema de automatización de TI radicalmente simple.Maneja la administración de con�guraciones, la implementación de aplica-ciones, el aprovisionamiento en la nube, la ejecución de tareas ad-hoc y laorquestación multinodo, incluida la trivialización de cosas como actualiza-ciones continuas de tiempo de inactividad cero con balanceadores de carga.

Detectron es el sistema de software de Facebook AI Research que im-plementa algoritmos de detección de objetos de última generación, incluyendoMask R-CNN. esta escrito en Python y funciona con el marco de aprendizajeprofundo Ca¤e2.

Asciinema registrador de sesión de terminal y el mejor compañero deasciinema.org.

[email protected] 85 Antonio Carrillo Ledesma, Et alii

Page 88: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

HTTPie es un cliente HTTP de línea de comando. Su objetivo es hacerque la interacción de la CLI con los servicios Web sea lo más amigable posiblepara los humanos. Proporciona un comando http simple que permite el envíode solicitudes HTTP arbitrarias utilizando una sintaxis simple y natural, ymuestra una salida coloreada. HTTPie se puede usar para probar, depurary, en general, interactuar con servidores HTTP.

You-Get es una pequeña utilidad de línea de comandos para descargarcontenidos multimedia (videos, audios, imágenes) desde la Web, en caso deque no haya otra forma práctica de hacerlo.

Sentry es un servicio que ayuda a controlar y corregir fallas en tiemporeal. El servidor esta en Python, pero contiene una API completa para enviareventos desde cualquier lenguaje, en cualquier aplicación.

Tornado es un framework Web de Python y una biblioteca de red asín-crona, desarrollada originalmente en FriendFeed. Mediante el uso de E/S dered sin bloqueo, Tornado puede escalar a decenas de miles de conexionesabiertas, lo hace ideal para largos sondeos, WebSockets y otras aplicacionesque requieren una conexión de larga duración para cada usuario.

Magenta es un proyecto de investigación que explora el papel del apren-dizaje automático en el proceso de creación de arte y música. Principalmente,esto implica desarrollar nuevos algoritmos de aprendizaje profundo y apren-dizaje de refuerzo para generar canciones, imágenes, dibujos y otros materia-les. Pero también es una exploración en la construcción de herramientas einterfaces inteligentes que permiten a artistas y músicos ampliar sus procesosutilizando estos modelos.

ZeroNet crea sitios Web descentralizados utilizando Bitcoin Crypto yla red BitTorrent.

Gym OpenAI Gym es un conjunto de herramientas para desarrollar ycomparar algoritmos de aprendizaje de refuerzo. Esta es la biblioteca decódigo abierto de Gym, que le da acceso a un conjunto estandarizado deentornos.

[email protected] 86 Antonio Carrillo Ledesma, Et alii

Page 89: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Pandas es un paquete de Python que proporciona estructuras de datosrápidas, �exibles y expresivas diseñadas para que trabajar con datos "rela-cionales" o "etiquetados" sea fácil e intuitivo. Su objetivo es ser el com-ponente fundamental de alto nivel para hacer un análisis práctico y real dedatos en Python. Además, tiene el objetivo más amplio de convertirse enla herramienta de análisis / manipulación de datos de código abierto máspotente y �exible disponible en cualquier lenguaje.

Luigi es un paquete de Python que te ayuda a construir tuberías com-plejas de trabajos por lotes. Maneja la resolución de dependencia, la ad-ministración del �ujo de trabajo, la visualización, el manejo de fallas, laintegración de línea de comando y mucho más.

SpaCy (by Explosion AI) es una biblioteca para el procesamientoavanzado del lenguaje natural en Python y Cython. esta basado en las últi-mas investigaciones y fue diseñado desde el primer día para ser utilizado enproductos reales. SpaCy viene con modelos estadísticos precompilados y vec-tores de palabras, y actualmente admite tokenización para más de 20 lengua-jes. Cuenta con el analizador sintáctico más rápido del mundo, modelos deredes neuronales convolucionales para etiquetado, análisis y reconocimientode una entidad nombrada y fácil integración de aprendizaje profundo.

Theano es una biblioteca de Python que permite de�nir, optimizar yevaluar expresiones matemáticas que involucran matrices multidimensionalesde manera e�ciente. Puede usar GPU y realizar una diferenciación simbólicae�ciente.

TFlearn es una biblioteca de aprendizaje profundo modular y trans-parente construida sobre Tensor�ow. Fue diseñada para proporcionar unaAPI de nivel superior a TensorFlow con el �n de facilitar y agilizar la ex-perimentación, sin dejar de ser totalmente transparente y compatible conella.

Kivy es un framework Python de código abierto y plataforma para eldesarrollo de aplicaciones que hacen uso de interfaces de usuario innovadorasy multitáctiles. El objetivo es permitir un diseño de interacción rápido y fácily un prototipado rápido a la vez que hace que su código sea reutilizable.

[email protected] 87 Antonio Carrillo Ledesma, Et alii

Page 90: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Mailpile es un cliente de correo electrónico moderno y rápido con ca-racterísticas de cifrado y privacidad fáciles de usar. El desarrollo de Mailpileesta �nanciado por una gran comunidad de patrocinadores y todo el códigorelacionado con el proyecto es y será lanzado bajo una licencia de SoftwareLibre aprobada por OSI.

Matplotlib es una biblioteca de trazado 2D de Python que produce�guras con calidad de publicación en una variedad de formatos impresos yentornos interactivos en todas las plataformas. Matplotlib se puede utilizaren scripts Python, el shell Python e IPython, así como en servidores deaplicaciones Web y varios toolkits de interfaz grá�ca de usuario.

YAPF (by Google) toma el código y lo reformatea con el mejor for-mato que cumpla con la guía de estilo, incluso si el código original no violala guía de estilo.

Cookiecutter una utilidad de línea de comandos que crea proyectosdesde cookiecutters (plantillas de proyecto), por ejemplo creando un proyectode paquete Python a partir de una plantilla de proyecto de paquete Python.

HTTP Prompt es un cliente HTTP interactivo de línea de comandoscon autocompletado y resaltado de sintaxis, basado en prompt_toolkit yHTTPie.

Speedtest-cli interfaz de línea de comandos para probar el ancho debanda de Internet con speedtest.net: http://www.speedtest.net/

Pattern es un módulo de minería Web para Python. Tiene herramien-tas para Minería de datos, Procesamiento de lenguaje natural, Aprendizajeautomático y Análisis de red.

Gooey (Beta) convierte (casi) cualquier programa de consola Python2 o 3 en una aplicación GUI con una línea.

Wagtail CMS es un sistema de gestión de contenido creado en Django.Se centra en la experiencia del usuario y ofrece un control preciso para di-señadores y desarrolladores.

[email protected] 88 Antonio Carrillo Ledesma, Et alii

Page 91: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Bottle es un micro-Framework WSGI rápido, simple y liviano paraPython. Se distribuye como un módulo de archivo único y no tiene depen-dencias distintas de la biblioteca estandar de Python.

Prophet (by Facebook) es un procedimiento para pronosticar datosde series temporales. Se basa en un modelo aditivo en el que las tendenciasno lineales se ajustan a la estacionalidad anual y semanal, más las vacaciones.Funciona mejor con datos de periodicidad diaria con al menos un año de datoshistóricos. Prophet es robusto para datos faltantes, cambios en la tendenciay grandes valores atípicos.

Falcon es un marcoWeb de Python con�able y de alto rendimiento paraconstruir Backend de aplicaciones a gran escala y microservicios. Fomentael estilo arquitectónico REST e intenta hacer lo mínimo posible sin dejar deser altamente efectivo.

Mopidy es un servidor de música extensible escrito en Python. Mopidyreproduce música desde el disco local, Spotify, SoundCloud, Google PlayMusic y más. Edita la lista de reproducción desde cualquier teléfono, tabletao computadora usando una gama de clientes MPD y Web.

Hug tiene como objetivo hacer que el desarrollar APIs impulsadas porPython sea lo más simple posible, pero no más simple. Como resultado,simpli�ca drásticamente el desarrollo de la API de Python.

SymPy es una biblioteca de Python para matemática simbólica.

Visdom es una herramienta �exible para crear, organizar y compartirvisualizaciones de datos vivos y enriquecidos. Admite Torch y Numpy.

Pygame es una biblioteca de plataforma cruzada diseñada para facilitarla escritura de software multimedia, como juegos en Python.

Requests es una biblioteca de Python que le permite enviar solicitudesHTTP / 1.1, agregar encabezados, datos de formularios, archivos multipartey parámetros con simples diccionarios de Python. También le permite accedera los datos de respuesta de la misma manera.

[email protected] 89 Antonio Carrillo Ledesma, Et alii

Page 92: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Statsmodels es un paquete de Python que proporciona un comple-mento para Scipy para cálculos estadísticos que incluyen estadística descrip-tiva y estimación e inferencia para modelos estadísticos.

Scrapy es ampliamente utilizada en la biblioteca de raspado Web dePython. Se usa para crear programas de rastreo. Inicialmente, fue diseñadopara raspar, como su nombre indica, pero ahora se usa para muchos propósi-tos, incluida la extracción de datos, las pruebas automatizadas, etc. Scrapyes de código abierto.

PyTorch es una biblioteca de código abierto, básicamente es un reem-plazo de la biblioteca Numpy y esta equipada con funcionalidades de nivel su-perior para construir redes neuronales profundas. Se puede usar otro lenguajecomo Scipy, Cython y Numpy, que ayudan a extender PyTorch cuando seanecesario. Muchas organizaciones, incluyendo Facebook, Twitter, Nvidia,Uber y otras organizaciones usan Pytorch para la creación rápida de prototi-pos en investigación y para entrenar modelos de aprendizaje profundo.

Requests es una de las famosas bibliotecas de Python que tiene licenciabajo Apache2 y esta escrita en Python. Esta biblioteca ayuda a los humanosa interactuar con los lenguajes. Con la biblioteca de solicitudes, no es nece-sario que agregue consultas, cadenas manualmente a las URL ni codi�carlos datos POST. Se puede enviar solicitudes HTTP al servidor mediante labiblioteca de solicitudes y se puede agregar datos de formularios, contenidocomo encabezado, archivos en varias partes, etc.

PyFlux es una biblioteca de Python que se usa para predecir y analizarseries temporales. esta desarrollado por Ross Taylor, esta biblioteca tienemuchas opciones para la interfaz y contiene muchas clases nuevas de tiposde modelos. Py�ux permite a los usuarios implementar muchos modelosmodernos de series de tiempo como GARCH y predecir la naturaleza decómo reaccionará en el futuro.

Zappa es uno de los mejores paquetes de Python creados por Miser-lou, es tan fácil de construir e implementar aplicaciones sin servidor en APIGateway y Amazon Web Services Lambda. Dado que AWS maneja la es-cala horizontal de forma automática, por lo que no habrá tiempo de espera

[email protected] 90 Antonio Carrillo Ledesma, Et alii

Page 93: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

de solicitud. Con Zappa, puede actualizar su código en una sola línea conZappa.

Arrow es una famosa biblioteca de Python amigable para los humanosque ofrece funciones sensatas como crear, formatear, manipular y convertirfechas, horas y marcas de tiempo. Es compatible con Python 2 y 3 y es unaalternativa de fecha y hora, ofrece funciones completas con una interfaz másagradable.

Pendulum es un paquete de Python que se utiliza para manipular fe-chas y horas. el código seguirá funcionando si se reemplaza todos los elemen-tos de DateTime. Con Pendulum, se puede analizar DateTime y mostrarla fecha y hora con la zona horaria. Básicamente, Pendulum es una ver-sión mejorada de la biblioteca Arrow y tiene todos los métodos útiles comoredondear, truncar, convertir, analizar, formatear y aritmética.

Theano es una biblioteca de aprendizaje profundo de Python, que seutiliza para optimizar, de�nir y evaluar ecuaciones numéricas matemáticasy matriz multidimensionales. esta desarrollado por el grupo de aprendizajeautomático, por lo que, básicamente, Theano es un compilador de expresiónmatemática y proporciona una estrecha integración con Numpy y propor-ciona una optimización rápida y estable.

IPython esta es una de las herramientas de Python más útiles, ya queproporciona una rica arquitectura para el usuario. Esta herramienta permiteescribir y ejecutar el código Python en el navegador. Ipython funciona envarios sistemas operativos, incluidos Windows, Mac OS X, Linux y la mayoríade los sistemas operativos Unix. IPython brinda todas las características queobtendrá en el intérprete básico con algunas características adicionales comonúmeros, más funciones, funciones de ayuda, edición avanzada, etc.

Imbalanced-learn en un mundo ideal, tendríamos conjuntos de datosperfectamente equilibrados y todos entrenaríamos modelos y seríamos felices.Desafortunadamente, el mundo real no es así, y ciertas tareas favorecen datosmuy desequilibrados. Por ejemplo, al predecir el fraude en las transaccionesde tarjetas de crédito, es de esperar que la gran mayoría de las transacciones

[email protected] 91 Antonio Carrillo Ledesma, Et alii

Page 94: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

(+ 99.9%) sean realmente legítimas. El entrenamiento ingenuo de algorit-mos de ML conducirá a un rendimiento deprimente, por lo que se necesitacuidado adicional al trabajar con estos tipos de conjuntos de datos. Afor-tunadamente, este es un problema de investigación estudiado y existe unavariedad de técnicas. Imbalanced-learn es un paquete de Python que ofreceimplementaciones de algunas de esas técnicas, para hacer la vida mucho másfácil. Es compatible con Scikit-learn y es parte de los proyectos Scikit-learn-contrib.

Ca¤e2 el marco original de Ca¤e ha sido ampliamente utilizado du-rante años, y es conocido por su rendimiento incomparable y base de códigoprobado en batalla. Sin embargo, las tendencias recientes en DL hicieron queel marco se estancara en algunas direcciones. Ca¤e2 es el intento de llevarCa¤e al mundo moderno. Admite formación distribuida, implementación (in-cluso en plataformas móviles), las CPU más nuevas y Hardware compatiblecon CUDA. Si bien PyTorch puede ser mejor para la investigación, Ca¤e2 esadecuado para despliegues a gran escala como se ve en Facebook.

Dash es una biblioteca de código abierto para crear aplicaciones Web,especialmente aquellas que hacen un buen uso de la visualización de datos,en Python puro. esta construido sobre Flask, Plotly.js y React, y propor-ciona abstracciones que te liberan de tener que aprender esos Frameworks ypermitirte ser productivo rápidamente. Las aplicaciones se representan en elnavegador y responderán para que se puedan usar en dispositivos móviles.No se requiere JavaScript.

Fire es una biblioteca de código abierto que puede generar automáti-camente una CLI para cualquier proyecto de Python. La clave aquí es au-tomática: ¡casi no es necesario escribir ningún código o docstrings para cons-truir una CLI!. Para hacer el trabajo, solo se tiene que llamar a un métodoFire y pasarlo como se quiera para convertirlo en una CLI: una función, unobjeto, una clase, un diccionario, o incluso no pasar ningún tipo de argumento(lo que convertirá todo el código en una CLI).

Flashtext es una biblioteca para busqueda y remplazo de palabras enun documento. La belleza de FlashText es que el tiempo de ejecución esel mismo sin importar cuántos términos de búsqueda se tenga, en contraste

[email protected] 92 Antonio Carrillo Ledesma, Et alii

Page 95: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

con la expresión regular en la que el tiempo de ejecución aumentará casilinealmente con el número de términos.

Pipenv con Pipenv, se especi�ca todas las dependencias en un Pip�le,que normalmente se genera mediante el uso de comandos para agregar, elimi-nar o actualizar dependencias. La herramienta puede generar un archivo Pip-�le.lock, lo que permite que las compilaciones sean deterministas, ayudándoa evitar esos errores difíciles de detectar debido a una dependencia poco claraque ni siquiera se cree que es necesaria.

Luminoth las imágenes estan en todas partes hoy en día y comprendersu contenido puede ser crítico para varias aplicaciones. Afortunadamente,las técnicas de procesamiento de imágenes han avanzado mucho, impulsadaspor los avances en DL. Luminoth es un kit de herramientas de código abiertoPython para visión arti�cial, construido con TensorFlow y Sonnet. Actual-mente, viene de fábrica y es compatible con la detección de objetos en formade un modelo llamado Faster R-CNN.

Instalación de Python e IDEs en Debian GNU/Linux Existen di-versas versiones de Python para Linux, para instalar Python 2 en DebianGNU/Linux, hacer:

# apt install ipython python-matplotlib python-numpy python-scipy python-pandas python-sympy python-nose python-dev spy-der python-rpy2 python-rpy python-axiom python-pip python python-tk idle python-pmw python-imaging python-pip bpython python-pandas python-sklearn python-sklearn-doc wxglade python-rpy2pypy pypy-tk python-gnuplot pypy-six jython boa-constructorpyragua dreampie winpdb mypy python-mpi4py

para instalar Python 3 en Debian GNU/Linux, hacer:

# apt install ipython3 python3 idle3 python3-pip python3-matplotlib python3-rpy2 python3-numpy python3-scipy spyder3bpython3 python3-pandas python-sklearn python-sklearn-doc pyzopyzo-doc spe eric python-wxgtk3.0 python-wxgtk3.0-dev python3-mpi4py

[email protected] 93 Antonio Carrillo Ledesma, Et alii

Page 96: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para instalar Jupiter, hacer:

# apt install jupyter-console jupyter-notebook# pip3 install jupyter# pip3 install matplotlib# pip3 install ipywidgets# jupyter nbextension enable �py �sys-pre�x widgetsnbexten-

sion

Además se pueden instalar diversas herramientas e IDEs para facilitar laprogramación en Python, para ello hacer:

# apt install scite jedit kate gedit nedit emacs medit kscopegeany geany-plugins editra qtcreator anjuta anjuta-extras codelitecodelite-plugins tea vim-gtk mousepad# apt install eclipse eclipse-cdt netbeans-platform netbeans-

ide codeblocks codeblocks-contrib# apt install fte fte-console fte-terminal nano joe# apt install kdi¤3 meld di¤use dirdi¤ kompare numdi¤ col-

ordi¤ wdi¤ xxdi¤# apt install alleyoop astyle c2html java2html code2html c2html

autodia txt2html html2text

Por otro lado existe Anaconda, una Suite de código abierto que abarcauna serie de aplicaciones, librerías y conceptos diseñados para el desarrollode la Ciencia de datos con Python. En líneas generales Anaconda Distrib-ution es una distribucción de Python que funciona como un gestor de en-torno, un gestor de paquetes y que posee una colección de más de 720 pa-quetes de código abierto. Anaconda Distribu-tion se agrupa en 4 sectoreso soluciones tecnológicas, Anaconda Navigator, Anaconda Project, Las li-brerías de Ciencia de datos y Conda. Todas estas se instalan de maneraautomática y en un procedimiento muy sencillo. Para más información ver:https://www.anaconda.com/.También esta SageMath, una Suite de código abierto bajo la licencia GPL

de Software matemático como: NumPy, SciPy, matplotlib, Sympy, Maxi-ma, GAP, FLINT, R, entre otros. Además combina acceso a una poderosacombinación del lenguaje basada en Python o directamente vía interfaceso Wrappers. La misión del proyecto es crear una alternativa de Softwarelibre a Magma, Maple, Mathematica y Matlab. Para más información ver:http://www.sagemath.org/.

[email protected] 94 Antonio Carrillo Ledesma, Et alii

Page 97: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Aprender a Programar en Python En la red existen múltiples sitiosespecializados y una amplia bibliografía para aprender a programar cada unode los distintos aspectos de Python, nosotros hemos seleccionado diversostextos que ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/Lenguajes/Python/

6.4 Herramientas de Programación

En Linux existe una gran variedad de herramientas para programación, yaque este sistema operativo fue hecho por programadores y para progra-madores, por ello entre las miles de herramientas, tenemos algunas que sonampliamente usadas, entre las que destacan:Editores de Terminal

� Diakonos

� Jet

� Joe

� LE

� Mined

� Nano

� Nice Editor (NE)

� Pico

� Setedit

� Vim

� Fte

Editores Sencillos con Interfaz Grá�ca

� Gedit

[email protected] 95 Antonio Carrillo Ledesma, Et alii

Page 98: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� SciTE

� JEdit

� NEdit

� MEdit

� KScope

� Editra

� Kate

� KWrite

� Leafpad

� Mousepad

� Anjunta

� TEA

� Pluma

� GVim

� Emacs

Editores Avanzados con Interfaz Grá�ca

� Atom

� Blue�sh

� BlueGri¤on

� Brackets

� Geany

� Glade

� Google Web Designer

[email protected] 96 Antonio Carrillo Ledesma, Et alii

Page 99: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� KompoZer

� Light Table

� Notepadqq

� Scribes

� Sublime Text

Entornos de Programación Integrado (IDEs)

� Aptana

� Arduino IDE

� Android Studio

� CodeLite

� Code::Blocks

� Eclipse

� Gambas

� JetBrains Suite

� NetBeans

� Ninja-IDE

� Python IDLE

� PyDev

� Postman

� Qt Creator

� Simply Fortran

� Visual Studio Code

� Wing Python IDE

[email protected] 97 Antonio Carrillo Ledesma, Et alii

Page 100: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Spyder

� PyCharm

� Jupyter

� Eric

Kit de Desarrollo de Software

� .Net Core SDK

� Android SDK

� Java JDK

Comparadores de texto y fuentes

� KDi¤3

� Meld

� Di¤use

� DirDi¤

� kompare

� Numdi¤

� colordi¤

� wdi¤

� xxdi¤

� tkdi¤

� Ndi¤

Otras Herramientas

� Alleyoop

[email protected] 98 Antonio Carrillo Ledesma, Et alii

Page 101: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� C2HTML

� Java2HTML

� Code2HTML

� c2html

� AutoDia

� txt2html

� html2text

Programas para control de versiones que permite desarrollo colaborativode Software

� Git (véase [111])

� Mercurial (véase [112])

� Subversion (véase [113])

� Perforce (véase [114])

� Bazaar

� CVS

� LibreSource

� Monotone

� SmartGit

� GitKraken

� Git Cola

Generadores automaticos de documentación que generan salida en PDF,HTML y XML para lenguajes como C++ y Java

� Doxygen (véase [102])

[email protected] 99 Antonio Carrillo Ledesma, Et alii

Page 102: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� JavaDoc (véase [103])

Formateador de código fuente para C, C++, Java y C#

� Astyle (véase [104])

Lenguaje Uni�cado de Modelado (Uni�ed Modeling Language), forja unlenguaje de modelado visual común semántica y sintácticamente rico para laarquitectura, el diseño y la implementación de sistemas de Software complejostanto en estructura como en comportamiento.

� ArgoUML (véase [105])

� StarUML (véase [106])

� Rational Software Modeler (véase [107])

� Umbrello UML Modeler (véase [108])

� UML Designer (véase [109])

� OpenAmeos (véase [110])

6.5 Programando Desde la Nube

Existen diferentes servicios Web12 que permiten editar, compilar y ejecutarcódigo de diversos lenguajes y paquetes desde el navegador, esto en aras deque los estudiantes y profesores que cuenten con algún sistema de acceso ared y un navegador puedan programar en los más diversos lenguajes, IDEs yTerminales sin hacer instalación alguna en su equipo de cómputo, tableta oteléfono celular.Algunos ejemplos de estos servicios son:

� https://www.jdoodle.com/12Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnito

para no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 100 Antonio Carrillo Ledesma, Et alii

Page 103: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� https://repl.it/

� http://browxy.com

� https://jupyter.org/try

� https://tio.run/

� https://www.compilejava.net/

� http://codepad.org/

� https://code.hackerearth.com/

� https://www.remoteinterview.io/online-c-compiler

� https://ideone.com/

� https://hackide.herokuapp.com/

� https://www.codechef.com/ide

� http://cpp.sh/

� https://codebunk.com/

� https://rextester.com/

� https://www.tutorialspoint.com/codingground.htm

� https://www.compileonline.com

� http://python�ddle.com/

� https://trinket.io/python

� https://www.pythonanywhere.com/try-ipython/

� https://www.rollapp.com/

� https://godbolt.org/

� https://www.codiva.io/

� https://paiza.io/en

[email protected] 101 Antonio Carrillo Ledesma, Et alii

Page 104: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� https://wandbox.org/

� http://coliru.stacked-crooked.com/

� http://quick-bench.com/

� https://cppinsights.io/

� https://ideone.com/

� http://cpp.sh/

� https://ide.geeksforgeeks.org/

� https://www.codechef.com/ide

� https://visualstudio.microsoft.com/services/visual-studio-online/

Algunas de las terminales soportados son para:

CentOS, IPython, Lua, Memcached, Mongo DB, MySQL,Node.js, Numpy, Oracle, Octave, PowerShell, PHP, R Progra-mming, Redis, Ruby, SciPy, SymPy, etc.

Algunos de los IDEs soportados son:

Ada (GNAT), Algol68, Angular JS, Assembly, AsciiDoc, AWK,Bash Shell, Befunge, Bootstrap, Brainf**k, C, CSS3, ChipmunkBASIC, Clojure, Cobol, Co¤eeScript, ColdFusion, C99 Strict,C++, C++ 0x, C++ 11, C#, Dart, D Programming Language,Embedded C, Erlang, Elixir, Factor, Fantom, Falcon, Fortran-95, Forth,F#, Free Basic, Groovy, GO, Haxe, Haskell, HTML,ilasm, Intercal, Icon, Java, Java 8, Java MySQL, Javascript,JSP, JQuery, Julia, Korn Shell (ksh), Latex, Lisp, LOLCODE,Lua, Matlab/Octave, Malbolge, Markdown, MathML, Mozart-Oz, Nimrod, Node.JS, Objective-C, OCaml, Pascal, PARI/GP,Pawn, Perl, Perl MySQL, PHP, PHP MySQL, WebView, Pike,Processing.js, p5.js, Prolog, Python-2, Python-3, PythonMySQL,Jupyter Notebook, Rexx, reStructure, Ruby, Rust, Scala, R Pro-gramming, Scheme, Smalltalk,SML/NJ, Simula, SQLite SQL, Tcl,TeX, Unlambda, VB.NET, Verilog, Whitespace, Ya Basic, etc.

[email protected] 102 Antonio Carrillo Ledesma, Et alii

Page 105: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

7 Otros Programas de Cómputo

Existe una gran variedad de programas de cómputo que son usados en loscursos de la Facultad de Ciencias, algunos de ellos los podemos agrupar en:

� Otros Programas Matemáticos

� Programas de Visualización y Gra�cación

� Programas de Navegación en la Web

� Compresores y Descompresores de Archivos

� Virtualización

7.1 Otros Programas Matemáticos

Existe una gran variedad de programas matemáticos disponibles para usua-rios ocasionales y avanzados. Entre los que se destacan:

� Xabacus

� Euler

� Geogebra

� Gretl

� Lybniz

� Mathomatic

� Pari/GP

� qliss3d

� RKWard

� XaoS

� Yacas

� BLISS

[email protected] 103 Antonio Carrillo Ledesma, Et alii

Page 106: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Mumpstest test

� nauty

� Netgen

� Eukleides

� Genius

� PSPP

� Pdl

� Yorick

� Gnuplot

� FreeMat

� mathomatic-primes

� OpenAxiom

� Julia

� SageMath

7.2 Programas de Visualización y Gra�cación

Existe una gran variedad de programas de visualización y gra�cación disponi-bles para usuarios ocasionales y avanzados. Entre los que se destacan tene-mos:

� Cabri-Geometer

� GeoGebra

� Sketchpad

� Cindirella

� RyC

[email protected] 104 Antonio Carrillo Ledesma, Et alii

Page 107: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Geup

� GlassFish

� NetLogo

� Gpaint

� GIMP

� Inkscape

� Umbrello

� ImageMagick

� Dia

� X�g

� Scribus

� Blender

� Calibre

� Kdenlive

� Kazam

� Pinta

� Krita

� Pencil2D

� Graphviz

� TextDraw

� Calligra

� feh

[email protected] 105 Antonio Carrillo Ledesma, Et alii

Page 108: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

7.3 Navegadores Web

Existe una gran variedad de programas para navegar en la Web13, entre losque se destacan tenemos:

� Chromium

� Firefox

� Chimera

� Conkeror

� Dillo

� Edbrowse

� Epiphany-browser

� Iceweasel

� Konqueror

� Midori

� Netrik

� NetSurf

� netsurf-fb

� netsurf-gtk

� Surf

� Uzbl13Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnito

para no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 106 Antonio Carrillo Ledesma, Et alii

Page 109: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Firefox-ESR

� QupZilla

� Arora

� Hv3

� Tor14

7.4 Compresores y Descompresores de Archivos

Existe una gran variedad de programas para comprimir y descomprimirarchivos, entre los que se destacan:

� gzip

� unzip

� zip

� pbzip2

� bzip2

� lbzip2

� arj

� zoo

� unrar

� lhasa

� ncompress14Tor es la sigla de The Onion Router (enrutador de cebolla), el cual es un proyecto

cuyo objetivo es el desarrollo de una red de comunicaciones distribuida de baja latencia ysobrepuesta a Internet, en la que el encaminamiento de los mensajes intercambiados entrelos usuarios no revele su identidad y que además, mantiene la integridad y el secreto de lainformación que vieja en ella. Se puede descargar el proyecto Tor listo para usar sin requeririnstalar nada en el equipo y este se puede descargar de: https://www.torproject.org

[email protected] 107 Antonio Carrillo Ledesma, Et alii

Page 110: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� p7zip

� p7zip-full

� p7zip-rar

� unace

� unace-nonfree

� zutils

� cpio

� pax

� unp

� lzma

� xz-utils pxz

� pixz kgb

� rar

� rarcrack

� zpaq

� bsdtar

� dtrx

� lzop

� tar

[email protected] 108 Antonio Carrillo Ledesma, Et alii

Page 111: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

7.5 Virtualización

Hoy en día tenemos a nuestra disposición varios manejadores de máquinasvirtuales (MV) que nos permiten crear, usar y optimizar máquinas virtuales(véase apéndice 11). Algunos manejadores son los siguientes:

� Virtualbox: Software desarrollado por Oracle. Se trata de un Softwaremultiplataforma capaz de virtualizar prácticamente la totalidad de sis-temas operativos con arquitectura x86/amd64. Es la máquina virtualmultiplataforma, la base de este Software dispone de una la licenciaGPL2 (véase apéndice 10.1.1), mientras que el pack de extensiones queañaden funcionalidades estan bajo licencia privativa. Virtualbox esgratuito para un uso no comercial.

� Vmware Workstation Player: Software privativo multiplataforma de-sarrollado por EMC corporation, es utilizado ampliamente en el entornoprofesional en las áreas del Cloud Computing entre muchas otras. Aligual que Virtualbox, esta máquina virtual nos permite virtualizar unagran diversidad de sistemas operativos. Vmware dispone de muchassoluciones de virtualización y prácticamente todas son de pago, no obs-tante Vmware Workstation Player es totalmente gratuita para un usono comercial.

� Parallels: Aunque se trata de una máquina virtual multiplataforma,es usada frecuentemente por los usuarios del sistema operativo OS Xde Apple que desean virtualizar el sistema operativo Windows. Estamáquina virtual es de pago y únicamente puede virtualizar los sistemasoperativos Windows y Mac OS.

� Windows Virtual PC: Software gratuito y privativo propiedad de Mi-crosoft que se puede usar tanto en Windows como en Mac OS. VirtualPC esta destinado únicamente a Virtualizar sistemas operativos Win-dows.

� QEMU/KVM: Software libre multiplataforma que dispone de licen-cia GPL (véase apéndice 10.1.1). QEMU permite virtualizar un grannúmero de sistemas operativos y además soporta varios tipos de arqui-tectura como por ejemplo X86, x86-64, MIPS, Arm, PowerPC, etc. Elrendimiento que ofrece QEMU es igual o superior a las opciones quehemos mencionado con anterioridad. Una gran ventaja de QEMU que

[email protected] 109 Antonio Carrillo Ledesma, Et alii

Page 112: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

permite usar una máquina virtual sin necesidad de tener privilegiosroot.

7.6 Desde la Nube

Existen diferentes servicios Web15 que permiten editar, compilar y ejecutarcódigo de diversos lenguajes y paquetes desde el navegador, esto en aras deque los estudiantes y profesores que cuenten con algún sistema de acceso a redy un navegador puedan programar en diversos lenguajes, IDEs y Terminalessin hacer instalación alguna en su equipo de cómputo, tableta o teléfonocelular.Algunos ejemplos de estos servicios son:

� https://www.rollapp.com/apps/data%20analysis

� https://www.rollapp.com/apps/development

� https://www.rollapp.com/apps/graphics

� https://www.rollapp.com/apps/o¢ ce

� https://www.rollapp.com/apps/utilities

� https://www.rollapp.com/apps/education

15Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de Internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.

[email protected] 110 Antonio Carrillo Ledesma, Et alii

Page 113: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

8 Consideraciones y Comentarios Finales

Los paquetes comerciales � de Software propietario� en general proveen unambiente integrado de trabajo que puede ser usado en la preparación deestudiantes para aplicar sus conocimientos al egresar en las diversas áreasde las carreras que imparte la UNAM, esto les permite laborar en empre-sas pequeñas, medianas y grandes con un mínimo de capacitación técnicaadicional.Además, en un mercado tan competitivo como el actual, las organiza-

ciones actuales focalizan sus recursos en las estrategias más adecuadas paraconducir a la compañía hacia el éxito. Los paquetes propietarios y los inci-pientes paquetes de Software libre pueden ayudar a conseguir este objetivo,completando la inversión ya realizada en sistemas operacionales.Pero el hecho de que las organizaciones actuales, manejan una gran can-

tidad de información, la cual puede o no estar dispersa en sus múltiplessistemas operacionales, requiere usar paquetes propietarios que tengan inte-grado el manejo de las grandes bases de datos distribuidas o centralizadas,esta integración ofrece bene�cios adicionales.

Por otro lado, notemos que, una vez que un producto de Software libreha empezado a circular, rápidamente esta disponible a un costo muy bajo.Al mismo tiempo, su utilidad no decrece. El Software, en general, podríaser considerado un bien de uso inagotable, tomando en cuenta que su costomarginal es pequeño y que no es un bien sujeto a rivalidad (la posesión delbien por un agente económico no impide que otro lo posea).Puesto que el Software libre permite el libre uso, modi�cación y redis-

tribución, a menudo encuentra un hogar entre usuarios para los cuales elcoste del Software no libre es a veces prohibitivo, o como alternativa a lapiratería (véase 10.3). También es sencillo modi�carlo localmente, lo quepermite que sean posibles los esfuerzos de traducción a idiomas que no sonnecesariamente rentables comercialmente.La mayoría del Software libre se produce por equipos internacionales que

cooperan a través de la libre asociación. Los equipos estan típicamente com-puestos por individuos con una amplia variedad de motivaciones, y puedenprovenir tanto del sector privado, del sector voluntario o del sector público.En México el Software libre nació en las Universidades y los Centros de

Investigación. Es por eso que, desde hace tres décadas, los estudiantes y losprofesores usan Software libre para �nes didácticos y de investigación. Las

[email protected] 111 Antonio Carrillo Ledesma, Et alii

Page 114: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

universidades suelen optar por el uso de Software libre en vez de utilizarSoftware privativo porque satisface de una mejor manera sus necesidades decómputo, dada su naturaleza de apertura del código y la libertad de compartirlos resultados obtenidos. De forma colateral, no se tienen gastos adicionalesderivados del pago de licenciamientos.

8.1 Integración del Cómputo en las Carreras de Cien-cias

El uso de programas de cómputo esta integrado a las carreras de la Facul-tad de Ciencias desde hace mucho tiempo, pero la gran mayoría se realizacon productos propietarios, lo cual no representa ningún problema técnico,pero si un problema para la institución y estudiantes, ya que las versionesactualmente usadas, no son del todo compatibles entre sí, ello implica quese requiere o tener la última versión del producto o diferentes versiones delmismo para trabajos cotidianos en una misma computadora.El uso de programas de cómputo de Software libre esta cada día más

integrado al uso cotidiano que hacen profesores, ayudantes y estudiantes en laFacultad de Ciencias, pero todavía para el Sistema OperativoWindows (véase[3]), así como para paquetes de uso común, no ha sido posible encontrar unadecuado reemplazo, los más comunes son MATLAB, Mathematica, Maple,SPSS, SAS y Microsoft O¢ ce.Para la Facultad de Ciencias y para la Universidad, el contar con las

licencias necesarias para que cada máquina a la que los alumnos tienen acce-so cuente con una, es en extremo prohibitivo por el costo. Esto mismosucede en el caso de los estudiantes, pues el costo de una sola licencia parauso académicos es onerosa más si consideramos la diversidad de programasrequeridos para una sola meteria y esto pasa con cada uno de los cursos dela Facultad.Es por ello que el uso de herramientas de Software libre se visualiza como

un reemplazo natural a los paquetes propietarios, pero la realidad dista deser tan simple. Ya que, actualmente no es posible obtener las característicasmínimas en Software libre para que puedan ser un reemplazo real de lospaquetes de propietarios. Este hecho ha ocasionado que existe un uso cadavez más generalizado entre profesores y alumnos a usar Software sin la licenciarespectiva (véase 10.3).

En la UNAM, a través de la Dirección General de Cómputo y de Téc-

[email protected] 112 Antonio Carrillo Ledesma, Et alii

Page 115: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

nologías de la Información y Comunicación se dispone de un restringidonúmero de paquetes y versiones que son puestos a disposición de la comu-nidad universitaria para usar en los equipos personales sin aparente costopara el usuario �nal � pero el costo de dichos paquetes son deducidos por laempresa como una donación, lo cual sí implica un costo real que se deduceen el ejercicio �scal de la empresa donante y éste repercute en los ingresosque el gobierno no recaudará por motivo de impuestos� .

8.2 Ventajas, Desventajas y Carencias del Software Li-bre

Notemos que la ventaja de tener múltiples herramientas para realizar opera-ciones elementales y avanzadas de paquetes de cálculo numérico, simbólico,estadístico y o�mático es en sí misma una gran ventaja. Para los centrosuniversitarios y usuarios ocasionales, las herramientas de Software libre sonuna herramienta invaluable, en el caso de empresas que requieren usar op-ciones avanzadas o generadas por terceros, los paquetes propietarios destacancomo herramientas de trabajo óptimas. Pero para todos los casos, hay quedestacar:

� Funcionalidades básicas: Todos los paquetes implementan las funciona-lidades básicas, ya que todos los paquetes llevan años desarrollándose.

� Funcionalidades avanzadas: Por mucho, los paquetes propietarios tienenimplementadas cientos de funciones avanzadas que pueden ser muyútiles para usuarios avanzados, pero rara vez son usados por los usua-rios noveles o cotidianos.

� Fiabilidad: En los paquetes en desarrollo son comunes las caídas delprograma, pero en los de Software propietario se destaca por ser más�able que los demás.

� Información: El Software propietario son paquetes con una abundantebibliografía y la propia ayuda del programa.

� Facilidad de Manejo: Ninguno de los programas presenta grandes di�-cultades a la hora de su uso. Pero en menor o mayor medida, todos lospaquetes del Software libre presentan entornos de desarrollo funcional,pero perfectible.

[email protected] 113 Antonio Carrillo Ledesma, Et alii

Page 116: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Costo: El costo de las diversas versiones de Software propietario sueleser prohibitivo para instituciones educativas y usuarios ocasionales, enel caso del Software libre, los paquetes se pueden descargar de la red sinmás costo que el acceso a Internet y los medios de instalación cuandoson requeridos.

El Software libre es aún joven, en los miles de proyectos actuales se estatrabajando a diario en mejorar la parte computacional de los algoritmosinvolucrados en el paquete, haciendo y puliendo interfaces grá�cas, generandoayuda en línea así como la documentación necesaria para que usuarios novelesy avanzados usen la mayor cantidad de opciones programadas en los paquetes.Para muestra de este maravilloso avance, tomemos el proyecto del Ker-

nel de Linux y su uso en los sistemas operativos Android, Ubuntu, DebianGNU/Linux, que actualmente se ejecuta en millones de equipos y contienemiles de aplicaciones y estan soportados por una gran cantidad de usuarios yempresas comerciales. Estos han logrado desplazar a muchos de sus competi-dores por sus múltiples bondades y bajo costo de desarrollo, al reusar milesde aplicaciones ya existentes que usan Software libre y permitir desarrollarotro tanto de aplicaciones bajo una plataforma que se ejecutan en los másdiversos procesadores.Así también, en los últimos años, muchos proyectos han pasados de ser

simples programas en línea de comandos a complejas aplicaciones multi-plataforma � ejecutan en distintos sistemas operativos como son Windows,Linux y Mac� con ambientes grá�cos multimedia que en muchos casos hansuperado a sus contrapartes comerciales, por ejemplo los navegadores Webtipo FireFox y la suite o�mática tipo Libre O¢ ce, entre muchos otros.

8.3 Comentarios Finales

A diferencia de otros paquetes, SPSS, SAS, Microsoft O¢ ce, etc. ofrecensoluciones en forma de una suite completa para la gestión de información paraencontrar el llamado poder del conocimiento, pero el costo de las versionescompletas y aún las educativas es prohibitivo para la gran mayoría de lasinstituciones educativas, en particular para la UNAM. Por ello, el resto de lospaquetes propietarios y libres ofrecen una ventaja competitiva, al permitirleal profesor y sus estudiantes contar con versiones completas y funcionalesen las que pueden ser aplicados los conocimientos adquiridos en los diversoscursos de la carrera.

[email protected] 114 Antonio Carrillo Ledesma, Et alii

Page 117: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Por otro lado, para reforzar la apropiación del Software libre por partede la comunidad de la Facultad de Ciencias de la UNAM, es necesario pro-porcionar a la comunidad demostraciones y cursos cortos de las herramientasde Software libre, iniciando con mostrar el uso de sistemas operativos libresbasados en Linux. Ello es posible haciendo uso de los sistemas llamados"Live", ya que cada alumno puede probar y usar el sistema operativo enconjunto con cientos de herramientas libres, sin la necesidad de instalar Soft-ware en la máquina que utilice para practicar. Cuando el alumno se sientacómodo con el sistema, es posible ayudarlo a instalar mediante tutoriales enlínea y/o presenciales el sistema en su equipo de cómputo.Lo mismo es posible hacer, al preparar demostraciones del Software que

puede reemplazar paquetes muy difundidos en la comunidad como son: MAT-LAB, Mathematica, Maple, SPSS, SAS y Microsoft O¢ ce. Estos cursos nonecesariamente se centrarían en las similitudes o diferencias entre paqueteslibres y propietarios, más bien, para cautivar a usuarios noveles y futurosayudantes a dar cursos completos de las herramientas libres mostrando suaplicabilidad en diferentes ramas de las matemáticas aplicadas.Para realizar dichos cursos, se cuenta con todos los recursos necesarios.

Por un lado, se dispone de laboratorios y talleres con Software libre instaladoen los equipos de cómputo, además, se pueden usar los sistemas "Live" quepueden ser proporcionados en DVDs o en unidades �ash USB. Estas últimas,proporcionan mejor rendimiento, pueden ser actualizadas y reutilizados tan-tas veces como sea necesario para conocer uno o más sistemas operativos.Estos sistemas "Live" pueden ser generados por el propio usuario, usando lasdecenas de paquetes disponibles en Windows o Linux que generan sistemas"Live" a partir de las imágenes ISO bajadas de la red � por ejemplo, desistemas operativos como Knoppix (véase [98])� .De esta forma, se puede coadyvar a que alumnos, ayudantes y profesores

conozcan el mundo del Software libre, para que con el tiempo se adoptesu uso, sin dejar de lado, el proporcionar cuando sea necesario, cursos deSoftware privativo pero siempre teniendo en cuenta que se puede � en medidade lo posible� trabajar con paquetes alternativos, como los que proporcionael Software libre.Además, el Software libre ofrece una ventaja competitiva, al permitirle

al profesor y sus estudiantes contar con versiones completas y funcionales enlas que pueden ser aplicados los conocimientos adquiridos en los diversos cur-sos de las carreras de Ciencias, dejando el manejo especializado de paquetesa cursos avanzados o para cuando el educando realice sus prácticas profe-

[email protected] 115 Antonio Carrillo Ledesma, Et alii

Page 118: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

sionales. De esta forma se pueden preparar a los estudiantes para aplicarsus conocimientos al egresar en diversas áreas de la carreras de Ciencias ycon pocos conocimientos técnicos adicionales puedan laborar en pequeñas,medianas y grandes empresas.

[email protected] 116 Antonio Carrillo Ledesma, Et alii

Page 119: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

9 Apéndice A: Cómputo en Instituciones Ed-ucativas

Hace algunos años la disposición de un equipo de cómputo por cada estu-diante era algo difícil de satisfacer para las instituciones educativas. Ahora,las cosas son distintas, cada vez más estudiantes disponen y tienen acceso adispositivos de cómputo � computadoras de escritorio, portátiles, tabletas, yteléfonos inteligentes� que en principio pareciera que permitirían satisfacerla creciente demanda de recursos computacionales de los estudiantes.Pero una computadora requiere de un sistema operativo además de los

diversos paquetes de Software � que esten disponibles para esa versión delsistema operativo� que permitan resolver los problemas para los cuales usa elequipo de cómputo. Aquí es donde empiezan los problemas para los usuariosde equipos de cómputo, puesto que hay una gran cantidad de equipos decómputo con diversas tecnologías y recursos que soportan alguna versión desistema operativo acorde a los recursos computacionales del equipo adquiridoque no necesariamente soportan a todos y cada uno de los programas decómputo que el usuario requiere.Ante la creciente necesidad de programas de cómputo podríamos pensar

en que cada usuario que requiera hacer uso de ellos tenga acceso a un equipode cómputo adecuado, conjuntamente con el sistema operativo que lo soporte.Pero esto dista mucho de la realidad, puesto que la gran mayoría de losusuarios no pueden hacer esos gastos y menos una institución educativa.

¿Entonces que opciones tenemos para satisfacer la creciente de-manda de recursos computacionales?

� Por un lado, si ya disponemos de un equipo de cómputo con su respec-tivo sistema operativo, entonces hacer uso de sólo aquellos programasde cómputo que nuestro equipo soporte, teniendo cuidado de no instalarprogramas de cómputo antagonistas.

� Otra opción es, si ya disponemos de un equipo de cómputo, entoncestener dos o más versiones de sistema operativo que permitan instalaruna mayor diversidad de programas de cómputo y tener el cuidado deno instalar programas de cómputo incompatibles. Así, dependiendo denuestras necesidades podemos hacer uso de uno u otro sistema opera-tivo y sus respectivos programas.

[email protected] 117 Antonio Carrillo Ledesma, Et alii

Page 120: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� La opción más viable, es una que conjugue las dos anteriores. Peroademás, podríamos emular Hardware del que no disponemos medianteel uso de máquinas virtuales (véase 11) que nos permitirían en un sóloequipo de cómputo usar simultáneamente diversos sistemas operativospara distintas arquitecturas y sus respectivos programas que ahora esposible instalar en las máquinas virtuales programas de cómputo in-compatibles de forma aislada unos de otros.

Usando esta última opción es posible satisfacer en un sólo equipo de cóm-puto una gran variedad de necesidades computacionales. Esto permite quea nivel de usuario (estudiante, ayudante y profesor) o institución educativa,el equipo de cómputo usando Software de virtualización pueda proporcionarun marco que permita satisfacer las diversas y crecientes necesidades com-putacionales. Pero hay que notar que aún esta opción no esta exenta deproblemas legales y técnicos, pero en principio es una opción viable para lagran mayoría de los usuarios y la institución educativa.Tomando esto en cuenta, es viable tener una cantidad adecuada de paque-

tes de cómputo, que permitieran satisfacer las necesidades especializadas dela gran mayoría de los cursos y estos estar instalados en aquellos espacios enlos cuales se asignarían los cursos, además de las áreas comunes de cómputoen la que los estudiantes requiriesen hacer uso de dichos paquetes. Además,de proporcionar un mecanismo para que los profesores y ayudantes que re-quieran enseñar algo con alguna versión privativa que no se disponga, seaimplementada � en medida de lo posible� en los paquetes disponibles. Perohay que hacer notar, que no todas aquellas funciones que hace una versiónparticular de un paquete, es posible hacerlas con otras versiones o paquetesalternativos. Esto es muy común con ciertas actividades especia-lizadas �al hacer cálculo simbólico, cálculo numérico, manejo de datos y trabajar enentornos de desarrollo� . Ello implicaría, por un lado restringir el Softwareinstalado en los equipos de cómputo o por el otro instalar todas y cada unade las solicitudes de Software, aún cuando se requiera más de una versión deun paquete particular.El restringir el Software instalado, impediría al profesor � que así lo re-

quiera por la libertad de cátedra� enseñar aquello que considera que es nece-sario � en particular el manejo de uno o más paquetes especializados decómputo� para proporcionar las herramientas básicas a sus alumnos y queestos deben de dominar para aprobar su curso.

[email protected] 118 Antonio Carrillo Ledesma, Et alii

Page 121: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

En el caso de dar �exibilidad, para que cada profesor solicite la insta-lación del paquete o los paquetes que requiera para sus cursos, implica queel Software solicitado puede o no contar con licencia adecuada de uso. Así,se estaría permitiendo que se tenga instalado Software del que se viola lalicencia de uso (véase 10.3).En cuanto a tener la lista de�nitiva de Software que usaran todos y cada

uno de los profesores o ayudantes de los cursos asignados a un espacio es difíciltener antes del inicio del curso � por la costante evolución del Software y lascambiantes necesidades de la enseñanza� , además de depender de la formade asignación de estos en los laboratorios y talleres de cómputo. En cuantoa la solicitud para hacer la instalación correspondiente, se requiere tenercerteza de en que espacio serán asignados todos y cada uno de los cursos.

Por ello se han buscado opciones16 � no siempre las más adecuadas olícitas (véase 10.3)� para que sin importar en que espacio sea asignado elcurso � siempre y cuando el equipo de cómputo lo soporte� se tenga desdelos primeros días de uso del espacio el paquete solicitado y en casos excep-cionales el tiempo de espera sea menor a unos horas o días sin importar laplataforma �Windows o Linux� o el tipo de Software solicitado � libreo privativo� , se ha optado por la virtualización17, usando como sistemaoperativo base a Debian GNU/Linux Estable, instalando como paquete devitualización a KVM/QEMU. Aquí, se montan las múltiples máquinas vir-tuales que son ejecutadas según las necesidades del usuario. Para controlarla actualización de las máquinas virtuales sin que se requiera intervención delusuario, se usa RSYNC tunelizado mediante SSH que sincroniza las máquinasvirtuales y la con�guración del equipo base de forma remota.Para tener la �exibilidad anteriormente comentada, es necesario poder

contar con distintas versiones de sistemas operativos, de cada una de las ver-siones � en caso de Windows, tener independientemente los Service Pack� .

16En el caso que el equipo sólo tenga un sistema operativo sin virtualización, es necesarioesperar a que las asignaciones de los cursos y sus respectivas peticiones de uso de paquetesde cómputo estén completas, para entonces proceder a realizar instalación del Software queno sean antagónicos. Nótese que, por lo general, los cursos requieren el uso de los equiposde cómputo y el Software solicitado de forma inmediata, por lo cual esperar tiempo (días)para tener acceso al mismo no es una opción viable.17Una vez creada la máquina virtual, esta es un archivo que puede ser copiado o descar-

gado de la red, por ello el usuario � estudiante, ayudante o profesor� puede llevarse lamáquina virtual para hacer uso de ella en el equipo al que tenga acceso, teniendo comoúnico requisito tener instalado el programa de virtualización.

[email protected] 119 Antonio Carrillo Ledesma, Et alii

Page 122: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

De tal forma que sea posible instalar cada versión de Software solicitada en laplataforma adecuada, teniendo en cuenta que muchas versiones del Softwareson mutuamente excluyentes para ser instaladas en una misma versión delsistema operativo simultáneamente.

Por todo lo anterior, el uso de máquinas virtuales � que permiten tenermúltiples versiones de sistemas operativos independientemente, así como deuna versión particular tener por separado cada una de ellas con los respec-tivos Service Pack� es una opción viable para proporcionar el servicio deinstalación centralizada de los diversos paquetes de cómputo solicitados porlos profesores de las diversas carreras de la Facultad de Ciencias. Esta op-ción minimiza los tiempos de espera para la instalación de un paquete enparticular y agiliza las prestaciones a todos y cada uno de los grupos quese atienden semestralmente en los cientos de equipos en los laboratorios ytalleres de cómputo.

[email protected] 120 Antonio Carrillo Ledesma, Et alii

Page 123: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

10 Apéndice B: Software Libre y Propietario

Hoy en día los usuarios disponemos de dos grandes opciones para adquirir yusar el Software necesario para que nuestra computadora funcione, a saber:

� Por un lado, podemos emplear programas comerciales, de los cuales nosomos dueños del Software, sólo concesionarios al adquirir una licenciade uso del Software y nos proporcionan un instalable del programaadquirido. La licencia respectiva es en la gran mayoría de los casosmuy restrictiva, ya que restringe su uso a una sola máquina y/o usuariosimultáneamente.

� Por otro lado, existe el Software libre, desarrollados por usuarios y parausuarios que, entre otras cosas, comparten los códigos fuente, el pro-grama ejecutable y dan libertades para estudiar, adaptar y redistribuira quien así lo requiera el programa y todos sus derivados.

10.1 Software Libre

La de�nición de Software libre (véase [19], [20], [12], [13], [11] y [15]) estipulalos criterios que se tienen que cumplir para que un programa sea consideradolibre. De vez en cuando se modi�ca esta de�nición para clari�carla o pararesolver problemas sobre cuestiones delicadas. «Software libre» signi�ca queel Software respeta la libertad de los usuarios y la comunidad. En térmi-nos generales, los usuarios tienen la libertad de copiar, distribuir, estudiar,modi�car y mejorar el Software. Con estas libertades, los usuarios � tantoindividualmente como en forma colectiva� controlan el programa y lo quehace.Cuando los usuarios no controlan el programa, el programa controla a los

usuarios. Los programadores controlan el programa y, a través del programa,controlan a los usuarios. Un programa que no es libre, llamado «privativoo propietario» , y es considerado por muchos como un instrumento de poderinjusto.El Software libre es la denominación del Software que respeta la liber-

tad de todos los usuarios que adquirieron el producto y, por tanto, una vezobtenido el mismo puede ser usado, copiado, estudiado, modi�cado, y re-distribuido libremente de varias formas. Según la Free Software Foundation

[email protected] 121 Antonio Carrillo Ledesma, Et alii

Page 124: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

(véase [19]), el Software libre se re�ere a la libertad de los usuarios para eje-cutar, copiar, distribuir, y estudiar el mismo, e incluso modi�car el Softwarey distribuirlo modi�cado.Un programa es Software libre si los usuarios tienen las cuatro libertades

esenciales:

0. La libertad de usar el programa, con cualquier propósito.

1. La libertad de estudiar cómo funciona el programa y modi�carlo, adap-tándolo a tus necesidades.

2. La libertad de distribuir copias del programa, con lo cual puedes ayudara tu prójimo.

3. La libertad de mejorar el programa y hacer públicas esas mejoras a losdemás, de modo que toda la comunidad se bene�cie.

Un programa es Software libre si los usuarios tienen todas esas libertades.Por tanto, el usuario debe ser libre de redistribuir copias, tanto con, comosin modi�caciones, ya sea gratuitamente o cobrando una tarifa por la dis-tribución, a cualquiera en cualquier parte. El ser libre de hacer estas cosassigni�ca, entre otras cosas, que no tiene que pedir ni pagar el permiso.También debe tener la libertad de hacer modi�caciones y usarlas en pri-

vado para su propio trabajo o pasatiempo, sin siquiera mencionar que exis-ten. Si publica sus cambios, no debe estar obligado a noti�carlo a nadie enparticular, ni de ninguna manera en particular.La libertad de ejecutar el programa signi�ca que cualquier tipo de persona

u organización es libre de usarlo en cualquier tipo de sistema de computación,para cualquier tipo de trabajo y �nalidad, sin que exista obligación algunade comunicarlo al programador ni a ninguna otra entidad especí�ca. Enesta libertad, lo que importa es el propósito de los usuarios, no el de losprogramadores. El usuario es libre de ejecutar el programa para alcanzarsus propósitos, y si lo distribuye a otra persona, también esa persona serálibre de ejecutarlo para lo que necesite; nadie tiene derecho a imponerle suspropios objetivos.La libertad de redistribuir copias debe incluir las formas binarias o eje-

cutables del programa, así como el código fuente, tanto para las versionesmodi�cadas como para las que no lo esten. Distribuir programas en formade ejecutables es necesario para que los sistemas operativos libres se puedan

[email protected] 122 Antonio Carrillo Ledesma, Et alii

Page 125: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

instalar fácilmente. Resulta aceptable si no existe un modo de producir unformato binario o ejecutable para un programa especí�co, dado que algunoslenguajes no incorporan esa característica, pero debe tener la libertad de re-distribuir dichos formatos si encontrara o programara una forma de hacerlo.Para que la libertad 1 y 3 de realizar cambios y publicar las versiones

modi�cadas tenga sentido, el usuario debe tener acceso al código fuente delprograma. Por consiguiente, el acceso al código fuente es una condiciónnecesaria para el Software libre. El «código fuente» compilado no es códigofuente real, y no cuenta como código fuente.La libertad 1 incluye la libertad de usar su versión modi�cada en lugar

de la original. Si el programa se entrega con un producto diseñado para eje-cutar versiones modi�cadas de terceros, pero rechaza ejecutar las suyas, unapráctica conocida como «tivoización» o «arranque seguro» [«Lockdown» ]la libertad 1 se convierte más en una �cción teórica que en una libertad prác-tica. Esto no es su�ciente. En otras palabras, estos binarios no son Softwarelibre, incluso si se compilaron desde un código fuente que es libre.Una manera importante de modi�car el programa es agregándole subruti-

nas y módulos libres ya disponibles. Si la licencia del programa especi�ca queno se pueden añadir módulos que ya existen y que estan bajo una licenciaapropiada, por ejemplo si requiere que usted sea el titular de los derechos deautor del código que desea añadir, entonces se trata de una licencia demasia-do restrictiva como para considerarla libre.La libertad 3 incluye la libertad de publicar sus versiones modi�cadas

como Software libre. Una licencia libre también puede permitir otras formasde publicarlas; en otras palabras, no tiene que ser una licencia de Copyleft.No obstante, una licencia que requiera que las versiones modi�cadas no seanlibres, no se puede considerar libre.«Software libre» no signi�ca que «no es comercial» . Un programa libre

debe estar disponible para el uso comercial, la programación comercial y ladistribución comercial. La programación comercial de Software libre ya noes inusual; tal Software libre comercial es muy importante, ejemplo de elloes la empresa RedHat. Puede haber pagado dinero para obtener copias deSoftware libre, o puede haber obtenido copias sin costo. Pero sin tener encuenta cómo obtuvo sus copias, siempre tiene la libertad de copiar y modi�carel Software, incluso de vender copias.El término Software no libre se emplea para referirse al Software dis-

tribuido bajo una licencia de Software más restrictiva que no garantiza estascuatro libertades. Las leyes de la propiedad intelectual reservan la mayoría de

[email protected] 123 Antonio Carrillo Ledesma, Et alii

Page 126: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

los derechos de modi�cación, duplicación y redistribución para el dueño delCopyright; el Software dispuesto bajo una licencia de Software libre rescindeespecí�camente la mayoría de estos derechos reservados.Los manuales de Software deben ser libres por las mismas razones que

el Software debe ser libre, y porque de hecho los manuales son parte delSoftware. También tiene sentido aplicar los mismos argumentos a otros tiposde obras de uso práctico; es decir, obras que incorporen conocimiento útil, talcomo publicaciones educativas y de referencia. La Wikipedia es el ejemplomás conocido.Tanto la Open Source Initiative como la Free Software Foundation mantie-

nen en sus páginas Web (véase [19], [20], y [15]) o�ciales listados de laslicencias de Software libre que aprueban.

10.1.1 Tipos de Licencias

Una licencia es aquella autorización formal con carácter contractual que unautor de un Software da a un interesado para ejercer "actos de explotaciónlegales". Pueden existir tantas licencias como acuerdos concretos se den entreel autor y el licenciatario. Desde el punto de vista del Software libre, existendistintas variantes del concepto o grupos de licencias:

Licencias GPL Una de las más utilizadas es la Licencia Pública Generalde GNU ( GNU GPL). El autor conserva los derechos de autor (Copyright),y permite la redistribución y modi�cación bajo términos diseñados para ase-gurarse de que todas las versiones modi�cadas del Software permanecen bajolos términos más restrictivos de la propia GNU GPL. Esto hace que sea im-posible crear un producto con partes no licenciadas GPL, el conjunto tieneque ser GPL.En la práctica, esto hace que las licencias de Software libre se dividan en

dos grandes grupos, aquellas que pueden ser mezcladas con código licenciadobajo GNU GPL (y que inevitablemente desaparecerán en el proceso, al serel código resultante licenciado bajo GNU GPL) y las que no lo permiten alincluir mayores u otros requisitos que no contemplan ni admiten la GNUGPL y que por lo tanto no pueden ser enlazadas ni mezcladas con códigogobernado por la licencia GNU GPL.

Licencias estilo BSD Llamadas así porque se utilizan en gran cantidad deSoftware distribuido junto a los sistemas operativos BSD. El autor, bajo tales

[email protected] 124 Antonio Carrillo Ledesma, Et alii

Page 127: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

licencias, mantiene la protección de Copyright únicamente para la renunciade garantía y para requerir la adecuada atribución de la autoría en traba-jos derivados, pero permite la libre redistribución y modi�cación, incluso sidichos trabajos tienen propietario. Son muy permisivas, tanto que son fácil-mente absorbidas al ser mezcladas con la licencia GNU GPL con quienes soncompatibles. Puede argumentarse que esta licencia asegura "verdadero" Soft-ware libre, en el sentido que el usuario tiene libertad ilimitada con respectoal Software, y que puede decidir incluso redistribuirlo como no libre.

Copyleft Hay que hacer constar que el titular de los derechos de autor(Copyright) de un Software bajo licencia Copyleft puede también realizaruna versión modi�cada bajo su Copyright original, y venderla bajo cualquierlicencia que desee, además de distribuir la versión original como Softwarelibre. Esta técnica ha sido usada como un modelo de negocio por una seriede empresas que realizan Software libre (por ejemplo MySQL); esta prácticano restringe ninguno de los derechos otorgados a los usuarios de la versiónCopyleft.

Comparación con el Software de Código Abierto Aunque en la prác-tica el Software de código abierto y el Software libre comparten muchas de suslicencias, la Free Software Foundation opina que el movimiento del Softwarede código abierto es �losó�camente diferente del movimiento del Softwarelibre. Los defensores del término «código abierto (Open Source)» , a�rmanque éste evita la ambigüedad del término en ese idioma que es «Free» en«Free Software» .Mucha gente reconoce el bene�cio cualitativo del proceso de desarrollo de

Software cuando los desarrolladores pueden usar, modi�car y redistribuir elcódigo fuente de un programa. El movimiento del Software libre hace especialénfasis en los aspectos morales o éticos del Software, viendo la excelenciatécnica como un producto secundario de su estandar ético. El movimientode código abierto ve la excelencia técnica como el objetivo prioritario, siendoel compartir el código fuente un medio para dicho �n. Por dicho motivo, laFSF se distancia tanto del movimiento de código abierto como del término«código abierto (Open Source)» .Puesto que la «iniciativa de Software libre Open Source Initiative (OSI)»

sólo aprueba las licencias que se ajustan a la «de�nición de código abierto(Open Source De�nition)» , la mayoría de la gente lo interpreta como un es-

[email protected] 125 Antonio Carrillo Ledesma, Et alii

Page 128: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

quema de distribución, e intercambia libremente "código abierto" con "Soft-ware libre". Aún cuando existen importantes diferencias �losó�cas entreambos términos, especialmente en términos de las motivaciones para el de-sarrollo y el uso de tal Software, raramente suelen tener impacto en el procesode colaboración.Aunque el término "código abierto" elimina la ambigüedad de libertad

frente a precio (en el caso del inglés), introduce una nueva: entre los progra-mas que se ajustan a la de�nición de código abierto, que dan a los usuariosla libertad de mejorarlos, y los programas que simplemente tienen el códigofuente disponible, posiblemente con fuertes restricciones sobre el uso de dichocódigo fuente. Mucha gente cree que cualquier Software que tenga el códigofuente disponible es de código abierto, puesto que lo pueden manipular. Sinembargo, mucho de este Software no da a sus usuarios la libertad de dis-tribuir sus modi�caciones, restringe el uso comercial, o en general restringelos derechos de los usuarios.

10.2 Software Propietario

No existe consenso sobre el término a utilizar para referirse al opuesto delSoftware libre. La expresión «Software propietario (Proprietary Software)»(véase [14]), en la lengua anglosajona, "Proprietary" signi�ca «poseído ocontrolado privadamente (Privately Owned and Controlled)» , que destacala manutención de la reserva de derechos sobre el uso, modi�cación o redis-tribución del Software. Inicialmente utilizado, pero con el inconveniente quela acepción proviene de una traducción literal del inglés, no correspondiendosu uso como adjetivo en el español, de manera que puede ser consideradocomo un barbarismo.El término "propietario" en español resultaría inadecuado, pues signi�ca

que «tiene derecho de propiedad sobre una cosa» , por lo que no podría cali�-carse de "propietario" al Software, porque éste no tiene propiedad sobre nada(es decir, no es dueño de nada) y, además, no podría serlo (porque es una cosay no una persona). Así mismo, la expresión "Software propietario" podríaser interpretada como "Software sujeto a propiedad" (derechos o titularidad)y su opuesto, el Software libre, también esta sujeto al derecho de autor. Otrainterpretación es que contrariamente al uso popular del término, se puedea�rmar de que "todo Software es propietario", por lo que la forma correctade referirse al Software con restricciones de uso, estudio, copia o mejora esla de Software privativo, según esta interpretación el término "propietario"

[email protected] 126 Antonio Carrillo Ledesma, Et alii

Page 129: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

podría aplicarse tanto para Software libre como Software privativo, ya quela diferencia entre uno y otro esta en que el dueño del Software privativo lolicencia como propiedad privada y el de Software libre como propiedad social.Con la intención de corregir el defecto de la expresión "Software propie-

tario" aparece el llamado "Software con propietario", sin embargo se ar-gumenta contra del término "con propietario" justamente su similitud conProprietary en inglés, que sólo haría referencia a un aspecto del Softwareque no es libre, manteniendo una de las principales críticas a éste (de "Soft-ware sujeto a derechos" o "propiedad"). Adicionalmente, si "propietario"se re�ere al titular de los derechos de autor � y esta claro que no se puedereferir al usuario, en tanto éste es simplemente un cesionario� , no resuelvela contradicción: todo el Software libre tiene también titulares de derechosde autor.La expresión Software no libre (en inglés Non-Free Software) es usado

por la FSF para agrupar todo el Software que no es libre, es decir, incluye alllamado en inglés "Semi-Free Software" (Software semilibre) y al "PropietarySoftware". Asimismo, es frecuentemente utilizado para referirse al Softwareque no cumple con las Directrices de Software libre de Debian GNU/Linux,las cuales siguen la misma idea básica de libertad en el Software, propugnadapor la FSF, y sobre las cuales esta basada la de�nición de código abierto dela Open Source Initiative.Adicionalmente el Software de código cerrado nace como antónimo de

Software de código abierto y por lo tanto se centra más en el aspecto deausencia de acceso al código que en los derechos sobre el mismo. éste sere�ere sólo a la ausencia de una sola libertad por lo que su uso debe enfocarsesólo a este tipo de Software y aunque siempre signi�que que es un Softwareque no es libre, no tiene que ser Software de código cerrado.La expresión Software privado es usada por la relación entre los conceptos

de tener y ser privado. Este término sería inadecuado debido a que, en una desus acepciones, la palabra "privado" se entiende como antónimo de "público",es decir, que «no es de propiedad pública o estatal, sino que pertenece a par-ticulares» , provocando que esta categoría se interpretará como no referenteal Estado, lo que produciría la exclusión del Software no libre generado porel aparato estatal. Además, el "Software público" se asocia generalmente conSoftware de dominio público.

[email protected] 127 Antonio Carrillo Ledesma, Et alii

Page 130: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

10.3 Implicaciones Económico-Políticas

Una vez que un producto de Software libre ha empezado a circular, rápida-mente esta disponible a un costo muy bajo. Al mismo tiempo, su utilidad nodecrece. El Software, en general, podría ser considerado un bien de uso in-agotable, tomando en cuenta que su costo marginal es pequeñísimo y que noes un bien sujeto a rivalidad � la posesión del bien por un agente económicono impide que otro lo posea� .Puesto que el Software libre permite el libre uso, modi�cación y redis-

tribución, a menudo encuentra un hogar entre usuarios para los cuales elcoste del Software no libre es a veces prohibitivo, o como alternativa a la pi-ratería. También es sencillo modi�carlo localmente, lo que permite que seanposibles los esfuerzos de traducción a idiomas que no son necesariamenterentables comercialmente.La mayoría del Software libre se produce por equipos internacionales que

cooperan a través de la libre asociación. Los equipos estan típicamente com-puestos por individuos con una amplia variedad de motivaciones, y puedenprovenir tanto del sector privado, del sector voluntario o del sector público.En México el Software libre nació en las Universidades y los Centros de

Investigación. Es por eso que, desde hace tres décadas, los estudiantes y losprofesores usan Software libre para �nes didácticos y de investigación. Lasuniversidades suelen optar por el uso de Software libre en vez de utilizarSoftware privativo porque satisface de una mejor manera sus necesidades decómputo, dada su naturaleza de apertura del código y la libertad de compartirlos resultados obtenidos. De forma colateral, no se tienen gastos adicionalesderivados del pago de licenciamientos.Computólogos, físicos, químicos, matemáticos y otros profesionistas y

cientí�cos utilizan Software libre como herramienta de investigación y creación.Un claro ejemplo de ello es la llamada Delta Metropolitana, que es una redde supercomputadoras que estan en varios puntos de la Ciudad de México,en el CINESTAV, el IPN, la UAM y la UNAM. Esa red de supercómputo uti-liza Software libre para consolidar sus recursos, hacer investigación y generarconocimiento.Por otro lado, dadas las características del Software de código cerrado, un

usuario común ignora absolutamente el contenido del mismo y por tanto siexiste dentro de las líneas del código alguna amenaza contra su equipo o suinformación, además el usuario no sólo tiene prohibido el intentar eliminar ocambiar esa parte del código sino que puede ser perseguido por la ley por el

[email protected] 128 Antonio Carrillo Ledesma, Et alii

Page 131: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

hecho de intentar conocer si existe tal amenaza en dicho Software.Además, en una sociedad de la información, el Software se ha convertido

en una herramienta importante de productividad, y una licencia de Softwareprivativo constituye un acuerdo o contrato entre dos sujetos jurídicos que vo-luntariamente acuerdan las condiciones de uso de un programa, pero el costoeconómico de dicha licencia es cada vez más alto y en el caso de institucioneseducativas, gubernamentales y sociedades civiles es en la mayoría de los casos� por decir lo menos�prohibitivo.

Ya hace un tiempo, se anunció en varios periódicos de circulación nacional(véase [100]) que:

El Instituto Mexicano de la Propiedad Industrial (IMPI) anuncióque en las próximas semanas dará inicio una serie de clausuras anegocios que utilicen Software licenciado de manera ilegal; estocomo parte del acuerdo que tiene la dependencia con The SoftwareAlliance (BSA) desde el 2002, el cual busca fomentar el uso deprogramas informáticos legales y disminuir el índice de pirateríaen el país.

De acuerdo a la BSA, el porcentaje de Software ilegal utilizadoen el territorio aún se ubica en un 56 por ciento, cifra considera-blemente menor a lo visto en el 2005, cuando el número ascendíaa más del 65 por ciento. Sin embargo, México continúa siendouno de los mayores compradores de piratería a nivel mundial, ylo que se busca con este tipo de acciones en el 2013 es disminuir,al menos, un punto porcentual.

"Si como consecuencia de una visita de inspección completa seencuentra la existencia de Software ilegal, se procede a la sanción.En el 2012 incrementaron hasta un 200% las sanciones por eluso ilegal de Software", dijo Kiyoshi Tsuru, director general enMéxico de la BSA.

Aquí es donde algunos se preguntarán, ¿y qué autoridad tieneThe Software Alliance para ejecutar estas determinaciones? Pesea que cuenta con el apoyo de empresas como Microsoft, Apple,Autodesk, Adobe, Aveva, AVG, CISCO, Dell, Hewlett Packard,IBM, SAP y Symntec, lo cierto es que la BSA no puede clausurarlegalmente ningún negocio. La verdadera autoridad llega en su

[email protected] 129 Antonio Carrillo Ledesma, Et alii

Page 132: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

acuerdo con el IMPI, el cual sí tiene las facultades para aplicarsanciones.

Además, la UNAM, desde junio 9 del 2009 �rmo un acuerdo (véase [101]):

Con el objetivo de fomentar la cultura de la legalidad en lo quese re�ere al uso del Software entre los estudiantes, la UniversidadNacional Autónoma de México y la Business Software Alliance(BSA) �rmaron un convenio general de colaboración.

Mediante este acuerdo, se promoverá el uso ético de las tec-nologías de la información y comunicación, y se compartirán cono-cimientos en materia de propiedad intelectual y Software, a �nde apoyar el desarrollo y explotación de bienes digitales en laUNAM, así como de�nir programas para contribuir al avance deun mundo digital seguro, informaron ambas organizaciones en uncomunicado.

El secretario general de la máxima casa de estudios, Sergio M.Alcocer Martínez de Castro, reconoció que la UNAM necesitahacer un esfuerzo en el ámbito institucional y en cada una delas entidades que la conforman, para brindar educación a susalumnos, profesores y trabajadores en este campo.

�Se pretende�, destacó, �que el convenio sea operativo y que sedesarrolle en cada una de las entidades con la impartición decursos y capacitación y en una rendición de cuentas para que elSoftware que se utilice sea legal�.

El funcionario reconoció a los miembros de Business SoftwareAllianceen Latinoamérica, y apuntó que la Universidad Nacionalhará lo necesario para facilitar el uso responsable, ético y segurodel Software.

Informó también que ambas partes se reunirán seis meses des-pués del inicio de este convenio de colaboración para analizar losavances.

En tanto, el director General de BSA-México, Kiyoshi Tsuru Al-berú, resaltó que con la �rma de este convenio podrán impulsarun plan conjunto relacionado con alta tecnología, ética y legalidad�Estamos seguros que en el mediano plazo se tendrán resultadosimportantes y se podrá hacer la diferencia�, señaló.

[email protected] 130 Antonio Carrillo Ledesma, Et alii

Page 133: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Por su parte, el abogado general, Luis Raúl González Pérez, co-mentó que la UNAM busca difundir estos valores entre su co-munidad, y llegar especialmente a los estudiantes que inician elbachillerato, porque desde edad temprana es importante fomentarla cultura de la legalidad.

Ante este escenario, una alternativa viable podría ser optar por el Soft-ware libre, aunque, pese a su incipiente desarrollo es seguro que en un futuropodría alcanzar a suplir todas las necesidades básicas de los usuarios, dejandola adquisición de paquetes especializados sólo para los cursos avanzados quejusti�que el uso de Software privativo.

[email protected] 131 Antonio Carrillo Ledesma, Et alii

Page 134: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

11 Apéndice C: Máquinas Virtuales

Entendamos por una máquina virtual a un programa de cómputo (véase[49], [55], [48] y [47]) que simula a una computadora, en la cual se puedeinstalar y usar otros sistemas operativos de forma simultánea como si fueseuna computadora real sobre nuestro sistema operativo huésped18.

Figura 1: Sobre un equipo AMD de gama baja y 4 GB de RAM, usando comosistema operativo huésped un Linux Debian estable, se ejecutan 4 máquinasvirtuales (mediante KVM) de Windows XP con diferentes aplicaciones ydentro de cada una de ellas se muestra la RAM asignada, la usada en esemomento, el uso de CPU de cada máquina virtual, entre otros datos.

Una característica esencial de las máquinas virtuales es que los procesosque ejecutan estan limitados por los recursos y abstracciones proporcionadospor ellas. Estos procesos no pueden escaparse de esta "computadora virtual".Uno de los usos más extendidos de las máquinas virtuales es ejecutar sistemasoperativos nuevos u obsoletos adicionales a nuestro sistema habitual.

18Tal y como puede verse re�ejado en la de�nición de máquina virtual, en este texto nosestamos focalizando en las máquinas virtuales de sistema. Existen otro tipo de máquinasvirtuales, como por ejemplo las máquinas virtuales de proceso o los emuladores.

[email protected] 132 Antonio Carrillo Ledesma, Et alii

Page 135: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

De esta forma podemos ejecutar uno o más sistemas operativos � Linux,Mac OS, Windows XP, 7 ó 8� desde nuestro sistema operativo habitual �GNU/Linux oWindows� sin necesidad de instalarlo directamente en nuestracomputadora y sin la preocupación de que se descon�gure el sistema operativohuésped o a las vulnerabilidades del sistema virtualizado, ya que podemosaislarlo para evitar que se dañe.

11.1 Tipos de Máquinas Virtuales

Las máquinas virtuales se pueden clasi�car en dos grandes categorías segúnsu funcionalidad y su grado de equivalencia a una verdadera máquina:

� Máquinas virtuales de sistema (en inglés System Virtual Machine).También llamadas máquinas virtuales de Hardware, permiten a la má-quina física subyacente multiplicarse entre varias máquinas virtuales,cada una ejecutando su propio sistema operativo. A la capa de Softwareque permite la virtualización se le llama monitor de máquina virtual ohypervisor. Un monitor de máquina virtual puede ejecutarse o bien di-rectamente sobre el Hardware o bien sobre un sistema operativo ("HostOperating System").

� Máquinas virtuales de proceso (en inglés Process Virtual Machine).A veces llamada "máquina virtual de aplicación", se ejecuta como unproceso normal dentro de un sistema operativo y soporta un solo pro-ceso. La máquina se inicia automáticamente cuando se lanza el procesoque se desea ejecutar y se detiene para cuando éste �naliza. Su obje-tivo es el de proporcionar un entorno de ejecución independiente dela plataforma de Hardware y del sistema operativo, que oculte los de-talles de la plataforma subyacente y permita que un programa se ejecutesiempre de la misma forma sobre cualquier plataforma.

11.2 Técnicas de Virtualización

Básicamente se reconocen tres tipos de virtualización, algunas de las cualesson usadas actualmente en la gran mayoría de los sistemas operativos, ge-neralmente sin que el usuario este consciente de que usa virtualización19,estos son:19El ejemplo más común y omnipresente es la máquina virtual del lenguaje de progra-

mación de JAVA.

[email protected] 133 Antonio Carrillo Ledesma, Et alii

Page 136: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Emulación del Hardware Subyacente (ejecución nativa) Esta téc-nica se suele llamar virtualización completa � Full Virtualization� del Hard-ware, y se puede implementar usando un hipervisor de Tipo I o de Tipo II:

1. Monitor de tipo I, se ejecuta directamente sobre el Hardware.

2. Monitor de tipo II, se ejecuta sobre otro sistema operativo.

Cada máquina virtual puede ejecutar cualquier sistema operativo sopor-tado por el Hardware subyacente. Así los usuarios pueden ejecutar dos o mássistemas operativos distintos simultáneamente en computadoras "privadas"virtuales. Actualmente tanto Intel como AMD han introducido prestacionesa sus procesadores x86_64 para permitir la virtualización de Hardware.

Emulación de un Sistema no Nativo Las máquinas virtuales tambiénpueden actuar como emuladores de Hardware, permitiendo que aplicacionesy sistemas operativos concebidos para otras arquitecturas de procesador sepuedan ejecutar sobre un Hardware que en teoría no soportan. Esta técnicapermite que cualquier computadora pueda ejecutar Software escrito para lamáquina virtual. Sólo la máquina virtual en sí misma debe ser portada acada una de las plataformas de Hardware.

Virtualización a Nivel de Sistema Operativo Esta técnica consisteen dividir una computadora en varios compartimientos independientes demanera que en cada compartimento podamos instalar un servidor. A estoscompartimentos se les llama "entornos virtuales". Desde el punto de vista delusuario, el sistema en su conjunto actúa como si realmente existiesen variosservidores ejecutándose en varias máquinas distintas.

11.3 ¿Qué Necesito para Crear y Usar una MáquinaVirtual?

Actualmente la virtualización de un sistema operativo se puede implemen-tar por Software o por Hardware, lo único que precisamos para poder usaruna máquina virtual es un ordenador e instalar y con�gurar el programamanejador de la máquina virtual. Cuanto más potente y actual sea el orde-nador del que dispongamos, mejor experiencia obtendremos trabajando consistemas operativos virtualizados.

[email protected] 134 Antonio Carrillo Ledesma, Et alii

Page 137: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Algunos de los puntos importantes para obtener un rendimiento óptimodel sistema operativo virtualizado son los siguientes:

� Preferentemente disponer de un procesador que disponga de capacidadde virtualización por Hardware (Intel VTx/AMD-V). Casi cualquier or-denador actual dispone de un procesador apto para virtualizar sistemasoperativos por Hardware.

� Disponer de espacio su�ciente en el disco duro20, es preferible disponerde un disco de estado sólido (SSD) por sus velocidades de lectura-escritura.

� Necesitamos disponer de memoria RAM su�ciente y adecuada21. Cuantamás memoria RAM y cuanto más rápida sea, mejores resultados de vir-tualización obtendremos.

� Sin duda el hecho de tener una buena tarjeta grá�ca también ayudaráa disponer de una mejor experiencia de virtualización.

11.4 ¿Cómo Funciona una Máquina Virtual?

Explicar el funcionamiento a detalle de una máquina virtual es engorroso yesta fuera del alcance del propósito de este texto. No obstante a grandesrasgos podemos decir que una máquina virtual es un Software que median-te una capa de virtualización22 se comunica con el Hardware que tenemosdisponible en nuestro ordenador consiguiendo de este modo emular la totali-dad de componentes de un ordenador real. De este modo la máquina virtualserá capaz de emular un disco duro, una memoria RAM, una tarjeta de red,un procesador, etc.

20Una máquina virtual con Windows XP ocupa por lo menos 2 GB en disco y una conWindows 7 ocupa por lo menos 4 GB en disco.21La cantidad de memoria RAM ideal dependerá del sistema operativo que queremos

virtualizar y del número de sistemas operativos que queramos virtualizar de forma si-multánea. Si tan solo queremos virtualizar un sistema operativo con 2 o 3 GB de RAMdebería ser su�ciente.22La capa de virtualización es un sistema de archivos propietario y una capa de abstrac-

ción de servicio del Kernel que garantiza el aislamiento y seguridad de los recursos entredistintos contenedores. La capa de virtualización hace que cada uno de los contenedoresaparezca como servidor autónomo. Finalmente, el contenedor aloja la aplicación o cargade trabajo.

[email protected] 135 Antonio Carrillo Ledesma, Et alii

Page 138: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Una vez que sabemos esto, cuando abrimos una máquina virtual, comopor ejemplo Virtualbox (véase [50]), nos encontramos con un entorno grá�coque nos permitirá con�gurar y asignar recursos a cada uno de los compo-nentes físicos que emula la máquina virtual. En prácticamente la totalidadde máquinas virtuales debemos de�nir detalles del siguiente tipo:

� Tipo de procesador a usar

� Espacio que queramos asignar al disco duro.

� Memoria RAM que queremos asignar a la máquina virtual.

� La memoria de nuestra tarjeta grá�ca.

� La con�guración de red.

� etc.

Una vez con�gurados estos parámetros habremos creado una máquinavirtual para instalar un sistema operativo, de este modo tan solo tendremosque abrir la máquina virtual que se acaba de crear e instalar el sistemaoperativo tal y como si se tratará de un ordenador real.

Máquinas Virtuales de Sistemas Operativos Desde la Nube Existendiferentes servicios Web23 que permiten instalar, con�gurar y usar cientosde sistemas operativos Linux, Unix y Windows � máquinas virtuales usandoservicios Web en Linux y QEMU (véase sección 12)� desde el navegador, estoen aras de que los usuarios que cuenten con algún sistema de acceso a red yun navegador, puedan usar, con�gurar e instalar algún sistema operativo y surespectiva paquetería sin hacer instalación alguna en su equipo de cómputo,tableta o teléfono celular24. Una muestra de estos proyectos los encontramosen:23Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnito

para no guardar el historial de la navegación, información introducida en los formulariosy borrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que lossitios Web que visitamos sí guardan información de nuestra visita, nuestro proveedor deInternet también guarda constancia de nuestra visita y si descargamos algo, esto no seborra al igual que el historial de descargas, además de las marcas de páginas o favoritosse conservarán al cerrar el navegador.24Estos servicios son conocidos como computación en la nube (Cloud Computing).

[email protected] 136 Antonio Carrillo Ledesma, Et alii

Page 139: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Distrotest (https://distrotest.net) y JSLinux (https://bellard.org/jslinux).

Algunas versiones listas para usar son:4mLinux, AbsoluteLinux, Academix, AlpineLinux, Antergos, antiX Linux, Ap-

tosid, ArchBang, ArchLabs, Archlinux, Archman, ArchStrike, ArcoLinux, Ar-tixLinux, AryaLinux, AV Linux, BackBoxLinux, BigLinux, Bio-Linux, BlackArch,BlackLab, BlackPantherOS, BlackSlash, blag, BlankOn, Bluestar, Bodhi, Bunsen-Labs, ByzantineOS, Caine, Calculate Linux Desktop, CentOS, Chakra, ChaletOS,ClearOS, Clonezilla, ConnochaetOS, Cucumber, Damn Small Linux, Damn SmallLinux Not, Debian, DebianEdu, deepin, DEFT, Devil-Linux, Devuan, DragonFlyBSD, Dragora, DuZeru, Dyne:bolic, Edubuntu, elementaryOS, Elive Linux, Em-mabuntüs, Emmi OS, Endless OS, EnsoOS, Exe GNU/Linux, ExTiX, Fatdog64,Fedora Atomic, Fedora Server, Fedora Workstation, FerenOS, FreeBSD, FreeDOS,Frugalware, G4L, GeckoLinux, Gentoo, GNewSense, GoboLinux, Gparted, Gree-nieLinux, GRML, GuixSD, Haiku, Heads, Kali Linux, Kanotix, KaOS, Knoppix,Kodachi, KolibriOS, Korora, Kubuntu, Kwort, Linux Lite, Linux Mint, LiveRaizo,LMDE, Lubuntu, LXLE OS, Macpup, Mageia, MakuluLinux, Manjaro, Matriux,MauiLinux, MenuetOS, MinerOS, MiniNo, Modicia, Musix, MX Linux, Nas4Free,Neptune, NetBSD, Netrunner, NixOs, NST, NuTyX, OpenIndiana, OpenMan-driva, openSUSE, OracleLinux, OSGeo live, OviOS, Parabola CLI, Parabola LXDE,Pardus, Parrot Home, Parrot Security, Parrot Studio, Parsix, PCLinuxOS, Pea-chOSI, Pentoo, Peppermint, PeppermintOS, Pinguy, PinguyOS, plopLinux, Point-Linux, Pop!_OS, PORTEUS, Puppy Linux, PureOS, Q4OS, QubesOS, Quirky,Raspberry Pi Desktop, ReactOS, RedCore, Rescatux, RevengeOS, RoboLinux,Rockstor, ROSA FRESH, Runtu, Sabayon, SalentOS, Salix, Scienti�cLinux, Siduc-tion, Slackware, Slax, SliTaz, Solus, SolydK, SolydX, SparkyLinux, Springdale,Stresslinux, SubgraphOS, SwagArch, Tails, Tanglu, Tiny Core, Trisquel, TrueOS,TurnKey Linux, Ubuntu, Ubuntu Budgie, Ubuntu Studio, UbuntuKylin, Uruk,VectorLinux, VineLinux, VoidLinux, Voyager, VyOS, WattOs, Xubuntu, Zentyal,Zenwalk, Zevenet, Zorin OS

Descarga de Máquinas Virtuales de Sistemas Operativos Existendiversos proyectos que permiten descargar decenas de máquinas virtualeslistas para ser usadas, para los proyectos VirtualBox y VMWare (y por endepara KVM/QEMU), estas se pueden descargar de múltiples ligas, algunas deellas son:

� https://www.osboxes.org

[email protected] 137 Antonio Carrillo Ledesma, Et alii

Page 140: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� https://virtualboxes.org/images/

Si descargamos y descomprimimos el archivo lubuntu1210.7z (véase sec-ción 12.9), esto dejará la imagen de VirtualBox de LUBUNTU cuyo nom-bre es lubuntu1210.vdi. Entonces esta imagen la usaremos directamente enKVM/QEMU, mediante:

$ kvm -m 2000 -hda lubuntu1210.vdi

Nota: esta imagen usa como usuario y clave de acceso: lubuntu/lubuntu

Máquinas Virtuales en Formato Live Linux es uno de los sistemas ope-rativos pioneros en ejecutar de forma autónoma o sin instalar en la computa-dora, existen diferentes distribuciones Live � descargables para formato CD,DVD, USB25� de sistemas operativos y múltiples aplicaciones almacenadosen un medio extraíble, que pueden ejecutarse directamente en una computa-dora, estos se descargan de la Web generalmente en formato ISO26, una delas listas más completas de versiones Live esta en: https://livecdlist.com.

En el caso de tener un archivo ISO de algún sistema operativo (por ejem-plo ubuntu-11.10-desktop-i386.iso) y se quiere ejecutar su contenido desdeuna máquina virtual con QEMU/KVM sólo es necesario usar:

$ kvm -m 512 -cdrom ubuntu-11.10-desktop-i386.iso

en este ejemplo usamos el virtualizador con la arquitectura por omisióny memoria de 512 MB.

Knoppix es una versión Live ampliamente conocida y completa, esta sepuede descargar el ISO de http://132.248.182.159/Replicas/knoppix/y usar mediante:

$ kvm -m 1024 -cdrom KNOPPIX_V8.2-2018-05-10-EN.iso

aquí se usa la arquitectura por omisión y memoria de 1024 MB.

25Para generar un dispositivo USB con la imagen contenida en un archivo ISOpodemos usar el Software ETCHER, descargable para Linux, Windows y Mac OS desdehttps://etcher.io/.26Una imagen ISO es un archivo informático donde se almacena una copia exacta de un

sistema de archivos y de esta se puede generar una imagen para CDROM, DVD o USB

[email protected] 138 Antonio Carrillo Ledesma, Et alii

Page 141: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

11.5 Aplicaciones de las Máquinas Virtuales de Sis-tema

Cada uno de los sistemas operativos que virtualizamos � con su propio sis-tema operativo llamado sistema operativo «invitado (Guest)» � es indepen-diente de los otros sistemas operativos. De este modo, en caso que una delas máquinas virtuales deje de funcionar, el resto seguirá funcionando. Unamáquina virtual dispone de todos los elementos de un ordenador real, dedisco duro, memoria RAM, unidad de CD o DVD, tarjeta de red, tarjeta devídeo, etc., pero a diferencia de un ordenador real estos elementos en vez deser físicos son virtuales. Así, una vez instalado un sistema operativo en lamáquina virtual, podemos usar el sistema operativo virtualizado del mismomodo que lo usaríamos si lo hubiéramos instalado en nuestro ordenador.

Figura 2: Al poder correr diferentes sistemas operativos y/o versiones delmismo en donde podemos instalar diversas aplicaciones antagónicas que nopodrían coexistir en un sólo sistema operativo, nos permite ampliar el uso denuestro equipo de cómputo.

Varios sistemas operativos distintos pueden coexistir sobre la misma com-putadora trabajando simultáneamente, en sólido aislamiento el uno del otro,por ejemplo para probar un sistema operativo nuevo sin necesidad de insta-

[email protected] 139 Antonio Carrillo Ledesma, Et alii

Page 142: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

larlo directamente. La máquina virtual puede proporcionar una arquitecturade instrucciones que sea algo distinta de la verdadera máquina, es decir,podemos simular Hardware. Además, todos los elementos de una máquinavirtual se encapsulan en un conjunto pequeño de archivos � en KVM/QEMUes solo un archivo� , esto permite que podamos pasar un sistema operativovirtual de un ordenador a otro y realizar copias de seguridad de forma fácily rápida.La gran mayoría de los manejadores de máquinas virtuales � KVM, Vir-

tualBox o VMWare� permiten instalar prácticamente cualquier sistema ope-rativo � por ejemplo Linux, Android, Mac OS X, Windows, Chrome OS,etc.� . Sin embargo existen otros manejadores de máquinas virtuales �Virtual PC, Hiper-V o Parallels� que estan principalmente destinados avirtualizar Windows.La virtualización es una excelente opción hoy en día, ya que las máquinas

actuales � Laptops, Desktops y servidores� en la mayoría de los casos estansiendo "subutilizados" � estos cuentan con una gran capacidad de cómputo,disco duro y memoria RAM� ya que no se utilizan todos los recursos todoel tiempo, teniendo un uso promedio que oscila entre 30% a 60% de su ca-pacidad total. Permitiendo así, ejecutar varias máquinas virtuales en un sóloequipo físico aumentando el porcentaje de uso de los recursos de cómputodisponibles � en el caso de virtualizar servidores, a este proceso se le conocecomo consolidación de servidores� . Así, la consolidación de servidores con-tribuye a reducir el coste total de las instalaciones necesarias para mantenerlos servicios, permitiendo un ahorro considerable de los costos asociados �energía, mantenimiento, espacio, administración, etc.� , esto se hace patenteen la «computación en la nube (Cloud Computing)» muy en boga actual-mente.

11.6 Ventajas y Desventajas

Como toda tecnología, la virtualización tiene ventajas y desventajas, lascuales deben de ser sopesadas en cada ámbito de implementación. Lo que esun hecho que permite en un mismo equipo de cómputo ejecutar más de unsistema operativo o distintas versiones del mismo.Pero queda claro que uno de los inconvenientes de las máquinas virtuales,

es que agregan gran complejidad al sistema en tiempo de ejecución. Estotiene como efecto la ralentización del sistema, es decir, el programa no alcan-zará la misma velocidad de ejecución que si se instalase directamente en el

[email protected] 140 Antonio Carrillo Ledesma, Et alii

Page 143: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

sistema operativo «an�trión (Host)» o directamente sobre la plataforma deHardware, sin embargo, a menudo la �exibilidad que ofrecen compensa estapérdida de e�ciencia.Si la virtualización es por Hardware, la velocidad de ejecución es más

que aceptable para la mayoría de los casos, por ejemplo, en el caso de usarKVM/QEMU soporta máquinas virtuales de hasta 255 CPUs y 4 TB deRAM, y el rendimiento de aplicaciones como Oracle, SAP, LAMP, MS Ex-change sobre máquinas virtuales puede oscilar entre el 95% y el 135% com-parado con su ejecución en servidores físicos. Además, se ha conseguidoejecutar hasta 600 máquinas virtuales en un solo servidor físico.

11.6.1 Ventajas

Además de permitir ejecutar múltiples sistemas operativos, diferentes ver-siones de un mismo sistema pero con diferente Software que en principiopuede ser incompatible entre sí. Para usuarios de Windows, el hecho en sí,de no tener porque lidiar con problemas derivados de virus y antivirus le con-�ere una gran ventaja desde el punto de vista administrativo y del usuario�nal. Además, permite una administración centralizada, ya que todas lasmáquinas virtuales tendrían la misma con�guración y paquetes sin importarel Hardware subyacente en las que se ejecute el sistema operativo huésped.En el caso de instituciones educativas de cualquier nivel académico, es

común que en un mismo equipo de cómputo sea necesario ejecutar por un ladodiferentes versiones de sistemas operativos � por ejemplo Linux, WindowsXP, Windows 7, etc.� y por otro lado, en un sistema operativo, ejecutardiferentes versiones de un mismo paquete � generalmente no se pueden tenerinstalados simultáneamente más de una versión� .Las máquinas virtuales son una verdadera opción para coexistir simultá-

neamente diferentes versiones de sistemas operativos y en un mismo sistemamáquinas virtuales ejecutando las diversas versiones de un mismo programade cómputo, además se pueden con�gurar para que al momento de iniciarlassiempre se ejecuten a partir de una con�guración e instalación base, de talforma que al ser lanzadas, el usuario pueda instalar, con�gurar e inclusivedañar la máquina virtual, pero al reiniciarse la máquina virtual en una nuevasesión, se regresa a la con�guración de la versión base, de esta forma no hayposibilidad de infección de virus entre diversos lanzamientos de sesiones dela máquina virtual, la actualización es centralizada y se puede hacer por red,sin intervención del usuario.

[email protected] 141 Antonio Carrillo Ledesma, Et alii

Page 144: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Por ello, es una opción viable y común tener en una máquina un sis-tema huésped como Debian GNU/Linux Estable y dentro de el, un grupode máquinas virtuales de Windows �Windows XP, Windows 7, etc.� , enlos que cada máquina virtual tenga instalado Software agrupado por las ca-racterísticas del sistema operativo necesario para ejecutar a todas las apli-caciones seleccionadas � por ejemplo agrupados por la versión de ServicePack� .Por otro lado, si se descon�gura un sistema operativo virtualizado es

sumamente fácil de restaurar si lo comparamos con un máquina real. Sitomamos las precauciones necesarias podemos restaurar el estado que teníaun sistema operativo virtualizado, de forma fácil y rápida. Si hablamosdel entorno empresarial, la virtualización de sistemas operativos supone unahorro económico y de espacio considerable. Ya que mediante el uso de la vir-tualización evitamos la inversión en multitud de equipos físicos, esto suponeun ahorro importante en mantenimiento, en consumo energético, espacio yprocesos administrativos.Por otro lado, mediante la virtualización y el balanceo dinámico podemos

incrementar las tasas de prestación de servicios de un servidor del siguientemodo. Si disponemos de un servidor Web podemos asignar recursos adi-cionales al servidor, como por ejemplo memoria RAM y CPU en los picosde carga para evitar que el servidor se caiga y de este modo incrementar latasa de e�ciencia. Una vez �nalizado el pico de carga podemos desviar losrecursos aplicados al servidor Web a otra necesidad que tengamos. Por lotanto, aparte de mejorar la tasa de servicio se pueden optimizar los recursos.Si estamos usando una máquina virtual en un entorno de producción,

podemos ampliar los recursos de un sistema operativo o servidor de unaforma muy sencilla, tan solo tenemos que acceder al Software de virtualiza-ción y asignar más recursos. Además, es fácil crear un entorno para realizarpruebas de todo tipo aislado del resto de sistema. Así, las máquinas virtualesy la virtualización permiten usar un solo servicio por servidor virtualizadode forma sencilla, de este modo aunque se caiga uno de los servidores virtua-lizado los otros seguirán funcionando.En resumen, la virtualización permite ofrecer un servicio más rápido,

sencillo a usuarios (académicos, estudiantes, clientes, etc.) y es un pilar quedebe ser considerado en una escuela, universidad o compañía en su procesode transformación o consolidación, permitiendo escalonar y ser creativos ala hora de atender las necesidades crecientes y cambiantes de los usuarios; ycontar con servicios agregados, ágiles y adaptables a los constantes cambios

[email protected] 142 Antonio Carrillo Ledesma, Et alii

Page 145: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

de tecnología de Hardware y Software permitiendo escalar a la hiperconver-gencia hacia la nube.

11.6.2 Desventajas

Entre las principales desventajas de virtualizar sistemas propietarios27 comoWindows (véase 10.2)� no así los sistemas libres como Debian GNU/Linux(véase 10.1)� es que se puede violar el sistema de licenciamiento (véase10.3) del Software instalado en las máquinas virtuales, esto es especialmenteimportante cuando se usa en más de una máquina, pues la licencia usadapara la instalación es violada cuando se tiene más de una copia de la máquinavirtual o se ejecutan múltiples instancias de la máquina virtual.En el caso de Windows XP Home, no se infringe la licencia mientras se

cuente con número de licencias igual al máximo número de máquinas vir-tuales lanzadas simultáneamente. Para otras versiones del sistema operativoWindows como es Windows XP Profesional, la virtualización se maneja conlicencias adicionales a la del sistema operativo original y se debe de contar contantas licencias como el máximo número de máquinas virtuales lanzadas si-multáneamente. Además, es necesario contar con el tipo de licencia adecuadapara virtualizar a todos y cada uno de los paquetes de cómputo instaladosen cada máquina virtual y en las instancias para el número de máquinasvirtuales lanzadas simultáneamente en uno o más equipos.Para usar una máquina virtual en condiciones favorables, necesitamos

un ordenador potente. Debemos que tener en cuenta que si usamos dossistemas operativos de forma simultánea estamos empleando hasta el doblede recursos. No obstante cualquier ordenador doméstico de gama baja actualdispone de los recursos su�cientes para usar una o más máquinas virtuales.Los sistemas operativos y los programas se ejecutaran con mayor lenti-

tud en las máquinas virtuales. Esto es debido a que las máquinas virtualesno pueden sacar un rendimiento ideal del Hardware que tenemos en nues-tro equipo. Cuanto más potente sea nuestro ordenador menos se notará lapérdida de rendimiento.Si tenemos un problema � de Hardware o Software� en el ordenador que

aloja el sistema operativo an�trión puede caerse el servicio en la totalidad de

27Según la Free Software Foundation (véase [19]), el «Software libre» se re�ere a lalibertad de los usuarios para ejecutar, copiar, distribuir, y estudiar el mismo, e inclusomodi�car el Software y distribuirlo modi�cado. Así, un Software que no es libre, esllamado «Software privativo o propietario» .

[email protected] 143 Antonio Carrillo Ledesma, Et alii

Page 146: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

máquinas virtuales. Por lo tanto el ordenador que hace funcionar la máquinavirtual es una parte crítica del proceso de virtualización.A pesar de los inconvenientes que se citan en este apartado, bajo nuestro

punto de vista, la virtualización y las máquinas virtuales proporcionan unasventajas y una �exibilidad que compensan claramente los inconvenientes queacabamos de citar.

11.6.3 Consideraciones Técnicas y Legales de la Virtualización

Como se mostrará en la siguiente sección, virtualizar sistemas operativos� Linux, Unix, Windows entre otros� no representa ningún problema téc-nico, pero no es el caso en cuanto a las implicaciones legales de hacer lavirtualización que involucra el almacenamiento, distribución y el número deveces que se ejecuta simultáneamente una máquina virtual en uno o múlti-ples equipos, ya que en general, la máquina virtual esta contenida en unsólo archivo que facilita su distribución y almacenamiento, violando de estaforma la licencia de algunos sistemas operativos y/o programas instalados enel mismo.En el caso de virtualizar cualquier sistema operativo libre como Debian

GNU/Linux (véase 10.1), el tipo de licencia que tiene, permite y alienta suuso para cualquier fín que uno desee, por ello no hay ningún problema envirtualizarlo, no así el caso de hacerlo en sistemas operativos propietarios tipoWindows, la licencia (véase 10.2) restringe su uso a un sólo equipo de cómputoy en muchos casos prohíbe expresamente su virtualización. Además hay quetomar en cuenta el resto del Software instalado en el sistema operativo, yaque estos también tienen sus propias restricciones legales a su uso y númerode veces que se puede ejecutar simultáneamente un paquete dado.Esto es especialmente importante cuando se usa en más de una máquina

física, la misma máquina virtual, pues la licencia usada para la instalaciónes violada cuando se tiene más de una copia de la máquina virtual o seejecutan múltiples instancias de la máquina virtual, esta violación de licenciaes su�ciente para ser sujeto a multas o incluso cárcel por dicho ilícito (véase10.3).Por otro lado, cada vez que se adquiere una licencia de uso de algún

Software que no caduque � la cual implica un alto costo monetario� , estapueda seguir siendo usada en una máquina virtual con una versión tal vezobsoleta del sistema operativo que la soporte, pero corriendo en un sistemahuésped moderno y protegido en Hardware de última generación de forma

[email protected] 144 Antonio Carrillo Ledesma, Et alii

Page 147: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

lícita y con el consiguiente ahorro económico.

11.7 Máquinas Virtuales en la Educación, Ciencias eIngeniería

Como hemos visto en las secciones anteriores, el uso de las máquinas virtualeses variado, �exible y permite ser usado en diversos ámbitos de la educación,del desarrollo y prueba de programas de cómputo y en general, en Ciencias eIngeniería. Algunas de las utilidades y bene�cios que podemos sacar de unamáquina virtual son los siguientes:

� Para aprender a instalar, probar diversas opciones de con�guracióny usar múltiples sistemas operativos. El proceso de instalación de lamáquina virtual no requiere crear particiones adicionales en nuestrodisco ni alterar la con�guración de la máquina an�triona.

� Para usar un Software que no esta disponible en nuestro sistema ope-rativo habitual. Por ejemplo, si somos usuarios de Linux y queremosusar Photoshop, lo podemos hacer a través de una máquina virtual.

� En ocasiones tenemos que usar Software que únicamente se puede eje-cutar en sistemas operativos obsoletos �Windows 98 por ejemplo� ,podemos crear una máquina virtual con dicho sistema y usar el Soft-ware de forma aislada sin preocuparnos de sus vulnerabilidades.

� Podemos experimentar en el sistema operativo que corre dentro de lamáquina virtual haciendo cosas que no nos atreveríamos a realizar connuestro sistema operativo habitual, como por ejemplo, instalar Softwareno seguro que consideramos sospechoso, etc.

� En muchos casos se quiere aprender a instalar, administrar y usarequipo al que no tenemos acceso como un equipo multiCore, con tarjetaCUDA instalada o un Cluster de múltiples nodos multiCore. Esto esposible hacer mediante el uso de máquinas virtuales en un equipo degama media.

� Si se hace el adecuado aislamiento de una máquina virtual en la que seinstale alguna versión de Windows, esta puede ser inmune a los virusy no requiere el uso de antivirus.

[email protected] 145 Antonio Carrillo Ledesma, Et alii

Page 148: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� En el caso de instituciones educativas de cualquier nivel académico, escomún que en un mismo equipo de cómputo sea necesario ejecutar porun lado diferentes versiones de sistemas operativos � Linux, WindowsXP, Windows 7, etc.� y por otro lado, en un sistema operativo, eje-cutar diferentes versiones de un mismo paquete � generalmente no sepuede tener instalada simultáneamente más de una versión� esto selogra con máquinas virtualizadas ad hoc coexistiendo en una mismamáquina física.

� Podemos crear/simular una red de ordenadores con tan solo un or-denador. Esta red de ordenadores virtualizados la podemos usar con�nes formativos y de este modo adquirir pericia sobre administraciónde redes.

� Si eres un desarrollador de Software puedes revisar si el programa queestas desarrollando funciona correctamente en varios sistemas opera-tivos y/o navegadores de Web.

� Podemos usar las máquinas virtuales para hacer SandBox28 con el �nde ejecutar aplicaciones maliciosas o abrir correos sospechosos en unambiente controlado y seguro.

� Para probar versiones Alfa, Beta y Release Candidate de ciertos pro-gramas y sistemas operativos.

� Para montar un servidor Web, un servidor VPN, un servidor de correoo cualquier otro tipo de servidor.

� Para probar multitud de programas en Windows y evitar que se en-sucie el registro mediante las instalaciones y desinstalaciones de losprogramas

� Consolidar servidores, i.e. lo que ahora hacen varias máquinas, sepueden poner en un solo equipo físico dentro de varias máquinas vir-tuales independientes o interactuando entre ellas según se requiera.

� Mantenimiento y pruebas de aplicaciones sin necesidad de adaptarnuevas versiones del sistema operativo.

28Un sistema de aislamiento de procesos o entorno aislado, a menudo usando comomedida de seguridad para ejecutar programas con seguridad y de manera separada delsistema an�trión.

[email protected] 146 Antonio Carrillo Ledesma, Et alii

Page 149: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Aumentar la disponibilidad al reducir tiempo de parada y manteni-miento. Ya que la máquina virtual esta hecha, se pueden poner atrabajar una o más copias en un equipo o en múltiples máquinas físicasen cuestión de segundos, permitiendo la continuidad de un negocio oservicio y de recuperación ante desastres.

� Reducir costos de administración ya que se reducen y agilizan laspolíticas de respaldo y recuperación, además de optimizar los recur-sos disponibles permitiendo escalabilidad al crecer con contención decostos, mejorando la e�ciencia energética al usar un menor número deequipos de cómputo.

� Permite incursionar en la estrategia de nube híbrida proactiva creandoun conjunto de marcos de decisión en la nube y procesos para evaluar lasoportunidades de computación en la nube en función de las necesidadesy cargas de trabajo de los usuarios, por ejemplo el uso de supercómputorentado.

� Establecer las habilidades, herramientas y procesos para un entornodinámico e híbrido al asociarse los educadores y los especialistas entecnologías de información para realizar un inventario de habilidadesy competencias, e identi�car oportunidades de capacitación y áreas devulnerabilidad potencial.

[email protected] 147 Antonio Carrillo Ledesma, Et alii

Page 150: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

12 Apéndice D: Creación, Uso y OptimizacióndeMáquinas Virtuales Usando QEMU/KVM

Entendamos por una máquina virtual (véase sección 11) a un programa decómputo que simula a una computadora, en la cual se puede instalar y usarotros sistemas operativos de forma simultánea como si fuese una computadorareal sobre nuestro sistema operativo huésped. Hoy en día, tenemos a nuestradisposición varios manejadores de máquinas virtuales (MV), algunos de ellosson los siguientes:

� Virtualbox (véase [50]) es un Software desarrollado por Oracle, se tratade un Software multiplataforma capaz de virtualizar prácticamente latotalidad de sistemas operativos con arquitectura x86/AMD64. Labase de este Software dispone de una licencia GPL2 (véase 10.1.1),mientras que el Pack de extensiones que añaden funcionalidades estanbajo licencia privativa. Virtualbox es gratuito para un uso no comercial.

� Vmware Workstation Player (véase [51]) es un Software privativo mul-tiplataforma desarrollado por EMC corporation y es ampliamente usa-do en el entorno profesional en las áreas del Cloud Computing entremuchas otras. Al igual que Virtualbox, esta máquina virtual nos per-mite virtualizar una gran diversidad de sistemas operativos. Vmwaredispone de muchas soluciones de virtualización y prácticamente todasson de pago, no obstante Vmware Workstation Player es gratuita paraun uso no comercial.

� Parallels (véase [54]) es un Software multiplataforma, es usado fre-cuentemente por los usuarios del sistema operativo OS X de Apple quedesean virtualizar el sistema operativo Windows. Esta máquina vir-tual es de pago y únicamente puede virtualizar los sistemas operativosWindows y Mac OS.

� Windows Virtual PC (véase [52]) es un Software gratuito y privativopropiedad de Microsoft que se puede usar tanto en Windows como enMac OS. Virtual PC esta destinado únicamente a virtualizar sistemasoperativos Windows.

� QEMU/KVM (véase [47]) es un Software libre multiplataforma quedispone de licencia GPL (véase 10.1.1). Además de virtualizar un gran

[email protected] 148 Antonio Carrillo Ledesma, Et alii

Page 151: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

número de sistemas operativos, permite emular diversas arquitecturascomo por ejemplo X86, x86-AMD64, MIPS, Arm, PowerPC, etc.

¿Qué Manejadores Libres de Máquinas Virtuales Podemos Insta-lar?

QEMU Es un emulador de procesadores basado en la traducción diná-mica de binarios � conversión del código binario de la arquitectura fuente encódigo entendible por la arquitectura huésped� . QEMU también tiene ca-pacidades de virtualización dentro de un sistema operativo, ya sea GNU/Linux,Windows, o cualquiera de los sistemas operativos admitidos; de hecho esla forma más común de uso. Esta máquina virtual puede ejecutarse encualquier tipo de Microprocesador o arquitectura (x86, x86-64, PowerPC,MIPS, SPARC, etc.). esta licenciado en parte con la LGPL y la GPL deGNU (véase 10.1.1).El objetivo principal es emular un sistema operativo dentro de otro, sin

tener que reparticionar el disco duro, empleando para su ubicación cualquierdirectorio dentro de éste. El programa no dispone de GUI29, pero existe otroprograma llamado QEMU Manager que puede hacer de interfaz grá�ca si seutiliza QEMU desde Windows. También existe una versión para GNU/Linuxllamada Qemu-Launcher. En Mac OS X puede utilizarse el programa Qque dispone de una interfaz grá�ca para crear y administrar las máquinasvirtuales.

Kernel-based Virtual Machine (KVM) Máquina virtual basadaen el núcleo es una solución para implementar virtualización completa conLinux. esta formada por un módulo del núcleo (con el nombre kvm.ko) yherramientas en el espacio de usuario, siendo en su totalidad Software libre(véase 10.1.1). El componente KVM para el núcleo esta incluido en Linuxdesde la versión 2.6.20. El proyecto KVM esta incluido en el proyecto QEMU.

Las características principales de KVM/QEMU son:

� Cada máquina virtual se implementa como un proceso

� KVM/QEMU aprovecha el modelo de seguridad estandar de Linux:SELinux/AppArmor30. Estos modelos proporcionan el aislamiento y el

29Graphical User Interface (Interfaz grá�ca del usuario).30AppArmor fue creado en parte como alternativa a SELinux.

[email protected] 149 Antonio Carrillo Ledesma, Et alii

Page 152: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

control de recursos necesarios

� Hereda las características de gestión de memoria de Linux. La memoriautilizada por una MV se gestionará de la misma forma que la de otroproceso, podrá ser guardada en disco, utilizada en páginas grandesy soporte NUMA31 de Linux permitiendo el uso de MVs de grandescantidades de memoria

� Soporta las últimas características de virtualización de memoria pro-porcionada por los fabricantes como EPT (Extended Page Table de In-tel) ó RVI (Rapid Virtualization Indexing de AMD). Estas tecnologíaspersiguen reducir el uso de CPU y aumentar el rendimiento de losHipervisores

� El compartir páginas de memoria se consigue a través de la carac-terística añadida a Linux llamada Kernel Same-page Merging (KSM).Escaneando las páginas de memoria de cada MV, si dos páginas coin-ciden, KSM las une en una sola página que se comparte entre las dosmáquinas, almacenando únicamente una copia y si en cualquier mo-mento, una de las MV modi�ca la página, le da una copia privada

� Permite utilizar cualquier tipo de almacenamiento soportado por Linuxpara las imágenes de las MVs

� Soporta el almacenamiento de �cheros distribuidos como GFS232, OCFS33o GlusterFS34. De esta forma las imágenes de las MV pueden ser com-partidas por varios Hipervisores

� Las imágenes de disco soportan aprovisionamiento bajo demanda evi-tando tener que reservar todo el espacio inicialmente asignado. El for-mato nativo de KVM es QCOW235, el cual permite la realización de

31Non-Uniform Memory Access (acceso a memoria no uniforme).32Global File System 2 es un sistema de archivos compartidos para clusters en Linux.33Oracle Cluster File System es un sistema de archivos de discos compartidos o sistema

de archivos distribuidos para clústers de servidores de sistemas GNU/Linux desarrolladopor Oracle Corporation distribuidos bajo los términos de la GNU General Public License.34Gluster File System es un sistema multiescalable de archivos NAS desarrollado ini-

cialmente por Gluster Inc.35QEMU Copy-On-Write el formato de imagen para máquinas virtuales segunda versión

de QCOW.

[email protected] 150 Antonio Carrillo Ledesma, Et alii

Page 153: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Snapshots36, compresión y cifrado

� Permite migraciones en vivo (Live Migrations), estas característicaspermite mover una MV en ejecución entre servidores físicos (Hipervi-sores) sin interrupción del servicio. Estas migraciones son transparentespara el usuario, ya que la MV permanece encendida, las conexiones dered activas y las aplicaciones en ejecución mientras la máquina se rea-comoda en un nuevo servidor

� KVM/QEMU soporta MV de hasta 255 CPUs y 4 TB de RAM. Y elrendimiento de aplicaciones como Oracle, SAP, LAMP, MS Exchangesobre MV puede oscilar entre el 95% y el 135% comparado con su ejecu-ción en servidores físicos, se ha conseguido ejecutar hasta 600 máquinasvirtuales en un sólo servidor físico

� Soporte de sistemas operativos invitados como Windows, Linux, An-droid, Familia BDS (OpenBSD, FreeBSD, NetBSD), Solaris, etc.

� Es ampliamente usado en varios proyectos sobre Cloud Computingcomo OpenStack, CloudStack, OpenNebula, etc.

En esta sección mostraremos como crear, con�gurar, optimizar y trabajarcon las máquinas virtuales mediante KVM/QEMU en Debian GNU/Linuxpara probar imágenes ISO37 descargadas de la red, instalar y usar máquinasvirtuales para Windows y Linux entre otros.

12.1 Tipo de Virtualización Soportado por la MáquinaHuésped

Primero es necesario saber si nuestro equipo soporta la virtualización porHardware o debemos usar la virtualización por Software, suponiendo quetenemos acceso a una máquina con Linux o ha sido inicializada usando unaversión «viva (Live)» 38 de CD, DVD o USB de Linux para iniciar la com-

36Es una copia instantánea del sistema de archivos que contiene a la máquina virtual.37Una imagen ISO es un archivo informático donde se almacena una copia exacta de un

sistema de archivos y de esta se puede generar una imagen para CDROM, DVD o USB.38Una opción es KNOPPIX, es una distribución de Linux basada en Debian y usa LXDE

como entorno de escritorio, pude ser descargada de http://www.knopper.net/knoppix/

[email protected] 151 Antonio Carrillo Ledesma, Et alii

Page 154: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

putadora. Entonces, para revisar si hay soporte en Hardware para la virtua-lización, usamos39:

$ egrep "vmxjsvm" /proc/cpuinfo

si se soporta la virtualización por Hardware aparecerá � entre otras40�la bandera

Procesadores INTEL: vmxProcesadores AMD: svm

Instalar y Usar Máquinas Virtuales Por omisión, los equipos de tec-nología de bajo desempeño no soportan la virtualización a nivel Hardware,pero siempre es posible su emulación mediante QEMU.Si la computadora soporta virtualización a nivel Hardware es posible usar

KVM (o en QEMU la bandera -enable-kvm). Según la versión de Linux,KVM puede existir como un paquete real o como uno virtual, si es virtual,al instalar KVM lo que realmente se instala es QEMU y al ejecutar KVMpor ejemplo

$ kvm ...

es remplazado por

$ qemu-system-x86_64 -enable-kvm ...

Estos tienen la misma sintaxis de uso, y para nuestros ejemplos sólo esnecesario remplazar qemu-system-x86_64 por kvm y en ambos siempre seusará qemu-img para manipular las imágenes.Instalación de KVM en Debian GNU/Linux (recomendado para virtua-

lización por Hardware) es mediante:

# apt install kvm

Instalación de QEMU en Debian GNU/Linux (permite emular diversasarquitecturas de Hardware) es mediante:

39Otra opción a usar es el comando lscpu, el cual mostrará en la etiqueta de Virtua-lización si es soportada y el tipo.40El signi�cado de las banderas de /proc/cpuinfo esta descrita en la sección 12.12.

[email protected] 152 Antonio Carrillo Ledesma, Et alii

Page 155: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install qemu-kvm

Observación 1 El desempeño de la emulación versus virtualización por Hard-ware es de varios ordenes de magnitud menor, pero una imagen creada concualquiera de ellos se puede usar con los otros virtualizadores. KVM sólosoporta virtualizar arquitecturas X86 y 64 de INTEL y AMD, QEMU emu-la diversas arquitecturas, como son ARM, CRIS, i386, M68k, MicroBlaze,MIPS, PowerPC, SH4, SPARC y x86-64.

Problemas Cómunes al Virtualizar Si se detecta la bandera para vir-tualización por Hardware y al tratar de usar KVM marca:

> open /dev/kvm: Permission denied> Could not initialize KVM, will disable KVM support

sólo hay que agregar, el login del usuario al grupo kvm en el archivo/etc/group.

Si marca:

> open /dev/kvm: No such �le or directory> Could not initialize KVM, will disable KVM support

sólo hay que activar en el BIOS la virtualización por Hardware

En KVM, al usar un procesador y solicitar la emulación de otro, es comúnque marque que ciertas banderas no son soportadas, por ejemplo al usar unprocesador AMD y solicitar la emulación de un procesador Nehalem IntelCore i7 9xx (Nehalem Class Core i7) mediante:

$ kvm -cpu Nehalem -cdrom TinyCore-current.iso41

ó41TinyCoreLinux es un sistema operativo minimalista centrado en proveer un sistema

base con núcleo Linux � es de tamaño de 11,16 MB y 106 Mb� , puede ser descargado dehttps://distro.ibiblio.org/tinyCorelinux

[email protected] 153 Antonio Carrillo Ledesma, Et alii

Page 156: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ qemu-system-x86_64 -enable-kvm -cpu Nehalem -cdrom nTinyCore-current.iso

es común que marque:

warning: host doesn�t support requested feature:

CPUID.01H:ECX.ssse3 [bit 9]

warning: host doesn�t support requested feature:

CPUID.01H:ECX.sse4.1.sse4_1 [bit 19]

warning: host doesn�t support requested feature:

CPUID.01H:ECX.sse4.2.sse4_2 [bit 20]si es necesario usar dichas banderas en el CPU, entonces usar:

$ qemu-system-x86_64 -cpu Nehalem -cdromTinyCore-current.iso

en este caso avisará que:

warning: TCG doesn�t support requested feature:

CPUID.01H:EDX.vme [bit 1]

i.e. soporta el chip, pero no la virtualización (vme: Virtual Mode Exten-sions [8086 mode]), se sacri�ca velocidad en aras de tener las prestacionesdel chip emulado.

[email protected] 154 Antonio Carrillo Ledesma, Et alii

Page 157: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

12.2 Salida Grá�ca de la Virtualización Usando VNC

Si se usa la versión Debian BUSTER GNU/Linux o se desea usar el protocolode Computación Virtual en Red (Virtual Network Computing VNC42) comovisualizador de la salida grá�ca de KVM/QEMU, debemos agregar -vnc :n ala línea de comandos, donde n es el número de pantalla a usar, esto se hacemediante:

$ kvm -m 128 -cdrom TinyCore-current.iso -cpu kvm64 n-vnc :0 &

y para ver la salida grá�ca43 en la misma máquina, usamos:

$ vncviewer 0

Si se desea ver la salida grá�ca en otro equipo conectado en red (puedeser con sistema operativo Windows, Linux o MAC OS que tenga instaladovncviewer44), es recomendable hacer ajustes en la calidad de la salida grá�ca

42Virtual Network Computing (VNC) es un programa de Software libre basado en unaestructura cliente-servidor que permite observar las acciones del ordenador servidor re-motamente a través de un ordenador cliente. VNC no impone restricciones en el sistemaoperativo del ordenador servidor con respecto al cliente, es posible compartir la pantallade una máquina con cualquier sistema operativo que admita VNC conectándose desde otroordenador o dispositivo que disponga de un cliente VNC portado, además permite usarInternet de baja velocidad en la visualización.Para visualizar la salida grá�ca usando VNC se debe instalar algún cliente de VNC, en

Debian Linux existen una gran variedad de clientes, uno de ellos es tigervnc-viewer, y seinstala mediante:

# apt install tigervnc-viewer

Otras opciones son vncviewer y xtightvncviewer. Ninguno de ellos requieren con�gu-ración adicional al ser instalados.43Después de que es ejecutado el comando vncviewer, aparecerá la ventana de la máquina

virtual (optimizada para ser usada en conexiones de red de baja velocidad), en ella sepuede usar la máquina virtual como si estuviese instalada en su equipo. Se puede cerrar laventana de visualización de VNC y la máquina virtual seguirá trabajando en el servidor;de ser necesario se puede abrir el cliente de VNC tantas veces como requiera. Para apagarla máquina virtual en el servidor, se debe de solicitar a esta que se apague mediante elmenú de inicio de la virtualización.44Otros proyectos multiplataforma son: Zoho Assist, TigerVNC, RealVNC,

TeamViewer, Remmina, NoMachine, Apache Guacamole, XRDP, FreeNX, X2Go, Xpra,entre otros.

[email protected] 155 Antonio Carrillo Ledesma, Et alii

Page 158: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

a mostrar y que no se vea afectada por la velocidad del Internet, si suponemosque el servidor de la máquina virtual es 192.168.13.230, entonces lanzamosla máquina virtual mediante:

$ kvm -m 128 -cdrom TinyCore-current.iso -cpu kvm64 n-vnc :0,lossy &

y para ver la salida grá�ca en cualquier otro equipo interconectado porred, usamos:

$ vncviewer 192.168.13.230:0 QualityLevel=3

donde la calidad del video QualityLevel=n45, es de 0 a 9, donde 0 es lamás pobre y 9 la más alta calidad de la salida grá�ca.

Nota: En caso que el cursor del Mouse de la máquina virtual no coincidacon el del equipo an�trión es necesario agregar: -usb -device usb-tablet, allanzar la máquina virtual:

$ kvm -m 128 -cdrom TinyCore-current.iso -cpu kvm64 n-usb -device usb-tablet -vnc :0 &

y para ver la salida grá�ca (como se comento antes) usamos:

$ vncviewer 0

Uso de SSH para Interactuar con una Máquina Virtual de FormaRemota Si se tiene acceso a un servidor mediante SSH 46 en el cual este45El valor por omisión es de 3 para una para una conexión de Internet de baja velocidad

común en los hogares, en caso necesario usar un valor de 0, que permite usar VNC enconexiones de muy baja velocidad.46SSH (o Secure SHell) es un protocolo que facilita las comunicaciones seguras entre dos

sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarsea un host remotamente. A diferencia de otros protocolos de comunicación remota talescomo FTP o Telnet, SSH encripta la sesión de conexión, haciendo imposible que alguienpueda obtener contraseñas no encriptadas.

[email protected] 156 Antonio Carrillo Ledesma, Et alii

Page 159: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

activo X11 Forwarding47 e instalado KVM/QEMU, entonces es posible eje-cutar una máquina remota en el servidor y visualizar la salida grá�ca en lamáquina donde se ejecuta el comando SSH48.Primero, al hacer la conexión mediante SSH, es necesario solicitar en la

conexión se habilite X11 Forwarding mediante:

$ ssh -X -l usr 192.168.13.230

donde <usr> es el nombre del usuario en el equipo <192.168.13.230>.Después de hacer la conexión, ya podemos ejecutar la máquina virtual comose indico antes:

$ kvm -m 128 -cdrom TinyCore-current.iso &

y la salida grá�ca de la máquina virtual se trasmitirá por red de formasegura usando la tunelización de SSH.

12.3 Usando un Sistema Operativo Live como unaMáquinaVirtual

Linux es uno de los sistemas operativos pioneros en ejecutar de forma autóno-ma o sin instalar en la computadora, existen diferentes distribuciones Live� descargables para formato CD, DVD, USB49� de sistemas operativos ymúltiplesaplicaciones almacenados en un medio extraíble, que pueden eje-cutarse directamente en una computadora, estos se descargan de la Webgeneralmente en formato ISO50, una de las listas más completas de versionesLive esta en https://livecdlist.com

47Es el servidor grá�co que usan casi todas las distribuciones Linux. Este servidorpermite, entre otras cosas, forwarding a través de SSH. Esto signi�ca que es posible ejecutaraplicaciones grá�cas de una máquina remota exportando el display a nuestro escritorio. Esdecir, la aplicación se ejecuta en el servidor remoto, pero la interfaz grá�ca la visualizamosen nuestro escritorio local.48Es recomendable usar VNC en conjunción con SSH, de lugar de SSH puro, ya que

el consumo de red en la salida grá�ca sin VNC en la conexión SSH es excesivo para lamayoría de las infraestructuras de Internet.49Para generar un dispositivo USB con la imagen contenida en un archivo ISO

podemos usar el Software ETCHER, descargable para Linux, Windows y Mac OS desdehttps://etcher.io/50Una imagen ISO es un archivo informático donde se almacena una copia exacta de un

sistema de archivos y de esta se puede generar una imagen para CDROM, DVD o USB.

[email protected] 157 Antonio Carrillo Ledesma, Et alii

Page 160: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

En el caso de tener un CD, DVD o USB Live y se quiera ejecutar su con-tenido desde una máquina virtual con QEMU/KVM solo es necesario montarel dispositivo. Para ello, primero es necesario conocer donde es montado porel sistema operativo, mediante:

$ df

suponiendo que el dispositivo es /dev/sddx, entonces usar ese dispositivoen KVM mediante:

$ kvm -m 512 -usb /dev/sddx

en este ejemplo usamos el virtualizador con la arquitectura por omisióny memoria de 512 MB (-m 512).

12.4 Usando un Archivo ISO como una Máquina Vir-tual

En el caso de tener un archivo ISO51 de algún sistema operativo (ubuntu-11.10-desktop-i386.iso) y se quiera ejecutar su contenido desde una máquinavirtual con QEMU/KVM solo es necesario usar:

$ kvm -m 512 -cdrom ubuntu-11.10-desktop-i386.iso

en este ejemplo usamos al virtualizador con la arquitectura por omisióny memoria de 512 MB (-m 512).

12.5 Creación de Máquinas Virtuales

En esta sección mostraremos varios ejemplos completos para crear máquinasvirtuales de Linux y Windows mediante el uso de KVM/QEMU.

51Una imagen ISO es un archivo informático donde se almacena una copia exacta de unsistema de archivos y de esta se puede generar una imagen para CDROM, DVD o USB.

[email protected] 158 Antonio Carrillo Ledesma, Et alii

Page 161: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Ejemplo 1 Instalación y uso de una máquina virtual para Debian GNU/Linuxestable a partir del archivo ISO52, para ello, primero necesitamos:Generar el disco virtual que la contendra, por ejemplo de 10 GB con el

nombre debianStable.img mediante:$ qemu-img create -f qcow2 debianStable.img 10G

Después, instalar la imagen de Debian estable53 en el disco virtual genera-do en el paso anterior, solicitando a KVM que una vez terminada la insta-lación no haga el reinicio de la máquina virtual, esto mediante:

$ kvm -no-reboot -boot d -cdrom debian-802-i386-netinst.iso n-hda debianStable.img -m 400

Después de la instalación, es conveniente compactar y desfragmentar laimagen usando:

$ qemu-img convert -c debianStable.img -O qcow2 debian.imgAhora podemos usar la máquina virtual con la imagen desfragmentada

y compactada de Debian estable solicitando que tenga 800 MB de RAM,mediante:

$ kvm -hda debian.img -m 800

Observación 2 La de�nición de la toda la máquina virtual � el disco vir-tual que contiene el sistema operativo instalado y su respectiva paquetería�esta contenida en un único archivo que puede ser copiado, almacenado o dis-tribuido. En esto radica el poder de las máquinas virtuales, una vez hecha ycon�gurada, se pude usar en donde se requiera y la cantidad de veces que lonecesitemos.Al ser un solo archivo la máquina virtual, es común tener múltiples archivos

que conserven los distintos estados conforme se instalen o con�guren paque-tes de la misma. De esta forma se agiliza la recuperación tras algún fallo yel poder hacer modi�caciones de la máquina base o restaurar una máquina aalgún punto de con�guración anterior, con tan solo usar la respectiva copiaalmacenada.52Diversas imágenes ISO del proyecto Linux Debian se pueden descargar de:

https://www.debian.org/CD/53Instrucciones paso a paso de como instalar, con�gurar y optimizar Linux De-

bian están disponibles en múltiples lugares de la red, pero se pueden descargar de:http://www.132.248.182.159/Replicas/debianInstall/

[email protected] 159 Antonio Carrillo Ledesma, Et alii

Page 162: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Además, al usar KVM/QEMU se tiene la certeza de que la máquina vir-tual creada en una distribución de Linux puede ser usada en cualquier otradistribución bajo cualquier arquitectura de Hardware soportada por Linux �que tenga instalada una versión igual o superior de KVM/QEMU� sin cam-bio alguno.

Ejemplo 2 Instalación y uso de una máquina virtual para Windows XP, eneste caso necesitamos:Crear el disco virtual, por ejemplo de 10 GB mediante:$ qemu-img create -f qcow2 WindowsXP.img 10G

Hacer la instalación básica de Windows XP a partir, por ejemplo del ISO,mediante:

$ kvm -no-reboot -boot d -hda WindowsXP.img -m 400 n-localtime -cdrom es_winxp_pro_with_sp2.iso

Y concluir la instalación de Windows XP mediante:$ kvm -no-reboot -boot c -hda WindowsXP.img -m 400 n-localtime -cdrom es_winxp_pro_with_sp2.iso

Después de la instalación, es conveniente compactar y desfragmentar laimagen usando:

$ qemu-img convert -c WindowsXP.img -O qcow2 Windows.imgAhora podemos usar la máquina virtual con la imagen desfragmentada y

compactada de Windows XP usando:$ kvm -boot c -hda Windows.img -m 400 -localtime

Ejemplo 3 Una vez que se cuenta con una imagen de Windows, podemosinstalar por ejemplo Windows O¢ ce, donde tenemos dos opciones a saber:1) Instalar Windows O¢ ce 2003 a partir del ISO de O¢ ce mediante:$ kvm -localtime -m 300 -boot c -hda Windows.img n-cdrom O¢ ce-2003.iso

2) Si se tiene el CD o DVD, entonces podemos usar:$ kvm -localtime -m 300 -boot c -hda Windows.img n-cdrom /dev/cdrom/

[email protected] 160 Antonio Carrillo Ledesma, Et alii

Page 163: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Observación 3 En el caso de Windows hay que usar el mismo Hardwaresiempre, en caso contrario marca que es necesario registrar el sistema opera-tivo nuevamente al ejecutarlo en otra arquitectura, para evitar este problema,es necesario usar la bandera -cpu al momento de crearlo y usarlo, por ejem-plo:Usar máquina virtual de Windows en QEMU y KVM usando el mismo

Hardware mediante alguna de estas opciones:$ kvm -localtime -m 400 -boot c -hda Windows.img -cpu qemu32$ qemu-system-x86_64 -localtime -m 400 -boot c -hda nWindows.img -cpu qemu32$ qemu-system-x86_64 -enable-kvm -localtime -m 400 -boot c n-hda Windows.img -cpu qemu32

Para conocer los CPUs soportados usar:$ kvm -cpu ?

Para conocer las máquinas soportadas usar:$ kvm -machines ?

Ejemplo 4 Otro ejemplo completo de instalación y uso de una máquina vir-tual para Windows 7, en este caso necesitamos:Crear el disco virtual, por ejemplo de 15 GB mediante:$ qemu-img create -f qcow2 Windows7.img 15G

Hacer la instalación básica de Windows 7 a partir, por ejemplo del DVDmediante:

$ kvm -no-reboot -cdrom /dev/cdrom -boot d -hda Windows7.img n-m 500 -localtime

Concluir la instalación de Windows 7 mediante:$ kvm -no-reboot -boot c -hda Windows7.img -cdrom /dev/cdrom n-m 500 -localtime

Después de la instalación, es conveniente compactar y desfragmentar laimagen usando:

$ qemu-img convert -c Windows7.img -O qcow2 Windows.imgAhora podemos usar la máquina virtual con la imagen desfragmentada y

compactada de Windows 7 mediante:$ kvm -boot c -hda Windows.img -m 500 -localtime

[email protected] 161 Antonio Carrillo Ledesma, Et alii

Page 164: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

12.6 Uso de Virtualización Dentro de Otra Virtual-ización

Esta operación parece muy exótica y que rara vez se necesitará. Pero por lasconstantes vulnerabilidades descubiertas en los sistemas operativos, es muycomún tener la última versión estable del sistema operativo para obtener elmejor desempeño posible del Hardware y la máxima seguridad posible en elsistema an�trión y dentro de el, ejecutar una o más versiones de sistemasope-rativos huésped � no necesariamente actualizados� para dentro de elloscorrer otras versiones de sistemas operativos obsoletos o vulnerables, per-mitiendo la estabilidad en entornos de producción, así como migraciones envivo entre servidores. Esto se logra por ejemplo, para un procesador AMDal usar:

$ kvm -m 128 -hda Linux.img -cpu phenom,+svm

Figura 3: Sobre un equipo AMD de gama baja y 4 GB de RAM, se muestrael uso de una virtualización sobre otra virtualización y corriendo dentro deella, una máquina virtual con Windows XP en la cual se muestra el uso deRAM y CPU dentro de la misma.

[email protected] 162 Antonio Carrillo Ledesma, Et alii

Page 165: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

De esta forma, los sistemas virtualizados huésped heredan la capacidad devirtualizar por Hardware del an�trión, acelerando los procesos anidados delas virtualizaciones, aumentando las posibilidades de uso de la virtualizaciónal permitir explotar de forma e�ciente el gran poder computacional que díaa día se desarrolla54.

12.7 Manipulación del Estado de la Máquina Virtual

La virtualización permite manipular el estado de una máquina en ejecución,por ejemplo, una vez que se esta corriendo una máquina virtual:

$ kvm -boot c -hda Windows.img -m 400 -localtime

es posible manipular el estado de la misma en algún punto de su ejecuciónal usar la combinación de teclas:

[Ctrl] + [Alt] + [2]

ya en ella, podemos detener y grabar el estado de la máquina virtual:

(qemu) savevm test.vm(qemu) quit

para que en otro momento, podamos restaurar la máquina virtual talcomo estaba cuando esta se detuvo mediante:

$ kvm -boot c -hda Windows.img -m 400 -localtime n-loadvm test.vm

12.8 Optimización de Imágenes

Las imágenes de disco de KVM/QEMU después de ser generadas � al in-stalar algún sistema operativo o paquetes� , tienen muchos archivos internosdispersos, para optimizar su rendimiento es recomendable convertir la imagendispersa en una que no tenga esta propiedad, mediante:

54Es común que un sólo equipo de cómputo cuente con hasta 3 TB de RAM y variosprocesadores por tarjeta madre, donde cada procesador tiene decenas de Cores.

[email protected] 163 Antonio Carrillo Ledesma, Et alii

Page 166: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ qemu-img convert disk-sparse.img -O qcow2 disk.img

o puede ser compactada y optimizada mediante:

$ qemu-img convert -c disk-sparse.img -O qcow2 disk.img

Para descompactar una imagen se hace mediante:

$ qemu-img convert disk-compact.img -O qcow2 disk.img

12.8.1 Trabajar con una Imagen Virtual sin que se Altere

En algunos casos, es deseable que al trabajar con una máquina virtual, dejarla información de la máquina virtual base intacta y guardar los cambios quese requieran en otro archivo, una forma es hacer una copia y trabajar con lacopia de esta o crear un archivo que almacene por separado los cambios a laimagen, para esto último usar:

$ qemu-img create -b debianStable.img -f qcow2 debian.img

y trabajar con la imagen resultante (para este ejemplo debian.img) comocon cualquier otra imagen, de esta forma, todos los cambios al trabajar seránalmacenados en debian.img dejando intacta la imagen base debianStable.img.

12.8.2 Aumento de Desempeño

La virtualización normalmente es rápida, pero en algunas circunstancias sehace lenta, esto es ajeno a KVM/QEMU y generalmente es por la constantegrabación de pequeños paquetes de datos al disco por parte de la máquinavirtual.Para optimizar el desempeño de la máquina virtual es posible pedirle a

KVM/QEMU que trate de usar un cache y baje lo menos posible a discola información, esto aumentará notablemente el desempeño de la máquinavirtual.Para aumentar el desempeño, en lugar de usar:

$ kvm -boot c -hda Win.img -m 400

[email protected] 164 Antonio Carrillo Ledesma, Et alii

Page 167: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Usar:

$ kvm -drive �le=Win.img,cache=writeback,media=disk n-m 400

En el caso de usar un archivo ISO, usar:

$ kvm -drive �le=fedora.iso,cache=writeback,media=cdrom n-m 512

Ejemplo 5 Instalación y uso de una máquina virtual (por ejemplo paraUBUNTU 11.10) usando el cache, en este caso necesitamos:Generar un disco virtual, por ejemplo de 10 GB mediante:$ qemu-img create -f qcow2 disco.img 10G

Instalar la imagen de UBUNTU en un disco virtual:$ kvm -no-reboot -boot d -drive �le=ubuntu-11.10-desktop- ni386.iso,cache=writeback,media=cdrom -drive �le=disco.img, ncache=writeback,media=disk -m 500

Después de la instalación, es conveniente compactar y desfragmentar laimagen usando:

$ qemu-img convert -c disco.img -O qcow2 Ubuntu.imgAhora ya podemos utilizar la imagen y hacer uso del cache para acelerar

el desempeño mediante:$ kvm -drive �le=Ubuntu.img,cache=writeback,media=disk -m 500

Mejorando el Desempeño del Vídeo de la Máquina Virtual Poromisión se tiene un tarjeta grá�ca de pobre desempeño en la máquina virtual,si se necesita mayor resolución en la salida grá�ca, una opción es usar laopción -VGA, donde dos de sus posibilidades es STD o VMWARE usándosecomo:

$ kvm -drive �le=fedora.iso,cache=writeback,media=cdrom n-m 512 -vga std

o

[email protected] 165 Antonio Carrillo Ledesma, Et alii

Page 168: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ kvm -drive �le=fedora.iso,cache=writeback,media=cdrom n-m 512 -vga vmware

hay otras opciones que permiten inclusive el uso de GPUs reales o vir-tuales. Para ver detalles, favor de revisar el manual del usuario del proyectoQEMU.

Uso de Tarjeta de Sonido Dentro de KVM/QEMU Por omisión eluso de la tarjeta de audio no esta habilitada, para habilitarla usar en la líneade comandos: -soundhw sb16, es1370, adlib, por ejemplo:

$ kvm -boot c -hda Windows.img -m 400 -localtime n-soundhw sb16,es1370,adlib

hay otras opciones, para ver estas, favor de revisar el manual del usuariodel proyecto QEMU.

Algunas Otras Opciones Lanzar KVM con dos procesadores, 1536 MBde RAM, dispositivo de red e1000, MAC addres55 52:54:00:12:34:50, iniciandoel DHCP56 en la dirección 10.0.2.40 y reenviando la salida del puerto 22 dela máquina virtual al 5555 del equipo huésped, mediante:

$ kvm -smp 2 -drive �le=debianStableTmp.img,cache=writeback,media=disk -m 1536 -device e1000,netdev=user.0,mac=52:54:00:12:34:50 -netdev user,id=user.0,dhcpstart=10.0.2.40,hostfwd=tcp::5555-:22 &

o lanzar kvm con dos procesadores, 1536 MB de RAM, dispositivo de rede1000 y reenviando la salida del puerto 22 de la máquina virtual al 5555 delequipo huésped de la siguiente forma:55En las redes de computadoras, la dirección MAC (siglas en inglés de Media Access

Control) es un identi�cador de 48 bits (6 bloques de dos caracteres hexadecimales (4 bits))que corresponde de forma única a una tarjeta o dispositivo de red. Se la conoce tambiéncomo dirección física, y es única para cada dispositivo.56Protocolo de con�guración dinámica de host (en inglés: Dynamic Host Con�guration

Protocol, también conocido por sus siglas de DHCP) es un protocolo de red de tipocliente/servidor mediante el cual un servidor DHCP asigna dinámicamente una direcciónIP y otros parámetros de con�guración de red a cada dispositivo en una red para quepuedan comunicarse con otras redes IP.

[email protected] 166 Antonio Carrillo Ledesma, Et alii

Page 169: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ kvm -smp 2 -drive �le=debianStableTmp.img,cache=writeback,media=disk -m 1536 -device e1000,netdev=user.0 -netdev user,id=user.0,hostfwd=tcp::5555-:22 &

el redireccionamiento de puerto puede ser hecho también con:

$ kvm -m 512 -cpu phenom,+svm -hda b.qcow2 -redir tcp:5555:10.0.2.15:22 &

Si se desea usar ssh y scp en la máquina virtual usar:

# apt install openssh-server

acceder usando:

$ ssh -p 5555 root@localhost

hacer copia del equipo huésped a la máquina virtual mediante:

$ scp -P 5555 �le.txt usr@localhost:/tmp

Algunos Problemas Comunes con la Red Por lo general las máquinasvirtuales detectan correctamente la red, pero en el caso de Windows esto nosiempre pasa, por ello es común emular una tarjeta de red lo más genéricaposible, esta puede ser RTl8139, para ello es necesario que al lanzar lamáquina virtual que se indique:

�net nic;model = rtl8139 � net user

por ejemplo mediante:

$ kvm -boot c -hda WindowsXP.img -m 400 -localtime n-net nic,model=rtl8139 -net user

algunas de las otras opciones para la red son: NE2000 PCI, RTL8139,PCNET y NE2000 ISA.

[email protected] 167 Antonio Carrillo Ledesma, Et alii

Page 170: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Direcciones de Red Usadas en QEMU/KVM

Gateway/DHCP/TFTP Server: 10:0:2:2DNS Server: 10:0:2:3Samba Server: 10:0:2:4Netmask: 255:255:255:0Guest IP: cualquier dirección superior a 10:0:2:15

12.9 Uso deMáquinas Virtuales de VirtualBox en KVM/QEMU

Virtualbox es un programa desarrollado por Oracle ampliamente usado sobretodo para la plataforma Windows. Se trata de un Software multiplataformacapaz de virtualizar prácticamente la totalidad de sistemas operativos conarquitectura x86/amd64. La base de este Software dispone de una licenciaGPL2 (véase 10.1.1), mientras que el pack de extensiones que añaden fun-cionalidades estan bajo licencia privativa, Virtualbox es gratuito para un usono comercial.VirtualBox (https://www.virtualbox.org/) dispone de diversas imágenes

funcionales listas para descargar y usar varias decenas de distribuciones deLinux (https://virtualboxes.org/images/ y https://www.osboxes.org).

Interacción de VirtualBox en KVM/QEMU Ya que VirtualBox esampliamente usado, KVM/QEMU ha desarrollado formas de usar, convertiry migrar máquinas de VirtualBox y otros manejadores de máquinas virtualescon un mínimo esfuerzo, ejemplo de ello es que se puede descargar cualquierimagen VDI de VirtualBox y usarla directamente en KVM usando la mismasintaxis que con sus propias máquinas virtuales.Para mostrar esto, descargar de:

https : ==virtualboxes:org=images=lubuntu=

la imagen de LUBUNTU 12.10:

http : ==sourceforge:net=projects=virtualboximage=files=

Lubuntu=12:10=lubuntu1210:7z=download

y descomprimir el archivo lubuntu1210.7z, esto dejará una imagen de Virtu-alBox de LUBUNTU cuyo nombre es lubuntu1210.vdi. Entonces esta imagenla usaremos directamente en KVM/QEMU, mediante:

[email protected] 168 Antonio Carrillo Ledesma, Et alii

Page 171: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ kvm -m 2000 -hda lubuntu1210.vdi

o

$ qemu-system-x86_64 -enable-kvm -m 2000 -hda lubuntu1210.vdi

Nota: esta imagen usa como usuario y clave de acceso: lubuntu/lubuntu

Algunas veces es necesario montar y extraer el contenido de un disco vir-tual, supongamos que tenemos una máquina virtual de VirtualBox y quere-mos ver su contenido, para ello usamos:

$ qemu-img convert diskname.vmdk -O qcow2 diskname.qcow2

o para el formato RAW:

$ qemu-img convert diskname.vmdk -O raw diskname.raw

Instalar nbd-client:

# apt install nbd-client

después:

# qemu-nbd �connect=/dev/nbd0 /mnt/kvm/diskname.qcow2# fdisk /dev/nbd0 -l# sudo mount /dev/nbd0p1 /mnt/somepoint/# umount /mnt/somepoint/

12.10 Conversión deMáquinas Virtuales a KVM/QEMU

Es posible convertir máquinas virtuales de los proyectos de virtualización:

� VMware ESXi

� OVA exported from VMware

� VMX from VMware

� RHEL 5 Xen

[email protected] 169 Antonio Carrillo Ledesma, Et alii

Page 172: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� SUSE Xen

� Citrix Xen

� Hyper-V

a KVM/QEMU, mediante el comando virt-v2v, este convierte un hiper-visor de estos proyectos para ser ejecutado en KVM/QEMU. Puede leermáquinas virtuales de dichos proyectos de ambientes Linux y Windows que seejecutan en VMware, Xen, Hyper-V y algunos otros hipervisores, y conver-tirlos a KVM administrado por libvirt, OpenStack, oVirt, Red Hat Virtua-lization (RHV) u otros objetivos.También hay un Front-End57 complementario llamado virt-p2v que se pre-

senta como una imagen ISO, CD o PXE 58 que se puede iniciar en máquinasfísicas para virtualizar esas máquinas (de físico a virtual o p2v).

Ejemplos:

Convertir de VMware vCenter a un servidor libvirt local si setiene una imagen de VMware vCenter server llamada vcenter.example.com,en un centro de datos llamado Datacenter, y un ESXi59 hipervisor llamadoesxi. Entonces podemos convertir el invitado llamado vmware_guest a unamáquina virtual para libvirt de la siguiente manera:

$ virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi nvmware_guest

57En diseño de Software el Front-End es la parte del Software que interactúa con losusuarios58Preboot eXecution Environment (PXE) (Entorno de ejecución de prearranque), es un

entorno para arrancar e instalar el sistema operativo en computadoras a través de unared, de manera independiente de los dispositivos de almacenamiento de datos disponibles(como discos duros) o de los sistemas operativos instalados.59VMware ESXi (anteriormente VMware ESX) es una plataforma de virtualización a

nivel de centro de datos producido por VMware, Inc.. Es el componente de su productoVMware Infraestructure que se encuentra al nivel inferior de la capa de virtualización, elhipervisor, aunque posee herramientas y servicios de gestión autónomos e independientes.

[email protected] 170 Antonio Carrillo Ledesma, Et alii

Page 173: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

en este caso es necesario ejecutar el comando en modo root, ya que nece-sita comunicación con el demonio60 libvirt y copiar localmente en:/var/lib/libvirt/images.

Convertir de VMware a RHV61/oVirt62 este ejemplo es similaral anterior, excepto que se quiere enviar el huésped a RHV Data Domainusando RHV REST API. La interfaz de red del huésped debe ser conectadacon la red del objetivo llamada ovirtmgmt, entonces:

$ virt-v2v -ic vpx://vcenter.example.com/Datacenter/esxi nvmware_guest -o rhv-upload -oc https://ovirt-engine.examnple.com/ovirt-engine/api -os ovirt-data -op /tmp/ovirt-adnmin-password -of raw -oo rhv-ca�le=/tmp/ca.pem -oo nrhv-direct �bridge ovirtmgmt

en este caso el host63 ejecutando virt-v2v actúa como un servidor de con-versión.

Convertir de ESXi hipervisor sobre SSH a libvirt local Si setiene un hipervisor ESXi llamado esxi.example.com con acceso habilitadocon SSH, entonces se puede convertir de VMFS64 almacenamiento VMFSsobre el servidor a un archivo local de la siguiente forma:

60En sistemas UNIX/LINUX se conoce como demonio o daemon (Disk And ExecutionMonitor) a un proceso que se ejecuta en segundo plano del sistema operativo, se ejecutaen todo momento y no posee interacción directa con el usuario, también se le conocegenericamente como servicio o proceso, del cual no percibimos su ejecución. Un demoniorealiza una operación especí�ca en tiempos prede�nidos o en respuesta a ciertos eventosdel sistema.61Red Hat Virtualization REST Application62oVirt is an open-source distributed Virtualization solution63El término host o an�trión se usa en informática para referirse a las computadoras

u otros dispositivos conectados a una red que proveen y utilizan servicios de ella. Losusuarios deben utilizar an�triones para tener acceso a la red. En general, los an�triones sonmáquinas monousuario o multiusuario que ofrecen servicios de transferencia de archivos,conexión remota, servidores de base de datos, servidores Web, etc.64VMware VMFS es el sistema de archivos en clúster de VMware, Inc. utilizado por el

paquete de virtualización de servidores insignia de la compañía, vSphere. Fue desarrolladopara almacenar imágenes de disco de la máquina virtual, incluidas instantáneas.

[email protected] 171 Antonio Carrillo Ledesma, Et alii

Page 174: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ virt-v2v n-i vmx -it ssh n"ssh://[email protected]/vmfs/volumes/datastore1n/guest/guest.vmx" -o local -os /var/tmp

El huésped no debe estar corriendo y virt-v2v no necesita ser ejecutadopor root.

Convertir imagen de disco a OpenStack Glance65 dada una ima-gen en disco se puede convertir a otro hipervisor ejecutandose sobre Open-Stack (sólo imágenes basadas en OpenStack sobre KVM son soportadas),para ello hacemos:

$ virt-v2v -i disk disk.img -o glance

Convertir imagen de disco a imagen de disco dada una imagende disco de otro hipervisor que se quiera convertir a KVM/QEMU tenemosdos opciones:

$ virt-v2v -i disk disk.img -o local -os /var/tmp

el otro método más complejo es escribir un libvirt XML que describael invitado a convertir (si se puede usar el hipervisor de origen para queproporcione el libvirt XML es mejor), entonces hacemos:

$ virt-v2v -i libvirtxml guest-domain.xml -o local -os /var/tmp

dado que guest-domain.xml contiene la(s) ruta(s) de las imágen(es) deldisco invitado, no es necesario especi�car el nombre de la imagen del discoen la línea de comandos.Para convertir una imagen de disco local e inmediatamente iniciarla en

QEMU local, hacemos lo siguiente:

$ virt-v2v -i disk disk.img -o qemu -os /var/tmp �qemu-boot

65OpenStack es un proyecto de computación en la nube para proporcionar una in-fraestructura como servicio (IaaS).

[email protected] 172 Antonio Carrillo Ledesma, Et alii

Page 175: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

12.11 Comunicación de las Máquinas Virtuales con elSistema An�trión e Internet

Para tener comunicación de las máquinas virtuales y el sistema an�trión eInternet, existen varias maneras de hacer esto, a saber:a) Mediante el uso de algún navegador Web, se puede acceder a su cuenta

de correo electrónico y al almacenamiento en la nube como Google Drive,Dropbox, HubiC, pCloud, MediaFire, FlipDrive, Mega, entre otros.b) En el sistema operativo Linux, se puede acceder a cualquier servidor

de internet mediante los protocolos SSH, SAMBA66 o montar un sistema dearchivos mediante SSHFS67, NFS68, entre otros.1) Por ejemplo con PCManFM, Dolphin, Nautilus, Thunar, Konqueror,

entre otros, podemos acceder a una máquina que tenga un servidor:

A) Acceder a un servidor SAMBA, escribir la ruta de archivos enel manejador de archivos:

smb://[email protected]/estud/

B) Acceder a un servidor SSH, escribir la ruta de archivos en elmanejador de archivos:

sftp://[email protected]/home/usuario/

2) En línea de comandos, podemos:

A) Montar con SSHFS un directorio de otra máquina con servidorSSH :

66Samba es una implementación libre del protocolo de archivos compartidos de MicrosoftWindows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemasde tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS Xo Unix en general se vean como servidores o actúen como clientes en redes de Windows.67Secure SHell FileSystem (SSHFS) es un sistema de archivos para Linux (y otros sis-

temas operativos con una implementación FUSE, tal como en Mac OS X), que opera sobrearchivos en una computadora remota usando un entorno seguro de acceso. En la com-putadora local donde se monta SSHFS, la implementación hace uso del módulo del kernelFUSE.68El sistema de archivos de red (Network File System) es una aplicación cliente/servidor

que permite al usuario ver y opcionalmente almacenar y actualizar archivos en un equiporemoto como si estuvieran en el propio equipo del usuario.

[email protected] 173 Antonio Carrillo Ledesma, Et alii

Page 176: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ sshfs [email protected]:/home/usuario/ /home/algun/lugar

B) Montar con mount un directorio de otra máquina con servidorNFS :

# mount 10.0.2.2:/directorio /home/algun/lugar

C) Usar SCP y SFTP de SSH para transferir archivos:

para copiar un archivo, usamos:

$ scp archivo.dat [email protected]:~/Datos/

para copiar un subdirectorio, usamos:

$ scp -r Directorio [email protected]:.

para copiar un archivo de una máquina remota a nuestra máquina,usamos:

$ scp [email protected]:/home/usuario/archivo .

c) En cualquier sistema operativo podemos usar algún navegador grá�code FTP, FTPS o SFTP como FileZilla, WinSCP, PSCP, PSFTP, FireFTP,CoreFTP, entre muchos otros, para transportar archivos y carpetas.d) Se puede usar FSDEV de KVM/QEMU que monta un recurso local

mediante las siguientes indicaciones:

$kvm [...]-fsdev local,id=fs1,path=$HOME/code/linux,security_model=none-device virtio-9p-pci,fsdev=fs1,mount_tag=host-code

Donde $HOME/code/linux es la ruta a compartir, y host-code es el iden-ti�cador para el montaje, en la MV se puede usar:

$ mkdir -p /mnt/host

Donde /mnt/host es el directorio de montaje (checar que se den los per-misos pertinentes), para ahora hacer:

# mount host-code -t 9p /mnt/host

[email protected] 174 Antonio Carrillo Ledesma, Et alii

Page 177: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para desmontar usar:

# umount /mnt/host

e) Mediante el uso de la línea de comandos (véase 13.4.2) usando el co-mando scp o rsync (véase 13.4.5) y sí así se requiere, comprimiendo archivospara su fácil traslado (véase 13.4.4) ó bien mediante programas que poseanuna interfaz grá�ca de usuario para SSH o SCP.f) Leer un dispositivo USB montado en el sistema an�trión desde la

máquina virtual, para ello el dispositivo USB deberá estar conectado en lamáquina an�trión y deberá ser accedido directamente en la máquina virtual.KVM/QEMU necesita parámetros adicionales, el parámetro -usb activa elsoporte en la máquina virtual de dispositivos USB. La emulación de IntelSB82371 UHCI-Controller tiene 8-puertos en el USB hub. Si se busca teneracceso a uno de los dispositivos físicos, se requiere encontrar los parámetrosVendor-ID y Product-ID. Esta información se obtiene examinando la salidadel comando:

# /sbin/lsusb

o

$ cat /proc/bus/usb/devices

Entonces es posible decirle a KVM/QEMU los datos de VendorID y Pro-ductID a través de la línea de comandos (véase 13.4.2):

$ qemu -usb -usbdevice host:<VendorID>:<ProductID> ...

o iniciar KVM/QEMU con soporte para dispositivos USB activados me-diante:

$ qemu -usb ...

después de iniciar la máquina virtual, cambiar al sistema de monitoreode la máquina virtual presionando:

[Ctrl]+[Alt]+[2] e introducir el siguiente comando:usb_add host:<VendorID>:<ProductID>

[email protected] 175 Antonio Carrillo Ledesma, Et alii

Page 178: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

cuando se retorne al ambiente grá�co al teclear [Ctrl]+[Alt]+[1] se vera elmensaje de reconocimiento del dispositivo USB. Por ejemplo si se tiene unaimpresora HP Scanjet 3300C conectada en el puerto USB de la computadora,la salida del comando lsub es:

# lsusbBus 003 Device 002: ID 03f0:0205 ScanJet 3300C

así, el comando en KVM/QEMU para dejar accesible el dispositivo es:

$ qemu -usb -usbdevice host:03f0:0205 ...

g) Usar la impresora conectada en el puerto paralelo, pera ello al invocarla ejecución de la máquina virtual usar:

$ qemu -parallel /dev/parport0 ...

h) Montar el contenido de un disco virtual y poder intercambiar infor-mación entre la máquina virtual y la huésped, primero convertir el disco aformato accesible a Linux:

$ qemu-img convert disco.img -O raw tmp.img

montar la imagen en Linux como root:

# mkdir disk# mount -o loop,o¤set=32256 tmp.img disk

trabajar con la imagen montada y al terminar desmontar esta:

# umount ./disk

y puede ser regresada al formato original mediante:

$ qemu-img convert -c tmp.img -O qcow2 disco.img

[email protected] 176 Antonio Carrillo Ledesma, Et alii

Page 179: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

12.12 Signi�cado de las Banderas de /proc/cpuinfo

Recordemos que para revisar si hay soporte en Hardware para la virtua-lización, usamos:

$ egrep "vmxjsvm" /proc/cpuinfo

si soporta la virtualización por Hardware, aparecerá la bandera:

Procesadores INTEL: vmxProcesadores AMD: svm

Hay una gran variedad de banderas que informan sobre el Hardware delque se dispone y las opciones que pueden usarse en KVM/QEMU que son so-portadas por Hardware � como la virtualización dentro de una virtualización�, en esta sección veremos parte de ellas para poder usarlas si son necesariaspara un proyecto en particular.

Intel Advanced Vector Extensions Programming Referencefpu: Onboard FPU (�oating point support)vme: Virtual Mode Extensions (8086 mode)de: Debugging Extensions (CR4.DE)pse: Page Size Extensions (4MB memory pages)tsc: Time Stamp Counter (RDTSC)msr: Model-Speci�c Registers (RDMSR, WRMSR)pae: Physical Address Extensions (support for more than 4GB of RAM)mce: Machine Check Exceptioncx8: CMPXCHG8 instruction (64-bit compare-and-swap)apic: Onboard APICsep: SYSENTER/SYSEXITmtrr: Memory Type Range Registerspge: Page Global Enable (global bit in PDEs and PTEs)mca: Machine Check Architecturecmov: CMOV instructions (conditional move) (also FCMOV)pat: Page Attribute Tablepse36: 36-bit PSEs (huge pages)pn: Processor serial numbercl�ush: Cache Line Flush instructiondts: Debug Store (bu¤er for debugging and pro�ling instructions)

[email protected] 177 Antonio Carrillo Ledesma, Et alii

Page 180: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

acpi: ACPI via MSR (temperature monitoring and clock speed modula-tion)mmx: Multimedia Extensionsfxsr: FXSAVE/FXRSTOR, CR4.OSFXSRsse: Intel SSE vector instructionssse2: SSE2ss: CPU self snoopht: Hyper-Threadingtm: Automatic clock control (Thermal Monitor)ia64: Intel Itanium Architecture 64-bit (not to be confused with Intel�s64-bit x86 architecture with �ag x86-64 or AMD64 bit indicated by�ag lm)pbe: Pending Break Enable (PBE# pin) wakeup support

AMD-de�ned CPU features, CPUID level 0x80000001syscall: SYSCALL (Fast System Call) and SYSRET (Return From FastSystem Call)mp: Multiprocessing Capable.nx: Execute Disablemmxext: AMD MMX extensionsfxsr_opt: FXSAVE/FXRSTOR optimizationspdpe1gb: One GB pages (allows hugepagesz=1G)rdtscp: Read Time-Stamp Counter and Processor IDlm: Long Mode (x86-64: amd64, also known as Intel 64, i.e. 64-bitcapable)3dnowext: AMD 3DNow! extensions3dnow: 3DNow! (AMD vector instructions, competing with Intel�sSSE1)

Transmeta-de�ned CPU features, CPUID level 0x80860001recovery: CPU in recovery modelongrun: Longrun power controllrti: LongRun table interface

[email protected] 178 Antonio Carrillo Ledesma, Et alii

Page 181: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Other features, Linux-de�ned mappingcxmmx: Cyrix MMX extensionsk6_mtrr: AMD K6 nonstandard MTRRscyrix_arr: Cyrix ARRs (= MTRRs)centaur_mcr: Centaur MCRs (= MTRRs)constant_tsc: TSC ticks at a constant rateup: smp kernel running on uparch_perfmon: Intel Architectural PerfMonpebs: Precise-Event Based Samplingbts: Branch Trace Storerep_good: rep microcode works wellnopl: The NOPL (0F 1F) instructionsxtopology: cpu topology enum extensionstsc_reliable: TSC is known to be reliablenonstop_tsc: TSC does not stop in C statesextd_apicid: has extended APICID (8 bits)amd_dcm: multi-node processoraperfmperf : APERFMPERFeagerfpu: Non lazy FPU restorenonstop_tsc_s3: TSC doesn�t stop in S3 state

Intel-de�ned CPU features, CPUID level 0x00000001 (ecx)pni: SSE-3 (Prescott New Instructions)pclmulqdq: Perform a Carry-Less Multiplication of Quadword instruc-tion �accelerator for GCM)dtes64: 64-bit Debug Storemonitor: Monitor/Mwait support (Intel SSE3 supplements)ds_cpl: CPL Qual. Debug Storevmx: Hardware virtualization: Intel VMXsmx: Safer mode: TXT (TPM support)est: Enhanced SpeedSteptm2: Thermal Monitor 2ssse3: Supplemental SSE-3cid: Context IDfma: Fused multiply-addcx16: CMPXCHG16Bxtpr: Send Task Priority Messages

[email protected] 179 Antonio Carrillo Ledesma, Et alii

Page 182: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

pdcm: Performance Capabilitiespcid: Process Context Identi�ersdca: Direct Cache Accesssse4_1: SSE-4.1sse4_2: SSE-4.2x2apic: x2APICmovbe: Move Data After Swapping Bytes instructionpopcnt: Return the Count of Number of Bits Set to 1 instruction(Hamming weight, i.e. bit count)tsc_deadline_timer: Tsc deadline timeraes/aes-ni: Advanced Encryption Standard (New Instructions)xsave: Save Processor Extended States: also provides XGETBY,XRSTOR,XSETBYavx: Advanced Vector Extensionsf16c: 16-bit fp conversions (CVT16)rdrand: Read Random Number from Hardware random numbergenerator instructionhypervisor: Running on a hypervisor

VIA/Cyrix/Centaur-de�ned CPU features, CPUID level 0xC0000001rng: Random Number Generator present (xstore)rng_en: Random Number Generator enabledace: on-CPU crypto (xcrypt)ace_en: on-CPU crypto enabledace2: Advanced Cryptography Engine v2ace2_en: ACE v2 enabledphe: PadLock Hash Enginephe_en: PHE enabledpmm: PadLock Montgomery Multiplierpmm_en: PMM enabled

More extended AMD �ags: CPUID level 0x80000001, ecxlahf_lm: Load AH from Flags (LAHF) and Store AH into Flags(SAHF) in long modecmp_legacy: If yes HyperThreading not validsvm: Secure virtual machine: AMD-V

[email protected] 180 Antonio Carrillo Ledesma, Et alii

Page 183: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

extapic: Extended APIC spacecr8_legacy: CR8 in 32-bit modeabm: Advanced Bit Manipulationsse4a: SSE-4Amisalignsse: Misaligned SSE mode3dnowprefetch: 3DNow prefetch instructionsosvw: OS Visible Workaroundibs: Instruction Based Samplingxop: extended AVX instructionsskinit: SKINIT/STGI instructionswdt: Watchdog timerlwp: Light Weight Pro�lingfma4: 4 operands MAC instructionstce: translation cache extensionnodeid_msr: NodeId MSRtbm: Trailing Bit Manipulationtopoext: Topology Extensions CPUID leafsperfctr_Core: Core Performance Counter Extensionsperfctr_nb: NB Performance Counter Extensionsperfctr_l2: L2 Performance Counter Extensions

Auxiliary �ags: Linux de�ned - For features scattered in various CPUIDlevelsida: Intel Dynamic Accelerationarat: Always Running APIC Timercpb: AMD Core Performance Boostepb: IA32_ENERGY_PERF_BIAS supportxsaveopt: Optimized Xsavepln: Intel Power Limit Noti�cationpts: Intel Package Thermal Statusdts: Digital Thermal Sensorhw_pstate: AMD HW-PStateproc_feedback: AMD ProcFeedbackInterfaceintel_pt: Intel Processor Tracing

[email protected] 181 Antonio Carrillo Ledesma, Et alii

Page 184: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Virtualization �ags: Linux de�nedtpr_shadow: Intel TPR Shadowvnmi: Intel Virtual NMI�expriority: Intel FlexPriorityept: Intel Extended Page Tablevpid: Intel Virtual Processor IDnpt: AMD Nested Page Table supportlbrv: AMD LBR Virtualization supportsvm_lock: AMD SVM locking MSRnrip_save: AMD SVM next_rip savetsc_scale: AMD TSC scaling supportvmcb_clean: AMD VMCB clean bits support�ushbyasid: AMD �ush-by-ASID supportdecodeassists: AMD Decode Assists supportpause�lter: AMD �ltered pause interceptpfthreshold: AMD pause �lter threshold

Intel-de�ned CPU features, CPUID level 0x00000007:0 (ebx)fsgsbase: {RD/WR}{FS/GS}BASE instructionsbmi1: 1st group bit manipulation extensionshle: Hardware Lock Elisionavx2: AVX2 instructionssmep: Supervisor Mode Execution Protectionbmi2: 2nd group bit manipulation extensionserms: Enhanced REP MOVSB/STOSBinvpcid: Invalidate Processor Context IDrtm: Restricted Transactional Memorympx: Memory Protection Extensionrdseed: The RDSEED instructionadx: The ADCX and ADOX instructionssmap: Supervisor Mode Access Prevention

[email protected] 182 Antonio Carrillo Ledesma, Et alii

Page 185: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13 Apéndice E:Sistemas Operativos

El conjunto de programas informáticos que permiten la administración e�cazde los recursos de una computadora es conocido como sistema operativo oSoftware de sistema. Estos programas comienzan a trabajar apenas se en-ciende el equipo, ya que gestionan el Hardware desde los niveles más básicosy permiten además la interacción con el usuario. Cabe destacar que los sis-temas operativos no funcionan sólo en las computadoras. Por el contrario,este tipo de sistemas se encuentran en la mayoría de los dispositivos electróni-cos que utilizan microprocesadores: el Software de sistema posibilita que eldispositivo cumpla con sus funciones � por ejemplo, un teléfono móvil o unreproductor de DVD� .

El sistema operativo cumple con cinco funciones básicas:

� El suministro de interfaz del usuario

� La administración de recursos

� La administración de archivos

� La administración de tareas

� El servicio de soporte y utilidades

En cuanto a la interfaz del usuario, el sistema se encarga de que el usuariopueda ejecutar programas, acceder a archivos y realizar otras tareas con lacomputadora. La administración de recursos permite la dirección del Hard-ware, incluyendo los periféricos y la red. El Software de sistema también seencarga de la gestión de archivos, al controlar la creación, la eliminación yel acceso a los mismos, y de la administración de las tareas informáticas queejecutan los usuarios �nales. Por último, podemos mencionar que el servi-cio de soporte se encarga de actualizar las versiones, mejorar la seguridaddel sistema, agregar nuevas utilidades, controlar los nuevos periféricos que seagregan a la computadora y corregir los errores del Software.

Tipos de sistemas operativos en función de la administración de lastareas Podemos distinguir dos clases de sistemas operativos en función decómo administran sus tareas, pueden ser:

[email protected] 183 Antonio Carrillo Ledesma, Et alii

Page 186: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Sistemas Operativos Monotarea: Son sistemas operativos que úni-camente cuentan con la capacidad para realizar una tarea al mismo tiempo.Son los sistemas más antiguos, que también llevan aparejado un CPU demenor capacidad. En estos casos, si la PC esta imprimiendo, no atenderáa las nuevas órdenes, ni será capaz de iniciar un nuevo proceso hasta que elanterior haya �nalizado.

Sistemas Operativos Multitarea: Son los sistemas operativos másmodernos, con capacidad para el procesamiento de varias tareas al mismotiempo. Además, también cuentan con la capacidad para ejecutar variosprocesos desde varias computadoras, por lo que existe la posibilidad de quesean utilizados por varios usuarios al mismo tiempo, realizándose la conexióna través de dispo-sitivos conectados a un ordenador o a través de sesionesremotas.

Tipos de Sistemas Operativos en Función de la Administraciónde los Usuarios También es posible realizar una división de los sistemasoperativos en función de la forma en la que administran los usuarios, comovemos a continuación:

Sistema de administración Monousuario: Sólo pueden gestionarun usuario al mismo tiempo. Así, a pesar de que varios usuarios pueden teneracceso al sistema, únicamente un usuario puede acceder por vez, realizar yejecutar operaciones y programas.

Sistemas de administración Multiusuario: Se re�ere a todos aque-llos sistemas operativos que permiten el empleo de sus procesamientos yservicios al mismo tiempo. Así, el sistema operativo cuenta con la capacidadde satisfacer las necesidades de varios usuarios al mismo tiempo, siendo capazde gestionar y compartir sus recursos en función del número de usuarios queesten conectados a la vez.

[email protected] 184 Antonio Carrillo Ledesma, Et alii

Page 187: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.1 Windows

Microsoft Windows (véase [3]), conocido generalmente como Windows o MSWindows es el nombre de una familia de Software propietario (véase apéndice10.2) de distribuciones de Software para PC, smartphone, servidores y sis-temas empotrados, desarrollados y vendidos por Microsoft y disponibles paramúltiples arquitecturas, tales como x86, x86-64 y ARM .Desde un punto de vista técnico, no son sistemas operativos, sino que

contienen uno (tradicionalmente MS-DOS, o el más actual, cuyo núcleo esWindows NT) junto con una amplia variedad de Software; no obstante, esusual (aunque no necesariamente correcto) denominar al conjunto como sis-tema operativo en lugar de distribución.La versión más reciente de Windows es Windows 10 para equipos de es-

critorio, Windows Server 2016 para servidores y Windows 10 Mobile paradispositivos móviles. Esta nueva versión del sistema operativo que llegó deforma o�cial y gratuita a usuarios con licencia genuina de Windows 7, Win-dows 8 y Windows 8.1 así como a Insiders el 29 de julio de 2015, siendo laprimera versión que busca la uni�cación de dispositivos (escritorio, portátiles,teléfonos inteligentes, tabletas y videoconsolas) bajo una experiencia común,con lo que se espera eliminar algunos problemas que se presentaron con Win-dows 8.1.

Seguridad Una de las principales críticas que reciben los sistemas opera-tivos Windows es la debilidad del sistema en lo que a seguridad se re�ere yel alto índice de vulnerabilidades críticas. El propio Bill Gates, fundador deMicrosoft, ha asegurado en repetidas ocasiones que la seguridad es objetivoprimordial para su empresa.Partiendo de la base de que no existe un sistema completamente libre de

errores, las críticas se centran en la lentitud con la que la empresa reaccionaante un problema de seguridad que pueden llegar a meses o incluso años dediferencia desde que se avisa de la vulnerabilidad hasta que se publica laactualización que corrija dicha vulnerabilidad (parche). En algunos casos lafalta de respuesta por parte de Microsoft ha provocado que se desarrollenparches que arreglan problemas de seguridad hechos por terceros.Uno de los pilares en que se basa la seguridad de los productos Windows es

la seguridad por ocultación, en general, un aspecto característico del Softwarepropietario que sin embargo parece ser uno de los responsables de la debi-lidad de este sistema operativo ya que, la propia seguridad por ocultación,

[email protected] 185 Antonio Carrillo Ledesma, Et alii

Page 188: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

constituye una infracción del principio de Kerckho¤, el cual a�rma que laseguridad de un sistema reside en su diseño y no en una supuesta ignoranciadel diseño por parte del atacante.

Linux Dentro de Windows Desde el 2018 la integración total de Linuxen Windows 10 se ha dado, con la actualización de Windows 10 Fall Crea-tor Update se permite instalar distribuciones completas de Linux como unprograma más � sin hacer uso de programas de virtualización� , incluso esposible ejecutar varias distribuciones de Linux al mismo tiempo en pantalla.Para usarlo hay que tener todas las actualizaciones de Windows y activar

el WSL, para ello hay que ir al botón de Inicio en el escritorio de Windows,y elige el ícono de Con�guración, y en Aplicaciones seleccionar Aplicacionesy Características, en la columna derecha hay una opción llamada Opcionesde Con�guración Relacionadas, activar en Programas y Características. Seabrirá una nueva ventana, en la columna de la izquierda activamos la ca-racterística de Windows donde este: Subsistema de Windows para Linux.Reiniciando el sistema, ya podemos usar distribuciones de Linux desde Mi-crosoft Store.

13.2 Mac OS

Mac OS (véase [5]) � del inglés Macintosh Operating System, en españolSistema Operativo de Macintosh� es el nombre del sistema operativo propie-tario (véase apéndice 10.2) creado por Apple para su línea de computadorasMacintosh, también aplicado retroactivamente a las versiones anteriores aSystem 7.6, y que apareció por primera vez en System 7.5.1. Es conocidopor haber sido uno de los primeros sistemas dirigidos al gran público encontar con una interfaz grá�ca compuesta por la interacción del mouse conventanas, íconos y menús.Deliberada a la existencia del sistema operativo en los primeros años de

su línea Macintosh en favor de que la máquina resultara más agradable alusuario, diferenciándolo de otros sistemas contemporáneos, como MS-DOS,que eran un desafío técnico. El equipo de desarrollo del Mac OS originalincluía a Bill Atkinson, Jef Raskin y Andy Hertzfeld.Este fue el comienzo del Mac OS clásico, desarrollado íntegramente por

Apple, cuya primera versión vio la luz en 1985. Su desarrollo se extenderíahasta la versión 9 del sistema, lanzada en 1999. A partir de la versión 10(Mac OS X), el sistema cambió su arquitectura totalmente y pasó a basarse

[email protected] 186 Antonio Carrillo Ledesma, Et alii

Page 189: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

en Unix, sin embargo su interfaz grá�ca mantiene muchos elementos de lasversiones anteriores.Hay una gran variedad de versiones sobre cómo fue desarrollado el Mac

OS original y dónde se originaron las ideas subyacentes. Pese a esto, docu-mentos históricos prueban la existencia de una relación, en sus inicios, entreel proyecto Macintosh y el proyecto Alto de Xerox PARC. Las contribucionesiniciales del Sketchpad de Ivan Sutherland y el On-Line System de Doug En-gelbart también fueron signi�cativas.

Versiones Antes de la introducción de los últimos sistemas basados en elmicroprocesador PowerPC G3, partes signi�cativas del sistema se almace-naban en la memoria física de sólo lectura de la placa base. El propósitoinicial de esto fue evitar el uso de la capacidad de almacenamiento limitadade los disquetes de apoyo al sistema, dado que los primeros equipos Macintoshno tenían disco duro. Sólo el modelo Macintosh Classic de 1991, podía seriniciado desde la memoria ROM. Esta arquitectura también permitió unainterfaz de sistema operativo totalmente grá�ca en el nivel más bajo, sin lanecesidad de una consola de sólo texto o el modo de comandos de línea. Loserrores en tiempo de arranque, como la búsqueda de unidades de disco queno funcionaban, se comunicaron al usuario de manera grá�ca, generalmentecon un ícono o con mensajes con el tipo de letra Chicago y un timbre de lamuerte o una serie de pitidos. Esto contrastaba con los PCs de la época,que mostraban tales mensajes con un tipo de letra mono-espaciada sobreun fondo negro, y que requerían el uso del teclado y no de un ratón, parala entrada. Para proporcionar tales detalles en un nivel bajo, el Mac OSdependía de Software de la base del sistema grabado en la ROM de la placabase, lo que más tarde ayudó a garantizar que sólo los equipos de Apple olos clones bajo licencia (con el contenido de la memoria ROM protegido porderechos de autor de Apple, pudieran ejecutar el Mac OS).El Mac OS puede ser dividido en dos familias:

� La familia Mac OS Classic, basada en el código propio de Apple Com-puter.

� El Sistema Operativo Mac OS X, desarrollado a partir de la familiaMac OS Classic y NeXTSTEP, el cual estaba basado en UNIX.

[email protected] 187 Antonio Carrillo Ledesma, Et alii

Page 190: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.3 Android

Android (véase [6]) es un sistema operativo basado en el núcleo Linux (véaseapéndice 10.1). Fue diseñado principalmente para dispositivos móviles conpantalla táctil, como teléfonos inteligentes, tabletas y también para relojesinteligentes, televisores y automóviles. Inicialmente fue desarrollado por An-droid Inc., empresa que Google respaldó económicamente y más tarde, en2005, compró. Android fue presentado en 2007 junto la fundación del OpenHandset Alliance (un consorcio de compañías de Hardware, Software y tele-comunicaciones) para avanzar en los estandares abiertos de los dispositivosmóviles. El primer móvil con el sistema operativo Android fue el HTC Dreamy se vendió en octubre de 2008. Android es el sistema operativo móvil másutilizado del mundo, con una cuota de mercado superior al 80% al año 2017,muy por encima de IOS.El éxito del sistema operativo lo ha convertido en objeto de litigios sobre

patentes en el marco de las llamadas guerras de patentes entre las empresas deteléfonos inteligentes. Según los documentos secretos �ltrados en 2013 y 2014,el sistema operativo es uno de los objetivos de las agencias de inteligenciainternacionales.La versión básica de Android es conocida como Android Open Source

Project (AOSP). El 25 de junio de 2014 en la Conferencia de DesarrolladoresGoogle I/O, Google mostró una evolución de la marca Android, con el �n deuni�car tanto el Hardware como el Software y ampliar mercados. El 17 demayo de 2017, se presentó Android Go. Una versión más ligera del sistemaoperativo para ayudar a que la mitad del mundo sin smartphone consigauno en menos de cinco años. Incluye versiones especiales de sus aplicacionesdonde el consumo de datos se reduce al máximo.

Arquitectura del Sistema Android Los componentes principales delsistema operativo de Android (cada sección se describe en detalle):

Aplicaciones: las aplicaciones base incluyen un cliente de correo elec-trónico, programa de SMS, calendario, mapas, navegador, contactos y otros.Todas las aplicaciones estan escritas en lenguaje de programación Java.

Marco de trabajo de aplicaciones: los desarrolladores tienen accesocompleto a los mismas API del entorno de trabajo usados por las aplicaciones

[email protected] 188 Antonio Carrillo Ledesma, Et alii

Page 191: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

base. La arquitectura esta diseñada para simpli�car la reutilización de com-ponentes; cualquier aplicación puede publicar sus capacidades y cualquierotra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas deseguridad del framework). Este mismo mecanismo permite que los compo-nentes sean reemplazados por el usuario.

Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++usadas por varios componentes del sistema. Estas características se expo-nen a los desarrolladores a través del marco de trabajo de aplicaciones deAndroid. Algunas son: System C library (implementación biblioteca C es-tandar), bibliotecas de medios, bibliotecas de grá�cos, 3D y SQLite, entreotras.

Runtime de Android: Android incluye un set de bibliotecas base queproporcionan la mayor parte de las funciones disponibles en las bibliotecasbase del lenguaje Java. Cada aplicación Android ejecuta su propio proceso,con su propia instancia de la máquina virtual Dalvik. Dalvik ha sido escritode forma que un dispositivo puede ejecutar múltiples máquinas virtuales deforma e�ciente. Dalvik ejecutaba hasta la versión 5.0 archivos en el formatode ejecutable Dalvik (.dex), el cual esta optimizado para memoria mínima.La Máquina Virtual esta basada en registros y corre clases compiladas porel compilador de Java que han sido transformadas al formato .dex por laherramienta incluida DX. Desde la versión 5.0 utiliza el ART, que compilatotalmente al momento de instalación de la aplicación.

Núcleo Linux: Android depende de Linux para los servicios base delsistema como seguridad, gestión de memoria, gestión de procesos, pila dered y modelo de controladores. El núcleo también actúa como una capa deabstracción entre el Hardware y el resto de la pila de Software.

Seguridad, Privacidad y Vigilancia Según un estudio de Symantec de2013, demuestra que en comparación con iOS, Android es un sistema explíci-tamente menos vulnerable. El estudio en cuestión habla de 13 vulnerabili-dades graves para Android y 387 vulnerabilidades graves para iOS. El estudiotambién habla de los ataques en ambas plataformas, en este caso Androidse queda con 113 ataques nuevos en 2012 a diferencia de iOS que se quedaen 1 solo ataque. Incluso así Google y Apple se empeñan cada vez más en

[email protected] 189 Antonio Carrillo Ledesma, Et alii

Page 192: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

hacer sus sistemas operativos más seguros incorporando más seguridad tantoen sus sistemas operativos como en sus mercados o�ciales.Se han descubierto ciertos comportamientos en algunos dispositivos que

limitan la privacidad de los usuarios, de modo similar a iPhone, pero ocurreal activar la opción: Usar redes inalámbricas, en el menú: Ubicación y se-guridad, avisando que se guardarán estos datos, y borrándose al desactivaresta opción, pues se usan como una caché y no como un registro tal comohace iPhone.Como parte de las amplias revelaciones sobre vigilancia masiva �ltradas

en 2013 y 2014, se descubrió que las agencias de inteligencia estadounidensesy británicas, la Agencia de Seguridad Nacional (NSA) y el Cuartel General deComunicaciones del Gobierno (GCHQ), respectivamente, tienen acceso a losdatos de los usuarios de dispositivos Android. Estas agencias son capaces deleer casi toda la información del teléfono como SMS, geolocalización, correos,notas o mensajes. Documentos �ltrados en enero de 2014, revelaron que lasagencias interceptan información personal a través de Internet, redes socialesy aplicaciones populares, como Angry Birds, que recopilan información paratemas comerciales y de publicidad. Además, según The Guardian, el GCHQtiene una wiki con guías de las diferentes aplicaciones y redes de publicidadpara saber los diferentes datos que pueden ser interceptados. Una semanadespués de salir esta información a la luz, el desarrollador �nlandés Rovio,anunció que estaba reconsiderando sus relaciones con las distintas platafor-mas publicitarias y exhortó a la industria en general a hacer lo mismo.Las informaciones revelaron que las agencias realizan un esfuerzo adi-

cional para interceptar búsquedas en Google Maps desde Android y otrosteléfonos inteligentes para recopilar ubicaciones de forma masiva. La NSAy el GCHQ insistieron en que estas actividades cumplen con las leyes na-cionales e internacionales, aunque The Guardian a�rmó que «las últimasrevelaciones podrían sumarse a la creciente preocupación pública acerca decómo se acumula y utiliza la información, especialmente para aquellos fuerade los EE.UU. que gozan de menos protección en temas de privacidad quelos estadounidenses» .

[email protected] 190 Antonio Carrillo Ledesma, Et alii

Page 193: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4 Linux

GNU/Linux (véase [4]) también conocido como Linux, es un sistema ope-rativo libre (véase 10.1) tipo Unix; multiplataforma, multiusuario y mul-titarea. El sistema es la combinación de varios proyectos, entre los cualesdestacan GNU (encabezado por Richard Stallman y la Free Software Foun-dation) y el núcleo Linux (encabezado por Linus Torvalds). Su desa-rrollo esuno de los ejemplos más prominentes de Software libre: todo su código fuentepuede ser utilizado, modi�cado y redistribuido libremente por cualquiera,bajo los términos de la GPL (Licencia Pública General de GNU) y otra seriede licencias libres.A pesar de que «Linux» denomina en la jerga cotidiana al sistema ope-

rativo, éste es en realidad solo el Kernel (núcleo) del sistema. La idea dehacer un sistema completo se remonta a mediados de la década de 1980 conel proyecto GNU, así como una gran cantidad de los componentes que se usanhoy en día � además del núcleo� , que van desde los compiladores de GNUhasta entornos de escritorio. Sin embargo, tras la aparición de Linux en ladécada de 1990 una parte signi�cativa de los medios generales y especializadoshan utilizado el término «Linux» para referirse al todo. Esto ha sido motivode polémicas.Cabe señalar que existen derivados de Linux que no tienen componentes

GNU� por ejemplo Android� , así como distribuciones de GNU donde Linuxesta ausente � por ejemplo Debian GNU/Hurd� .A GNU/Linux se le encuentra normalmente en forma de compendios

conocidos como distribuciones o distros, a las cuales se les ha adicionadoselecciones de aplicaciones y programas para descargar e instalar las mismas.El propósito de una distribución es ofrecer GNU/Linux como un producto�nal que el usuario pueda instalar, cumpliendo con las necesidades de ungrupo de usuarios o bien del público general.Algunas de ellas son especialmente conocidas por su uso en servidores

de Internet y supercomputadoras, donde GNU/Linux tiene la cuota más im-portante del mercado. Según un informe de International Data Corporation(IDC), GNU/Linux es utilizado por el 78% de los principales 500 servidoresdel mundo69. Con menor participación, el sistema GNU/Linux también seusa en el segmento de las computadoras de escritorio, portátiles, computado-ras de bolsillo, teléfonos móviles, sistemas embebidos, videoconsolas y otros

69Top500.org informó, en su lista de noviembre de 2017, que las 500 supercomputadorasmás potentes del mundo utilizan Linux.

[email protected] 191 Antonio Carrillo Ledesma, Et alii

Page 194: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

dispositivos.

Creación El proyecto GNU, iniciado en 1983 por Richard Stallman, tieneel objetivo de crear un «sistema de Software compatible con Unix compuestoenteramente de Software libre» . El trabajo comenzó en el año 1984. Mástarde, en 1985, Stallman fundó la Free Software Foundation para �nanciarel desarrollo de GNU, y escribió la Licencia Pública General de GNU (GNUGPL) en 1989. A principios de la década de 1990, muchos de los programasque se requieren en un sistema operativo � como bibliotecas, compiladores,editores de texto, el shell Unix, y un sistema de ventanas� ya se encontra-ban en operación. Sin embargo otros elementos como los controladores dedispositivos y los servicios estaban incompletos.Linus Torvalds ha declarado que si el núcleo de GNU hubiera estado

disponible en el momento (1991), no se habría decidido a escribir su pro-pio núcleo. Aunque no es liberado hasta 1992 debido a complicacioneslegales, el desarrollo de BSD � de los cuales NetBSD, OpenBSD y FreeBSDdescienden� es anterior al de Linux. Torvalds también ha declarado que siBSD hubiera estado disponible en ese momento, probablemente no habríacreado Linux.En 1991 Torvalds asistía a la Universidad de Helsinki. Usuario de MINIX

y de los programas provenientes de GNU, se mostraba interesado por lossistemas operativos. Comenzó a trabajar en su propio núcleo en ese año,frustrado por la concesión de licencias que utilizaba MINIX, que en ese mo-mento se limitaba a uso educativo.El núcleo Linux maduró hasta superar a los otros núcleos en desa-rrollo.

Las aplicaciones GNU también reemplazaron todos los componentes de MINIX,porque era ventajoso utilizar el código libre del proyecto GNU con el nuevosistema operativo. El código GNU con licencia bajo la GPL puede ser re-utilizado en otros programas de computadora, siempre y cuando tambiénse liberen bajo la misma licencia o una licencia compatible. Torvalds inicióun cambio de su licencia original, que prohibía la redistribución comercial ala GPL. Los desarrolladores de ambas partes trabajaron para integrar com-ponentes de GNU con el núcleo Linux, consiguiendo un sistema operativocompletamente funcional.Para darnos una idea del frenético crecimiento del Kernel de Linux, por

ejemplo, en la versión 4.10 se añadieron 632,782 líneas de código nuevo yen el Kernel 4.12 se añadieron más 1.2 millones de líneas de código nuevas,

[email protected] 192 Antonio Carrillo Ledesma, Et alii

Page 195: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

teniendo un total de 24,170,860 líneas de código. El número de desarro-lladores involucrados fue de 1821 colaboradores y 220 empleados hicieron unpromedio de 231 cambios por día, casi 10 cambios por hora, diariamente seañadieron casi 20 mil líneas de código, y casi 800 líneas por hora en dichaversión.GNU/Linux puede funcionar tanto en entorno grá�co como en modo con-

sola. La consola es común en distribuciones para servidores, mientras que lainterfaz grá�ca esta orientada al usuario �nal del hogar como empresarial.Así mismo, también existen los entornos de escritorio, que son un conjuntode programas conformado por ventanas, íconos y muchas aplicaciones que fa-cilitan el uso de la computadora. Los entornos de escritorio más populares enGNU/Linux son: GNOME, KDE, LXDE, Xfce, Unity, MATE y Cinnamon,Pantheon, LXQt, Budgie, PIXEL, Enlightenment, etc.

Aprender a Usar Linux En la red existen múltiples sitios especializadosy una amplia bibliografía para aprender a usar, administrar y optimizar cadauno de los distintos aspectos de Linux, nosotros hemos seleccionado diversostextos que ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/SistemasOperativos/Linux/

13.4.1 Sistema de Archivos y Estructura de Directorios

El Sistema de Archivos de Linux o cualquier sistema de archivos, general-mente es una capa bajo el sistema operativo la cual maneja el posicionamientode tus datos en el almacenamiento, sin este el sistema no puede saber dóndeempieza y termina un archivo.

Tipos de Sistema de Archivos de Linux Cuando intentas instalarLinux, ves que Linux ofrece distintos sistemas de archivos como los siguien-tes:

Ext, Ext2, Ext3, Ext4, JFS, XFS, Btrfs y Swap

Así que, ¿que son estos sistemas de archivos que ofrece Linux?

� Ext: Antiguo y descontinuado debido a sus limitaciones.

[email protected] 193 Antonio Carrillo Ledesma, Et alii

Page 196: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Ext2: Primer sistema de archivos de Linux que permite 2 terabytes dedatos.

� Ext3: Evolución del Ext2, con actualizaciones y retrocompatibilidad70.

� Ext4: Es mas rápido y permite archivos mucho más grandes con unavelocidad signi�cativa71.

� JFS: Sistemas de archivos antiguos hechos por IBM. Funcionan biencon archivos grandes y pequeños, pero falla y los archivos se corrompendespués de un largo tiempo de utilización, según los reportes.

� XFS: Sistema de archivos antiguo que funciona lento con archivos pe-queños.

� Btrfs: Hecho por Oracle. No ese estable como Ext en algunas distribu-ciones, pero se puedes decir que es buen reemplazo, si es necesario.Tiene buen rendimiento.

� Swap: Es un espacio de intercambio que es utilizado para almacenardatos temporales, reduciendo así el uso de la RAM, normalmente esdel doble del tamaño de la RAM del equipo.

En el sistema de archivos de Linux, se tiene asociado un elemento en latabla que guarda a los archivos y directorios dentro del sistema de archivos,que contiene un número. Este número identi�ca la ubicación del archivodentro del área de datos llamado inodo.Cada inodo contiene información de un �chero o directorio. En concreto,

en un inodo se guarda la siguiente información:

� El identi�cador de dispositivo del dispositivo que alberga al sistema dearchivos.

� El número de inodo que identi�ca al archivo dentro del sistema dearchivos.

70El único problema que tiene es que los servidores no utilizan este tipo de sistema dearchivos debido a que no soporta recuperación de archivos o Snapshots del disco.71Es una muy buena opción para discos SSD, además puedes darte cuenta que cuando

intentas instalar cualquier distribución de Linux este es el sistema de archivo por defectoque sigiere Linux.

[email protected] 194 Antonio Carrillo Ledesma, Et alii

Page 197: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� La longitud del archivo en bytes.

� El identi�cador de usuario del creador o un propietario del archivo conderechos diferenciados.

� El identi�cador de grupo de un grupo de usuarios con derechos dife-renciados.

� El modo de acceso: capacidad de leer, escribir, y ejecutar el archivopor parte del propietario, del grupo y de otros usuarios.

� Las marcas de tiempo con las fechas de última modi�cación (mtime),acceso (atime) y de alteración del propio inodo (ctime).

� El número de enlaces (hard links), esto es, el número de nombres (en-tradas de directorio) asociados con este inodo.

� El área de datos ocupa el resto del disco y es equivalente a la zona dedatos en FAT. En esta zona, como su nombre indica, están almacenadoslos �cheros y directorios de nuestro sistema.

Estructura de Directorios en Linux Además de los sistemas de archivosque di�ere de la de Windows, la estructura de directorios en Linux es distinta,y es necesario conocerla para encontrar �cheros de con�guración, instalarciertos paquetes en el lugar adecuado, localizar las fuentes del Kernel, o laimagen de este, nuestros �cheros personales, etc.:

/ es el directorio principal, la raíz o root. Contiene el resto de directo-rios, es decir, todos los demás serían subdirectorios de este (incluso si estánen particiones o discos diferentes). Sin duda es el más importante.

/bin es el directorio donde se almacenan los binarios, es decir, los pro-gramas que emplea el sistema para labores administrativas como los coman-dos cp, echo, grep, mv, rm, ls, kill, ps, su, tar, etc.

/sbin la S es de System, y como su nombre indica, aquí se almacenan losbinarios o programas que emplea el propio sistema operativo para tareas dearranque, restauración, etc. Por ejemplo, fsck, mount, mkfs, reboot, swapon.

[email protected] 195 Antonio Carrillo Ledesma, Et alii

Page 198: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

/boot es el directorio de arranque, donde está la o las imágenes delKernel Linux que se cargarían durante el arranque, y también directorios ycon�guración del propio gestor de arranque.

/etc muy importante para el administrador, ya que aquí residen los�cheros de con�guración de los componentes del sistema y otros programasinstalados.

/dev es un directorio muy especial donde se encuentran los dispositivosde bloques o carácteres, es decir, �cheros que representan la memoria, par-ticiones, discos, dispositivos de hardware, etc. Ya sabes que en LINUX yUNIX todo es un archivo, y no unidades como en Windows. Por ejemplo, eldisco duro o particiones serían /dev/sda1, /dev/sda2, /dev/sdb1, etc.

/proc es otro directorio muy especial, más que un directorio es unainterfaz por decirlo de un modo sencillo. Y aquí el sistema nos presenta losprocesos como directorios numerados con el identi�cador de procesos PID(Process ID). Dentro de cada uno de ellos estaría toda la información nece-saria para la ejecución de cada proceso en marcha. Además, encontrarías�cheros de los que extraer información importante, como cpuinfo, meminfo,etc. Es precisamente de estos �cheros de los que extraen información algunoscomandos que usamos habitualmente, como por ejemplo, cuando hacemosuso de free para consultar la memoria disponible, este comando realmenteestaría mostrando el contenido de /proc/meminfo de una forma ordenada.

/media o /mnt son los directorios donde se establecen generalmentelos puntos de montaje. Es decir, cuando insertamos algún medio extraíbleo recurso de red compartido, etc., que hayamos montado, estaría aquí si lohemos puesto como punto de montaje. El primero es más especí�co paramedios que se montan de una forma temporal.

/home es el directorio para los usuarios estándar. Por ejemplo, aquíse almacenan dentro de directorios separados (uno para cada usuario consu nombre), los �cheros personales. Por ejemplo, /home/antonio sería midirectorio personal.

[email protected] 196 Antonio Carrillo Ledesma, Et alii

Page 199: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

/lib o /lib64 es donde se alojan las bibliotecas necesarias para losbinarios presentes en el sistema. En /lib64 estarían las de las aplicaciones de64 bits y en /lib estarían las aplicaciones de 32 bits.

/opt es un directorio que almacenarán los paquetes o programas ins-talados en el sistema que son de terceros. Por ejemplo, si instalamos algúnantivirus, Chrome, Arduino IDE o ciertos paquetes grandes, suelen instalarseaquí.

/root no hay que confundirlo con /, una cosa es el directorio raíz o rooty otra muy diferente /root. En este caso, se puede asemejar a un /home peroes exclusivo para el usuario root o usuario administrador.

/svr almacena �cheros y directorios relativos a servidores que tienesinstalados en el sistema, como Web, FTP, CVS, etc.

/sys junto con /dev y /proc, es otro de los especiales. Y como /proc,realmente no almacena nada, sino que es una interfaz también. En este caso,son �cheros virtuales con información del Kernel e incluso, se pueden emplearalgunos de sus �cheros para con�gurar ciertos parámetros del Kernel.

/tmp es el directorio para �cheros temporales de todo tipo. Es em-pleado por los usuarios para almacenar de forma temporal ciertos �cheros oincluso para almacenar cache o ciertos �cheros volátiles de navegadores Web,etc. No obstante, hay otro directorio para lo mismo en /var/tmp.

/var se trata de un directorio con directorios y �cheros que suelen cre-cer de tamaño, como bases de datos, logs, etc. Es precisamente los logs oregistros del sistema por lo que es más popular este directorio, y allí encon-trarás muchísima información de todo lo que ocurre en el sistema: /var/logs/.Dentro de dicho directorio encontrarás separados por directorios, los logs demultitud de Software, incluido el sistema.

/usr son las siglas de User System Resources, y actualmente almacena�cheros de solo lectura relativos a utilidades del usuario, como los paquetesque instalamos mediante el gestor de paquetes en nuestra distribución. Den-tro hay como una jerarquía de árbol de directorios vistos hasta ahora (casi

[email protected] 197 Antonio Carrillo Ledesma, Et alii

Page 200: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

todos) como si de un segundo nivel se tratase. Vas a encontrar /usr/bin,/usr/lib, /usr/sbin, /usr/src, etc., que por lo dicho anteriormente y susnombres, es intuitivo saber lo que almacenan que almacenan. Solo decirque /usr/src es donde permanecerán los �cheros de código fuente.

Ten en cuenta que no todas las distribuciones de Linux siguen este es-quema y puede haber pequeñas variaciones, pero si se adaptan al estándar,no tendrás problemas al navegar por la estructura de archivos.

13.4.2 Trabajando con Linux

Linux es un potente sistema operativo visual y de línea de comandos72. Enesta última se tiene una potente herramienta, en ella se encuentran desde loscomandos básicos hasta los más avanzados73, algunos de ellos son:

Manipulación de archivos y directorios

ls, pwd, cd, mkdir, rmdir, cp, mv, rm, ln, cat, touch,cmp, di¤, wc, tail, head, more, less, nano

Comandos generales

man, help, info, whatis, which, whereis, clear, w, time,whoami, date, uptime, uname, df, du, free, bc, history

Redirección y pipes

standard input y output, error, pipe

Permisos72Android tiene la base de Linux, por ello en cualquier dispositivo que soporte dicho

sistema operativo es posible instalar una aplicación para acceder a la terminal de líneade comandos � por ejemplo ConnectBot� , y en ella podemos correr los comandos quemostramos en esta sección.73En la Web se puede obtener acceso a diversos proyectos que ponen a disposición del

usuario la documentación de una gran variedad de comandos de Linux, algunos de estosproyectos son:http://man7.org/linux/man-pages/https://linux.die.net/man/https://www.kernel.org/doc/man-pages/

[email protected] 198 Antonio Carrillo Ledesma, Et alii

Page 201: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

chmod, chown, chgrp, su, useradd, usermod, deluser, passwd

Búsqueda

�nd, grep, locate

Respaldo

tar, gzip, bzip2, zip, unp

Varios

�le, cal, ps, top, kill, killall, dstat, lsusb, awk, sort, sed

A continuación detallamos el uso de varios de estos comandos que seejecutan en la línea de comandos de GNU/Linux o Terminal74. Hay querecalcar que cada comando tiene una gran variedad de opciones, pero la des-cripción completa de cada comando y opciones de este, se escapa de nuestros�nes, por ello si se necesita conocer la referencia completa de dichos comandoshay varias maneras de obtenerla, entre otras haciendo uso de man, help, infoo whatis aplicado al comando de nuestro interés.

74Existen varios atajos de teclado que facilitan el navegar en la terminal de comandos,entre los que destacan:CTRL L Limpia el contenido de la terminalCTRL D Concluye la sesión en la terminal cerrando estaSHIFT Page Up/Down Navega en la terminal una página arriba o abajoCTRL A Posiciona el cursor al inicio de la líneaCTRL E Posiciona el cursor al �nal de la líneaCTRL U Borra lo que esta a la izquierda del cursorCTRL K Borra lo que esta a la derecha del cursorCTRL Y Pega lo que se quito con CTRL U, K, WTAB Autocompletar el nombre de archivo o comandoCTRL R Permite buscar dentro del historial de comandos!! Permite repetir el último comandoCTRL Z Detiene la ejecución del comando actual (permite continuar la ejecución con

fg en primer plano o bg en segundo plano)

[email protected] 199 Antonio Carrillo Ledesma, Et alii

Page 202: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

ls (de listar), permite listar el contenido de un directorio o �chero. Lasintaxis es:

$75 ls /home/directorio

el comando ls tiene varias opciones que permiten organizar la salida, loque resulta particularmente útil cuando es muy grande. Por ejemplo, puedesusar -a para mostrar los archivos ocultos y -l para mostrar los usuarios,permisos, tamaño en Bytes y la fecha de los archivos; -h muestra el tamañoen unidades fáciles de leer � como KB, MB o GB� . Así como para todoslos comandos Linux, estas opciones pueden combinarse, terminando en algocomo:

$ ls -lha /home/directorio

Rutas Absolutas o Relativas Cuando se empieza a manejar un intér-prete de comandos, una de las cosas que más cuesta es acostumbrarte aencontrar y hacer referencia a elementos del sistema de �cheros. Mientrasque en un entorno grá�co tenemos que hacer click en carpetas y subcarpetashasta llegar al elemento deseado, en el intérprete de comandos tendremos queconseguir lo mismo, pero indicando el lugar mediante una cadena de textocompuesta por los nombres de las carpetas que hay que recorrer hasta ellugar donde se encuentra el elemento deseado. Según el sistema cada nombrede carpeta se separa por un carácter especial, que en Linux será la diagonal( / ).Estas rutas serán usadas por los comandos para saber dónde encontrar

los elementos sobre los que tienen que realizar la acción correspondiente76.Hay dos formas de utilizar rutas, una es de forma absoluta y la otra de formarelativa. Vamos a explicar la diferencia a continuación:75En el Bourne Shell y sus derivados como BASH el prompt que nos permite escribir los

diferentes comandos, generalmente termina con el caracter:

� $ para usuario sin privilegios� # para el administrador, conocido como root

76Por ejemplo, si quiero posicionarme en un directorio determinado, utilizaré el comandocd y para indicar el sitio adonde quiero ir usaré una ruta, por ejemplo cd /home/. Elcomando cp copia elementos, en este caso necesitaremos dos rutas una para el origen(elemento que quiero copias) y otra para el destino (elemento nuevo que voy a crear olugar donde voy a dejar las copias). Por lo tanto podría poner:cp /etc/passwd /home/copia_passwd.

[email protected] 200 Antonio Carrillo Ledesma, Et alii

Page 203: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Rutas Absolutas El sistema de �cheros es una estructura jerárquicaque en el caso de Linux tiene una raíz que se indica cuando se pone solamenteel carácter diagonal / . En la raíz estan los directorios principales del sistemaque a su vez tendrán subdirectorios en su interior. Cuando quiero indicardónde se encuentra un elemento usando una ruta absoluta, tendré que indi-carle todos los directorios por los que hay que pasar empezando desde la raízdel sistema. O lo que es lo mismo, siempre empezarán por /. Ejemplos:

/etc/apt/sources.list/var/log/syslog/home/alumno/.bashrc/usr/bin/

estas rutas suelen ser bastante largas, pero tiene como ventaja que funcio-nan siempre, independientemente del lugar desde el que ejecute la orden77.

Rutas Relativas Las rutas relativas indican el camino para encontrarun elemento, pero basándonos en el directorio desde el que se ejecuta la orden.Son mucho más cortas que las absolutas, pero para saber si son correctas ono, tenemos que saber siempre desde dónde se han utilizado.Un atajo fundamental para la construcción de rutas relativas es conocer

que al escribir .. en la ruta hace referencia al directorio padre. Por lo tantosi ejecuto:

$ cd ..

estoy dando la orden de cambiar de directorio al padre del actual, es decir,al que esta justo antes en la estructura jerárquica. El único elemento que notiene padre es la propia raíz del sistema ( / ).Las rutas relativas harán referencia a un elemento que se encuentre en

el directorio desde el que ejecutamos la orden, o usará los dos puntos paraascender a directorios superiores. Siempre que sean correctos, podemos com-binarlos de la forma que necesitemos separando cada directorio por una dia-gonal. Por ejemplo una ruta correcta podría ser: ../../fotos/personales/

77Es muy recomendable utilizar la facilidad que brinda el BASH de completar el nombrede un elemento del sistema de �cheros pulsando la tecla tabulador. Ahorrará mucho tiempoy errores.

[email protected] 201 Antonio Carrillo Ledesma, Et alii

Page 204: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Metacarácter o Shell Globbing: Los metacarácteres son caracteres quetienen un signi�cado especial en la línea de comandos, estos son comodinesque el sistema permite usar para especi�car los archivos que satisfacen el�ltro especi�cado a la hora de buscar, eliminar o �ltrar nombres de archivo,estos metacarácteres son: *, ?, [ ] y [^]78.

� * Se utiliza para reemplazar cero o más caracteres. Puede ser sustituidopor cualquier cadena de caracteres, ejemplos:

Muestra el contenido de las carpetas que contengan archivos deextensión txt :

$ ls *.txt

Lista todos los archivos que se llamen archivo sin importar suextensión:

$ ls archivo.*

Muestra todos los archivos con extensión jpg y que su nombretenga al �nal "chivo":

$ ls *chivo.jpg

� ? Sustituye un carácter cualquiera, ejemplos:

Muestra todos los archivos empiecen con letras o números peroque luego de ellos tengan los valores "b4ts.txt":

$ ls ?b4ts.txt

Muestra todos los archivos que inicien con ab, siga cualquier letra,número o carácter y �nalice con ts.txt :

$ ls ab?ts.txt

Muestra todos los archivos de tres letras que en medio tenga unaletra i :

78Vease también el uso de las secuencias (véase 13.4.3).

[email protected] 202 Antonio Carrillo Ledesma, Et alii

Page 205: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ ls ?i?

� [ ] Se usa para de�nir rangos o conjuntos de caracteres a localizar, parade�nir los rangos se debe usar el guión -, si son varios caracteres seseparan por coma, ejemplos:

Muestra todos los archivos que comiencen por z o v sin importarla extensión:

$ ls [zv]*

Muestra todos los archivos que comiencen por z o v y terminencon la extensión .txt :

$ ls [zv]*.txt

Lista todos los archivos de cualquier extensión que tengan losrangos establecidos entre los corchetes:

$ ls archivo[12].*

Muestra la lista de todos los archivos que cumplan con el rangode "a-f" sin importar la extensión o el nombre:

$ ls [a-f]*

Muestra la lista de todos los archivos que inicien con cualquiercosa, pero que terminen con una letra mayúscula:

$ ls *[A-Z]

Muestra la lista de todos los archivos que inicien con una le-tra minúscula, tenga después una letra mayúscula, continue concualquier carácter, después tenga una letra a, b, c-f, z y siga concualquier cantidad de caracteres:

$ ls [a-z][A-Z]?[a,b,c-f,z]*

� [^] Este caso es contrario al anterior, este representa que se busque algoexceptuando lo que se encuentra entre los corchetes, también trabajacon rangos.

Muestra los archivos que no empiecen con una letra minúsculapero que tengan extensión .txt :

$ ls [^a-z]*.txt

[email protected] 203 Antonio Carrillo Ledesma, Et alii

Page 206: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

pwd (de print working directory o imprimir directorio de trabajo), esun comando que imprime nuestra ruta o ubicación al momento de ejecutarlo,así evitamos perdernos si estamos trabajando con múltiples directorios ycarpetas. Su sintaxis sería:

$ pwd

cd (de change directory o cambiar directorio), es como su nombre loindica el comando que necesitarás para acceder a una ruta distinta de la quete encuentras. Por ejemplo, si estas en el directorio /home y deseas accedera /home/ejercicios, sería:

$ cd /home/ejercicios

teclear el comando cd solo regresa al directorio home del usuario (lo mismohace al teclear cd ~), teclear el comando cd - retorna al último directorio antesde hacer cambio de directorio, si estas en /home/ejercicios y deseas subir unnivel (es decir ir al directorio /home), ejecutas:

$ cd ..

mkdir (de make directory o crear directorio), crea un directorio nuevotomando en cuenta la ubicación actual. Por ejemplo, si estas en /home ydeseas crear el directorio ejercicios, sería:

$ mkdir /home/ejercicios

mkdir tiene una opción bastante útil que permite crear un árbol de di-rectorios completo que no existe. Para eso usamos la opción -p:

$ mkdir -p /home/ejercicios/prueba/uno/dos/tres

rmdir (de remove directory o borrar directorio), borra un directoriovacio

$ rmdir /home/ejercicios

[email protected] 204 Antonio Carrillo Ledesma, Et alii

Page 207: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

cp (de copy o copiar), copia un archivo o directorio origen a un archivoo directorio destino. Por ejemplo, para copiar el archivo prueba.txt ubicadoen /home a un directorio de respaldo, podemos usar:

$ cp /home/prueba.txt /home/respaldo/prueba.txt

en la sintaxis siempre se especi�ca primero el origen y luego el destino. Siindicamos un nombre de destino diferente, cp copiará el archivo o directoriocon el nuevo nombre. El comando también cuenta con la opción -r quecopia no sólo el directorio especi�cado sino todos sus directorios internos deforma recursiva. Suponiendo que deseamos hacer una copia del directorio/home/ejercicios que a su vez tiene las carpetas ejercicio1 y ejercicio2 ensu interior, en lugar de ejecutar un comando para cada carpeta, ejecutamos:

$ cp -r /home/ejercicios /home/respaldos/

mv (de move o mover), mueve un archivo a una ruta especí�ca, y adiferencia de cp, lo elimina del origen �nalizada la operación. Por ejemplo:

$ mv /home/prueba.txt /home/respaldos/prueba2.txt

al igual que cp, en la sintaxis se especi�ca primero el origen y luego eldestino. Si indicamos un nombre de destino diferente, mv moverá el archivoo directorio con el nuevo nombre.

rm (de remove o remover), es el comando necesario para borrar unarchivo o directorio. Para borrar el archivo prueba.txt ubicado en /home,ejecutamos:

$ rm /home/prueba.txt

este comando también presenta varias opciones. La opción -r borra todoslos archivos y directorios de forma recursiva. Por otra parte, -f borra todo sinpedir con�rmación. Estas opciones pueden combinarse causando un borradorecursivo y sin con�rmación del directorio que se especi�que. Para realizaresto en el directorio respaldos ubicado en el /home, usamos:

$ rm -fr /home/respaldos

Este comando es muy peligroso, por lo tanto es importante que nos docu-mentemos bien acerca de los efectos de estas opciones en nuestro sistemapara así evitar consecuencias nefastas.

[email protected] 205 Antonio Carrillo Ledesma, Et alii

Page 208: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

ln permite crear enlaces a los archivos, tanto físicos (hard links) comosimbólicos -s ( soft links). En pocas palabras, un enlace simbólico es comoun acceso directo en Windows o un alias en OSX mientras que un enlacefísico es un nombre diferente para la misma información en disco.Para crear un enlace físico ejecutamos:

$ ln archivo_origen nombre_enlace

Y para crear un enlace simbólico:

$ ln -s archivo_origen nombre_enlace

cat (de concatenar), Nos permite visualizar el contenido de un archivode texto sin la necesidad de un editor. Para utilizarlo solo debemos men-cionarlo junto al archivo que deseamos visualizar:

$ cat prueba.txt

touch crea un archivo vacío, si el archivo existe actualiza la hora demodi�cación. Para crear el archivo prueba1.txt en /home, sería:

$ touch /home/prueba1.txt

cmp compara el contenido de dos archivos y devuelve 0 si los archivosson idénticos ó 1 si los archivos tienen diferencias. En caso de error devuelve-1.

$ cmp -s archivo1 archivo2

también puede mostrar algo de información sobre las diferencias pero paraun reporte más detallado tenemos el siguiente comando:

di¤ al igual que cmp, compara el contenido de dos archivos pero enlugar de devolver un valor imprime en pantalla un resumen detallado línea alínea de las diferencias. Ejecutarlo es tan simple como:

$ di¤ archivo1.txt archivo2.txt

también puede usarse con directorios. En este caso comparará los nombresde los archivos correspondientes en cada directorio por orden alfabético eimprimirá en pantalla los archivos que esten en un directorio pero no estenen el otro.

[email protected] 206 Antonio Carrillo Ledesma, Et alii

Page 209: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

wc imprime en pantalla la cantidad de saltos de línea, palabras y bytestotales que contenga un archivo. Para usarlo con un archivo cualquiera eje-cutamos:

$ wc archivo.txt

tail muestra en pantalla las últimas líneas de un archivo.

$ tail archivo.txt

por defecto siempre muestra 10 pero podemos indicarle un número dife-rente de líneas a visualizar usando el parámetro -n:

$ tail -n 50 archivo.txt

head es el comando opuesto a tail, muestra las primeras líneas de unarchivo.

$ head archivo.txt

al igual que tail, muestra por defecto las 10 primeras líneas pero podemosindicarle un número diferente usando el parámetro -n:

$ head -n 50 archivo.txt

more es un �ltro que permite paginar el contenido de un archivo paraque se vea a razón de una pantalla a la vez. Para utilizarlo simplementeejecutamos:

$ more archivo.txt

permite navegar a través del contenido del archivo usando las �echasdireccionales Arriba y Abajo, Espacio o la tecla Enter. Para salir de moreusamos la tecla Q.

[email protected] 207 Antonio Carrillo Ledesma, Et alii

Page 210: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

less Aunque su nombre es lo opuesto de more es realmente una versiónmejorada de éste último. Es otro �ltro que permite paginar el contenido deun archivo pero que además de permitir la navegación hacia adelante y haciaatrás, esta optimizado para trabajar con archivos muy grandes. Ejecutarloes tan simple como escribir:

$ less archivo.txt

permite navegar a través del contenido del archivo usando las �echasdireccionales arriba y abajo, Espacio o la tecla Enter. Para salir de lesstambién usamos la tecla Q.

nano Es un pequeño editor de texto que esta disponible en casi todaslas distribuciones actuales de Linux, funciona con un menú en la parte deinferior que se activa con la tecla Ctrl.

$ nano archivo.txt

man muestra la documentación completa de todos los comandos. Porejemplo, para clear :

$ man clear

help proporciona ayuda de los comandos, con frecuencia puede sustituiral comandoman. Por ejemplo, para conocer la lista de comandos que soporta:

$ help

info proporciona ayuda de los comando al igual que man y help, su usoes similar:

$ info mkdir

whatis proporciona una ayuda breve de lo que hacen los comandos, sinmostrar opciones del comando, ejemplo:

$ whatis ls

[email protected] 208 Antonio Carrillo Ledesma, Et alii

Page 211: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

clear (de limpiar), es un sencillo comando que limpiará nuestra terminalpor completo dejándola como recién abierta. Para ello ejecutamos:

$ clear

w nos proporciona la lista de los usuarios activos en la computadora� recordemos que Linux es un sistema multiusuario� , su uso es:

$ w

time proporciona el tiempo de ejecución, que es dividido en real, usuarioy del sistema, muestra de su uso es la siguiente:

$ time ls

whoami (del inglés Who Am I o Quien Soy Yo en español) muestra elidenti�cador del usuario actual. Para ejecutarlo solo basta con invocarlo:

$ whoami

date nos muestra la fecha y hora que tiene actualmente la computadora,ejemplo:

$ date

uptime muestra el tiempo que el ordenador ha pasado encendido sinser reiniciado, así como el load average o carga promedio del sistema que esel número de trabajos que se han realizado en los últimos 1, 5 y 15 minutos.Para ver su salida, solo escribimos en la terminal:

$ uptime

uname es un programa de sistemas operativos de tipo Unix que im-prime detalles de la máquina y del sistema operativo que se esta ejecutando.Su salida es diferente dependiendo de las opciones, por ejemplo, uname solomuestra el nombre del sistema operativo pero cuando le pasamos la opción-r muestra la versión del kernel y con -a de all, su salida es mucho mascompleta. Se ejecuta de la siguiente forma:

$ uname -a

[email protected] 209 Antonio Carrillo Ledesma, Et alii

Page 212: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

df nos muestra información de los discos y particiones en ellos, ademásde cuanto esta usado y libre en cada una de las particiones, ejemplo:

$ df

du nos muestra en bytes cuanto ocupan los directorios de nuestra actualtrayectoria de archivos, para ver las unidades más legibles usamos la opción-h, -a para conocer el tamaño de archivos y directorios y -s para el total dela trayectoria, ejemplo:

$ du -sh

free nos muestra la cantidad de memoria y Swap usada y libre del sis-tema, ejemplo:

$ free

bc es un lenguaje que soporta números de precisión arbitraria con eje-cución interactiva, ejemplo:

$ bc -l

escribir, por ejemplo:

scale = 1001/3quit

mostrará el resultado con 100 dígitos de precisión.

history muestra el historial de comandos ejecutados en la terminal,ejemplo:

$ history

para borrar dicho historial usar la opción -c, ejemplo:

$ history -c

[email protected] 210 Antonio Carrillo Ledesma, Et alii

Page 213: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

standard input la Entrada estandar, en inglés standard input (mejorconocido como stdin) es el mecanismo por el cual un usuario le indica a losprogramas la información que estos deben procesar. Por omisión, el tecladoes la entrada estandar. La entrada estandar representa los datos que nece-sita una aplicación para funcionar, como por ejemplo un archivo de datoso información ingresada desde la terminal y es representado en la terminalcomo el tipo 0.

standard output la Salida estandar, en inglés standard output (mejorconocido como stdout) es el método por el cual el programa puede comuni-carse con el usuario. Por omisión, la salida estandar es la pantalla dondese ejecutaron las instrucciones. La salida estandar es la vía que utilizanlas aplicaciones para mostrarte información, allí podemos ver el progresoo simplemente los mensajes que la aplicación quiera darte en determinadomomento y es representado en la terminal como el tipo 1.

standard error por último existe un �ujo conocido como Error es-tandar, en inglés standard error output (mejor conocido como stderr) que esutilizado por las instrucciones para desplegar mensajes de error que surjandurante el transcurso de su ejecución. Al igual que stdout, el error estandarserá la pantalla donde se procesaron las instrucciones. El error estandar esla forma en que los programas te informan sobre los problemas que puedenencontrarse al momento de la ejecución y es representado en la terminal comoel tipo 2.

Todos estos tipos son representados físicamente como archivos en el sis-tema, todo en Linux son archivos. Así, una redirección consiste en trasladarla información de un tipo a otro, por ejemplo de la salida estandar a la en-trada estandar o del error estandar a la salida estandar. Esto lo logramosusando el símbolo>. Por ejemplo, para redireccionar la salida de un comandoy volcarla a un archivo bastaría con ejecutar:

$ ls -la > archivo.txt

Sin embargo, cada vez que ejecutemos ese comando el contenido de archivo.txtserá reemplazado por la salida del comando ls. Si queremos agregar la salidadel comando al archivo, en lugar de reemplazarla, entonces ejecutamos:

$ ls -la >> archivo.txt

[email protected] 211 Antonio Carrillo Ledesma, Et alii

Page 214: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Lo interesante es que, además de la salida estandar, también podemosredireccionar el error estandar y la entrada estandar. Si queremos forzar aque un programa nos imprima en pantalla los errores que consiga durante suejecución podemos redireccionar el error estandar hacia la salida estandar.Eso lo logramos ejecutando:

$ programa 2>&1

¿Recuerdan que más arriba se comento que Linux identi�ca a cada tipocon un número? Bueno, aquí es donde esos números cobran sentido. El tipo2 es el error estandar y el tipo 1 es la salida estandar. En los ejemplos previosno tuvimos la necesidad de especi�car el tipo 1 porque la terminal lo asumepero pudimos expresarlos explícitamente de la siguiente manera:

$ ls -la 1> archivo.txt$ ls -la 1>> archivo.txt

Podemos, por ejemplo, contar las líneas que tiene un archivo redireccio-nando la entrada estandar de wc hacia un archivo de texto. Así:

$ wc < archivo.txt

También podemos hacer algo muy común en la administración de sis-temas, descartar el error estandar de un proceso. Para eso ejecutamos:

$ programa 2> /dev/null

O incluso descartar su salida estandar:

$ programa > /dev/null

En Linux, /dev/null es un archivo especial al que se envía cualquier in-formación que quiera ser descartada.

pipe permite redireccionar la salida de un comando hacia la entrada deotro, por ejemplo:$ ls j more

[email protected] 212 Antonio Carrillo Ledesma, Et alii

Page 215: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

chmod (del inglés change mode) es un comando que permite cambiarlos permisos de acceso de un directorio o archivo. Su sintaxis es:

$ chmod [opciones] <modo> <archivo>

donde opciones nos permite entre otras cosas, cambiar los permisos re-cursivamente para un directorio con -R, modo son los permisos de lectura,escritura y ejecución representados en notación octal79 y archivo es el nombredel directorio o archivo que queremos modi�car.Por ejemplo, para asignar permisos de lectura, escritura y ejecución para

el dueño, el grupo y remover los permisos para el resto de los usuarios alarchivo prueba.txt, sería:

$ chmod 770 prueba.txt

chown (del inglés change owner) nos permite cambiar el propietario deun archivo o directorio. Su sintaxis es:

$ chown [opciones] <nuevo-propietario> <archivo>

donde opciones son las opciones del comando, como -R para cambiarrecursivamente el propietario de un directorio y todo su contenido, nuevo-propietario será el nuevo propietario y archivo es el nombre del directorio oarchivo que queremos modi�car.Por ejemplo, para cambiarle el propietario del directorio /home/ejercicios

y todo su contenido y asignarlo al usuario pedro, hacemos:

$ chown -R pedro /home/ejercicios

79Octal Binario Modo Archivo

0 000 - - -1 001 - - x2 010 - w -3 011 - w x4 100 r - -5 101 r w -6 110 r w -7 111 r w x

[email protected] 213 Antonio Carrillo Ledesma, Et alii

Page 216: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

chgrp (del inglés change group) nos permite cambiar el grupo de unarchivo o directorio. Su sintaxis es:

$ chgrp [opciones] <nuevo-grupo> <archivo>

donde opciones son las opciones del comando, como -R para cambiar re-cursivamente el grupo de un directorio y todo su contenido, nuevo-grupo seráel nuevo grupo y archivo es el nombre del directorio o archivo que queremosmodi�car.Por ejemplo, para cambiarle el grupo del directorio /home/ejercicios y

todo su contenido y asignarlo al usuario pedro, hacemos:

$ chgrp -R pedro /home/ejercicios

su permite cambiar las credenciales del usuario, es decir ser otro usuario,el usuario del que comúnmente se desea adquirir sus credenciales es el de root,ejemplo:

$ su

useradd (de agregar usuario) se utiliza para crear nuevos usuarios entu sistema Linux. Su sintaxis es:

$ useradd [opciones] <nombre-usuario>

donde opciones nos permite asignar un grupo al usuario con -g, asignar eldirectorio /home con -d, crearlo con -m si no existía previamente y -s paraasignarle un intérprete de comandos o shell, entre otras.Así, para crear el usuario andrea cuyo grupo principal será editores, eje-

cutamos:

$ useradd -g editores -d /home/andrea -m -s /bin/bash andrea

usermod (de modi�car usuario) modi�ca algunos parámetros de unusuario existente, como el nombre, su directorio /home y los grupos a losque pertenece, entre otros. Su sintaxis es:

$ usermod [opciones] <nombre-usuario>

donde opciones cambia el directorio home con -d, mueve todo el contenidodel directorio anterior con -m y cambia el nombre de usuario con -l, entreotras. Para cambiar el nombre al usuario andrea por violeta, sería:

$ usermod -l violeta andrea

[email protected] 214 Antonio Carrillo Ledesma, Et alii

Page 217: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

deluser (del inglés delete user) es un sencillo comando para borrarusuarios. Tiene la opción -r que adicionalmente borra su directorio /home.Para borrar el usuario violeta con su /home, ejecutamos:

$ deluser -r violeta

passwd (del inglés password) es una utilidad que se usa para cambiaro generar la contraseña de un usuario existente. Al invocarlo, pedirá lacontraseña actual (si existe) y luego que la contraseña nueva sea introducidados veces para veri�car que fue escrita correctamente. Por ejemplo paraasignar una contraseña al usuario violeta, sería:

$ passwd violeta

�nd permite buscar dentro del sistema de archivos un directorio o archivosque concuerden con el patrón dado, por ejemplo:$ �nd /home -name a*.pdfbusca desde la trayectoria /home, todos los archivos que concluyan con

.pdf y nos muestra las trayectorias a los archivos que concuerdan con losolicitado.Este comando tiene una gran gama de opciones para buscar lo que se

desee en un sistema de archivos, para ver las diversas opciones consulte elmanual del comando.

grep permite buscar en archivos un determinado patrón, mostrando lalínea que lo contiene, por ejemplo:

$ grep chmod *.txt

locate permite buscar archivos o directorios cuyo nombre coincida conel patrón dado, por ejemplo:

$ locate *dir2*

tar permite respaladar en un solo archivo un grupo de archivos y/odirectorios sin compactarlos, para ello usar:

$ tar -cvf nombre.tar directorio

para restaurar usar:

$ tar -xvf nombre.tar

[email protected] 215 Antonio Carrillo Ledesma, Et alii

Page 218: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

gzip permite respaladar en un solo archivo un grupo de archivos y/odirectorios compactandolos usando gzip, para ello usar:

$ tar -cvf nombre.tar directorio$ gzip �best nombre.tar

o usar:

$ tar -zcvf nombre.tar.gz directorio

para restaurar usar:

$ gunzip nombre.tar.gz$ tar -xvf nombre.tar

o usar:

$ tar -zxvf nombre.tar.gz

con GZIP comprimir y descomprimir respectivamente:

$ gzip �chero$ gzip -d �chero.gz

bzip2 permite respaladar en un solo archivo un grupo de archivos y/odirectorios compactándolos usando bzip2, para ello usar:

$ bzip �chero$ bzip -d �chero.bz2

zip permite respaladar en un solo archivo un grupo de archivos y/odirectorios compactándolos usando zip, para ello usar:

$ zip archivo.zip �cheros$ unzip archivo.zip

si al descompactar existe algún error, es posible recuperar parte de losarchivos mediante:

$ zip -F archive.zip -O archive-�xed.zip

o usar -FF, después usar:

$ jar xvf archive-�xed.zip

otra alternativa es usar:

$ bsdtar xf archivo.zip

[email protected] 216 Antonio Carrillo Ledesma, Et alii

Page 219: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

unp permite descomprimir de casi cualquier formato de respaldo, suuso es de lo más sencillo, a saber:

$ unp archivo.compactado

�le determina el tipo de un archivo y te imprime en pantalla el re-sultado. No hace falta que el archivo tenga una extensión para que Filedetermine su tipo, pues la aplicación ejecuta una serie de pruebas sobre elmismo para tratar de clasi�carlo.

$ �le un_archivo_de_texto.txt

cal nos muestra el calendario del mes actual, ejemplo:

$ cal

ps nos muestra los procesos activos del sistema junto con informaciónde la ejecución de los mismos, ejemplo:

$ ps

top nos muestra en tiempo real los procesos activos del sistema juntocon información como el número de cores, memoria real, usada y libre entreotra información importante del sistema, ejemplo:

$ ps

para salir del comando, es necesario teclear la letra q.

kill es un comando utilizado para enviar mensajes sencillos a los proce-sos ejecutándose en segundo plano en el sistema. Por defecto el mensaje quese envía es la señal de terminación. Su sintaxis más sencilla es:

$ kill [-s] <pid>

[email protected] 217 Antonio Carrillo Ledesma, Et alii

Page 220: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

donde -s es la señal a enviar, de no ser especi�cada ninguna se manda laseñal por defecto y pid es el identi�cador del proceso. Otra de sus opcioneses -9 que fuerza la terminación de un proceso.En Linux cada comando, proceso o ventana grá�ca tiene un número de

proceso (PID), este se puede obtener mediante el comando ps o top, y elcomando kill puede concluir con la ejecución del PID indicado y todos sussubprocesos � el usuario sólo puede matar sus propios procesos, root puede�nanizar (matar) los procesos de cualquier usuario� , ejemplo:Por ejemplo, para terminar un proceso cuyo PID es 3477, ejecutamos:

$ kill 3477

killall permite �nalizar (matar) todas las instancias de ejecución de uncomando, por ejemplo:

$ killall �refox-esr

dstat muestra información segundo a segundo del uso del procesador,disco, red entre otros, ejemplo:

$ dstst

lsusb lista los dispositivos usb del sistema además información del fa-bricante del mismo, ejemplo:

$ lsusb

awk permite procesar, analizar archivos de texto que esten organizadospor �las y columnas, ejemplo:$ awk -F�:��{ print $1 }�/etc/passwdnos mostrarán todos los usuarios que tiene el sistema, los cuales estan

dados de alta en el archivo del sistema /etc/passwd

sort imprime en pantalla las líneas de un archivo ordenadas alfabética-mente. Para ejecutarlo basta con:

$ sort archivo.txt

[email protected] 218 Antonio Carrillo Ledesma, Et alii

Page 221: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

sed es considerado un editor de texto orientado a "�ujo" � en contra-posición a los clásicos editores «interactivos» � el cual acepta como entradaun archivo o entrada estandar; cada línea es procesada y el resultado esenviado a la salida estandard, ejemplo:

$ sed �3,5d��chero.txt

borrará las líneas tres a cinco de archivo �chero.txt, otro ejemplo:

$ sed �/^$/d��chero.txt

borra todas las líneas en blanco del archivo �chero.txt.

Aprender a Trabajar con Linux En la red existen múltiples sitios espe-cializados y una amplia bibliografía para aprender a trabajar en cada uno delos distintos aspectos de Linux, nosotros hemos seleccionado diversos textosque ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/SistemasOperativos/

13.4.3 Interprete de Órdenes de Consola BASH

Bash80 es un programa informático, cuya función consiste en interpretar ór-denes, y un lenguaje de consola. Es una shell de Unix compatible con POSIXy el intérprete de comandos por defecto en la mayoría de las distribucionesGNU/Linux, además de Mac OS. También se ha llevado a otros sistemascomo Windows y Android.La sintaxis de órdenes de Bash es un superconjunto de instrucciones

basadas en la sintaxis del intérprete Bourne. La especi�cación de�nitivade la sintaxis de órdenes de Bash, puede encontrarse en el Bash ReferenceManual distribuido por el proyecto GNU. Esta sección destaca algunas desus características únicas.La mayoría de los shell scripts81 (guiones de intérprete de órdenes) Bourne

pueden ejecutarse por Bash sin ningún cambio, con la excepción de aquellos

80Su nombre es un acrónimo de Bourne-again shell ("shell Bourne otra vez"), haciendoun juego de palabras (born-again signi�ca "nacido de nuevo") sobre la Bourne shell (sh),que fue uno de los primeros intérpretes importantes de Unix.81Para generar un archivo de BASH o Script, usemos cualquier editor de texto, por

ejemplo nano miScript. En el, la primera línea se acostumbra poner:

[email protected] 219 Antonio Carrillo Ledesma, Et alii

Page 222: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

scripts del intérprete de órdenes o consola Bourne que hacen referencia avariables especiales de Bourne o que utilizan una orden interna de Bourne.La sintaxis de órdenes de Bash incluye ideas tomadas desde los intérpretesKorn shell (ksh) y C shell (csh), como la edición de la línea de órdenes, elhistorial de órdenes, la pila de directorios, las variables $RANDOM y $PPID,y la sintaxis de substitución de órdenes POSIX : $(...). Cuando se utilizacomo un intérprete de órdenes interactivo, Bash proporciona autocompletadode nombres de programas, nombres de archivos, nombres de variables, etc.,cuando el usuario pulsa la tecla TAB.La sintaxis de Bash tiene muchas extensiones que no proporciona el in-

térprete Bourne. Varias de las extensiones mencionadas se enumeran a con-tinuación:

� Los guiones o scripts de Bash reciben los argumentos que se le pasaal shell como $1, $2, ..., $n. Se puede obtener el número total deargumentos con el símbolo: $#

� Usando $# es posible comprobar el número de argumentos entregadosal guion antes de realizar alguna acción con ellos:

if [ $# -lt 2 ]; thenecho "Necesitas pasar dos argumentos."exit 1

� Otra forma de acceder a los argumentos es a través del array: $@, pormedio del cual se puede iterar sobre todos los argumentos dados:

for arg in "$@"doecho "$arg"

done

#"/bin/bashya creado el Script, es necesario hacerlo ejecutable, para ello usamos:$ chmod 755y lo ejecutamos mediante:$ ./miScript

[email protected] 220 Antonio Carrillo Ledesma, Et alii

Page 223: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

� Una gran limitación del intérprete Bourne es que no puede realizarcálculos con enteros sin lanzar un proceso externo. En cambio, unproceso Bash puede realizar cálculos con enteros utilizando la orden((...)) y la sintaxis de variables $[...] de la siguiente manera:

Asigna el valor entero 55 a la variable VAR.

VAR=55

Suma uno a la variable VAR. Observe la ausencia del carácter �$�:

((VAR = VAR + 1))

Otra forma de sumar uno a VAR. Preincremento estilo C:

((++VAR))

Otra forma de sumar uno a VAR. Postincremento estilo C:

((VAR++))

Multiplica la variable VAR por 22 y sustituye la orden por elresultado:

echo $[VAR * 22]

Otra forma de realizar lo mismo:

echo $((VAR * 22))

� La orden: ((...)) también se puede utilizar en sentencias condicionales,ya que su código de retorno es 0 ó 1 dependiendo de si la condición escierta o falsa:

if ((VAR == Y * 3 + X * 2))thenecho Si

�((Z > 23)) && echo Si

� La orden ((...)) soporta los siguientes operadores relacionales:�==�, �!=�, �>�, �<�, �>=�, y �<=�.

� Manejo de ciclos con el contenido arrojado por algún comando, ejemplo:

[email protected] 221 Antonio Carrillo Ledesma, Et alii

Page 224: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

for i in $( ls ); doecho item: $i

done

� Manejo de ciclos con una secuencia numérica, ejemplo:

for i in �seq 1 10�;doecho $i

done

� Manejo de ciclos con while, ejemplo:

COUNTER=0while [ $COUNTER -lt 10 ]; doecho The counter is $COUNTERlet COUNTER=COUNTER+1

done

� Manejo de ciclos con until, ejemplo:

COUNTER=20until [ $COUNTER -lt 10 ]; doecho COUNTER $COUNTERlet COUNTER-=1

done

Observación 4 Un proceso Bash no puede realizar cálculos en coma �otante.Las únicas shell Unix capaces de esto son Korn Shell (versión de 1993) y zsh(a partir de la versión 4.0).

Redirecciones de entrada/salida la sintaxis de Bash permite diferentesformas de redirección de entrada/salida de las que la shell Bourne tradicionalcarece. Bash puede redirigir la salida estandar y los �ujos de error estandara la vez utilizando la sintaxis:

orden >& archivo

[email protected] 222 Antonio Carrillo Ledesma, Et alii

Page 225: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

que es más simple que teclear la orden Bourne equivalente: "orden >archivo 2>&1". Desde la versión 2.05b, Bash puede redirigir la entradaestandar desde una cadena utilizando la siguiente sintaxis (denominada "herestrings"):

orden <<< "cadena a leer como entrada estandar"

si la cadena contiene espacios en blanco, deben utilizarse comillas.

Funciones como en casi todo lenguaje de programación, puede utilizarfunciones para agrupar trozos de código de una manera más lógica, o practicarel divino arte de la recursión.Declarar una función es sólo cuestión de escribir function mi_func {

mi_código }.Llamar a la función es como llamar a otro programa, sólo hay que escribir

su nombre.

#!/bin/bashfunction salir {exit

}function hola {echo ¡Hola!

}holasalirecho algo

Ejemplo de funciones con parámetros

#!/bin/bashfunction salir {exit

}function e {echo $1

}e Hola

[email protected] 223 Antonio Carrillo Ledesma, Et alii

Page 226: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

e Mundosalirecho algo

Este script es casi idéntico al anterior. La diferencia principal es la función�e�. Esta función imprime el primer argumento que recibe. Los argumentos,dentro de las funciones, son tratados de la misma manera que los argumentosproporcionados al script.

Algunos ejemplos Programa BASH82 llamado Buscar para encontrar losarchivos y directorios modi�cados en una determinada trayectoria [$1] en losúltimos días [$2]:

#!/bin/bash# Encuentra los archivos modi�cados en los ultimos $2 diasif [ -z "$1" ]; thenecho uso: $0 [directorio] [dias]exit

��nd $1 -type f -mtime -$2 -exec ls -gGh �full-time �{}�n; j cut

-d ��-f 4,5,7

por ejemplo, para buscar desde /home los archivos modi�cados desde elúltimo día, usamos:

$ ./Buscar /home 1

Programa BASH llamado Diferencia para encontrar la diferencia entrelos archivos y directorios de dos trayectorias [$1] y [$2]:

#!/bin/bash# Encuentra las diferencias entre dos directorios y subdirec-

toriosif [ -z "$1" ]; thenecho uso: $0 [directorio1] [directorio2]exit

�di¤<(cd $1 && �nd j sort) <(cd $2 && �nd j sort)

82Estos y otros ejemplos de BASH se pueden descargar de:http://mmc.geo�sica.unam.mx/acl/Herramientas/SistemasOperativos/Bash/

[email protected] 224 Antonio Carrillo Ledesma, Et alii

Page 227: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

por ejemplo, buscar la diferencia de contenido entre /home/user/a1 y/home/user/b3, usamos:

$ ./Diferencia /home/user/a1 /home/user/b3

Programa para compactar Programa BASH llamadoRespalda para generarel respaldo de la trayectoria indicada [$2] con el nombre [$1] (véase 13.4.4):

#!/bin/bash#Respalda el contenido dado $2 con el nombre $1if [ -z "$1" ]; thenecho uso: $0 [Archivo].tar [Archivo o Directorio]exit

�# Variables de trabajoA=$1B=$(date +%Y%m%d)# Genera el archivo TARecho Generando el archivo TAR ...shift 1tar -zcvpf $A-$B.tar.gz $*# Visualiza el nuevo contenido/bin/ls -al �color=tty

por ejemplo, para respaldar el contenido de /home con el nombre respaldo,usamos:

$ ./Respalda respaldo /home

Secuencias Como parte del BASH podemos usar el generador de secuen-cias, como por ejemplo:

$ echo {1..10}

que muestra la secuencia de los números de 1 a 10, si ahora probamos:

$ echo {1..10..2}

[email protected] 225 Antonio Carrillo Ledesma, Et alii

Page 228: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

visualizará los números 1; 3; 5; 7; 9. Es decir, iniciará con el primer númeroen la secuencia y terminará en el segundo de la secuencia con incrementos delúltimo número de la secuencia. También podemos hacerlo en orden inversomediante:

$ echo {10..1..2}

que nos entregará los números 10; 8; 6; 4; 2. También podemos usar rellenocon ceros, por ejemplo:

$ echo {000..121..2}

el cual imprimirá los números de 0 a 121 con saltos de dos en dos, como:000 002 004 006 ... 050 052 054 ... 116 118 120. Con este generador de se-cuencias numéricas podemos aplicar a comando vistos en la sección anterior,como por ejemplo:

$ mkdir {2009..2019}_Facturas

que creará los directorios de 2009_Facturas, hasta 2019_Facturas. Tam-bién lo podemos usar para borrar archivos, como por ejemplo:

$ rm cuadros_{043..61..3}

Este generador de secuencias podemos usarlo también en modo texto, porejemplo:

$ touch archivo_{a..z}.txt

creará el archivo archivo_a.txt hasta archivo_z.txt. También es posibleusar algo como {Z..a} pero generará caracteres no alfanuméricos. Otros usosson:

$ touch {blahg, splurg, mmmf}_�le.txt

creará los archivos blahg_�le.txt, splurg_�le.txt y mmmf_�le.txt.

Aprender a Trabajar con BASH En la red existen múltiples sitios espe-cializados y una amplia bibliografía para aprender a programar cada uno delos distintos aspectos de BASH, nosotros hemos seleccionado diversos textosque ponemos a su disposición en:

http://mmc.geo�sica.unam.mx/acl/Herramientas/SistemasOperativos/

[email protected] 226 Antonio Carrillo Ledesma, Et alii

Page 229: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.4 Compresores y Descompresores de Archivos

Para manejar de manera óptima y fácil un conjunto de archivos es necesarioagruparlos y/o compactarlos, existen múltiples programas para tal efectocomo tar, gzip, bz2, zip, lha, arj, zoo, rar y su uso básico es el siguiente:Para instalar los programas más comunes en Debian GNU/Linux usar:

# apt install gzip unzip zip pbzip2 bzip2 lbzip2 arj zoo unrarlhasa ncompress p7zip p7zip-full p7zip-rar unace-nonfree unacezutils cpio pax unp lzma xz-utils pxz pixz kgb rar rarcrack zpaqbsdtar zstd

Para respaldar un grupo de archivos y/o directorios en formato tar, usa-mos:

$ tar -cvf nombre.tar directorio

para restaurar, usamos:

$ tar -xvf nombre.tar

también podemos integrarlo en un programa BASH como el mostrado en(véase 13.4.3).

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato tar.gz, usamos:

$ tar -cvf nombre.tar directorio$ gzip �best nombre.tar

o usamos:

$ tar -zcvf nombre.tar.gz directorio

o usamos:

$ tar -jcvf nombre.tar.bz2 directorio

para restaurar, usamos:

[email protected] 227 Antonio Carrillo Ledesma, Et alii

Page 230: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ gunzip nombre.tar.gz$ tar -xvf nombre.tar

o usamos:

$ tar -zxvf nombre.tar.gz

o usamos:

$ tar -jxvf nombre.tar.bz2

Para compactar archivos y/o directorios al formato gzip, usamos:

$ gzip �cheros

y para descompactarlo usamos:

$ gzip -d �chero.gz

o

$gunzip �chero.gz

Para compactar archivos y/o directorios al formato bz2, bz, tbz2 tbz obzip2, usamos:

$ bzip2 �cheros

y para descompactarlo usamos:

$ bzip2 -d �chero.bz2

podemos descomprimir usando el comando bzcat mediante:

bzcat -dc �chero.bz2

o bien descomprimir usando el comando bunzip2 mediante:

bunzip2 �chero.bz2

[email protected] 228 Antonio Carrillo Ledesma, Et alii

Page 231: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para respaldar y compactar un grupo de archivos y/o directorios al for-mato zip, usamos:

$ zip -r archivo.zip �cheros

para descompactar el contenido, usamos:

$ unzip archivo.zip

si deseamos conocer los archivos y directorios que contiene un archivo.zipsin descomprimir, usamos:

$ zipinfo archivo.zip

si al descompactar existe algún error, es posible recuperar parte de losarchivos mediante:

$ zip -F archive.zip -O archive-�xed.zip

o usar -FF, después usar:

$ jar xvf archive-�xed.zip

otra alternativa es usar:

$ bsdtar xf archivo.zip

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato 7-zip, usamos:

$ 7z a archivo.7z �cheros

para restaurar usamos:

$ 7z e archivo.7z

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato zst, usamos:

[email protected] 229 Antonio Carrillo Ledesma, Et alii

Page 232: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ zstd �cheros -o archivo.zst

para restaurar usamos:

$ zstd -d archivo.zst

o usamos:

unzstd archivo.zst

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato lha, usamos:

$ lha a archivo.lha �cheros

para restaurar usamos:

$ lha x archivo.lha

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato arj, usamos:

$ arj a archivo.arj �cheros

para restaurar usamos:

$ arj x archivo.arj$ unarj archivo.arj

Para respaldar y compactar un grupo de archivos y/o directorios en for-mato zoo, usamos:

$ zoo a archivo.zoo �cheros

para restaurar usamos:

$ zoo x archivo.zoo

[email protected] 230 Antonio Carrillo Ledesma, Et alii

Page 233: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para respaldar y compactar un grupo de archivos y/o directorios al for-mato rar, usamos:

$ rar a archivo.rar �cheros

para restaurar usamos:

$ rar x archivo.rar$ unrar archivo.rar

En algunos casos, archivos rar de Windows no es posible descomprimirloscorrectamente en Linux, para descomprimirlos podemos descargar utileríasGNU para Win32 de:

http://unxutils.sourceforge.net/

entre ellas, descargar unrar (es un sólo archivo zip) de la direccion:

http://sourceforge.net/projects/unxutils/

ahora usando Wine es posible descomprimir los archivos desde Linux me-diante:

$ wine unrar.exe e archivo.rar

Para descomprimir archivos rar o zip rotos, usar:

$ unrar e -kb -y nombreArchivo.rar

o usamos:

$ bsdtar xf nombreArchivo.zip

Existe un programa llamado unp que permite descomprimir de casi cual-quier formato, su uso es de lo más sencillo, a saber:

$ unp archivoCompactado

[email protected] 231 Antonio Carrillo Ledesma, Et alii

Page 234: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Cuando se tiene una lista de archivos de distintas trayectorias o es re-sultado de una búsqueda, para compactar es preferible usar a�o. Podemosinstalarlo usando:

# apt install a�o

Para compactar, digamos todos los archivos *.?pp (programas de C++)usar:

$ �nd . -name *.?pp j a�o -o -Z fuentes

para descompactarlos, usar:

$ a�o -i -Z fuentes

Si se desea compactar usando GZIP, usar:

$ cat lista j a�o -o -Z -G 9 fuentes

Si se desea ver el listado de archivos que contiene fuentes, usar:

$ a�o -t fuentes

Si se desea compactar y mandar a otra máquina usar:

$ �nd . -name *.?pp j a�o -o -Z user@servidor%ssh:fuentes

Como el uso de a�o no necesita extensión en el archivo, para descom-pactarlo de cualquier formato es recomendable usar unp, este escoge el mejormétodo para el archivo en cuestión:

$ unp archivoCompactado

[email protected] 232 Antonio Carrillo Ledesma, Et alii

Page 235: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.5 Copiar Archivos entre Equipos

Para transmitir archivos y/o directorios de una máquina a otra es recomen-dable usar el comando scp de Linux que trabaja con SSH, este tiene unasintaxis similar al del comando cp, con la salvedad que es necesario indicar elusuario, la máquina y el subdirectorio de trabajo del archivo y/o directoriopara el destino, fuente o ambos.

Por ejemplo, si se desea transmitir un archivo a una máquina HOST conusuario usr, en el directorio ~/Datos/ estando en sesión en otra máquina, seusa la siguiente sintaxis:

$ scp archivo.dat usr@HOST:~/Datos/

Si se desea transmitir un subdirectorio a la máquina HOST, en el direc-torio home del usuario (denotado con .), se usa la siguiente sintaxis:

$ scp -r Directorio usr@HOST:.

Si se desea copiar un archivo de una máquina remota a nuestra máquina,usamos:

$ scp usr@HOST:/home/user/archivo /home/local-username/carpeta

o de forma alternativa usamos (. indica el directorio donde el usuario seencuentra):

$ scp user@HOST:/home/user/archivo .

Si se desea copiar de una máquina remota a otra máquina remota, usamos:

$ scp user1@HOST1:/home/user1/archivo user2@HOST2:/home/user2/

Si se desea transferir multiples archivos podemos usar:

$ scp �le1.txt �le2.txt user@HOST:/home/user/

[email protected] 233 Antonio Carrillo Ledesma, Et alii

Page 236: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

o de forma alternativa usamos (. indica el directorio donde el usuario seencuentra):

$ scp user@host:/home/user/n{�le1.txt,�le2.txtn} .

En el caso que se quiera limitar el ancho de banda en la transmisión dearchivos por scp, usar:

$ scp -l 400 user@server:/home/user/* .

En el caso de que se desee usar otro puerto distinto al de imisión (22)usar:

$ scp -P 4455 �le.txt user@HOST:/home/user/�le.txt

En el caso de querer incrementar la velocidad de transferencia en el usode scp, la opción más viable es el cambiar la encriptación usada por omisiónpor otras como 3des-cbc, aes128-cbc, aes192-cbc, aes256-cbc, aes-128-ctr,aes192-ctr, eas256-ctr, arcfour256, arcfour, blow�sh-cbc y cast128-cbc medi-ante:

$ scp -c blow�sh user@server:/home/user/�le .

o de forma alternativa usamos:

$ scp -c arcfour256 user@HOST:/home/user/�le .

Si se desea que no se muestre información de la transferencia de losarchivos al usar scp usar:

$ scp -q SourceFile user@HOST:/home/user/TargetFile

o si desea ver más información en la transferencia usar:

$ scp -v SourceFile user@HOST:/home/user/TargetFile

Si se instala sshpass, entonces hacemos:

[email protected] 234 Antonio Carrillo Ledesma, Et alii

Page 237: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

$ sshpass -p "your_password" scp -r backup_user@target_ip:/home//backup/$name

Si se trabaja en varias máquinas y se desea tener sincronizada una omás carpetas, una opcion es usar rsync conjuntamente con ssh, este permitetrasmitir solo aquello que ha cambiado, minimizando las comunicaciones,esto se puede hacer mediante el comando ssh, por ejemplo, supongamos quese esta en la máquina y quiere tener sincronizada la carpeta <carpeta> conmas de un equipo, mediante ssh usando un puerto <puerto>, en la máquinay usario, usar:

$ rsync �partial �recursive �links �hard-links �times �verbose�delete �stats <carpeta> -e �ssh -p <puerto>�usr@maquina:.

por supuesto esto puede hacerse en cualquier dirección, i.e. de la máquinaremota a nuestra máquina o viceversa. Además de poder usar rsync de ma-nera local, por ejemplo para hacer respaldos de una parte o todos nuestrosarchivos en nuestra cuenta y solo actualizar aquellos archivos que han cam-biado desde la última actualización, usamos:

$ rsync �partial �recursive �links �hard-links �times �verbose�delete �stats <carpeta> .

en este caso se sincronizaría el contenido de la carpeta <carpeta> ennuestra trayectoria actual.

Además existe pssh que permite transferir o copiar archivos a múltiplesservidores en Linux con un mismo comando:

� pscp - es una utilería para copiar archivos en paralelo a múltiplesequipos

� prsync - es una utilería para transferir de forma e�ciente archivos entremúltiples equipos en paralelo

� pnuke - permite concluir procesos en múltiples equipos en paralelo

� pslurp - permite copiar archivos de múltiples equipos a un equipo cen-tral en paralelo

[email protected] 235 Antonio Carrillo Ledesma, Et alii

Page 238: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Si creamos un archivo hosts.txt, con los IPs como el siguiente:

192.168.0.3:22192.168.0.9:22

podemos usar para copiar un archivo a múltiples servidores:

$ pscp -h hosts.txt -l USR -Av wine-1.7.55.tar.bz2 /tmp/

o de forma alternativa usamos:

$ pscp.pssh -h hosts.txt -l USR -Av wine-1.7.55.tar.bz2 /tmp/

donde:

-h indica que se lean los IPs del archivo indicado-l se indica el usuario a usar en todos los equipos.-A solicita el password para ser enviado a ssh-v visualiza las operaciones y mensajes que genera el comando

Podemos copiar directorios a múltiples servidores, usando:

$ pscp -h myscphosts.txt -l USR -Av -r Androidn Games//tmp/

o de forma alternativa:

$ pscp.pssh -h myscphosts.txt -l USR -Av -r AndroidnGames//tmp/

[email protected] 236 Antonio Carrillo Ledesma, Et alii

Page 239: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.6 Linux «Seguros»

Para muchos, Linux y Mac OS son dos sistemas operativos más seguros queWindows de Microsoft, pero con todo, hay algunas distribuciones especia-lizadas de Linux que satisfacen las necesidades de temas relacionados conla seguridad, estos sistemas operativos intentan preservar la privacidad y elanonimato, ayudan a utilizar internet de forma anónima y evitar la censuraen practicamente cualquier lugar y cualquier ordenador, pero sin dejar rastroa menos que lo solicites explícitamente.Algunos son sistemas operativos Live diseñados para ser usados desde una

memoria USB o un DVD independientemente del sistema operativo originalde la computadora. Además, mediante el uso de tecnologías como TOR83,Sandbox84, Firewall85, herramientas criptográ�cas86, etc., las distribucionesanónimas ofrecen niveles adicionales de privacidad y seguridad. Hay muchasalternativas diferentes de este tipo en el mercado, por lo que decidirse poruna u otra, en ocasiones puede ser una tarea un tanto complicada. Es por

83Tor es una red abierta y distribuida que te ayuda a defenderte de una forma devigilancia en la red que amenaza tu libertad y privacidad, tus actividades comercialescon�denciales y relaciones, además de la seguridad gubernamental. Además, te protegeredirigiendo tus comunicaciones alrededor de una red distribuida de retransmisores rea-lizados por voluntarios alrededor del mundo: lo cual previene que alguien observe tuscomunicaciones a partir de los sitios que visitas, también evita que los sitios que navegasobtengan tu ubicación física.84Sandbox es un mecanismo para ejecutar programas con seguridad y de manera sepa-

rada. A menudo se utiliza para ejecutar código nuevo, o Software de dudosa con�abilidadproveniente de terceros. Ese entorno aislado permite controlar de cerca los recursos pro-porcionados a los programas cliente a ejecutarse, tales como espacio temporal en discos ymemoria. Habitualmente se restringen las capacidades de acceso a redes, la habilidad deinspeccionar la máquina an�trión y dispositivos de entrada entre otros. En este sentido,el aislamiento de procesos es un ejemplo especí�co de virtualización.85Un cortafuegos (Firewall) es una parte de un sistema o una red que está diseñada

para bloquear el acceso no autorizado, permitiendo al mismo tiempo comunicaciones au-torizadas. Se trata de un dispositivo o conjunto de dispositivos con�gurados para permitir,limitar, cifrar o descifrar el trá�co entre los diferentes ámbitos sobre la base de un conjuntode normas y otros criterios. Los cortafuegos se utilizan con frecuencia para evitar que losusuarios de Internet no autorizados tengan acceso a redes privadas conectadas a Internet,especialmente intranets.86El surgimiento de redes de comunicación, en particular de Internet, ha abierto nuevas

posibilidades para el intercambio de información. Al mismo tiempo, son cada vez mayoreslas amenazas a la seguridad de la información que se transmite. Es necesario entonces,crear diferentes mecanismos, dirigidos a garantizar la con�dencialidad y autenticidad delos documentos electrónicos, todo ello es parte de la Criptografía.

[email protected] 237 Antonio Carrillo Ledesma, Et alii

Page 240: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

ello que aquí listamos algunas de las distribuciones de Linux más seguras enla actualidad, apartado con el que cada vez debemos prestar más atención.

Tails (https://tails.boum.org/)Para muchos esta es la primera opción a la hora de buscar una solución

de seguridad en Linux. También conocida como «The Amnesic IncognitoLive System» , esta es una distribución basada en Debian. Es un proyecto decódigo abierto que se publicó por primera vez hace 8 años y que redirige todoel trá�co web a través de Tor logrando la privacidad a través del anonimato.Además, almacena todo en la RAM y evita el uso del disco duro, por lo queborra todo una vez se apaga. La imagen tiene un tamaño menor de 1.2 GBy necesita al menos 2 GB de RAM en un equipo de 64 bits, se puede usaren formato Live, como máquina Vitual o bien instalarse en una USB, DVDo en el disco duro del equipo.

Whonix (https://www.whonix.org/)Es una distribución que se basa en Debian y consta de dos máquinas

virtuales, una es Tor Gateway que se ejecuta en Debian, mientras que laotra es una Workstation. Whonix se instala en un sistema operativo hostproporcionado por el usuario que puede ser Linux, Windows, MacOS o QubesOS. Así al utilizar la red abierta y distribuida de transmisión de Tor, Whonixecha abajo las posibilidades de vigilancia de la Red. Además, y por motivosde seguridad, hace todo lo posible para ocultar nuestra dirección IP real.

Qubes OS (https://www.qubes-os.org/)Se conoce como uno de los sistemas operativos más seguros del mundo

y se basa en realizar la virtualización mediante el «hipervisor Xen» � unhipervisor imita el Hardware y permite ejecutar varias máquinas virtualessimultáneamente� . El entorno de usuario de Qubes OS podría ser Fedora,Debian, Whoix o Windows y, al igual que Tails. Así mismo utiliza diferentesdominios para separar los niveles de con�anza, por ejemplo, un dominio detrabajo, un dominio para el ocio, etc.; los cuales se ejecutan en diferentesmáquinas virtuales, esta versión requiere un mínimo de 16 GB de RAM.

[email protected] 238 Antonio Carrillo Ledesma, Et alii

Page 241: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Subgraph OS (https://subgraph.com/)Nos encontramos con un sistema operativo seguro basado en Debian que

promete proporcionar una experiencia digital anónima. Ha sido diseñadopara evitar diferentes ataques de malware, es capaz de ser una plataformade comunicación segura además de proporcionar una interfaz de usuario muysencilla.

Discreete Linux (https://www.privacy-cd.org/)En este caso nos encontramos con un proyecto de Software libre que

puede ser utilizado por cualquier persona que desee llevar una vida digitalanónima también basado en Debian. Además, protege a sus usuarios contralos ataques de vigilancia accionados por troyanos y hoy día esta en fase Beta.Es una de las alternativas más adecuadas para los usuarios que no tienenun conocimiento muy profundo de estos sistemas pero que consideran laseguridad en Internet como su principal preocupación. Hace uso de cifradosy entornos aislados para proporcionar un entorno de trabajo seguro. Asímismo no utiliza los discos duros internos del equipo, ya que almacena todossus datos en la memoria RAM o en una unidad de disco USB externa.

Kodachi (https://www.digi77.com/linux-kodachi/)Es un sistema operativo centrado en la seguridad y basado en Debian

cuyo objetivo es proporcionar una experiencia informática segura. Ponerloen marcha es muy sencillo y no necesita demasiado tiempo, ya que permitela opción de arrancar desde el Hardware del PC, o desde una unidad USBexterna para mayor seguridad. Hace uso de elementos tales como una cone-xión VPN activa, el servicio TOR y DNScrypt con el que garantiza un buennivel de privacidad. Además, todo el sistema operativo se ejecuta desde lamemoria RAM del equipo, por lo que después de apagado no queda ningúnrastro de actividad.

Tens (https://www.spi.dod.mil/lipose.htm)También conocido como Trusted End Node Security, este sistema es

distribuido y desarrollado por el Departamento de Defensa de los EstadosUnidos. Se basa en Arch Linux y puede ejecutarse en cualquier equipo contecnología Intel. Sólo arranca desde la RAM y viene cargado con un asis-tente de encriptación, un Software de encriptación simple y potente para laprotección de nuestra información con�dencial.

[email protected] 239 Antonio Carrillo Ledesma, Et alii

Page 242: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Tin Hat (https://sourceforge.net/projects/tinhat/)Esta propuesta es una derivación de Gentoo y es un sistema operativo

seguro que se ejecuta en su totalidad en la RAM del equipo, por lo que nomonta ningún sistema de archivos directamente en el dispositivo de arranque,evitando así la posibilidad de dejar expuesto cualquier dato. Como era deesperar, podremos arrancarlo desde un CD o desde una unidad �ash USB.Puede ejecutarse tanto en arquitecturas de Hardware de 32 como de 64 bitsy es recomendable tener conocimientos previos de Gentoo Linux.

IprediaOS (https://www.ipredia.org/os/)Para empezar diremos que I2P es una capa de comunicación P2P anónima

que se crea utilizando herramientas de código abierto, algo en lo que se basaIprediaOS, ya que orienta todo su trá�co a través de I2P y se asegura de quetoda su actividad on-line no pueda ser interceptada por terceros. Así haceuso de múltiples capas de cifrado y cabe mencionar que la red I2P es una reddinámica y distribuida.

Alpine Linux (https://alpinelinux.org/)Es una distribución diseñada principalmente para los usuarios avanzados

que valoran la seguridad, la e�ciencia de recursos y la simplicidad. En unprincipio parte como bifurcación del proyecto LEAF aunque, a diferencia deeste, Alpine mejora las características de seguridad y cuenta con un Kernelmás actual. Su funcionamiento se centra en la privacidad, por lo que utilizasu propio sistema de gestión de paquetes.

¿Qué hacer para que mi Linux sea más seguro? La mejor opción,es elegir una distribución de Linux que nos permita mantener el sistemaactualizado, instalar sólo los paquetes que necesitamos y que estos proven-gan de una fuente con�able, además de encriptar las particiones del sistemaoperativo y de datos del usuario. Varias versiones de Linux satisfacen losrequerimientos anteriores, nosotros preferimos usar Debian GNU/Linux ensu versión estable.También, podemos tratar de mantener nuestros datos fuera de miradas

indiscretas usando gocryptfs en las máquina a las que tengamos acceso (in-cluso del super usuario root)87. Además, podemos respaldarlos y transportar-

87Existen múltiples proyectos � algunos multiplataforma� que permiten hacer lo mismoque gocryptfs como son: encfs, ecrptfs, cryptomator, securefs y CryFS, entre otros.

[email protected] 240 Antonio Carrillo Ledesma, Et alii

Page 243: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

los manteniendo estos siempre encriptados y que sea casi transparente paranosotros el uso de dicho programa, para ello es necesario instalarlo, medianteel uso de:

# apt install gocryptfs

Después, es necesario crear los directorios para guardar los datos encrip-tados (por ejemplo en el directorio ~/.encriptados) y los desencriptados (porejemplo en el directorio ~/desencriptados), mediante:

$ mkdir -p ~/.encriptados ~/desencriptados

Para inicializar y montar el directorio88 para guardar datos encriptados(en el directorio ~/.encriptados) y los desencriptados (en el directorio ~/des-encriptados), lo hacemos mediante:

$ gocryptfs ~/.encriptados ~/desencriptados

Desmontamos al terminar de usar la carpeta, usando:

$ fusermount -u ~/desencriptados

De esta forma, la carpeta virtual ~/desencriptados mostrará nuestrosdatos desencriptados, solo visibles para el usuario que monta la carpeta (nopara root) y la carpeta ~/.encriptados, contendrá nuestros datos de formaencriptada89, esta carpeta puede ser copiada, respaldada y restaurada aúnestando montada, manteniendo el anonimato de nuestros archivos.

88La primera vez pedirá la clave y su con�rmación, las demás veces sólo la clave. Sepueden crear tantas carpetas independientes con gocyptfs como se requieran y el cualquierparte del sistema de archivos al que tengamos acceso.89El nombre de los archivos tienen un límite, por ello hay que tenerlo en cuenta si se

usan nombre largos en el sistema de archivos (el límite aproximado es 255 caracteres),pero no importa el número de archivos o carpetas almacenadas internamente.

[email protected] 241 Antonio Carrillo Ledesma, Et alii

Page 244: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Encriptar con GnuPG GnuPG es una herramienta en linea de co-mandos de seguridad en comunicaciones electrónicas en donde se utilizacriptografía de clave pública para que los usuarios puedan comunicarse deun modo seguro. En un sistema de claves públicas cada usuario posee unpar de claves, compuesto por una clave privada y una clave pública. Cadausuario debe mantener su clave privada secreta; no debe ser revelada nunca.La clave pública se puede entregar a cualquier persona con la que el usuariodesee comunicarse. GnuPG implementa un esquema algo más so�sticado enel que un usuario tiene un par de claves primario, y ninguno o más de un parde claves adicionales subordinadas. Los pares de claves primarios y subordi-nados se encuentran agrupados para facilitar la gestión de claves, y el grupopuede ser considerado como un sólo par de claves.Dentro de las funciones de GnuPG se incluyen generar un par de claves,

intercambiar y comprobar la autenticidad de claves, cifrar y descifrar docu-mentos, etc. Para instalar el paquete GnuPG, usamos:

# apt install gnupg

La opción de la línea de comandos --gen-key se usa para generar un nuevopar de claves primario, mediante:

$ gpg --gen-key

GnuPG es capaz de crear varios tipos diferentes de pares de claves, perodebe existir una clave primaria capaz de generar �rmas. Al momento deejecutar el programa, este pide90 nombre, correo del usuario y contraseña91,para después generar la clave.

Para poder comunicarse con otros, el usuario debe intercambiar las clavespúblicas. Para obtener una lista de las claves en el �chero («anillo» ) de

90Según la versión de GnuPG puede solicitar otros datos como: el tipo de clave, longitud,cuando expira esta, entre otros posibles datos de con�guración.91Cuanto más larga sea la contraseña, más segura será contra ataques de «fuerza bruta» .

No hay límite para la longitud de una contraseña, y esta debe ser escogida con sumocuidado. Desde un punto de vista de seguridad, la contraseña que desbloquea la claveprivada es uno de los puntos más débiles en GnuPG (y en otros sistemas de cifrado declave pública), ya que es la única protección que tiene el usuario si alguien se apoderarade su clave privada. Para una contraseña lo ideal es que no se usen palabras de undiccionario, y que se mezclen mayúsculas y minúsculas, dígitos, y otros caracteres. Unabuena contraseña es crucial para el uso seguro de GnuPG.

[email protected] 242 Antonio Carrillo Ledesma, Et alii

Page 245: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

claves públicas, se puede usar la opción de la línea de comandos --list-keys,mediante:

$ gpg --list-keys

Para poder enviar una clave pública a un interlocutor, antes hay queexportarla. Para ello se usará la opción de la línea de comandos --export. Esnecesario un argumento adicional para poder identi�car la clave pública quese va a exportar, por ejemplo:

$ gpg --output antonio.gpg --export [email protected]

La clave se exporta en formato binario, y esto puede no ser convenientecuando se envía la clave por correo electrónico o se publica en una páginaWeb. Por tanto, GnuPG ofrece una opción de la línea de comandos --armorque fuerza que la salida de la orden sea generada en formato armadura-ASCII,parecido a los documentos codi�cados con UUEncode. Por regla general,cualquier salida de una orden de GnuPG, v.g. claves, documentos cifrados y�rmas, pueden ir en formato armadura-ASCII añadiendo a la orden la opción--armor, por ejemplo:

$ gpg --armor --output antonio.gpg --export [email protected]

Cada clave pública y privada tiene un papel especí�co en el cifrado ydescifrado de documentos. Se puede pensar en una clave pública como enuna caja fuerte de seguridad. Cuando un remitente cifra un documentousando una clave pública, ese documento se pone en la caja fuerte, la caja secierra, y el bloqueo de la combinación de esta se gira varias veces. La partecorrespondiente a la clave privada, esto es, el destinatario, es la combinaciónque puede volver a abrir la caja y retirar el documento. Dicho de otro modo,sólo la persona que posee la clave privada puede recuperar un documentocifrado usando la clave pública asociada al cifrado.Con este modelo mental se ha mostrado el procedimiento de cifrar y

descifrar documentos de un modo muy simple. Si el usuario quisiera cifrarun mensaje para Javier, lo haría usando la clave pública de Javier, y lodescifraría con su propia clave privada. Si Javier quisiera enviar un mensajeal usuario, lo haría con la clave pública del usuario, y este lo descifraría consu propia clave privada.

[email protected] 243 Antonio Carrillo Ledesma, Et alii

Page 246: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Para cifrar un archivo se usa la opción --encrypt. El usuario debe tener lasclaves públicas de los pretendidos destinatarios. El programa espera recibircomo entrada el nombre del archivo que se desea cifrar o, si este se omite, unaentrada estándar. El resultado cifrado se coloca en la salida estándar o dondese haya especi�cado mediante la opción --output. El archivo se comprimecomo medida adicional de seguridad, aparte de cifrarlo, por ejemplo:

$ gpg --output doc.gpg --encrypt --recipient [email protected] doc

La opción --recipient se usa una vez para cada destinatario, y lleva unargumento extra que especí�ca la clave pública con la que sería cifrado elarchivo. El archivo cifrado sólo puede ser descifrado por alguien con unaclave privada que complemente una de las claves públicas de los destinatarios.El usuario, en este caso el remitente, no podría descifrar un archivo cifradopor sí mismo a menos que haya incluido su propia clave pública en la listade destinatarios.

Para descifrar un archivo se usa la opción --decrypt. Para ello es necesarioposeer la clave privada para la que el archivo ha sido cifrado. De igual modoque en el proceso de cifrado, el archivo a descifrar es la entrada, y el resultadodescifrado la salida, por ejemplo:

$ gpg --output doc --decrypt doc.gpg

También es posible cifrar archivos sin usar criptografía de clave pública.En su lugar, se puede usar sólo una clave de cifrado simétrico para cifrar elarchivo. La clave que se usa para el cifrado simétrico deriva de la contraseñadada en el momento de cifrar el documento, y por razones de seguridad,no debe ser la misma contraseña que se esta usando para proteger la claveprivada. El cifrado simétrico es útil para asegurar archivos cuando no seanecesario dar la contraseña a otros. Un archivo puede ser cifrado con unaclave simétrica usando la opción --symmetric, por ejemplo:

$ gpg --output doc.gpg --symmetric doc

[email protected] 244 Antonio Carrillo Ledesma, Et alii

Page 247: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.7 Linux Desde la Nube

Existen diferentes servicios Web92 que permiten instalar, con�gurar y usarcientos de sistemas operativos Linux y Unix � máquinas virtuales usandoservicios Web en Debian GNU/Linux y QEMU (véase sección 12)� desde elnavegador, esto en aras de que los usuarios que cuenten con algún sistema deacceso a red y un navegador puedan usar, con�gurar e instalar algún sistemaoperativo y su respectiva paquetería sin hacer instalación alguna en su equipode cómputo, tableta o teléfono celular93.Una muestra de estos proyectos son: Distrotest (https://distrotest.net) y

JSLinux (https://bellard.org/jslinux).

Algunas versiones listas para usar son:4mLinux, AbsoluteL inux, Academ ix, A lp ineL inux, Antergos, antiX Linux, Aptosid , A rchBang, A rchLabs, A rch linux,

A rchman, ArchStrike, A rcoL inux, A rtixL inux, A ryaL inux, AV Linux, BackBoxLinux, B igL inux, B io-L inux, B lackArch ,

B lackLab, B lackPantherOS, B lackSlash , b lag, B lankOn, B luestar, Bodhi, BunsenLabs, ByzantineOS, Caine, Calcu late

L inux Desktop , CentOS, Chakra, ChaletOS, C learOS, C lonezilla , ConnochaetOS, Cucumber, Damn Small L inux, Damn

Small L inux Not, Debian , DebianEdu, deep in , DEFT , Devil-L inux, Devuan, D ragonF ly BSD , Dragora, DuZeru , Dyne:b olic ,

Edubuntu , elem entaryOS, E live L inux, Emmabuntüs, Emm i OS, Endless OS, EnsoOS, Exe GNU/Linux, ExT iX , Fat-

dog64, Fedora Atom ic, Fedora Server, Fedora Workstation , FerenOS, FreeBSD , FreeDOS, Frugalware, G4L, G eckoL inux,

G entoo, GNewSense, GoboL inux, Gparted , G reen ieL inux, GRML, GuixSD , Haiku , Heads, Kali L inux, Kanotix , KaOS,

Knoppix , Kodach i, KolibriOS, Korora, Kubuntu , Kwort, L inux L ite, L inux M int, L iveRaizo, LMDE, Lubuntu , LXLE

OS, Macpup, M ageia , M akuluL inux, M anjaro, M atriux, M auiL inux, M enuetOS, M inerOS, M in iNo, M odicia , Musix , MX

Linux, Nas4Free, Neptune, NetBSD , Netrunner, N ixO s, NST , NuTyX , OpenInd iana, Op enMandriva, op enSUSE , O ra-

cleL inux, OSGeo live, OviOS, Parab ola CLI, Parab ola LXDE, Pardus, Parrot Home, Parrot Security, Parrot Studio , Par-

six , PCLinuxOS, PeachOSI, Pentoo, Pepp erm int, Pepp erm intOS, P inguy, P inguyOS, p lopL inux, PointL inux, Pop!_OS,

PORTEUS, Puppy Linux, PureOS, Q4OS, Qub esOS, Quirky, Raspb erry P i Desktop , ReactOS, Redcore, Rescatux, Reven-

geOS, RoboL inux, Rockstor, ROSA FRESH , Runtu , Sabayon, SalentOS, Salix , Scienti�cL inux, S iduction , S lackware, S lax ,

S liTaz, Solus, SolydK , SolydX , SparkyL inux, Springdale, Stresslinux, SubgraphOS, SwagArch , Tails, Tanglu , T iny Core,

Trisquel, TrueOS, TurnKey Linux, Ubuntu , Ubuntu Budgie, Ubuntu Studio , UbuntuKylin , U ruk, VectorL inux, V ineL inux,

VoidL inux, Voyager, VyOS, WattO s, Xubuntu , Zentyal, Zenwalk , Zevenet, Zorin OS

92Cuando se trabaja desde la Web es recomendable usar el modo Privado o Incógnitopara no guardar el historial de navegación, información introducida en los formularios yborrar al cerrar el navegador los datos de los sitios visitados. Pero recuerda que los sitiosWeb que visitamos sí guardan información de nuestra visita, nuestro proveedor de internettambién guarda constancia de nuestra visita y si descargamos algo, esto no se borra al igualque el historial de descargas, además de las marcas de páginas o favoritos se conservaránal cerrar el navegador.93Estos servicios son conocidos como computación en la nube (Cloud Computing).

[email protected] 245 Antonio Carrillo Ledesma, Et alii

Page 248: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Terminales de Linux en la Web

� https://www.tutorialspoint.com/execute_bash_online.php

� http://www.webminal.org/

� https://bellard.org/jslinux/

� https://codeanywhere.com/

� https://copy.sh/v86/

� https://www.masswerk.at/jsuix/

� https://linuxcontainers.org/lxd/try-it/

� http://cb.vu/

Editores BAHS en la Web

� https://www.shellcheck.net/

� https://www.learnshell.org/

� https://www.tutorialspoint.com/execute_bash_online.php

� https://paiza.io/en/projects/new?language=bash

� https://www.jdoodle.com/test-bash-shell-script-online

� http://rextester.com/l/bash_online_compiler

Usar Linux en Dispositivos Android En los dispositivos Android esposible usar un simulador de la línea de comandos del Shell usado en Linux, deforma que podremos introducir todos los comandos habituales para trabajardesde ahí en la comunidad de nuestra terminal Android. Uno de los paquetesmás completo es:

https://termux.com

El paquete cuenta con una página Wiki en:

https://wiki.termux.com

[email protected] 246 Antonio Carrillo Ledesma, Et alii

Page 249: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Usando este paquete, las aplicaciones instaladas disponen de varias mejo-ras respecto al clásico Android Terminal Emulator, como el hecho de teneracceso a una gran biblioteca de paquetes de Linux para instalar desde laterminal (usando el comando apt (véase sección 13.4.8)), así como algunosatajos de teclado transformados en combinaciones con los botones físicosde volumen y apagado de la terminal. Igualmente, es compatible con todotipo de teclados físicos externos. Siendo posible trabajar con lenguajes comoNodeJ, Rubi, Python, C y paquetes como Nano, Vi, SSH, Git, Subversion,zsh Shell, etc.

Usar Linux en Formato Live Linux es uno de los sistemas operativospioneros en ejecutar de forma autónoma o sin instalar en la computadora,existen diferentes distribuciones Live � descargables para formato CD, DVD,USB� de sistemas operativos y múltiples aplicaciones almacenados en unmedio extraíble, que pueden ejecutarse directamente en una computadora,estos se descargan de la Web generalmente en formato ISO94, una de las listasmás completas de versiones Live esta en:

https://livecdlist.com

En el caso de tener un archivo ISO de algún sistema operativo (por ejem-plo ubuntu-11.10-desktop-i386.iso) y se quiere ejecutar su contenido desdeuna máquina virtual con QEMU/KVM sólo es necesario usar:

$ kvm -m 512 -cdrom ubuntu-11.10-desktop-i386.iso

en este ejemplo usamos en KVM la arquitectura por omisión y memoriade 512 MB (-m 512).

Knoppix es una versión Live ampliamente conocida y completa, esta sepuede descargar de:

http://mmc.geo�sica.unam.mx/Replicas/knoppix/

y usar mediante:

$ kvm -m 1024 -cdrom KNOPPIX_V8.2-2018-05-10-EN.iso

aquí se usa la arquitectura por omisión y memoria de 1024 MB.94Una imagen ISO es un archivo informático donde se almacena una copia exacta de un

sistema de archivos y de esta se puede generar una imagen para CDROM, DVD o USB.

[email protected] 247 Antonio Carrillo Ledesma, Et alii

Page 250: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Usar Máquinas Virtuales de Linux Existen diversos proyectos que per-miten descargar decenas de máquinas virtuales listas para ser usadas, paralos proyectos VirtualBox y VMWare (y por ende para KVM/QEMU), estasse pueden descargar de múltiples ligas, algunas de ellas son:

https://www.osboxes.orghttps://virtualboxes.org/images/

Si desargamos y descomprimimos el archivo lubuntu1210.7z (véase sec-ción 12.9), esto dejará la imagen de VirtualBox de LUBUNTU cuyo nom-bre es lubuntu1210.vdi. Entonces esta imagen la usaremos directamente enKVM/QEMU, mediante:

$ kvm -m 2000 -hda lubuntu1210.vdi

Nota: esta imagen usa como usuario y clave de acceso: lubuntu/lubuntu

Distribuciones de Sistemas Operativos Existen diversos sitios Webque están enfocados a explorar detalladamente cada distribución actual oantigua, a un nivel técnico acompañado de grandes y útiles análisis técnicossobre los mismos, lo que facilita el aprendizaje puntual sobre que distribuciónusar o empezar a usar sin tanta incertidumbre.

� ArchiveOS https://archiveos.org

� Distro Chooser https://distrochooser.de/es/

� Distro Watch https://distrowatch.com

� Linux Distribution List https://lwn.net/Distributions/

[email protected] 248 Antonio Carrillo Ledesma, Et alii

Page 251: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

13.4.8 Instalar Debian GNU/Linux

Existen distintas distribuciones de Linux95 para instalar, una de las másampliamente usadas es Debian GNU/Linux y sus derivados como Ubuntu.Debian96 se puede descargar de múltiples ligas, una de ellas es:

http://mmc.geo�sica.unam.mx/Replicas/debianInstall

y los paquetes se pueden descargar desde México en:

http://mmc.geo�sica.unam.mx/Replicas/debian

Por omisión en Debian sólo se instalan paquetes libres, pero hay otro tipode paquetes útiles que no son libres o que tienen licencia distinta a la usadapor Debian GNU/Linux, para poder tener acceso a ellos hay que modi�carel archivo /etc/apt/sources.list, mediante:

#97 nano /etc/apt/sources.list

En México hay una replica de Debian en la UNAM, en el Instituto deGeofísica, para acceder a ella, agregar:

deb http://www.mmc.geo�sica.unam.mx/debian/ buster nmain contrib non-freedeb-src http://www.mmc.geo�sica.unam.mx/debian/ nbuster main contrib non-free

Esto permite tener acceso a paquetes libres (main) y no libres o con li-cencias distintas a Debian GLP de Linux (contrib y non-free). Una vez agre-gadas las replicas hay que actualizar las de�niciones de paquetes disponiblesen Debian, usando:

95Una lista de las distribuciones de Linux y su árbol de vida puede verse en la páginaWeb http://futurist.se/gldt/96Algunas de las razones para instalar GNU/Linux Debian están detalladas en su página

Web https://www.debian.org/intro/why_debian.es.html97En el Bourne Shell y sus derivados como BASH el prompt que nos permite escribir los

diferentes comandos, generalmente termina con el caracter:

� $ para usuario sin privilegios� # para el administrador, conocido como root

[email protected] 249 Antonio Carrillo Ledesma, Et alii

Page 252: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt update# apt safe-upgrade# apt clean

Ahora el sistema esta listo para poder instalar los paquetes que el usuariode la máquina requiere (hay más de 59,000 disponibles en la versión 10.3).Algunas veces es necesario instalar en la versión estable algún paquete

de la versión testing pero que no rompa la estabilidad del sistema, para ellose desarrollo Backports. Para usarlo, lo primero es agregar en el archivosources.list la línea:

deb http://ftp.debian.org/debian/ buster-backports main

también existen para los paquetes contrib y non-free, después de agregarla línea, es necesario ejecutar:

# apt update

Para instalar algún paquete, usar:

# apt -t buster-backports install package

Para eliminar las versiones locales de documentación no usadas instalamosel paquete:

# apt install localepurge# localepurge

Paquetes de administración y utilerias

# apt install rcconf ntpdate netstat-nat sysstat htop natop deborphan powertop iotop iftop ifstat procinfo lsof nlshw dvtm screen dstat sysbench dnsutils traceroute sysstat nglances nmap iptraf iptraf-ng wget most fslint gcp mc tmux ngrsync tasque clusterssh jnettop nload pwgen ifstat nmon nhwinfo parallel wipe bleachbit dfc gcp tcpdump gddrescue nlftp conky-all bmon iptables iptables-persistent collectl npssh inxi tomboy ranger fping cpulimit uget itop vnstat n

[email protected] 250 Antonio Carrillo Ledesma, Et alii

Page 253: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

jigdo-�le apg# apt install linuxlogo screenfetch nethogs# apt install tilda yakuake terminator screenfetch nterminix guake roxterm terminology lilyterm sakura tilix# apt install �rmware-linux �rmware-linux-free n�rmware-linux-nonfree# apt install rednotebook cherrytree zim focuswriter

Búsqueda de archivos duplicados

# apt install fslint fdupes jdupes �ndimagedupes ndu¤ rd�nd hardlink

Paquete para monitoreo de múltiples equipos

# apt install sinfo

Paquetes de navegadores de red

# apt install �ashplugin-nonfree chimera2 chromium nconkeror dillo edbrowse epiphany-browser iceweasel nkonqueror midori netrik netsurf netsurf-fb netsurf-gtk nsurf uzbl t�refox-esr qupzilla arora hv3# apt install elinks elvis-tiny links links2 lynx-cur w3m#Actualizar el navegador por omisión en modo grá�co y texto# update-alternatives �con�g x-www-browser# update-alternatives �con�g www-browser

Instalar paquetes de KDE

# apt install kde-full kdevelop kdeadmin kdeartwork nkdegames junior-kde kdemultimedia kdesdk kdeWebdev nkdenetwork kdesdk kdeutils kdevelop kdetoys neducation-desktop-kde

Manejo de particiones NTFS

[email protected] 251 Antonio Carrillo Ledesma, Et alii

Page 254: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install ntfs-3g ntfsprogs scrounge-ntfs

Manejo de SAMBA

# apt install samba smbclient cifs-utils

Manejo de particiones

# apt install parted partimage gparted testdisk ngenisoimage

Servidor y cliente de SSH

# apt install openssh-server openssh-client �lezilla

Utilerias de compactación

# apt install pigz gzip unzip zip pbzip2 bzip2 lbzip2 arj nzoo unrar lhasa ncompress p7zip p7zip-full p7zip-rar nunace unace-nonfree zutils cpio pax unp lzma xz-utils pxz npixz kgb rar rarcrack zpaq bsdtar dtrx lzop

Manejo de documentos

# apt install science-typesetting texlive-science ntexstudio pandoc texmaker inkscape kile gummi texstudionenchant texlive-latex-base texlive-latex-recommended nlatexila lyx medit texworks texlive-full latexila libreo¢ ce ncalligra abiword evince gnumeric kexi texlive-extra-utils# apt install pdf-viewer msttcorefonts djview4 okular ngv zathura di¤pdf mupdf pdf-presenter-console evince xpdf nokular poppler-utils atril pdftk pdfgrep xpdf-utils pdfcrack nqpdf pdfsam pdfshu­ er htmldoc pdf2svg pdfmod pdfposter npdfchain pdf2djvu gpdftext catdoc chktex cxref cxref-doc nlatex2rtf antiword unoconv a2ps bookletimposer qpdfview nrst2pdf xchm chm2pdf archmage qpdfview-ps-plugin nqpdfview qpdfview-djvu-plugin kchmviewer# apt install ispanish wspanish texlive-lang-spanish nmyspell-es myspell-en-us translate-shell

[email protected] 252 Antonio Carrillo Ledesma, Et alii

Page 255: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Editores de grá�cos

# apt install gpaint gimp inkscape imagemagick dia nx�g scribus blender calibre kdenlive kazam pinta krita npencil2d graphviz textdraw calligra blender feh

Paquetes para generar vídeos a partir de imágenes

# apt install openshot imagination photo�lmstrip

Paquetes para tomar vídeos o imágenes del escritorio

# apt install gtk-recordmydesktop recordmydesktop nshutter byzanz kazam simplescreenrecorder scrot ngtk-vector-screenshot gnome-screenshot

Messenger

# apt install pidgin pidgin-gui�cations �nch kmess npidgin-plugin-pack pidgin-themes skype4pidgin kopete nempathy telegram-desktop

Multimedia y conversión de formatos de audio y vídeo

# apt install vlc amarok mplayer ¤mpeg mpg123 nclementine audacity xbmc# apt install libxine2-bin libxine2-¤mpeg libxine2-x nlibxine2-plugins ¤mpeg libavcodec-extra vorbis-tools ngstreamer1.0-�uendo-mp3 gstreamer1.0-plugins-ugly ngstreamer1.0-plugins-bad gstreamer1.0-pulseaudio

Reproducir DVDs

# apt install libdvd-pkg# dpkg-recon�gure libdvd-pkg

[email protected] 253 Antonio Carrillo Ledesma, Et alii

Page 256: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Tipografías

# apt install fonts-freefont-ttf fonts-freefont-otf nttf-mscorefonts-installer

Paquetes Matemáticos

# apt install science-statistics science-mathematics neducation-mathematics science-viewing gretl lybniz nscience-numericalcomputation xabacus euler geogebra-kde nmathomatic pari-gp qliss3d rkward xaos yacas bliss ngeogebra mumps-test nauty netgen netgen-doc eukleides ngenius pspp pdl yorick gnuplot freemat octave scilab nmaxima wxmaxima xmaxima mathomatic-primes nopen-axiom julia sagemath# apt -y install �r-cran*��r-bioc*�

Lenguajes de programación

# apt install gfortran gfortran-doc fortran77-compiler nfortran95-compiler fortran-compiler cfortran# apt install mono-complete# apt install build-essential manpages-dev glibc-doc nglibc-doc-reference gcc-doc-base gcc-doc c++-compiler nc++-annotations-pdf c-compiler g++ cppcheck splint cccc nautoconf automake make cmake scons jam ohcount# apt install haskell-platform# apt install scala# apt install ghc ghc-prof ghc-doc ghc-mod# apt install swi-prolog swi-prolog-doc swi-prolog-java nswi-prolog-x# apt install coq coq-doc coq-theories

Lenguaje de programación JAVA# apt install openjdk-8-jre openjdk-8-jdk openjdk-8-docActualizar la versión por omisión de JAVA$ update-java-alternatives -l

[email protected] 254 Antonio Carrillo Ledesma, Et alii

Page 257: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# update-java-alternatives -s java-1.8.0-openjdk-amd64

Lenguaje de Programación Python# apt install ipython python-matplotlib python-nose npython-scipy python-pandas python-sympy python-numpynpython-dev spyder python-rpy2 python-rpy python-axiom npython-pip python python-tk idle python-pmwpython-pip nbpython python-imaging python-pandas python-sklearn npython-sklearn-doc wxglade python-rpy2 pypy pypy-tk npython-gnuplot pypy-six jython boa-constructor pyragua ndreampie winpdb mypy python-mpi4py# apt install ipython3 python3 idle3 python3-pip npython3-matplotlib python3-rpy2 python3-numpy spyder3 npython3-scipy bpython3 python3-pandas python-sklearn npython-sklearn-doc pyzo pyzo-doc spe eric python-wxgtk3.0 npython-wxgtk3.0-dev python3-mpi4py# apt install jupyter-console jupyter-notebookJupiter (instalar despues de python 3)# pip3 install jupyter# pip3 install matplotlib# pip3 install ipywidgets# jupyter nbextension enable �py �sys-pre�x nwidgetsnbextension

Editores, IDEs, Debugers y herramientas para programación

# apt install scite jedit kate gedit nedit emacs medit nkscope geany geany-plugins editra qtcreator anjuta codelite ncodelite-plugins tea vim-gtk mousepad eric anjuta-extras# apt install eclipse eclipse-cdt eclipse-pydev netbeans nblue�sh codeblocks codeblocks-contrib# apt install fte fte-console fte-terminal nano joe vim nvim-python-jedi vim-tlib vim-latexsuite vim-nox# apt install kdi¤3 meld di¤use dirdi¤ kompare wdi¤ nnumdi¤ colordi¤ xxdi¤ tkdi¤ ndi¤# apt install ddd-doc ddd gdb xxgdb kdbg valgrind nvalgrind-mpi kcachegrind cppcheck time nemiver

[email protected] 255 Antonio Carrillo Ledesma, Et alii

Page 258: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install ggcov lcov gcov# apt install alleyoop astyle c2html java2html autodia ncode2html c2html txt2html html2text

Generador de documentación

# apt install doxygen graphviz

Control de cambios en un proyecto

# apt install git git-all gitk gitg git-cola git-gui qgit ntig lighttpd vim-fugitive# apt install mercurial# apt install subversion rapidsvn# apt install cvs

Manejo de UML

# apt install umbrello dia

Librerías matemáticas

# apt install gsl-bin libgsl0-dev gsl-ref-html

Remplazo de grep para proyectos grandes ack-grep

# apt install ack-grep# dpkg-divert �local �divert /usr/bin/ack �rename n�add /usr/bin/ack-grep

Cómputo en paralelo usando MPI ( es necesario instalar ssh cliente yservidor)

[email protected] 256 Antonio Carrillo Ledesma, Et alii

Page 259: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install lam-runtime xmpi libmpich-dev mpich nmpi-default-dev mpi-default-bin openmpi-bin valgrind-mpiEn Debian testing primero quitar estos paquetes:# apt �purge remove openmpi-bin openmpi-common nlibopenmpi1.3Para que en la ejecución de MPI no pida la clave de usuario:$ ssh-keygen -t rsaEn cada pregunta responder con ENTER, para después copiar

usando:$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keysNota: Si continua pidiendo clave es que también esta insta-

lando rsh o lsh

Cómputo distribuido

# apt install pvm pvm-dev# apt install perl python-mpi

Explorador de Datos de Visualización OpenDx

# apt install dx dx-dox dxsample

Librería para manejo de modelos de datos y formato para almacenar ymanejar datos HDF5

# apt install hdfview hdf5-tools

Generador de mallas en 3D

# apt install gmsh

Servidor de Web Apache, PHP, Mysql y postgresql

[email protected] 257 Antonio Carrillo Ledesma, Et alii

Page 260: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

# apt install apache2 libapache2-mod-evasive apachetop# apt install php libapache2-mod-php phpmyadmin nphp-mysql php-gd# apt install mysql-common mysql-client mysql-server nferret mysql-workbench mysql-workbench-data mycli nmytop mysql-admin# apt install postgresql postgresql-client pgcli npostgresql-doc postgresql-contrib# apt install sqlite3 sqlite3-doc sqlitebrowser# apt install mongodb mongodb-clients mongodb-server

Paquetes para notebook

# apt install wireless-tools acpi-support cpufrequtils nacpi wpasupplicant powertop vbetool acpid no�ushd nwicd-curses apmd pcmciautils pm-utils radeontool nanacron avahi-autoipd bluetooth iban kmilo nlaptop-detect laptop-mode-tools laptop-net guessnet nbluez-utils bluez-pcmcia-support

Máquinas virtuales

# apt install qemu# apt install kvm

Paquetes para wireless

# apt install wireless-tools wireshark kismet nkwavecontrol wicd-curses aircrack-ng macchanger nprismstumbler swscanner wavemon wmwave ifrename nndisgtk ndiswrapper-common ndiswrapper-dkms

Para correr aplicaciones de Windows mediante WINE

# apt install wine# dpkg �add-architecture i386 && apt update n&& apt install wine32

[email protected] 258 Antonio Carrillo Ledesma, Et alii

Page 261: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Paquetes para instalar impresoras locales y remotas

# apt install system-con�g-printer cups nsystem-con�g-printer-udev cups-pk-helper

Para usar un escaner

# apt install gscan2pdf tesseract-ocr eikazo xsane ntesseract-ocr-spa tesseract-ocr-eng simple-scan

13.5 Otros

Sistemas Operativos para PC

1.- Windows.- El sistema operativo de las ventanas es el másusado en el mundo entre sus versiones estan: Windows XP, Win-dows Vista, Windows 7, Windows 8, y su última versión Windows10.

2.- Linux.- Se puede instalar en casi cualquier plataforma, inclusoalgunas que se consideran cerradas, es el favorito de muchos por lasolidez, con�abilidad y seguridad que ofrece a los usuarios, y sobretodo porque es gratis, de aquí parten muchos sistemas operativosbasados en Linux incluyendo Android que es para móviles, paraPCs la distribución más popular es UBUNTU (Ubuntu 18.04).

3.- Mac OS.- Es el sistema operativo de Apple con su últimaversión Mac OS High Sierra, fácil de usar, muy sólido y seguro,un derivado de Unix. La elegancia de este sistema reside en suinterfaz grá�ca, intuitiva y la facilidad con que se realizan lasoperaciones.

4.- Unix.- Es un sistema sólido, seguro y con�able, por lo que esmuy usado en servidores de internet y en centros de datos. No esmuy conocido por el público, este sistema operativo data de losaños 80. En este sistema se basan tanto Linux, Mac OS, BSD yotros.

5.- BSD.- Distribución que se deriva de Unix, con la misma solidez,con�abilidad y seguridad de su ancestro. Es la base del Mac OS,a partir de la versión 10.

[email protected] 259 Antonio Carrillo Ledesma, Et alii

Page 262: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

Sistemas Operativos para móviles

1.- Android.- Es un sistema operativo móvil basado en Linux, fuedesarrollado inicialmente por Android Inc., una �rma compradapor Google en 2005, actualmente en su versión Android 8.0 Oreo,con la pronta llegada de Android P.

2.- iOS.- Es un sistema operativo móvil de Apple (Anteriormentedenominado iPhone OS). Originalmente desarrollado para los pro-ductos iPhone, siendo después usado en dispositivos como el iPodTouch, iPad y el Apple TV. Apple, no permite la instalación deiOS en Hardware de terceros, su última versión iOS 11.

3.- Windows Phone.- Es un sistema operativo móvil desarrolladopor Microsoft, como sucesor de Windows Mobile. A diferencia desu predecesor fue enfocado en el mercado de consumo en lugardel mercado empresarial.

4.- Symbian OS.- Es un sistema operativo que fue producto dela alianza de varias empresas de telefonía móvil, entre las que seencuentran Nokia, Sony Ericsson y otros, el objetivo de Symbianfue crear un sistema operativo para terminales móviles.

5.- BlackBerry OS.- Es un sistema operativo móvil desarrolladopor Research In Motion para sus dispositivos BlackBerry. Elsistema es multitarea y tiene soporte para diferentes métodosde entrada adoptados por RIM para su uso en computadorasde mano, particularmente la trackwheel, trackball, touchpad ypantallas táctiles.

6.- HPWebOS.- Es un sistema operativo multitarea para sistemasembebidos basado en Linux, desarrollado por Palm Inc., ahorapropiedad de Hewlett-Packard Company.

7.- Bada.- Es un sistema operativo para teléfonos móviles desa-rrollado por Samsung (Bada «océano» o «mar» en coreano).esta diseñado para cubrir tanto los teléfonos inteligentes de gamaalta como los de gama baja.

[email protected] 260 Antonio Carrillo Ledesma, Et alii

Page 263: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

14 Bibliografía

Este texto es una recopilación demúltiples fuentes, nues-tra aportación � si es que podemos llamarla así� esplasmarlo en este documento, en el que tratamos de darcoherencia a nuestra visión de los temas desarrollados.

En la realización de este texto se han revisado � enla mayoría de los casos indicamos la referencia, peropudimos omitir varias de ellas, por lo cual pedimos unadisculpa� múltiples páginas Web, artículos técnicos, li-bros, entre otros materiales bibliográ�cos, los más repre-sentativos y de libre acceso los ponemos a su disposiciónen la siguiente liga:

http://mmc.geo�sica.unam.mx/acl/Herramientas/

Referencias

[1] Carreras en la Facultad de Ciencias, UNAM,http://www.fciencias.unam.mx/licenciatura/resumen/ 5

[2] Aulas y Talleres en el Tlahuizcalpan de las Carrerasde Matemáticas de la Facultad de Ciencias, UNAM,http://www.matematicas.unam.mx/tlahuiz/ 12, 15, 53

[3] http://es.wikipedia.org/wiki/Microsoft_Windows 112, 185

[4] http://es.wikipedia.org/wiki/Linux 191

[5] http://es.wikipedia.org/wiki/Mac_OS 186

[6] http://es.wikipedia.org/wiki/Android 8, 188

[7] https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)69

[email protected] 261 Antonio Carrillo Ledesma, Et alii

Page 264: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[8] https://es.wikipedia.org/wiki/Python 81

[9] https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)74

[10] https://es.wikipedia.org/wiki/C%2B%2B 78

[11] http://www.gnu.org/philosophy/free-sw.es.html 7, 121

[12] http://es.wikipedia.org/wiki/Software_libre 7, 121

[13] http://www.hispalinux.es/SoftwareLibre 7, 121

[14] http://es.wikipedia.org/wiki/Software_propietario 126

[15] Diferentes Tipos de Licencias para el Software,http://www.gnu.org/licenses/license-list.html 7, 25, 26, 28, 70,121, 124

[16] Proyectos de Software Sourceforge, http://sourceforge.net/ 8, 9, 10

[17] Google Code, http://code.google.com 8, 9, 10

[18] Software proyecto GNU, http://www.gnu.org/Software/Software.es.html8

[19] FSF, Free Software Fundation, http://www.fsf.org/ 7, 8, 121, 122, 124,143

[20] GNU Operating System, http://www.gnu.org/ 7, 121, 124

[21] GCC, the GNU Compiler Collection, http://gcc.gnu.org/ 8

[22] The Linux Kernel Archives, http://www.kernel.org/ 8, 10

[23] Debian el Sistema Operativo Universal, http://www.debian.org 8, 11

[24] Microsoft O¢ ce, http://o¢ ce.microsoft.com/ 11, 59, 60, 62, 64, 66

[25] OPEN OFFICE, Apache OpenO¢ ce, http://www.openo¢ ce.org 59,60, 67

[26] LibreO¢ ce the Document Foundation, http://www.libreo¢ ce.org 59,60, 67

[email protected] 262 Antonio Carrillo Ledesma, Et alii

Page 265: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[27] Google Docs, http://docs.google.com/ 59, 60

[28] CALLIGRA The Integrated Work Applications Suit,http://www.calligra.org/ 59, 60, 67

[29] OnlyO¢ ce, https://www.onlyo¢ ce.com/ 59

[30] WPS O¢ ce, https://www.wps.com/ 59

[31] O¢ ce Online, https://www.o¢ ce.com/ 59

[32] Collabora, https://www.collaborao¢ ce.com/ 59

[33] Lotus Sympony, http://www-03.ibm.com/Software/lotus/symphony/ho-me.nsf/home 59

[34] LaTeX, A Document Preparation System, http://www.latex-project.org/ 55, 64

[35] MATLAB, MathWorks, http://www.mathworks.com/products/matlab/11, 25, 27, 53

[36] SCILAB, Scilab Open Source for Numerical Computation,http://www.scilab.org/ 26, 30

[37] Julia, The Julia Programming Language, https://julialang.org 26, 31

[38] FreeMat, FreeMat Opén Source for rapid engineering and scienti�cprototyping and data processing, http://freemat.sourceforget.net/ 26,28, 53

[39] OCTAVE, GNU Octave, http://www.gnu.org/Software/octave/ 25,28, 53

[40] SCIPY Open Source Library of Scienti�c Tools, http://www.scipy.org/26, 33, 53

[41] Python Programming Language, http://www.python.org/ 26, 33

[42] SAS, Business Analytics and Business Intelligence Software,http://www.sas.com/ 11, 53, 55

[email protected] 263 Antonio Carrillo Ledesma, Et alii

Page 266: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[43] IBM SPSS Software, http://www-01.ibm.com/Software/analytics/spss/11, 53, 54

[44] GNU PSPP, http://www.gnu.org/Software/pspp/ 53, 54

[45] PSPPIREData Editor for PSPP, http://www.softpedia.com/get/O¢ ce-tools/Other-O¢ ce-Tools/PSPP.shtml 54

[46] The R Proyect for Statistical Computing, http://www.r-project.or/ 26,53, 55

[47] QEMU, http://wiki.qemu.org/Main_Page 11, 132, 148

[48] KVM, http://www.linux-kvm.org/page/Main_Page 11, 132

[49] máquinas Virtuales, http://es.wikipedia.org/wiki/M%C3%A1quina_vir-tual 11, 132

[50] Oracle MV VirtualBox, https://www.virtualbox.org 136, 148

[51] VMware, https://www.vmware.com 148

[52] Virtual PC, https://www.microsoft.com/es-mx/download/details.aspx?id=3702 148

[53] Hyper-V, https://msdn.microsoft.com/es-es/library/mt16937(v=ws.11).aspx

[54] Parallels, https://www.parallels.com 148

[55] Algunos usos de máquinas Virtuales,http://www.con�gurarequipos.com/doc747.html 11, 132

[56] LINPACK, http://www.netlib.org/linpack/ 25

[57] EISPACK, http://www.netlib.org/eispack/ 25

[58] Scicos Block Diagram Modeler/Simulator, http://www.scicos.org/ 26

[59] Simulink Simulation and Model-Based Design,http://www.mathworks.com/products/simulink/ 25, 26

[60] KOctave, http://sourceforge.net/projects/koctave/

[email protected] 264 Antonio Carrillo Ledesma, Et alii

Page 267: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[61] QTOctave, http://www.ohloh.net/p/qtoctave

[62] IDLE is the Python IDE, http://docs.python.org/2/library/idle.html34

[63] IPython Interactive Computing, http://ipython.org/ 34

[64] Appcelerator PyDEV, http://pydev.org/ 34

[65] Eclipse, http://www.eclipse.org/ 34

[66] The Eric Python IDE, http://eric-ide.python-projects.org/ 34

[67] MATLAB to Scilab conversion tips,http://help.scilab.org/docs/5.4.0/en_-US/m2sci_doc.html 36,53

[68] EViews, http://www.eviews.com/home.html 53

[69] Gretel, http://gretl.sourceforge.net/ 53

[70] Stata, http://www.stata.com/

[71] Statgraphics, http://statgraphics.softonic.com/ 53

[72] Statistica, http://www.statsoft.com/support/download/statistica-Software-updates/ 53

[73] Systat, http://www.systat.com/ 53

[74] Vensim, http://vensim.com/vensim-Software/ 53

[75] Maple, http://www.maplesoft.com/ 26, 41, 46, 53

[76] Mathematica, http://www.wolfram.com/mathematica/ 27, 41, 42, 53

[77] Maxima, http://maxima.sourceforge.net 27, 41, 48, 53

[78] RWeka, http://cran.r-project.org/Web/packages/RWeka/index.html55

[79] Tinn-R Edit code and run it in R, http://www.sciviews.org/Tinn-R/55

[email protected] 265 Antonio Carrillo Ledesma, Et alii

Page 268: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[80] RStudio Software, Education, and Services for the R community,http://www.rstudio.com/ 55

[81] SAS grows analytics market share,http://www.bizjournals.com/triangle-/news/2011/06/13/sas-grows-analytics-market-share.html 55

[82] Mathtype, http://www.dessci.com/en/products/mathtype/ 64, 66

[83] Scienti�c WorkPlace, http://www.mackichan.com/ 66

[84] Gummi LaTeX Editor, http://dev.midnightcoding.org/projects/gummi66

[85] Kile LaTeX Editor, http://kile.sourceforge.net/ 66

[86] Led LaTex Editor, http://www.latexeditor.org/ 66

[87] Lyx LaTeX Editor, http://www.lyx.org/ 66

[88] Texmaker LaTeX Editor, http://www.xm1math.net/texmaker/ 66

[89] TeXnicCenter LaTeX Editor, http://www.texniccenter.org/ 67

[90] TextPad LaTeX Editor, http://www.textpad.com/ 67

[91] TeXstudio LaTeX Editor, http://texstudio.sourceforge.net/ 67

[92] WinEdt LaTeX Editor, http://www.winedt.com/ 67

[93] LaTeXBeamer Class, https://bitbucket.org/rivanvx/beamer/wiki/Home64

[94] Microsoft SQL Server, http://www.microsoft.com/en-us/sqlserver/default.aspx 62

[95] PostgreSQL, http://www.postgresql.org/ 62

[96] MySQL Oracle, http://www.mysql.com/ 62

[97] MongoDB, http://www.mongodb.org/ 62

[98] Knoppix is a Live CD/ DVD based on Debian GNU/Linux,http://knoppix.net 115

[email protected] 266 Antonio Carrillo Ledesma, Et alii

Page 269: El Cómputo en los Cursos de la Facultad decienciamater.fciencias.unam.mx/pruebascm/materiales/... · 2020. 5. 19. · cas Aplicadas y los cursos de MatemÆticas de las demÆs carreras

El Cómputo en los Cursos de la Facultad de Ciencias, UNAM

[99] Repositorio de LaTeX en la Facultad de Ciencias, UNAM,http://tezcatl.fciencias.unam.mx/tex-archive/ 67

[100] El economista, http://eleconomista.com.mx/tecnociencia/2013/01/22/clausuraran-negocios-mexico-uso-ilegal-Software 129

[101] PCworld, http://www.pcworld.com.mx/UNAM-y-BSA-promueven-el-uso-de-software-legal/ 130

[102] www.doxygen.org/ 99

[103] http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html 100

[104] http://astyle.sourceforge.net/ 100

[105] http://argouml.tigris.org/ 100

[106] http://staruml.io/ 100

[107] https://www.ibm.com/us-en/marketplace/rational-Software-architect-designer 100

[108] https://umbrello.kde.org 100

[109] http://www.umldesigner.org/ 100

[110] https://www.scopeforge.de/cb/project/8 100

[111] https://git-scm.com/ 99

[112] https://www.mercurial-scm.org/ 99

[113] https://subversion.apache.org/ 99

[114] https://www.perforce.com/

99

[email protected] 267 Antonio Carrillo Ledesma, Et alii