martes, 30 de abril de 2013

Ponencia: Afinando sistemas. Primeras conclusiones

Ayer he ido a presenciar una ponencia sobre el ajuste (afinamiento, tuning) de sistemas. Impartida por Fernando Ruiz-Tapiador (uno de los pocos "Arquitectos Certificados Red Hat" de España), en el Centro de Novas Tecnoloxías de Galicia (CNTG); naturalmente se centraba en los sistemas Red Hat, si bien como es de esperar el 99% de lo dicho es aplicable a cualquier sistema GNU/Linux.

Una ponencia de cuatro horas sobre este tema es, reconozcámoslo de entrada, bastante dura. Ni siquiera la pericia (o experiencia) de Fernando puede evitar esto. Aunque, como es de esperar, fue una ponencia en la que se pudieron aprender algunas cosas, y como es habitual en las clases impartidas por Fernando, algún truquillo tan útil como muchas veces desconocido.


No voy a hacer una entrada exhaustiva sobre la ponencia. Fernando se comprometió a colgar el pdf de la presentación independientemente de que el CNTG hiciese lo propio. Si para entonces tengo tiempo y ánimo, intentaré hacer un resumen de cosas útiles. Hoy sólo quiero dejar aquí un par de cosillas interesantes.

En primer lugar, GNU/Linux es un sistema muy maduro, basado en otro sistema también muy maduro: tiene muchos desarrolladores y muchísima gente que lo utiliza, por lo que está muy bien afinado per se. Eso implica que, salvo en casos muy concretos, para afinar una cosa hay que desafinar otra. Por otra parte, debe tenerse en cuenta que cualquier cambio que se haga puede tener consecuencias imprevistas.

La primera recomendación es la obvia: deshabilita (incluso desinstala) cualquier cosa que no uses. Otra buena recomendación es estimar si realmente necesitas afinar el sistema.

¡Vaya!! ¿es malo que un procesador tenga una carga de trabajo del 90%? ¡Pues para eso lo compraste!! También es importante ver la relación esfuerzo/impacto del afinamiento que queramos realizar. Un ejemplo sencillo es el arranque de los sistemas servidores de producción: son sistemas pensados para ser arrancados muy pocas veces, por lo que una demora de 10 o 20 segundos en su arranque no suele merecer mucho esfuerzo por parte de sus administradores.

En segundo lugar, para saber si es preciso (o incluso posible) el ajuste del sistema, se deben de utilizar datos fiables, no suposiciones. Esto incluye que normalmente el usuario tiene una impresión del rendimiento del sistema muy ligada a la interactividad del mismo. Sí, el usuario tiende a creer que un sistema es más rápido si le responde rápidamente a él, independientemente de cuánto tiempo real tarden las cosas en realizarse.

Por supuesto, para estudiar el rendimiento real de un sistema deberemos hacerlo en función de las tareas reales a realizarse con él. Y también es cierto que eso suele llevar tiempo. Y otro factor importante es que realizar tales mediciones tenderá a influir en el rendimiento real del sistema, con lo que deberá discriminarse la parte de sobrecarga debida a nuestro estudio.

Es frecuente encontrar "reglas" para "afinar" un sistema o para mejorar el rendimiento del mismo. La lectora avisada habrá pensado que, en el mejor de los casos, que tales ajustes sirvan de algo es algo posible, pero no demasiado probable. No es fácil.

Un ejemplo de documentación sobre este tema puede ser la System Analysis and Tuning Guide (en este caso, para openSUSE, que es mi Sistema Operativo principal). Y si bien es cierto que sí hay unas cuantas reglas generales que se pueden utilizar, también es cierto que el usuario debe cerciorarse completamente de que ese cambio no va a producir consecuencias imprevistas, como he dicho antes. Piénsese que si un cambio pudiese ser útil siempre, con seguridad el sistema ya vendría con él incorporado.

Salud y feliz computación!!

lunes, 15 de abril de 2013

Linux y el Virus

No importa cuántas veces se demuestre la falsedad de una información; siempre habrá un porcentaje de gente dispuesta a creer que es verdad.

Esa cita es la que justifica que cada cierto tiempo se repitan cierta clase de aseveraciones. Muchas de estas aseveraciones tienen que ver con rebuscadas teorías conspiratorias, otras para cuestionar cierto conocimiento científico reciente...

 El caso que ocupa esta entrada, es consecuencia de la tradicional afirmación que se hace en blogs y foros según la cual una de las ventajas de GNU/Linux sobre Windows es que el usuario no debe preocuparse por los virus que asedian el mundo de los sistemas operativos Windows.


Como en cualquier bulo, lo primero que se toma son algunos elementos reales, aderezados del desconocimiento del público general de determinados tecnicismos que son los que permitirían captar determinados matices en ausencia de los cuales la teoría adquiere tintes realistas. Cómo se cuela este debate a veces en foros técnicos es un misterio (de fácil solución si uno es un poco mal pensado ;) ).

Un viejo principio de la seguridad informática dice que "no se puede considerar que un sistema es completamente seguro si está conectado a una red". Esto tiene dos vertientes: no se puede confiar completamente en las personas que utilizan un sistema, y no se puede confiar completamente en el software de dicho sistema que, al fin y al cabo, fue desarrollado por personas.

La persona que usa un sistema puede, por ejemplo, no llevar a cabo las tareas mínimas de seguridad (uso de claves adecuadas y renovadas con cierta frecuencia, no usar software no confiable, lo que incluye ¡ay! a todo el software pirata y otra serie de comportamientos). En cuanto al sistema en sí,  a medida que crece su complejidad se hace más difícil garantizar que no hay errores que puedan ser utilizados por otras aplicaciones con fines no deseados.


Hasta aquí no es muy espectacular, y cualquiera que haya leído algunos de los artículos sobre informática de este blog debería considerarlo como una obviedad, así como su natural consecuencia: es relativamente fácil construir programas que exploten estas debilidades.

Tal software se denomina comúnmente malware. En el artículo de la wikipedia se citan varios tipos principales: virus, gusanos, puertas de atrás, programas espía y páginas web que los instalan, y troyanos, entre otros. La definición de virus, como la de cualquier tipo de malware, es técnica, y debe incluir la habilidad de "infectar" un sistema: bien una zona de memoria, el sector de arranque del disco duro, etc.

Y aquí llega la confusión. Se han desarrollado virus para sistemas GNU/Linux, cierto. Pero sólo como propósito ilustrativo. En general, existen muchas causas para que un virus no pueda prosperar mucho, aunque destacan dos: no todos los usuarios usan las mismas versiones de programas, ni siquiera del núcleo del sistema operativo; y existen sistemas de permisos de acceso a ficheros y dispositivos no existentes en otros sistemas operativos.

Alentados por la posibilidad técnica para desarrollar un virus, algunos afirman ritualmente que la única razón para que en el ecosistema GNU/Linux no haya tantos virus como en el ecosistema Windows es la diferencia radical en el número de usuarios; y como corolario, de haber más usuarios también habría más virus, ya que sería un ecosistema más apetecible para los desarrolladores de virus.

