¿Cómo funcionan las computadoras?
Recién observé un programa de televisión dirigido al público en general donde dos conductores conversaban con dos profesionales de la computación. El tema en general era el avance actual de la tecnología de cómputo. Los conductores hacían diversas preguntas a los expertos, enfocadas a la divulgación de aspectos básicos del funcionamiento de las computadoras. Un público no especializado, pero curioso, apreciaría respuestas que ayudaran a mejorar su entendimiento de esta tecnología tan importante hoy en día.
Una de las preguntas planteadas, si la memoria no me falla demasiado, fue: ¿Cómo funciona una computadora tal que al indicar un 7, seguido de un signo de adición, y finalmente un 8, arroje 15 como la respuesta correcta?
Me pareció una muy buena pregunta pues —en el contexto del programa— representa una oportunidad para tratar de explicar, en términos no especializados, cómo funcionan algunos aspectos de las computadoras digitales, tan populares actualmente. Interpreto que la pregunta busca una explicación un poco más amplia que una respuesta simple, como quizá lo sea: las computadoras son como calculadoras. Creo que se busca una explicación asequible, para dicho público no especializado, que ofrezca un atisbo del diseño por el cual tales funciones son posibles.
Ofrezco la siguiente explicación, la cual describe dos conceptos principales: codificación y estratificación. Al relacionar estos conceptos entre sí, se puede conseguir una perspectiva de la organización general del diseño de las computadoras actuales. Para la claridad de la explicación necesito, además, introducir otros conceptos que resultan necesarios: código, símbolo, abstracción y nivel de abstracción.
Para que una computadora realice alguna tarea, como el cálculo de la suma aritmética usada como ejemplo en la pregunta, 8+7=15
, es necesario primero comunicarle a la computadora, de alguna forma, cuáles son los elementos básicos de nuestro problema, así como nuestra intención o expectativa sobre dichos elementos. Tal comunicación requiere que la computadora interprete correctamente la idea del 8 y del 7 como números, como cantidades; así como el signo de suma como la operación aritmética correspondiente.
La comunicación humana está basada en el uso de códigos. Un código es un sistema de letras, números, signos y las reglas con las cuales se puede expresar y comprender un mensaje. Las letras, números y signos son los elementos más fundamentales del código y por sí mismos tan sólo conservan su sentido individual. El significado viene cuando estos elementos fundamentales se agrupan para formar un símbolo y éste se asocia con una idea fuera del código mismo, de tal forma que ahora el símbolo representa a la idea asociada. La numeración romana, por ejemplo, es un código de letras mayúsculas. Sus reglas nos permiten asociar el símbolo XLV con la misma idea de cantidad numérica que el código de numeración arábiga representa con el símbolo 45. Nótese que puedo pensar en la cantidad numérica pero no puedo comunicar esa idea a menos que la codifique usando el símbolo correspondiente de un código, ya sea de numeración romana o arábiga para este caso.
Usamos códigos todo el tiempo. Por ejemplo al usar el lenguaje natural, como el idioma español —el cual es un código lingüístico—. La palabra mesa —uno de sus símbolos— nos remite a la idea del objeto que tenemos en la casa o en el trabajo. La misma idea asociada con el símbolo mesa puede ser comunicada usando el símbolo de otro código lingüístico, por ejemplo, el idioma inglés (table) o el portugués (tabela). El proceso por el cual se asocian ideas con los símbolos de un código en particular se llama codificación.
Antes de pasar al siguiente concepto principal en nuestra explicación necesitamos primero explicar otra de las operaciones mentales que los humanos usamos intrínsecamente para manejar información. Se trata de la habilidad para pensar en forma general acerca de algo, así como también la habilidad para pensar en forma específica acerca de ese mismo algo. Por ejemplo, y empleado el concepto de símbolo recién explicado, si pensamos en forma general acerca de aparatos electrónicos podríamos usar el símbolo “electrónicos” para referirnos a esa categoría o grupo de objetos. Si queremos referirnos a algo más específico dentro de esa categoría, entonces podríamos usar el símbolo “computadora”. Por otro lado, si partimos de un símbolo más específico o concreto, como “plasma”, podríamos generalizarlo o abstraerlo usando el símbolo “TV” para referirnos a algo más general o abstracto. Cada símbolo nos remite a un grupo o categoría que bien podríamos organizar en estratos jerárquicos, donde cada estrato represente un nivel de abstracción. Entre más general, el estrato es más abstracto; entre más específico, el estrato es más concreto. Para organizar símbolos en grupos o categorías que a su vez agrupamos en estratos jerárquicos hemos utilizado el proceso mental conocido como: abstracción.
Ahora podemos introducir el segundo concepto principal en nuestra explicación. Veamos, para poder comunicar las ideas contenidas en nuestra mente necesariamente debemos hacerlo por medio de un código que pueda entender el destinatario. Para comunicar la idea asociada a nuestro símbolo mesa, que pertenece a un código de lenguaje natural, sólo pude hacerlo usando el símbolo adecuado para la presente forma de comunicación. Al parecer, la comunicación directa, sin el uso de símbolos, no es posible. Además, resulta forzoso hacer una repetida codificación a través de una sucesión de códigos hasta llegar al código adecuado para el medio de trasmisión. Esta sucesión de códigos suelen estar agrupados en diferentes niveles de abstracción. Desde los más generales o abstractos, como el código de lenguaje natural; hasta los más específicos o concretos, como el código Morse o el código ASCII. Desde los intangibles, como los adecuados para transmisión eléctrica, hasta los que se pueden percibir con los sentidos, la vista, el oído o el tacto. Esta relación de códigos dispuesta en niveles de abstracción escalonados se llama estratificación.
Provistos de estos dos conceptos, codificación y estratificación, estamos en posición de ofrecer una explicación general de cómo una computadora está diseñada para ser capaz de ofrecer el resultado de una operación como la suma aritmética de dos números.
La forma para comunicar a la computadora la idea de los números ocho y siete, así como la idea de la suma aritmética, y el cómo la computadora comunica el resultado hacia nosotros o hacia otras computadoras interconectadas, consiste de una estratificación de códigos que van desde los símbolos del lenguaje natural dispuestos, por ejemplo, en las piezas del teclado de la computadora, hasta el código de tan sólo dos símbolos (código binario) en el estrato de sus componentes electrónicos. Después de recorrer la estratificación de códigos, se llega al nivel de abstracción en que la computadora puede operar: señales eléctricas que representan los valores de un código binario. Ahí los símbolos refieren a operaciones básicas, como una suma aritmética en la calculadora que tiene incorporada la computadora. El resultado vuelve recorriendo otra vez la estratificación de códigos, pero en sentido inverso, hasta los símbolos que son inteligibles para nosotros.
El código binario es el más básico y concreto del cómputo actual. Sus únicos dos símbolos son representados por los dos estados en que puede estar un tipo de interruptor electrónico llamado biestable (flip-flop en inglés). La presencia o ausencia de corriente eléctrica en estos dispositivos define esos dos posibles estados —comúnmente referidos como uno y cero, respectivamente—. La variedad de combinaciones posibles al agrupar estos transistores provee el fundamento para la codificación de los símbolos de cada código en la estratificación requerida para representar las ideas tanto de los problemas como de las soluciones que nos interesan.
El alcance o capacidad de representación simbólica en el modelo actual de cómputo es el resultado de un incremento gradual de nuevos estratos adicionales a la estratificación existente. Una medida del progreso en cómputo son los nuevos estratos con nuevos y cada vez más elevados niveles de abstracción que permiten representar las ideas de cada vez más problemas de interés humano, poniendo las bases para obtener las soluciones a dichos problemas. Nuestra imaginación y nuestra capacidad de abstracción son algunos de los únicos límites reales para esta tecnología.