Почему существуют диграфы в C и C++?

Сегодня я узнал, что в C99 и C++ есть орграфы. Ниже приведена действительная программа:

%: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:>;
    %>
%>

Мой вопрос: почему они существуют?

5 ответов

Решение

Диграфы были созданы для программистов, у которых не было клавиатуры, поддерживающей набор символов ISO 646.

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

Я полагаю, что их существование можно проследить до того, что где-то кто-то использует компилятор с операционной системой, чей набор символов настолько архаичен, что он не обязательно должен содержать все символы, которые нужны C или C++ для выражения всего языка.,

Кроме того, это делает для хороших записей в IOCCC.

Я думаю, это потому, что некоторые клавиатуры на этой планете могут не иметь таких клавиш, как "#" и "{".

Диграфы и триграфы в c/ C++ происходят из дней шестибитных наборов символов, используемых системами CDC6000 (60 бит), Univac 1108 (36 бит), DECsystem 10 и 20 (36 бит), каждая из которых использовала собственный 64-символьный набор не совместим с ASA X3.4-1963 (теперь известен как ANSI X3.4-1963 "7-битный американский национальный стандартный код для обмена информацией"). Последняя версия - ANSI X3.4-1986. Поскольку эти системы были неспособны представить все 96 графических кодовых точек, многие из них были опущены. Кроме того, X3.4 был скоординирован с другими национальными стандартными институтами (GBR, GER, ITA и т. Д.), И в X3.4 были кодовые точки, которые были обозначены как национальные замещающие символы - наиболее очевидным примером является # для британского фунта символ (очевидно, потому что имя символа # является "знаком фунта" из его обычного использования в торговле США - до развития Twitter), и символ {{' '}'также был обозначен как национальные символы замены. Таким образом, были введены орграфы для обеспечения механизма для тех компьютерных систем, которые не способны представлять символы, а также для оконечного оборудования данных, которое назначало национальные символы замены конфликтующим кодовым точкам. Ди-триграфы стали архаичным артефактом истории вычислений (предмет, который в наши дни не преподается в информатике). Подробную статью по этому вопросу можно найти здесь: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.96.678&rep=rep1&type=pdf

Согласно статье в Википедии , они были созданы как более простая альтернатива триграфам .

Т.е. для 5 триграфов??(,??),??<,??>,??=были предоставлены заменяющие орграфы:<:,:>,<%,%>,%:. Это произошло в 1994 году.

Другие вопросы по тегам