Точка с запятой в файлах зон DNS-мастера; немного истории

Участник курса по DNS спросил Карстена Штротманна из Men & Mice, почему символ комментария в файле зоны
DNS-мастера - это точка с запятой; Карстен пожал плечами и спросил меня. В своей часто саркастичной
манере, я ответил авторитетно "потому что так было запрограммировано" и отмахнулся от этого.
; this is a comment
www 3600 IN A 192.168.1.1 ; the (duh!) Web server
Никогда прежде я не задавался вопросом, почему используется определенный вид комментария в языке программирования.
Ни звездочка * в 7-м столбце для COBOL (я начинал с перфокарт), ни REM (или расширенное :) в BASIC.
(Я давно забыл, что использовал ассемблер Nixdorf 8860 (не 8086).) Меня не беспокоили /* */ в C, и двойные слеши //,
когда они появились. Решетка # в Perl и Python, и -- в Lua меня тоже не смущали,
а в файлах MS-DOS INI использовалась ... (барабанная дробь) ... точка с запятой (;).
Однако, как тренер (кем я в данном случае не являюсь), я всегда стараюсь ответить на вопрос,
поэтому я почувствовал себя обязанным хотя бы попытаться найти причину. В то время как я отправился на
поиски первой версии сервера BIND, которую только мог найти, я спросил людей, которые могли бы знать.
Стефан Борцмайер порекомендовал мне спросить кого-то по имени @svnr2000 (вау!), что я и сделал,
добавив Пола Викси в качестве первоначального и давнего сопровождающего/автора BIND для надежности.
Ответы стали поступать со всевозможными хорошими идеями. Дэвид Улевич из OpenDNS сказал:
в старых языках программирования использовалась ; вместо решетки, как в ассемблере, и Викси нашел это привлекательным.
Это звучало довольно разумно, к тому же это было подтверждено:
это довольно типично, не так ли? Апостроф ' используется в Lisp и в большинстве ассемблеров.
Также тот факт, что точка с запятой используется в hosts.txt, имеет смысл.
Эти ответы меня все же не удовлетворили, поэтому я продолжил копать. Между тем у меня был код BIND версии
4.8 за 1988 год, и я пролистывал исходный код db_load.c, где быстро нашел соответствующее место, но был
разочарован тем, что там не было комментария о том, почему точка с запятой. Тем не менее, я должен был
посмотреть на комментарии в верхней части файла, и Тони Финч попал в точку: там сказано
/*
* Load data base from ascii backupfile. Format similar to RFC 883.
*/
RFC 833, авторства Пола Маккапетриса, датируется ноябрем 1983 года и гласит:
Semicolon is used to start a comment; the remainder of the line is ignored.
Тот же самый Пол Маккапетрис, который, цитируя Википедию,
является американским специалистом по компьютерным технологиям и пионером Интернета, который вместе с Джоном Постелем изобрел Систему доменных имен (DNS).
Другими словами, он должен знать, верно? Что ж, я был в восторге, когда сам Пол Маккапетрис ответил на
мой запрос несколько часов спустя:
@jpmens @bortzmeyer @PowerDNS_Bert @kolkman The ";" was the comment delimiter in TOPS-20 words, hash was dragged in by the UNIX types
TOPS-20 восходит к 1969 году, и Lisp, который использует точку с запятой в качестве символа комментария,
так что вопрос в том, получил ли TOPS-20 точку с запятой от Lisp или яйцо появилось раньше курицы.
Согласно ответу Пола Викси, точка с запятой была выбрана в качестве комментария в файлах зон,
потому что именно так ее использовали макроассемблеры PDP-10 и другие в те времена, и Кристоф направил
меня к GAS, где перечислены однострочные комментарии для ассемблеров.
Так что, есть что-нибудь еще, о чем вы хотите, чтобы я спросил? ;-)