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

Точка с запятой в файлах зон 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, где перечислены однострочные комментарии для ассемблеров.

Так что, есть что-нибудь еще, о чем вы хотите, чтобы я спросил? ;-) `Ссылка на оригинал статьи