He señalado la dificultad para desarrollar un virus realmente efectivo. Tal dificultad es el primer motivo por el que es poco probable que el número de virus fuese comparable al existente en Windows por mucho que aumentase el número de usuarios: la dificultad de desarrollar un virus en un entorno en el que encontrar varios usuarios que usen similar software, al mismo tiempo que se desarrolla código para evitar los distintos mecanismos de seguridad propios de los sistemas GNU/Linux.

Pero también está la contrapartida. En el bulo se hace hincapié en la diferencia en el número de usuarios. En el artículo anterior del blog he dado a entender que lo que se entiende por usuario no es necesariamente lo mismo coloquial que técnicamente. Desde el punto de vista coloquial, yo soy un usuario, tú eres otro usuario, etc. Sin embargo, desde el punto de vista técnico, esto no es tan trivial.

Veamos. Yo tengo cuenta en Facebook y en Google Plus al igual que millones de otras personas. Tanto Facebook como Google se ejecutan en muchas máquinas (lo que ellos llaman granjas de servidores) que utilizan GNU/Linux o alguna versión de éste. La mayoría de servidores de Internet usan LAMP (que obviamente se ejecuta sobre GNU/Linux); muchos routers también usan GNU/Linux... en general, Internet descansa sobre una red de equipos que usan GNU/Linux. Desde ese punto de vista, prácticamente todos somos usuarios de GNU/Linux, usemos un escritorio Windows, GNU/Linux o cualquier otro. Y si lo que quieres es infectar muchos equipos, no infectes cada equipo, infecta la red, a tales sistemas GNU/Linux: es algo así como envenenar el sistema de abastecimiento de agua.

A lo mejor piensas que esto es exagerado. Pero de hecho, la mayoría de ataques de otro tipo (no víricos) son precisamente a algunos nodos importantes de la red. Es como suplantar a un banco si lo que quieres es robar dinero de una tarjeta de crédito, en lugar de atacar el computador del usuario (humano) de turno.


Así que no es cierto que GNU/Linux tenga menos virus porque es menos usado: hay menos virus para Linux porque es mucho menos vulnerable. Y no te preocupes: ya tienes bastante con que no descubran tu contraseña de usuario. Porque la tienes ¿no? ;)

lunes, 25 de marzo de 2013

Tu computadora y tú: hora de aprender (ii)

Hoy quiero quitarme de encima un concepto importante, para finalizar esta exposición más bien teórica que he denominado "amueblar la cabeza". Al igual que con la entrada anterior, se trata de asentar los conocimientos suficientes para que leer explicaciones de cualquier índole deje de resultar un buen sistema de tortura. Y es que acudiendo a otro gran dicho:

Sólo alguien que domina un tema en profundidad es capaz de explicarlo de forma que no lo entienda nadie

El Sistema Operativo, el Hardware y el dolor de cabeza

Es notable como los usuarios de jerga técnica asimilamos conceptos ligeramente erróneos, sin percatarnos de que nosotros entendemos los matices equivocados, pero que los usuarios no técnicos pueden no estar al tanto de ellos.

Definimos "Sistema Operativo" como una aplicación o grupo de ellas que funcionan de "interfaz" entre los usuarios y el computador físico, y nos quedamos así de contentos. Es una definición con una metáfora muy visual y clara, muy poderosa, y por eso es muy fácil de aceptar.

Descuidando el hecho de que no necesariamente todo el mundo sabe lo que es una Interfaz, el error realmente no es tal, sino una diferencia de concepto: ¿quién es el usuario, desde el punto de vista del Sistema Operativo?

El usuario, para aquellos que usamos computadores, es una persona física que utiliza el computador. Muchos Sistemas Operativos permiten tener cuentas de usuario, con sus opciones de configuración personal, su propio espacio para guardar documentos, etc. En tales sistemas, un usuario dado incluso puede tener una o varias cuentas, según sus necesidades.

Los informáticos no tenemos dudas con esta cuestión, ya que todos conocemos la historia de la computación lo suficiente para tener un buen punto de vista.

Hay que recordar que hubo un tiempo en que los computadores no disponían de Sistemas Operativos. Al principio, se les proporcionaba un programa en binario que deberían ejecutar; los primeros sistemas operativos simplemente eran una mejora de esto: en lugar de proporcionar un programa completo con todo lo que se debía hacer, simplemente ser proporcionaba una lista de tareas que el computador debía completar. Naturalmente, el computador debía de disponer de una aplicación para poder ejecutar tales tareas.

A partir de un momento dado, se pensó que era una pena que todos los recursos de un computador -memoria, uso del procesador, impresoras...- se dedicasen a la ejecución de tareas consecutivas. No tiene sentido, argumentaban, tener que esperar a que finalice una impresión -lenta, tediosamente lenta en la época- para ejecutar la siguiente operación de la lista. Así, los Sistemas Operativos fueron evolucionando. tiempo compartido, multiusuario, multipuesto.... a medida que aumentaban sus responsabilidades en el trabajo diario.

Con esto quiero decir que los desarrolladores de aplicaciones cada vez tenían que centrarse menos en lo que era común con otras aplicaciones que usasen el mismo computador. Los técnicos distinguimos Sistemas Operativos de propósito general (MS Windows, MacOS, GNU/Linux...) de los Sistemas Operativos de propósito específico (típicos de sistemas industriales).

Fijaos en el celebérrimo Windows de Microsoft: no trae soporte para CAD (Diseño Asistido por Computador). Son relativamente pocos los clientes que necesitan esto, así que los pocos que lo hagan instalarán la aplicación de turno (digamos, AutoCAD) y no se preocuparán más. Sin embargo, sí trae soporte para 3D, ya que asume que buena parte de las personas que usen Windows lo harán para jugar a juegos con 3D, más que porque de pronto haya un entusiasmo generalizado por diseñar escenas tridimensionales. Por su parte, Android incluye soporte para los sensores que incluyen los más modernos smartphones.

En sentido técnico, los usuarios de un Sistema Operativo son las aplicaciones desarrolladas para el mismo. Una persona real utiliza simplemente aplicaciones: una hoja de cálculo, un programa de diseño CAD, un reproductor multimedia. El Sistema Operativo simplemente proporciona una interfaz para poder utilizar dichas aplicaciones (un intérprete de comandos, una interfaz gráfica...). Hay aplicaciones específicas para tareas generales, tales como organizar archivos y configurar aspectos del sistema, que reciben el nombre de aplicaciones de sistema. En general, las aplicaciones del sistema forman parte del Sistema Operativo de turno, lo que explica la confusión.

Todo esto quiere decir que los únicos usuarios de un Sistema Operativo son las aplicaciones que haya o pueda haber en el mismo.

Drivers

