Печальное состояние «разделителей записей» или «ограничителей строк» является наследием мрачных веков вычислений.
Теперь мы считаем само собой разумеющимся, что все, что мы хотим представить, является в некотором роде структурированными данными и соответствует различным абстракциям, которые определяют строки, файлы, протоколы, сообщения, разметку, что угодно.
Но когда-то это было не совсем так. В приложения встроены управляющие символы и обработка для конкретного устройства. Системы с мертвым мозгом, которые требовали как CR, так и LF, просто не имели абстракции для разделителей записей или ограничителей строки. CR был необходим для того, чтобы телетайп или видеодисплей вернулись в первый столбец, а LF (сегодня, NL, тот же код) был необходим, чтобы заставить его перейти к следующей строке. Я предполагаю, что идея сделать что-то кроме сброса необработанных данных на устройство была слишком сложной.
Unix и Mac фактически указали абстракцию для конца строки, представьте это. К сожалению, они указали разные. (Unix, хм, пришел первым.) И, естественно, они использовали управляющий код, который уже был «близок» к S.O.P.
Поскольку почти все наше операционное программное обеспечение на сегодняшний день является потомком операционной системы Unix, Mac или MS, мы застряли в неразберихе с окончанием строки.