¿Qué son las codificaciones?

Hablamos sobre Unicode, el estándar principal de codificación de caracteres que incluye casi todos los caracteres de todos los idiomas escritos del mundo. ¿Cómo surgió Unicode y qué problemas resuelve?
¿Por qué son importantes las codificaciones?
Las computadoras trabajan constantemente con texto: noticias en línea, bolsas de valores, mensajes en redes sociales y mensajería, aplicaciones bancarias y mucho más. Hoy en día no podemos imaginar la vida sin la transmisión de información. Pero esto no siempre fue así. Las computadoras aprendieron a trabajar con texto gracias al desarrollo de las codificaciones. Las codificaciones han recorrido un largo camino desde las tablas de caracteres creadas específicamente para cada computadora hasta una codificación universal aceptada en todo el mundo.

Actualmente, Unicode es el estándar principal de codificación de caracteres que incluye casi todos los caracteres de todos los idiomas escritos del mundo. Unicode se utiliza en todas partes donde hay texto. La información en las páginas de redes sociales, las entradas en bases de datos, los programas de computadora y las aplicaciones móviles, todo esto funciona utilizando Unicode.

En esta guía, veremos cómo surgió Unicode y qué problemas resuelve. Aprenderemos cómo se almacenaba y transmitía la información antes de la introducción de un estándar único de codificación de caracteres, y también veremos ejemplos de codificaciones basadas en Unicode.
Antecedentes de las codificaciones
Históricamente, las computadoras se crearon como máquinas para acelerar y automatizar cálculos. La palabra "computadora" se puede traducir del inglés como "calculadora".

Todo con lo que las computadoras operaban eran números. Los principales clientes y motores del desarrollo de los primeros modelos fueron las empresas de defensa. Los cálculos de los parámetros de vuelo de cohetes balísticos, aviones y satélites se realizaban en computadoras. En la década de 1950, las capacidades de cálculo de las computadoras comenzaron a utilizarse para:
  • pronóstico del tiempo;
  • cálculos de física experimental y teórica;
  • cálculo de salarios de los empleados (por ejemplo, la computadora LEO se utilizaba para las necesidades de una empresa que poseía una cadena de tiendas de té);
  • pronóstico de los resultados de las elecciones presidenciales de los Estados Unidos (1952, computadora UNIVAC).
Computadoras y números

Los objetivos para los que se desarrollaron las computadoras llevaron al desarrollo de una arquitectura diseñada para trabajar con números. Estos números se almacenan en la computadora de la siguiente manera:
  • 1
    El número en el sistema decimal se convierte en binario, es decir, una secuencia de ceros y unos. Por ejemplo, el número 3 en binario se puede escribir como 11, y el número 9 como 1001. Puede obtener más información sobre los sistemas de numeración en la guía correspondiente.
  • 2
    La secuencia resultante de ceros y unos se almacena en las celdas de memoria de la computadora. Por ejemplo, la presencia de corriente en un elemento de memoria representa un uno, y su ausencia representa un cero.
A finales de la década de 1950, las lámparas incandescentes fueron reemplazadas por dispositivos semiconductores (transistores y diodos). La introducción de esta nueva tecnología permitió reducir el tamaño de las computadoras, aumentar la velocidad de trabajo y la confiabilidad de los cálculos, y también afectó el costo final. Si las primeras computadoras eran proyectos costosos y únicos que solo podían permitirse los estados o las grandes empresas, con la introducción de semiconductores comenzaron a aparecer computadoras en serie, aunque no eran personales.
Computadoras y caracteres

Poco a poco, las computadoras comenzaron a utilizarse para resolver no solo problemas de cálculo o matemáticas. Surgió la necesidad de procesar información de texto, pero la situación con letras y otros caracteres era más complicada que con los números. Los caracteres son objetos visuales. Incluso la misma letra "a" puede representarse con dos caracteres diferentes, "a" y "A", dependiendo de si está en mayúscula o minúscula.

También se puede representar el número "uno" con diferentes caracteres. Puede ser el dígito árabe 1 o el número romano I. El valor del número no cambia, pero se utilizan caracteres diferentes.

