Я понимаю разницу между ними, поэтому нет необходимости вдаваться в подробности, но мне просто интересно, в чем причина того, почему Windows использует как CR, так и LF для обозначения разрыва строки. Кажется, что метод Linux (просто с использованием LF) имеет гораздо больше смысла, экономит место и его легче анализировать.
87
Ответы:
Исторически при использовании
матричные принтерытелетайпы CR вернет каретку в первую позицию строки, а LF передаст на следующую строку. Использование CR + LF в самом файле позволило отправить файл прямо на принтер без какого-либо драйвера принтера.Спасибо @zaph, указав, что это были телетайпы, а не матричные принтеры
источник
@sshannin разместил URL из блога Раймонда Чена, но он больше не работает. В блоге изменилось внутреннее программное обеспечение, поэтому изменились URL-адреса.
Полистав старые сообщения в новом блоге, я нашел его здесь .
Цитата из блога:
Я изменил эту вторую ссылку на снимок в The Wayback Machine, поскольку фактическая страница больше не доступна.
Надеюсь, это ответит на ваш вопрос.
источник
Он исходит от телетайпов (и пишущих машинок) с давних времен.
Раньше было так, что, когда вы заканчивали печатать строку, вам нужно было переместить каретку пишущей машинки (которая удерживала бумагу и скользила влево, когда вы печатали) обратно в начало строки (CR). Затем вам нужно было продвинуть бумагу на одну строку (LF), чтобы перейти к следующей строке.
Есть случаи, когда вы, возможно, не хотели переводить строку при возврате каретки, например, если вы собирались зачеркнуть символ с помощью тире (вы бы просто перезаписали его).
Но в основном все сводится к условности. DOS использовала полное соглашение CR / LF, а UNIX немного сократила его. Теперь мы застряли!
источник
Другие дали ответ, но я хотел добавить ... Я полагаю, вы слишком молоды, чтобы пользоваться пишущей машинкой? ;) Каретка - барабан. При перемещении по горизонтали вправо заголовок с неподвижным шрифтом возвращается к левому краю страницы. При вращении каретки пальцем и большим пальцем страница перемещается на одну строку.
источник
Из Википедии :
источник
Я видел более одной учетной записи о том, что причина отправки двух символов (а иногда и больше) вместо одного заключалась в том, чтобы лучше согласовать скорость передачи данных с физической скоростью печати ( это было давно ). Перемещение печатающей головки занимало больше времени, чем печать одного символа, а отправка дополнительных символов была способом предотвратить передачу данных впереди печатающего устройства. Таким образом, причина, по которой у нас есть несколько символов для конца строки в Windows, в основном та же, что и причина, по которой у нас есть QWERTY-клавиатуры - она была предназначена для замедления работы .
Очевидно, что причина, по которой эта практика продолжается в Windows по сей день, основана на некотором понятии постоянной обратной совместимости и, в конечном счете, просто на простой инерции.
Однако следует отметить, что это соглашение не строго соблюдается Windows на уровне операционной системы . Любое приложение Windows может игнорировать это соглашение, в зависимости от того, с какими другими приложениями оно пытается быть совместимо.
Интересно, что статья в Википедии о «Newline» утверждает, что Windows 8 может внести изменения в использование только LF. В статье также говорится, что Mac OS X представила переход от LF + CR к только LF.
источник