Pregunta

Aprendí hoy 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?

¿Fue útil?

Solución

Los dígrafos se crearon para programadores que no tenían un teclado que admitiera el conjunto de caracteres ISO 646.

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

Otros consejos

Creo que su existencia se remonta a la posibilidad de que, en algún lugar, alguien está utilizando 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 expresar todo el lenguaje.

Además, es una buena entrada en IOCCC .

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

Los dígrafos y trigrafos en c / c ++ provienen de los días de los juegos de caracteres de seis bits utilizados por los sistemas CDC6000 (60 bits), Univac 1108 (36 bits), DECsystem 10 y 20 (36 bits), cada uno de los cuales utilizaba un juego de caracteres patentado de 64 caracteres no compatible con ASA X3.4-1963 (ahora conocido como ANSI X3.4-1963 " Código estándar nacional estadounidense de 7 bits para el intercambio de información "). La última revisión es ANSI X3.4-1986. Como estos sistemas eran incapaces de representar todos los 96 puntos de código gráfico, se omitieron muchos. Además, X3.4 se coordinó con otros Institutos Nacionales Estándar (GBR, GER, ITA, etc.) y hubo puntos de código en X3.4 que fueron designados como caracteres de reemplazo nacionales; el ejemplo más obvio es el # para la libra esterlina símbolo (obvio porque el nombre del # carácter es '' signo de libra '' de su uso convencional en el comercio de los EE. UU. - antes de la evolución de Twitter) y el '{' '}' también fueron designados como caracteres de reemplazo nacionales. Por lo tanto, se introdujeron los dígrafos para proporcionar un mecanismo para aquellos sistemas informáticos incapaces de representar los caracteres, y también para el equipo de terminal de datos que asignó caracteres de reemplazo nacionales a los puntos de código en conflicto. Los di / tri-gráficos se han convertido en un artefacto arcaico de la historia de la computación (una asignatura que actualmente no se enseña en informática). Aquí se puede encontrar un documento exhaustivo sobre esta asignatura: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep = rep1 & amp; type = pdf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top