Las computadoras se crearon para trabajar con números, no pueden almacenar caracteres. Al ingresar información en una computadora, los caracteres se convierten en números y se almacenan en la memoria de la computadora como números normales, y al mostrar la información, se realiza la conversión inversa de números a caracteres.

Las reglas de conversión de caracteres y números se almacenaban en forma de una tabla de caracteres ("charset" en inglés). De acuerdo con esta tabla, se construía un dispositivo de entrada/salida de información único para cada computadora (por ejemplo, un teclado y una impresora).
La propagación de las computadoras

A principios de la década de 1960, las computadoras no eran compatibles entre sí, incluso dentro de una sola empresa fabricante. Por ejemplo, en IBM había alrededor de 20 oficinas de diseño, y cada una desarrollaba su propio modelo. Estas computadoras no eran universales, se crearon para resolver tareas específicas. Para cada tarea, se creaba una tabla de caracteres necesaria, y se diseñaban dispositivos de entrada/salida de información.

Durante este período, comenzaron a formarse redes que conectaban varias computadoras. Por ejemplo, en 1958 se creó el sistema SAGE (Semi-Automatic Ground Environment) que unió las estaciones de radar de los Estados Unidos y Canadá en la primera red informática a gran escala. Para que los resultados de los cálculos de una computadora pudieran utilizarse en otras computadoras de la red, debían tener tablas de caracteres idénticas.

En 1962, IBM estableció dos principios principales para el desarrollo de su propia línea de computadoras:
  • 1
    Las computadoras deben ser universales. Esto significaba pasar de la producción de computadoras especializadas a máquinas que pueden resolver diferentes tareas.
  • 2
    Las computadoras deben ser compatibles entre sí, es decir, debe ser posible utilizar datos de una computadora en otra.
Así surgieron las computadoras IBM System/360 en 1965. Era una línea de seis modelos compuestos por módulos compatibles. Los modelos diferían en rendimiento y costo, lo que permitía a los clientes elegir la computadora adecuada de manera flexible. La modularidad de los sistemas llevó al surgimiento de una nueva industria: la producción de módulos de computadora compatibles con System/360. Las empresas ya no tenían que fabricar una computadora completa, podían ingresar al mercado con módulos de computadora compatibles individuales. Todo esto llevó a una mayor propagación de las computadoras.
ASCII como el primer estándar de codificación de información
Teletipo y terminal

Paralelamente a esto, se desarrollaron teletipos. Un teletipo es un sistema de transmisión de información de texto a distancia. Dos impresoras y dos teclados (en realidad, máquinas de escribir electromecánicas) se conectaban entre sí mediante cables. El texto ingresado en el teclado por el primer usuario se imprimía en la impresora del segundo usuario y viceversa.

Los teletipos también convierten la información de texto en señales que se transmiten a través de cables. No siempre se utiliza un código binario, por ejemplo, en el código Morse se utilizan 3 símbolos: punto, guion y pausa. Los teletipos requerían tablas de caracteres en las que se establecía la correspondencia entre los caracteres y las señales en los cables. Para cada teletipo (par de teletipos conectados), las tablas de caracteres podían ser diferentes, según las tareas que resolvían. Por ejemplo, el idioma podía ser diferente, lo que significa que el conjunto de caracteres que se enviaban con el dispositivo también podía ser diferente.

Sobre la base de los teletipos, se desarrollaron terminales de acceso a computadoras. Un teletipo de este tipo no enviaba mensajes a otro usuario, sino que la información se ingresaba en una computadora remota que, después de procesar los comandos especificados, devolvía el resultado como un mensaje de respuesta. Esta innovación permitió utilizar las capacidades de cálculo aún muy costosas de las computadoras sin tener acceso físico a la propia computadora. Por ejemplo, una computadora podría estar ubicada en un centro de cómputo separado de una corporación o instituto, y los empleados de otras sucursales o ciudades podían acceder a las capacidades de cálculo de la computadora a través de las terminales instaladas en sus ubicaciones.
ASCII

