El estándar ASCII fue adoptado en 1963, y en la actualidad es poco probable que alguien use una codificación cuyas primeras 128 caracteres difieran de ASCII. Sin embargo, hasta finales del siglo pasado, se utilizaba activamente EBCDIC, que es la codificación estándar para los mainframes de IBM y sus clones soviéticos ES EVM. EBCDIC sigue siendo la codificación principal en z/OS, el sistema operativo estándar para los mainframes modernos IBM Z.
Lo que salta a la vista al mirar EBCDIC es que las letras no van en secuencia: entre I y J y entre R y S quedaron posiciones no utilizadas (en ES EVM, en estos espacios los símbolos cirílicos). ¿Quién podría haber pensado en codificar letras con espacios desiguales entre las letras vecinas?

El propio nombre EBCDIC ("Extended BCDIC") sugiere que esta codificación, a diferencia de ASCII, no fue creada desde cero, sino sobre la base de la codificación de seis bits BCDIC, que se usó desde (1954):

No hay compatibilidad directa: una característica conveniente de BCDIC, que se perdió al pasar a EBCDIC, era que los números 0—9 tenían códigos del 0 al 9. Sin embargo, ya había brechas de siete códigos entre I y J y de ocho códigos entre R y S en BCDIC. ¿De dónde surgieron?
La historia de (E)BCDIC comienza al mismo tiempo que la historia de IBM, mucho antes de las computadoras electrónicas. IBM se formó como resultado de la fusión de cuatro empresas, de las cuales la más avanzada tecnológicamente era la "Tabulating Machine Company", fundada en 1896 por Herman Hollerith, el inventor del Los primeros tabuladores simplemente contaban el número de tarjetas perforadas perforadas en un lugar determinado; pero en 1905, Hollerith comenzó la producción de tabuladores decimales. Cada tarjeta para el tabulador decimal consistía en campos de longitud arbitraria, y los números escritos en estos campos en la forma decimal habitual se sumaban en toda la baraja. La división de la tarjeta en campos se definía mediante la conexión de cables en el panel de conmutación del tabulador. Por ejemplo, en esta tarjeta perforada de Hollerith, almacenada Los más atentos pudieron notar que en la tarjeta de Hollerith hay 12 filas para los agujeros, aunque para los dígitos son suficientes diez; y en BCDIC, para cada valor de los dos bits más significativos, se utilizan solo 12 códigos de 16 posibles.

Los más observadores habrán notado que en el mapa de Hollerith hay 12 filas para los agujeros, aunque para los dígitos son suficientes diez; y en BCDIC, para cada uno de los dos bits más significativos, se utilizan solo 12 códigos de los 16 posibles.
Por supuesto, esto no es una coincidencia. Originalmente, Hollerith había destinado filas adicionales para "marcas especiales" que no se sumaban, sino que simplemente se contaban, como en las primeras tabuladoras. (Hoy las llamaríamos "campos de bits".) Además, entre las "marcas especiales" se podían establecer indicadores de grupo: si al tabular se requerían no solo sumas finales, sino también intermedias, la tabuladora se detenía al detectar un cambio en cualquiera de los indicadores de grupo, y el operador debía transcribir las sumas intermedias del panel digital a papel, reiniciar el panel y continuar la tabulación. Por ejemplo, al contabilizar balances, un grupo de tarjetas podría corresponder a una fecha o a un contraparte.
Para 1920, cuando Hollerith ya se había retirado, comenzaron a usarse las "tabuladoras impresoras", que se conectaban a telégrafos y podían imprimir sumas intermedias por sí mismas, sin requerir la intervención del operador. La dificultad ahora era determinar a qué se refería cada uno de los números impresos. En 1931, IBM decidió indicar letras mediante "marcas especiales": una marca en la fila 12 representaba la letra de A hasta I, en la fila 11 de J hasta R, en la fila cero de S hasta Z. La nueva "tabuladora alfabética" podía imprimir el nombre de cada grupo de tarjetas junto con las sumas intermedias; en este caso, la columna no perforada se convertía en un espacio entre los símbolos. Tenga en cuenta que S se representa mediante la combinación de agujeros 0+2, mientras que la combinación 0+1 no se utilizó inicialmente por el temor a que dos agujeros adyacentes en una misma columna pudieran causar problemas mecánicos en el lector.

Ahora, se puede ver la tabla BCDIC desde una perspectiva un poco diferente:

Excepto por el hecho de que 0 y el espacio han cambiado de lugar, los dos bits más significativos determinan la "marca especial" que se perforó en la tarjeta perforada para el símbolo correspondiente desde 1931; y los cuatro bits menos significativos determinan el número que se perfora en la parte principal de la tarjeta. Soporte de símbolos & - / se incluyó en las tarjetas perforadas de IBM en la década de 1930, y la codificación de estos caracteres en BCDIC corresponde a las combinaciones de agujeros perforados. Cuando se necesitó soporte para un mayor número de caracteres, se comenzaron a perforar filas de 'marcas especiales' como adicionales, por lo que en una columna podía haber hasta tres agujeros. Este formato de tarjetas perforadas se mantuvo prácticamente sin cambios hasta finales del siglo. En la URSS se conservaron las codificaciones de IBM para el alfabeto latino y la puntuación, mientras que para las letras cirílicas se perforaron varias 'marcas especiales' en las filas 12, 11, 0, sin limitarse a tres agujeros en una columna.
Cuando se creó la computadora IBM 704, no se pensó mucho en la codificación de símbolos para ella: se tomó la codificación ya utilizada en las tarjetas perforadas, simplemente se 'colocó' el 0 en su lugar. En 1964, al pasar de BCDIC a EBCDIC, se dejaron sin cambios los cuatro bits más bajos de cada símbolo, aunque se mezclaron un poco los bits más altos. De este modo, el formato de tarjetas perforadas elegido por Hollerith a principios del siglo pasado influyó en la arquitectura de todas las computadoras de IBM, hasta la IBM Z incluida.
Fuente: habr.com