Driver  significa "conductor"; mas en este contexto, no es la imagen personalizada de alguien que conduce un coche, sino más bien en la labor de conducir el propio coche propiamente dicha. El conductor se encarga de guiar el coche, decirle cómo y por dónde tiene que ir.

En informática, los Drivers son una forma de indicarle a un Sistema Operativo cómo funciona un dispositivo dado: un monitor, una tarjeta de sonido...

Pensemos en una impresora. Puedes abrir un documento de texto en tu suite ofimática y en un editor de textos simple. Escribe en ambos "Hola mundo".

En la suite ofimática el documento a imprimir contendrá información sobre el formato del texto, márgenes, etc. Por su parte, en el editor de textos el documento sólo incluirá la lista de caracteres que se quiere imprimir. El Sistema Operativo dispone de una operación para enviar documentos a una impresora. Para ello, convierte ambos documentos en documentos imprimibles y los coloca en una carpeta más o menos temporal en cola, de donde el sistema de impresión los irá tomando de uno en uno para ser impresos.

Sin embargo, hay infinidad de tipos de impresoras muy distintas entre sí. Hacer un Sistema Operativo que manejase todas sería una locura. En su lugar, se crean ficheros que le indicarán al Sistema Operativo como funciona cada una de ellas (cada marca, modelo o tipo) y en cada computador se instala simplemente el driver de las impresoras realmente disponibles.

Que tu impresora funcione o no en Windows, MacOS o GNU/Linux es cuestión de que alguien haya creado tal driver. Naturalmente, los más indicados para crear tales drivers son los fabricantes de dicha impresora.

Esto no es tan importante hoy, si bien es la causa de que lo más habitual sea que el hardware más reciente no funcione directamente en ningún Sistema Operativo hasta que se instale el driver de turno. Los desarrolladores del Sistema Operativo no pueden prever qué dispositivos van a a existir años después del desarrollo del Sistema Operativo. Esto puede cambiar en las actualizaciones del sistema de turno, por supuesto.

Eventualmente, algunos dispositivos son más estandarizados que otros, o al menos más parecidos a otros ya existentes. En tal caso, es más fácil obtener el soporte preciso; sin embargo, otros dispositivos son casi tan complejos como el propio computador, así que la disponibilidad de un driver para el mismo puede ser crucial. Piénsese en las tarjetas de vídeo, por ejemplo.

Leyendo esto alguien podría pensar que el mundo de la informática se simplificaría enormemente si los fabricantes siguiesen estándares o si hubiese más información al respecto. Bien, la mayoría de las empresas tienen esto como estrategia empresarial, y eso es difícil cambiarlo. De hecho, el movimiento OpenSource comenzó por un driver de una impresora. En realidad, buena parte de la nueva innovación tecnológica consiste en un continuo reinventar la rueda.

Para que un driver funcione, debe de estar cargado en memoria. En sistemas operativos modernos hay varios programas residentes que se encargan de utilizar determinados específicos. Por ejemplo, CUPS es un servicio de impresión estándar para Unix; otro buen ejemplo es udev, que es el sistema que utiliza Linux para cargar dinámicamente cualquier dispositivo que se conecte al computador: detecta que se conecta un dispositivo, qué dispositivo es y carga el driver adecuado si está disponible.

Tal vez hayas oído que los usuarios de MacOS o GNU/Linux se burlan de los "reinicios" de Windows. En MS-Windows, muchos de los drivers son cargados de forma estática, por lo que hay que reiniciar el sistema para que el núcleo cargue el driver de turno: da igual que sea la red, una tarjeta de vídeo nueva... incluso muchos de los ajustes de tales drivers requieren que el núcleo se cargue otra vez. Los dispositivos que no necesitan esta operación tienen incluso un nombre muy chulo: "plug and play" (enchufar y listo). Los sistemas basados en Unix, por su parte, disponen de mecanismos para cargar casi cualquier driver en cualquier momento, y por tanto rara vez necesitan ser reiniciados.

Humanos y computadores

Los Sistemas Operativos que he denominado de propósito general suelen tener como objeto el ser utilizado por personas. Se espera que una persona arranque el sistema de turno y ejecute las aplicaciones que necesite. Eventualmente, parará el sistema cuando no lo necesite.

Cualquier Sistema Operativo ofrecerá a la persona que lo maneje una interfaz adecuada (al menos, al objeto del Sistema Operativo de turno). MS-DOS traía un Intérprete de Comandos (un nombre común en inglés para tales interfaces es shell); posteriormente se desarrolló un Entorno Gráfico para hacer uso de las capacidades gráficas de los (entonces) nuevos computadores y supuestamente hacer más fácil la vida de los usuarios. Buena parte de la historia moderna de Windows pasa por la necesidad de la empresa de hacerles creer a sus usuarios que su sistema es completamente gráfico, algo que sólo consiguió con la publicación de Windows XP. Por su parte, MacOS hasta su versión 9 no tenía tal intérprete y todo el sistema funcionaba de forma gráfica. Cosas de la vida, al sacar la versión 10 (en números latinos, X) decidieron cambiar a una versión de FreeBSD, con lo cual ahora disponen de al menos un shell al más común estilo Unix.

GNU/Linux, como FreeBSD y otros "Unix-like", utiliza una aproximación diferente. El sistema se arranca en modo texto o gráfico a voluntad del usuario. En realidad, estos sistemas ponen en marcha "servicios", donde el sistema gráfico o texto es en realidad uno más. Hasta hace bien poco, incluso, era muy habitual que una sesión gráfica GNU/Linux se arrancase con los servicios en modo texto y el servidor gráfico. Algunas distribuciones siguen haciéndolo así, proporcionando un servicio de login en una pantalla y un servicio gráfico en otra, pudiendo acceder a cualquiera de los dos modos con diferentes combinaciones de teclas.

Interfaz de Intérprete de Comandos

La forma más simple de utilizar un computador es pidiéndole a una aplicación interactiva que ejecute las tareas que necesitamos. Como he dicho antes, estas aplicaciones son denominadas normalmente en inglés con shell o command shell. Esto es porque la aplicación suele tener que hacer mucho más que discutir con la persona que lo maneja.

Por ejemplo, varios usuarios pueden usar el sistema a la vez (al menos, en los sistemas multiusuario tales como GNU/Linux), así que el shell deberá permitir trabajar a tales usuarios sin que interfieran entre sí. Además, cada uno de ellos puede tener ajustes personalizados distintos de otros usuarios. Incluso es posible que la misma persona esté usando varias cuentas de usuario a la vez en el mismo sistema.

En estos sistemas, la ejecución de cualquier Intérprete de Comandos va precedida por algún sistema de autentificación del usuario. Los sistemas GNU/Linux hacen esto con las aplicaciones login (que permite a un usuario iniciar una sesión en modo texto) o su (que permite a un usuario cambiar a otro para efectuar una serie de tareas de forma temporal).

