¿Por qué hay dígrafos en C y C++?


Hoy aprendí que hay dígrafos en C99 y C++. El siguiente es un programa válido:

%:include <stdio.h>

%:ifndef BUFSIZE
 %:define BUFSIZE  512
%:endif

void copy(char d<::>, const char s<::>, int len)
<%
    while (len-- >= 0)
    <%
        d<:len:> = s<:len:>;
    %>
%>

Mi pregunta es: ¿por qué existen?

Author: Sydius, 2009-01-11

4 answers

Los dígrafos fueron creados para programadores que no tenían un teclado que soportara el conjunto de caracteres ISO 646.

Http://en.wikipedia.org/wiki/C_trigraph

 58
Author: CTT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-11 06:14:00

Creo que su existencia se remonta a la posibilidad de que en algún lugar, alguien está usando un compilador con un sistema operativo cuyo conjunto de caracteres es tan arcaico que no necesariamente tiene todos los caracteres que C o C++ necesitan para expresar todo el lenguaje.

También, hace buenas entradas en el IOCCC.

 24
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-11 06:51:19

Creo que es porque algunos de los teclados de este planeta podrían no tener teclas como '#' y '{'.

 11
Author: ChrisW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-11 06:11:31

Los dígrafos y trigrafos en c/c++ provienen de los días de seis conjuntos de caracteres de bits utilizados por los sistemas CDC6000 (60 bits), Univac 1108 (36 bits), DECsystem 10 y 20 (36 bits), cada uno de los cuales usaba un conjunto de caracteres propietario de 64 no compatible con ASA X3.4-1963 (ahora conocido como ANSI X3.4-1963 "Código Estándar Nacional Americano de 7 bits para el Intercambio de Información"). La última revisión es ANSI X3. 4-1986. Dado que estos sistemas eran incapaces de representar todos los 96 puntos de código gráfico, muchos fueron omitidos. Además, X3.4 se coordinó con otros Institutos Nacionales de Estándares (GBR, GER, IT, etc.) y hubo puntos de código en X3.4 que fueron designados como caracteres de reemplazo nacional - el ejemplo más obvio es el # para el símbolo de la libra Británica (obvio porque el nombre del carácter # es "signo de libra" de su uso convencional en el comercio de Estados Unidos - antes de la evolución de Twitter) y el '{' '}' también fueron designados como caracteres de reemplazo nacional. Así dígrafos se introdujeron para proporcionar un mecanismo para aquellos sistemas informáticos incapaces de representar los caracteres, y también para los equipos terminales de datos que asignaban caracteres de reemplazo nacionales a los puntos de código en conflicto. Di / Tri-gráficos se han convertido en un artefacto arcaico de la historia de la computación (un tema que no se enseña en ciencias de la computación en estos días) - Un documento exhaustivo sobre este tema se puede encontrar aquí: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type=pdf

 4
Author: JTM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-11 14:28:48