Po co są digrafy w C i C++?

Dowiedziałem się dzisiaj, że istnieją digrafy w C99 i C++. Poniżej znajduje się prawidłowy program:

%: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:>;
    %>
%>
Moje pytanie brzmi: dlaczego one istnieją?
Author: Sydius, 2009-01-11

4 answers

Digrafy zostały stworzone dla programistów, którzy nie mieli klawiatury obsługującej zestaw znaków 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 06:14:00

Uważam, że ich istnienie można prześledzić z możliwością , że gdzieś ktoś używa kompilatora z systemem operacyjnym, którego zestaw znaków jest tak archaiczny, że niekoniecznie musi zawierać wszystkie znaki, których C lub c++ potrzebują do wyrażenia całego języka.

Również, to sprawia, że dobre wpisy w 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 06:51:19

Myślę, że to dlatego, że niektóre klawiatury na tej planecie mogą nie mieć klawiszy takich jak ' # 'i' {'.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 06:11:31

Digrafy i trygrafy w c/C++ pochodzą z czasów sześciu bitowych zestawów znaków używanych przez systemy CDC6000( 60 bitów), Univac 1108 (36 bitów), DECsystem 10 i 20 (36 bitów), z których każdy używał zastrzeżonego zestawu znaków 64 niezgodnego z ASA X3.4-1963 (obecnie znany jako ANSI X3.4-1963 "7-bit American National Standard Code for Information Interchange"). Najnowsza wersja to ANSI X3. 4-1986. Ponieważ systemy te nie były w stanie reprezentować wszystkich 96 punktów kodu graficznego, wiele zostały pominięte. Ponadto X3. 4 był skoordynowany z innymi krajowymi instytutami standardowymi (GBR, GER, ITA, itp.) i istniały Punkty kodowe w X3. 4, które zostały oznaczone jako narodowe znaki zastępcze - najbardziej oczywistym przykładem jest # dla symbolu Britsh Pound (oczywistym, ponieważ nazwa znaku # to "znak funta" z jego konwencjonalnego użycia w handlu USA-przed ewolucją Twitter) i ' { '' } ' zostały również oznaczone jako krajowe znaki zastępcze. W ten sposób digrafy zostały wprowadzone w celu zapewnienia mechanizmu dla tych systemów komputerowych niezdolnych do reprezentowania znaków, a także dla urządzeń końcowych danych, które przypisały krajowe znaki zastępcze do sprzecznych punktów kodu. Di/Tri-grafy stały się archaicznym artefaktem historii informatyki (przedmiot obecnie nie nauczany w informatyce) - wyczerpujący artykuł na ten temat można znaleźć tutaj: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-11 14:28:48