Los sistemas gráficos más populares disponen de herramientas para tener acceso al intérprete de comandos; en realidad, esas herramientas simulan un intérprete de comandos, y por ello no necesitan autentificación: se asume que el usuario ya realizó esa tarea cuando conectó con el sistema gráfico.

Interfaz de Entorno Gráfico

La idea tras los escritorios gráficos es similar a la de los shell anteriores, pero con muchas diferencias. Todas ellas se resumen en la plasmación de la metáfora de un "escritorio" convencional. Así, cualquier interfaz de este tipo proporcionará un fondo en el que se disponen los distintos elementos, un organizador de ficheros, una forma gráfica de arrancar las distintas aplicaciones disponibles... los sistemas más populares utilizan el concepto de "ventana" para contener cada aplicación salvo el escritorio en sí (que es más una suerte de fondo).

Baste de textos por hoy!! una buen sitio para leer sobre escritorios es la habitual wikipedia. En castellano: http://es.wikipedia.org/wiki/Entorno_de_escritorio; para quien no tema al inglés, http://en.wikipedia.org/wiki/Desktop_environment

Archivos y ficheros

Es común ver un uso intercambiable entre ambos, lo que a veces despista mucho. Archivo se refiere más a la organización de la información, mientras que Fichero se refiere a cada documento concreto. Podríamos pensar en un archivo como la suma de todos los ficheros disponibles en el sistema.

Por supuesto, hay muchos tipos de ficheros: documentos del usuario, ficheros que representan a los dispositivos del sistema, el núcleo del sistema, cada driver...

Y hay muchas formas de organizar ficheros (se llama "Jerarquía de Ficheros"): por ejemplo, la mayoría de los sistemas utilizan unos ficheros especiales denominados Directorios o más modernamente por influencia de MS-Windows Carpetas. Estos ficheros pueden contener ficheros normales o bien otros ficheros especiales. Así, puedes tener un vídeo denominado caídaPorLasEscaleras.avi guardado en la carpeta Vídeos; esta carpeta a su vez puede estar guardada por ejemplo en otra denominada MisCosas.

Los sistemas basados en Unix utilizan una jerarquía completa. Hay una carpeta llamada raíz (y representada con la barra: / ) que contiene todas las demás carpetas o ficheros. Por su parte, MS-Windows dispone de una jerarquía incompleta. Cada dispositivo se denomina Unidad y se representa con una letra seguida de dos puntos (por ejemplo, el disco duro principal sería c: ) En cada dispositivo se agrupan las carpetas que contienen otras carpetas o ficheros. Nótese que en Unix la separación entre los nombres de carpetas es la barra de dividir, mientras que en MS-Windows es la barra invertida.

Cómo se guardan esas carpetas y ficheros en un dispositivo es tarea del Sistema de Archivos y hay un buen puñado de ellos. Para MS-Windows hay FAT y NTFS (aunque ahora trata de sacar otros para superar las limitaciones de ambos), mientras que otros sistemas disponen de ext, xfs, reiserfs, jfs, btrfs, zfs, y otros muchos.

Una anécdota: reiserfs es uno de los mejores sistemas de archivos en prestaciones cuando el sistema se compone de muchos ficheros relativamente pequeños. En su momento se desarrolló reiserfs4 para mejorar el desempeño en otros ambientes. Sin embargo, su popularidad descendió desde el momento en que su creador dio con los huesos en la cárcel por asesinar a su esposa. Si alguien pensaba que la informática era ajena a buena parte de las motivaciones (o simplemente de la estupidez) humanas, ésta es quizás la mejor prueba de que no es así.

Bien, si has llegado hasta aquí habrás pensado que para utilizar un dispositivo dado para almacenar ficheros, necesitas al menos dos drivers: el correspondiente al dispositivo de turno, y el correspondiente al sistema de archivos utilizado. Esa es justo la idea. Por otra parte, el Sistema de Archivos es a veces referido como Filesystem (Sistema de ficheros), aunque yo prefiero hablar en ese caso de Tipo de Sistema de Ficheros para evitar ambigüedades.

Básicamente, un Sistema de Archivos contiene información respecto a dónde se guarda fisicamente, en el dispositivo de turno, cada fichero (y atributos tales como su dueño, fecha de creación, etc.).  Eliminar un fichero consiste realmente en borrar esa entrada del Sistema de Archivos, por lo que en realidad no se borra nada, simplemente el sistema olvida dónde estaba tal fichero. Por ejemplo, FAT simplemente cambia la primera letra del nombre del fichero por un interrogante, aprovechando que para el sistema ése no será un nombre de fichero válido. La única forma de hacer que el contenido de un fichero deje de estar disponible es sobreescribirlo, guardando otra información exactamente en el mismo sitio. Incluso por curiosidades físicas en la mayor parte de dispositivos se puede recuperar el contenido de un fichero sobreescrito varias veces. Es laborioso y caro, pero posible.

domingo, 24 de marzo de 2013

Tu computadora y tú: hora de aprender (i)

El largo camino de miles de millas comienza con un solo paso.


Había pensado comenzar esta entrada con algo del estilo de "... Ahora, reinicia tu computador y...", y vaya, primeros problemas. Si lo haces inmediatamente, no leerás el resto de la entrada; vale, puedes imprimirlo... si tienes impresora (¡¡papel y tinta!!); o puede que estés viendo el blog desde un móvil de estos supermodernos... en fin, que sin pretenderlo he dado con el primer paradigma que quiero exponer: aunque sea cierto que cualquier tecnología avanzada (como establece la Tercera Ley de Clarke) es indistinguible de la magia, lo cierto es que la tecnología, por sí sola, no hace milagros.

En estas y otras entradas pretendo introducir la informática (real) en personas a las que interese este tema, pero que por una u otra razón no han aprendido. Esto sirve para aprovechar y redondear algunos artículos anteriores del blog, en especial los referidos a Internet.

El otro paradigma, y el que guiará todo lo dicho hoy, es
si bien es cierto que la informática para un usuario es fácil, también lo es que nadie nace aprendido.
Al igual que en cualquier otra disciplina, el resultado obtenido dependerá principalmente del tesón y esfuerzo dedicado a su aprendizaje. De hecho, los Hackers suelen verse reflejados en los grandes maestros de las artes o las ciencias. Es la dedicación, el entusiasmo y el inmenso trabajo durante mucho tiempo lo que te permite ser un maestro en tales disciplinas, y no podía ser menos para llegar a ser todo un hacker.

Mas no es el objetivo conseguir que el lector devenga hacker. Si quiere hacerlo, puede serguir los consejos al uso que dan ellos mismos.

El principio


Como para poder aprender cualquier cosa, debemos comenzar por amueblar nuestra cabeza. Y es que no hay disciplina cuyo dominio no implique el conocimiento de un buen número de conceptos e ideas.