La propagación generalizada de las computadoras y los medios de intercambio de información de texto requirió el desarrollo de un estándar único de codificación para la transmisión y almacenamiento de información. Este estándar fue desarrollado en los Estados Unidos en 1963. La tabla de 128 caracteres se llamó ASCII - American Standard Code for Information Interchange (Código Estándar Americano para el Intercambio de Información).
Los primeros 32 caracteres en ASCII son caracteres de control. Se utilizaban para controlar el dispositivo de impresión del teletipo y obtener algunos caracteres compuestos. Por ejemplo:
  • 1
    El carácter Ø se podía obtener de la siguiente manera: se imprime la letra O, luego con el código de control BS (BackSpace) se mueve la cabeza de impresión un carácter hacia atrás y se imprime el carácter /.
  • 2
    El carácter à se obtenía como a BS `
  • 3
    El carácter Ç se obtenía como C BS ,
La introducción de caracteres de control permitía obtener nuevos caracteres como una combinación de los existentes, sin introducir tablas de caracteres adicionales.

Sin embargo, la introducción del estándar ASCII resolvió el problema solo en los países de habla inglesa. En los países con otros sistemas de escritura, como el cirílico en la URSS, el problema persistió.
Transición a Unicode
El desarrollo de Internet, el aumento en el número de computadoras y la reducción del costo de la memoria llevaron a que los problemas causados por la confusión en las codificaciones superaran cualquier ahorro de memoria. Esto se manifestaba especialmente en Internet, cuando el texto escrito en una codificación se volvía completamente ilegible en otras.

Como resultado, en octubre de 1991 se publicó la primera versión de una tabla de caracteres común llamada Unicode. Incluía en ese momento 7161 caracteres diferentes de 24 sistemas de escritura del mundo.

En Unicode, se agregaron gradualmente nuevos idiomas y caracteres. Por ejemplo, en la versión 1.0.1 de mediados de 1992, se agregaron más de 20,000 ideogramas de los idiomas chino, japonés y coreano. En la versión actual, hay más de 143,000 caracteres.
Codificaciones basadas en Unicode
Unicode se puede imaginar como una tabla de caracteres enorme. En la memoria de la computadora, no se almacenan los caracteres en sí, sino los números de la tabla. Estos números se pueden almacenar de diferentes maneras. Para esto, se han desarrollado varias codificaciones basadas en Unicode, que difieren en la forma en que se almacena el número del carácter Unicode como una secuencia de bytes. Se llaman UTF - Unicode Transformation Format. Hay codificaciones de longitud fija, como UTF-32, en la que el número de cualquier carácter de la tabla Unicode ocupa exactamente 4 bytes. Sin embargo, la más popular es UTF-8, una codificación de longitud variable. Permite codificar caracteres de manera que los caracteres más comunes ocupen 1-2 bytes, y solo los caracteres poco comunes pueden usar 4 bytes. Por ejemplo, todos los caracteres de la tabla ASCII ocupan exactamente 1 byte, por lo que el texto escrito en inglés utilizando la codificación UTF-8 ocupará la misma cantidad de espacio que el texto escrito utilizando la tabla de caracteres ASCII.

Hoy en día, Unicode es la codificación principal utilizada por todos los que trabajan con computadoras y texto. Unicode permite utilizar cientos de miles de caracteres diferentes y mostrarlos de la misma manera en todos los dispositivos, desde teléfonos móviles hasta computadoras en estaciones espaciales.

Resumen
  • Una codificación es una correspondencia entre caracteres visuales y números.
  • Las codificaciones son necesarias porque las computadoras están diseñadas para trabajar con números y no entienden el texto.
  • Hasta la década de 1990, no existía una codificación única, lo que llevaba a que el texto escrito en una codificación fuera completamente ilegible en otras.
  • Unicode es un estándar único de codificación de caracteres. El desarrollo de Internet y la necesidad de intercambiar grandes cantidades de información de texto llevaron a que todos ahora utilicen este estándar.
  • UTF-8, UTF-16, UTF-32, etc. son variantes de codificaciones basadas en Unicod Se diferencian en la forma en que se almacena la información.
  • UTF-8 es la codificación más popular. Su característica distintiva es que los caracteres más comunes se codifican en 1-2 bytes, mientras que los caracteres poco comunes ocupan 3-4 bytes. Esto permite un ahorro significativo de memoria, por ejemplo, al trabajar con texto en inglés.
Leer otros artículos de Guías
Lea otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.