En informática eso se resume en que el aprendiz debe de aspirar a entender cosas como el sistema numérico binario, un poco de arquitectura de computadores, alguna dosis de programación... y es donde el aprendiz inglés toma mucha ventaja sobre el español y otros (salvo, sorprendentemente, sobre los hindúes!). Los nombres tienen significado, y el aprendiz que domine inglés puede leer/escuchar un nombre y en su cerebro se formará ya la metáfora apropiada: una sencilla descripción del concepto técnico entonces será suficiente para su comprensión casi eterna.

Pensemos en un ejemplo muy básico y sencillo: el bit. En inglés, la palabra bit designa a un pedazo minúsculo, mínimo de algo. Aplicado a la informática, un bit es la unidad de información mínima, y se representa con un cero o con un uno. Es la base del sistema numérico binario (que sólo tiene esos dos números para combinar, a diferencia del decimal, por ejemplo, que tiene 10). Uno/Cero. Perfecto para representar lo mínimo que puedes saber de algo: verdadero/falso; sí/no. Que de paso es la base de nuestro sistema de lógica.

Piensa en ello un momento: ¿llueve? No importa si apenas cae un poquito de llovizna o te puedes ahogar en una tormenta tropical; tampoco importa si ha llovido o si parece muy probable que vaya a llover pronto. ¿Llueve? ¿ o no?

El sistema binario es muy curioso. ¿uno más uno? 10, por supuesto. ¿y uno por uno? uno, como era de esperar. De esta manera de contar diremos más cosas después.

Sigamos con otra palabra: word (palabra). Una palabra es un conjunto de letras, y una word es un conjunto de bits. La diferencia entre la palabra usual del lenguaje y la informática es que aquella puede tener una o varias letras, mientras que la palabra informática sólo tiene un número dado de bits. Y dicho número depende de la arquitectura del sistema informático de turno. Pueden ser 8, 16, 32, etc. Que recuerde, los PC modernos que utilizamos la mayoría de las personas hoy por hoy tienen palabras de 16 bits (y forman dobles, triples o cuádruples palabras). Pensad que la comunicación es a base de palabras, y veréis la misma metáfora que instintivamente ve un inglés al leer el vocablo informático word

En algunos libros de informática se hacen un lío con los bytes. Un byte es un grupo de 8 bits, que no es casualidad que sea una potencia de 2 (23, para ser más precisos). En algunos equipos un byte podría ser equivalente a una palabra, pero sólo en equipos de 8 bits.

El arte de contar



El sistema binario es la base de la informática. Usa dos símbolos (0 y 1) y tiene una serie de propiedades curiosas. Destaca el hecho de que sólo necesitas dos operaciones para poder hacer cualquier operación aritmética: el complemento (la capacidad de cambiar de un valor al opuesto) y la suma. Sí, en binario ¡las restas y divisiones no son más que sumas!!

En la wikipedia tratan bastante bien algunas cuestiones informáticas, y el artículo sobre el sistema binario tiene buena pinta. Leedlo y tratad de aprender algo sobre algo tan curioso. No dejéis de ver la curiosa y antigua historia de este sistema de numeración. También es curioso como las mismas propiedades del sistema binario fueron empleadas en otros tiempos, como este sistema de multiplicación del antiguo Egipto.

Breve historia de los computadores


En los textos informáticos se suele hablar de cuatro generaciones (y una quinta que sería la "moderna") para agrupar las características básicas de los computadores informáticos a lo largo de los últimos 60 años.

Hay cierto acuerdo de que el primer computador se desarrolló en la Segunda Guerra Mundial para descifrar el código de los mensajes alemanes; no obstante, la llamada "Primera Generación" (y con ella, el inicio del tiempo informático) la suele marcar la creación de ENIAC en 1941. A esta era de enormes computadores la sigue el desarrollo de los llamados lenguajes de "Alto Nivel" que marcan la llamada "Segunda Generación". En la Primera Generación, los computadores son programados en sistema binario o en ensamblador (un código nemotécnico para abreviar las instrucciones binarias).

En la década de 1950 se desarrollan los primeros lenguajes más próximos al lenguaje natural (inglés). Dichos lenguajes, como es de esperar, permiten simplificar la programación de los computadores. Esto lleva a desarrollar computadoras de propósito general. La generación concluye cuando IBM presenta la serie 360.

La "Segunda Generación" llega con el uso de los transistores. Esto hace que los nuevos computadores sean más baratos, rápidos y eficientes.

La "Tercera Generación" tiene como protagonista el desarrollo del circuito integrado, que acabará posibilitando los primeros microchips, que a su vez sientan las bases de los mucho después llamados "computadores personales".

El salto de la tercera generación a la cuarta está marcado por Unix. En esos tiempos, los computadores típicos son en realidad redes formadas por una potente máquina central a la que se conectan los usuarios desde otros computadores o bien desde terminales: los terminales constaban del equipamento mínimo para conectarse a una red que permitiese acceder al servidor donde el usuario tenía una cuenta de acceso.

Los microprocesadores permiten que los computadores personales rompan esa dependencia de un gran servidor central, posibilitando que cualquier usuario utilice un computador de forma aislada, ya fuese en su casa, en el trabajo, etc. Es la hora de la "Cuarta Generación": la era del "Computador Personal". En los tiempos actuales, tenemos un montón de computadoras personales (y otros dispositivos computadores: tabletas, smartphones,...) conectados entre sí a través de la "Red de Redes": InterNET.

Dicho esto, puede que un lector avisado haya pensado que el uso de un smartphone con sus applets que utilizan servicios de distintos proveedores a través de internet es curiosamente similar al de los antiguos terminales Unix. Bien, muy bien ;)

Cosas de la arquitectura


Un breve esbozo de la arquitectura de un computador tenderá a dejarse fuera un buen puñado de cosas. Pero eso no es excusa para tratar de formarse una imagen mental de cómo funciona un computador.

En un principio, tenemos un computador que se compone de una memoria (RAM), un procesador (microprocesador) que a su vez se compone de dos elementos (la Unidad de Control que como es de esperar controla a todo el sistema, y la Unidad Aritmético-Lógica, que se encarga de efectuar las operaciones aritméticas y lógicas que forman la base de la informática), y una serie de elementos denominados periféricos, que sirven para que el mundo se comunique con la memoria y el procesador: un teclado para escribir blogs, una pantalla para leer blogs, un ratón, una impresora, un disco duro donde guardar las cosas, un pendrive para llevarlas por ahí...

Esto se llama "Arquitectura Von-Newman" y forma la base del diseño de la práctica totalidad de los computadores de hoy en día. Lo más importante de la misma es comprender que la información que maneja cualquier computador debe de estar cargada previamente en la memoria principal del sistema. Aquí también hay libros que se lían mucho, por el hecho de que en un computador puede haber varios procesadores que se complementan entre sí, y muchos computadores pueden colaborar en un sistema único. En fin.

Cargada es de esos términos informáticos con un significado preciso: cargar algo es copiar ese algo en la memoria principal. De paso, en la jerga informática es frecuente utilizar la preposición a en lugar de en. Así, muchas veces se dirá "copiar algo a Memoria". En mi opinión, es una costumbre que pretende clarificar el sentido en el que se efectúa la acción cuando se efectúa un movimiento de información: copias algo del disco, copias algo al disco.

Los computadores modernos utilizan muchas memorias, aunque la Principal solo es una de ellas. La memoria de esta época es quizás la DDR SDRAM. Por supuesto, termina en RAM (Random Access Memory, que significa que acceder a cualquier parte de ella lleva lo mismo que acceder a cualquier otra parte). Después añadiré un matiz sobre las tarjetas de vídeo.

Otra memoria importante es la ROM. Esta es una memoria en la que el fabricante añade lo imprescindible (y a veces alguna cosa más) para arrancar un computador, o mejor dicho, para arrancar un Sistema Operativo. Hay muchos tipos: EEPROM, EFI... Incluso algunos computadores o smartphones pueden usar una memoria flash para esto.

El proceso de arranque de un computador es el que sigue: al encender, comienza a circular electricidad por el sistema: se ejecuta entonces lo alojado en la memoria ROM de turno, que suele consistir en un programa de comprobación del hardware mínimo y un sistema para ejecutar lo que quiera que se encuentre en el principio del disco duro (o del DVD, etc.). Los sistemas EFI/UEFI lo que hacen es cargar lo que exista en la partición EFI del disco duro de turno.

Este "lo que quiera" es alguna forma de "cargador de arranque", o sea, un programa que simplemente permite arrancar uno o varios Sistemas Operativos. Una instalación por defecto de Windows oculta este cargador, haciendo que el usuario crea que se carga directamente.

Del arranque se hablará en su momento de forma más extensa (se merece su propio artículo, o mejor dicho, varios de ellos :) ).

Queda por contar el matiz respecto a las tarjetas de vídeo. Un computador moderno utiliza varios elementos que por derecho propio consituyen a su vez otros computadores: constan de memoria y procesador. Los que se utilizan desde hace más tiempo son las llamadas "tarjetas de sonido" y "tarjetas de vídeo". En el caso de éstas, la tarea de mostrar vídeo es tan onerosa para el sistema que fueron incorporándose cada vez procesadores más potentes acompañados de cantidades cada vez mayores. A su vez, los procesadores fueron mejorando, tanto que pueden ser tan potentes como los procesadores estándar utilizados hace pocos años. Y en las gamas "altas", puede que incluso sean más potentes.

Y para finalizar la entrada: en el último párrafo utilizo la palabra procesador de forma deliverada, para asimilar su función dentro de la arquitectura de un computador. Sin embargo, el procesador de un computador personal suele denominarse "microprocesador", al ir integrado en un solo chip de tamaño reducido. A veces, el mundo de los computadores personales y portátiles es denominado por este motivo "microinformática".

Vale, no he prometido que no sería un rollo ;)

jueves, 21 de marzo de 2013

tiempo de openSUSE 12.3

La primavera viene este año precedida por la publicación de la versión 12.3 de openSUSE. Como era de esperar, ha faltado tiempo para actualizar tanto el computador portátil como el de escritorio. En el portátil tengo la versión "rolling", llamada Tumbleweed. Su actualización es más sencilla ya que está diseñada para ello. En el de escritorio, tengo la 12.3 actualizada desde la 12.2. He de reconocer que he tenido que insistirle un poco para que funcione de forma que enorgullezca a Monesvol, pero una vez acabado tampoco fue para tanto.

En un montón de blogs y en el wiki oficial puede encontrarse infinidad de información respecto tanto a la instalación como a la actualización desde una versión anterior. También cómo hacerlo desde Tumbleweed (cosa que debería haber hecho antes de comenzar y me habría ahorrado un poquito de tiempo). También se añade un montón de capturas y comentarios respecto al "artwork" que acompaña a esta versión. De hecho, en el de escritorio he sustituido el estilo del escritorio por el nuevo. Pero en el portátil he mantenido el mío. Ahí va una imagen:


No impresiona mucho, por supuesto. Tengo un plasmoide (un widget que ahora están tan de moda) para mostrar alguna información del sistema, como temperatura, memoria en uso, y así; y otro plasmoide para mostrar el contenido de la carpeta "Escritorio", que en mi caso contiene unos cuantos accesos directos. He cambiado el plasmoide de las notificaciones, ya que las nuevas se veían algo mal, así que lo he sacado de la bandeja de sistema y lo he puesto justo encima (esa gran "I"), lo que además queda bien con el botoncito para ver otras aplicacioncillas de la bandeja de sistema.

En el panel, arriba a la izquierda, está el "paginador", que permite cambiar entre los distintos escritorios virtuales (esos cuatro cuadritos). Si uno se fija, puede ver que en el de arriba a la derecha se ve un recuadro más pequeño: es la ventana de este navegador!!

La barra de tareas del escritorio del portátil prefiero tenerla a la izquierda, ya que así la ventana de cualquier aplicación puede ocupar la pantalla de arriba a abajo sin tener que ocultarla. Y me parece práctico tenerla así siempre accesible.

Y no podía faltar el inevitable "widget" con la previsión meteorológica, y sí, dice que llueve; y sí, miente como un bellaco, pero no es culpa suya, en el aemet dicen lo mismo.

Eso en cuanto a la actividad principal, que es juguetear y probar cosas, además de navegar y ver el correo-e. Tengo otra actividad que uso menos, que pretende facilitar el uso de archivos multimedia. La uso tan poco que aun le faltan muchas cosillas útiles, aunque sí tiene una configuración diferente para el ahorro de energía.
En esta actividad ahora mismo tengo un plasmoide para visualizar mi carpeta de vídeos y otro para controlar el reproductor Amarok. He dejado, por ahora al menos, el fondo que provee la distribución por defecto.

No tiene mucho más, por ahora. Ah!! el tiempo!! Eso sí, tengo un montón de software instalado: unos 11GiB (aunque eso a los usuarios del maligno no los impresiona, ya que su sistema sin hacer nada ocupa al menos 20!). Si bien tengo el software habitual que provee la distribución, además he instalado Calligra, para probarla, así como OpenERP, un ERP abierto que funciona con postgresql. Además, naturalmente, de un buen puñado de cosas que me pareció buena idea instalar en su momento, pero para el que no tengo tiempo.

martes, 31 de julio de 2012

Conociendo a Tux


Tux es la mascota de Linux. En la página de la wikipedia hablan de sus orígenes. Este artículo pretende presentar a la entidad que hay detrás de esta mascota: Linux.


Técnicamente, Linux es el núcleo del sistema operativo GNU/Linux. Esto significa que en realidad, lo que muchas veces llamamos Linux en realidad se compone de más cosas. Por ejemplo, Xorg (que es el proyecto que permite utilizar tarjetas gráficas para representar imágenes en el computador).

Simplificación de la estructura del Sistema Operativo
Los usuarios utilizamos aplicaciones (LibreOffice, Firefox...) de usuario, y en ocasiones utilizamos aplicaciones de usuario que sirven de interfaz a las aplicaciones de sistema. Por ejemplo, un gestor de ficheros que nos permite copiar, borrar o mover ficheros de una carpeta en la tarjeta de la cámara fotográfica a otra en nuestro computador (estas tareas se realizan con aplicaciones de sistema). El sistema operativo dispone de una interfaz para que nuestros programas puedan usar el computador y que hoy habitualmente es gráfica (Windows, GNU/Linux, Mac OS,...) aunque todavía podemos encontrar múltiples ejemplos de otros tipos de interfaces (electrodomésticos programables, cajeros automáticos, etc.).

Como he dicho, Linux es tan sólo el núcleo del sistema operativo, por lo que muchos preferimos utilizar la expresión GNU/Linux para referirnos al sistema operativo en sí. Sin embargo, la mayor parte de la gente tiende a entender Linux como todo el sistema, y este artículo va en ese sentido también: y es que, como es de esperar, GNU tiene su propia mascota. Es común ver ambas mascotas juntas, por ejemplo en cursos, jornadas sobre GNU/Linux, etc.

 

Sobre la libertad

La otra característica relevante al hablar de GNU/Linux es de índole legal: su licencia GPL. GNU/Linux, como multitud de otro código, es Software Libre, en contraposíción al Software Privativo más conocido (p.ej., MS Windows, Mac OS, Photoshop...). El software libre es software que puede ser modificado o distribuido libremente por cualquier usuario, sin necesidad de pedir permiso o pagar cánones al propietario del software. En contraposición, el software privativo priva al usuario de tales derechos, siendo habitual que simplemente permita el uso del software en determinadas condiciones.

Es usual llamar Software Propietario al software privativo; esto es un error: en realidad, todo software tendrá al menos un propietario, salvo que se declare explícitamente "de dominio público" (como cualquier otra creación intelectual). Así, Linux es propiedad de Linus Tolvards. Que cualquiera pueda modificarlo y redistribuirlo (incluso venderlo) ¡no afecta al hecho de que el código original sea suyo!!

Para más cosas, véase:

 

Sobre su origen

En los artículos y manuales al uso es común que se asuma que el lector sabe muchas cosas de las que se está hablando. Sin embargo, la idea de los terminales Unix de hace 30 años apenas salía de refilón en alguna película americana. Podríamos considerar que Internet comenzó a existir en España en los años 90 del siglo XX y no estaríamos exagerando mucho.

Y es que hay dos momentos clave en el advenimiento de Linux que la mayor parte de lectores españoles no comprenden en su totalidad: el primero, cuando Stallman inicia el proyecto GNU; el segundo, cuando Tanenbaum publica Minix.

Los lectores de tales guías pueden estar familiarizados con Unix; incluso en España, puede que hayan comenzado su andadura informática con MS-DOS; pero para la mayor parte del público, esto no es así.

GNU busca crear un Sistema Operativo sin las limitaciones legales de Unix, pero sin apartarse demasiado de su funcionamiento. Por ello, se desarrollan herramientas que suplen a las existentes en Unix. Eso sí, también se pretende que el sistema operativo pueda funcionar en sistemas muy distintos.

Minix es una versión reducida de Unix para computadores personales; el objetivo de Tanenbaum no era más que proporcionar un ejemplo que los estudiantes pudiesen utilizar para estudiar el funcionamiento de Unix sin tener que pagar las entonces costosas licencias. Además, también podía acceder al código, si bien la publicación de Minix siguió un licenciamiento normal (privativo): podías obtener tu copia al comprar su libro, e incluso ver el código, pero no cambiarlo.

Tolvards trató de desarrollar algo así como una réplica de Minix, pero sin sus límites legales. Pronto comenzó a trabajar con otros programadores a través de Internet y enseguida se encajó el núcleo en el sistema GNU (que entonces aun carecía de dicho componente) en una simbiosis perfecta.

La enseñanza que podemos sacar de esto es lo que conocemos de Unix: GNU/Linux pretende ser, por imperativo de diseño, multiusuario, multipuesto (puede accederse desde otros computadores y ser ejecutado desde ellos); Linux tiene la red integrada (incluso para funcionar aislado). Para usar GNU/Linux utilizamos Terminales Virtuales, que son en realidad una versión de las antiguas consolas que se utilizaban antes para conectarse a un servidor Unix (aunque pueden ser terminales en modo texto o en modo gráfico, más habitualmente en éste, cada vez); incluso en el modo gráfico puedes utilizar Emuladores de Terminal, que son aplicaciones que abren una ventana y te permiten utilizar el computador como si estuvieses en un terminal en modo texto.

 

Sobre su distribución

Scientific Linux
Las Distribuciones surgen para solucionar los problemas derivados de la instalación y configuración de un sistema GNU/Linux. En lugar de instalar todo desde cero, un grupo de gente se encarga de empaquetar las partes principales del software (aplicaciones del sistema, núcleo y generalmente una selección de aplicaciones de usuario). Precisamente, pueden clasificarse atendiendo al sistema de empaquetamiento utilizado o a la selección de software de usuario. Hay distribuciones que usan uno de los sistemas de empaquetado más comunes: rpm (Red Hat Package Manager) o dpkg (Debian PacKaGe); hay distribuciones específicas (por ejemplo, Scientific Linux es una distribución basada en Red Hat creada y mantenida en el CERN).

Una distribución de Linux es, en resumidas cuentas, una colección de paquetes de software (programas) que incluyen el núcleo Linux, las herramientas GNU, y cierta cantidad de software para el usuario (navegadores, aplicaciones ofimáticas, etc.), además de algún sistema de instalación del sistema operativo en el computador del usuario, y de gestión de las aplicaciones instaladas o disponibles en dicha distribución. Hoy es frecuente que los instaladores de las distintas distribuciones ajusten el sistema de forma automática, aunque algunas distribuciones pueden dejar más libertad al usuario en esta tarea.

GNU/Linux funciona en un montón de sistemas muy heterogéneos, así que las distribuciones se centrarán en alguna plataforma dada. Hay especializaciones para computadores antiguos, para servidores Sparc, etc. De hecho, la experiencia del usuario con una distribución dada varía mucho en función de la selección de hardware en la que se centra cada una y el hardware concreto que tiene dicho usuario. Por ejemplo, la inclusión o no por defecto de un driver para utilizar una tarjeta WIFI determinada tendrá distinto valor para nosotros si nuestro computador dispone de dicha tarjeta o no.

Otra diferenciación importante desde el punto de vista de muchos usuarios es acerca de las licencias admisibles en el software a distribuir. Algunas distribuciones, por ejemplo, son muy reacias a incluir software patentado o con alguna licencia muy restrictiva. Esto es más importante si la distribución es una versión empresarial (SUSE Linux, Red Hat Enterprise Linux) o alguna versión de alguna forma dependiente de aquéllas (openSUSE, Fedora...); aunque las versiones empresariales también pueden incluir sus propios acuerdos de distribución de determinado software (por ejemplo, para Flash Player): las conocidas EULAS. Por eso muchas distribuciones no suelen incluir ciertos códecs multimedia, algunos drivers, etc.

jueves, 19 de julio de 2012

El largo camino a un mundo mejor (II): Aprendiendo a aprender

Recuerdo un artículo que contenía una entrevista a alguien entonces miembro del gobierno finlandés hace  unos 15 años. Entre otras cosas, hablaban del esfuerzo que había realizado Finlandia en educación en esa década: el principio que se habían fijado es que si bien todo el mundo es libre de elegir entre educación pública o educación privada, ninguna persona sensata elegiría la opción privada si la pública es mejor. Comenzaron entonces un plan de mejora e inversiones que, como elemento estrella, incluía la introducción de los computadores personales en todas las aulas. Esto fue a principios de la década de los 90 del siglo pasado.

Todo esto vino a mi mente hace algún tiempo, cuando se comenzó (o volvió) a tratar la educación española, aunque esta vez con miras a recortar la inversión en ese capítulo.

En alguno de los momentos álgidos del enésimo debate sobre el modelo de educación, en algún medio escrito citaron el caso finlandés. En tal medio venían a retomar una idea que había sido tratada por el diario "El País" durante otro de esos debates sobre educación a los que parece que nos hemos vuelto aficionados. Y digo esto porque discutimos mucho sobre los modelos posibles y lo que queremos, pero no dedicamos mucho tiempo de reflexión al asunto, así que supongo que habrá mucho de afición a este debate.

En el artículo de El País sobre el modelo finlandés se trataban de analizar los elementos que le habían procurado el éxito innegable, al menos en cuanto a las pruebas del llamado "Informe Pisa". El principal elemento considerado fue la autoridad de los maestros y su buena imagen general dentro de la sociedad, seguido de algunos comentarios sobre el sistema de becas de estudios y diversas consideraciones secundarias.

En ningún lado se hablaba de informática.

Incluso se publican artículos que tratan de minimizar el impacto de los computadores en las aulas. Según las tesis de los firmantes, es obvio que por mucho que se añadan computadores en las aulas, si no se les da un uso adecuado, no sólo no mejorarán las cosas sino que incluso serán contraproducentes.

"... un uso adecuado..."

Más desapercibida, como era de esperar, pasó una entrevista de Ana Pastor a  Bernardo Hernández, director mundial de productos emergentes de Google. Entre otras cosas, debería haber llamado la atención cuando Hernández dice algo así como "se deberían potenciar las ingenierías" y "de los últimos grandes éxitos empresariales, casi todos provienen de informáticos".

Parece evidente que de desarrollar redes sociales no puede vivir todo el mundo, y antes o después alguien tendrá que producir patatas y eventualmente matar cerdos, que es lo que se come, y es quizá la razón aducida con más frecuencia para evitar la "tecnificación" de la sociedad. ¿Hay quizás un punto de encuentro entre ambas posturas?

Los últimos años están marcados por la enésima crisis económica del sistema llamado "capitalismo". En dicho sistema, el capital, por su fácil intercambio y movilidad, es el principal factor económico. Tanto es así que el capital puede comprar el factor trabajo. Nos encontramos en realidad en una evolución del sistema feudal, donde los terratenientes son sustituidos por los poseedores de dinero en cualquiera de sus formas, aunque sea cierto que en teoría cualquier persona pueda cambiar de capa socioeconómica sin estar limitada por el parentesco, proporcionando una mayor sensación de permeabilidad entre grupos sociales de la realmente existente. Como ejemplo, de los grandes proyectos del ámbito informático de las últimas décadas a los que se refería Hernández, ni Bill Gates ni Mark zuckerberg eran de clase baja. En ese sentido, Steve Jobs podría marcar la excepción que confirma la regla, según el viejo dicho.

En realidad, las clases que poseen el capital no necesitan que el sistema optimice mucho los recursos disponibles. Uno podría ver esto como que si optimizas mucho los recursos, es como si de repente dispusieses de más: más, por supuesto, a repartir. Y como es de esperar, la posibilidad de perder el control de un porcentaje significativo de dichos recursos es algo que desearán evitar en la medida de lo posible. Es cierto que no se pueden poner puertas al campo, pero un sencillo paseo por el que está cerca de nuestras ciudades o pueblos nos mostrará un sinfín de alambradas y muros que se esfuerzan por conseguir un efecto similar.

De todas formas, no es el uso de los recursos de un país el único motivo para justificar la presencia de computadores en las aulas. Hay uno muy interesante y discutido: la socialización.

Hay mucha gente que se empeña en que en las últimas décadas hemos asistido a una especie de deshumanización del ser humano. Es posible que eso sea cierto. !Y loado sea!

Desde que se forjaron las primeras rutas comerciales, hemos ido reduciendo las distancias entre cualquier punto del globo. Julio Verne decía que podía darse la vuelta al mundo en 80 días en su famosa novela, y no sabemos si lo habría sorprendido mucho un avión militar o un teléfono móvil. Lo que sí sabemos es el efecto que la relación entre seres humanos ha tenido sobre cada individuo: una incesante mejora continua. En mi opinión, es muy fácil odiar o despreciar al desconocido, mientras que no lo es tanto con aquellos que copan las primeras posiciones en nuestras listas de contactos. También aprendemos que los retos de sus vidas, sean sus países más ricos o más pobres, y sus preocupaciones, sus aficciones y deseos no son tan diferentes de los nuestros.

En general, la vida hoy en España, por ejemplo, es mucho mejor que en la España de hace 60 años. Por entonces, la mayor preocupación de millones de españoles era la propia vida, mientras que hoy la mayoría tienen algún tipo de soporte o ayuda, mientras los demás se enfrentan a problemas como pagar la factura del nuevo smartphone. Pero nada es en vano y la sociedad ha aumentado muchísimo en complejidad; también la mejora en la esperanza de vida ha traído consigo un aumento de población brutal que hace que la distribución de recursos sea más compleja. Poco a poco la implantación de computadores es total en cualquier ámbito. La resistencia a los computadores y las redes digitales lleguen y ocupen las aulas (15 años después!!!) es un vano esfuerzo por alejar a nuestra juventud del mundo real en el que les toca vivir.

Y no solo de educación infantil, primaria y secundaria viven las personas. Es llamativo que en el siglo XXI alguien pueda completar una carrera universitaria sin tener la menor noción de informática (donde usar cierta suite ofimática no cuenta como "dominar informática"). Cómo en el mundo actual puede alguien estudiar seriamente cualquier área de conocimiento sin auxilio de la ciencia del tratamiento de la información es una pregunta casi del nivel de "por qué un asalariado puede votar al Partido Popular en España".

Y es que, al final, la computación es simplemente eso: la herramienta del ser humano para aprender, entre otras cosas, a ser realmente humano, lo que quiera que eso con el paso del tiempo signifique.