LINUX.ORG.RU

Вопрос про стиль перевода строк в nix*

 


0

4

Как известно, в оффтопике, переводу строки предшествует перевод каретки. По-идее, это абсолютно логично, так как, данные символы являются управляющими, и если мы представим себе печатную машинку, она действует именно так.

Логически, перевод строки без перевода каретки, должен был бы выглядеть как-то так


строка текста
             |<<-- курсор
То есть, это опять же не то, что на самом деле происходит.

В юниксе эту логику проигнорировали, и совместимость сломали, получается. А вот интересно, каковы были причины этого решения?



Последнее исправление: javaQest (всего исправлений: 3)

Ответ на: комментарий от TDrive

Ну, я думаю, \r\n не только в dos было, это просто пример.

А я не виндузятник, мне похрену вообще на систему, по большому счету.

javaQest
() автор топика

в гугле забанили?

The Multics operating system began development in 1964 and used LF alone as its newline. Multics used a device driver to translate this character to whatever sequence a printer needed (including extra padding characters), and the single byte was much more convenient for programming. The seemingly more obvious choice of CR was not used, as a plain CR provided the useful function of overprinting one line with another to create Boldface and Strikethrough effects, and thus it was useful to not translate it. Unix followed the Multics practice, and later systems followed Unix.

https://en.wikipedia.org/wiki/Newline

Lincor
()

линакс не печатная машинка, а управляющие символы не нужны, тк текст не код, который чем-то там управляет

anonymous
()
Ответ на: комментарий от TDrive

1969 появился, Гейтсу тогда 15 лет было.

Кстати, Гейтс ведь взял за основу cp/m, а она появилась тоже примерно в начале 70-х, так что, в этом смысле, плюс минус пара лет, это не принципиально.

javaQest
() автор топика
Ответ на: комментарий от javaQest

В юниксе эту логику проигнорировали

Ни кто ничего не игнорировал.

и совместимость сломали

Совместимость с печатной машинкой? она тебе нужна?

каковы были причины этого решения

Сделали так как правильно, CR+LF это атавизм.

TDrive ★★★★★
()
Ответ на: комментарий от javaQest

Кстати, Гейтс ведь взял за основу cp/m

ms-dos он купил у каких то лошков, идею винды украл у ксерокс и эппл, какой cp/m ты о чем?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

какой cp/m ты о чем?

вот этот

https://en.wikipedia.org/wiki/CP/M-86

если та история с покупкой у лошков и правдива, в чем я сильно сомневаюсь(а кинцо то детское я тоже смотрел, да), это был скорей всего какой-то форк.

javaQest
() автор топика
Ответ на: комментарий от TDrive

Совместимость с печатной машинкой? она тебе нужна?

Вообще-то она бы не помешала для той же совместимости с HTTP. Да и с вендой было бы удобней.

Вообще, когда ломают совместимость ради экономии на спичках, и хипстерских понтов, это всегда не особо хорошо.

javaQest
() автор топика

А в маке (в нормальном маке, а не в os x убожестве) было, внезапно, /r

То есть перевод каретки без новой строки.

EXL ★★★★★
()
Ответ на: комментарий от javaQest

Вообще-то она бы не помешала для той же совместимости с HTTP. Да и с вендой было бы удобней.

HTTP появился намного позже и \r\n в нем это костыль ради винды

Вообще, когда ломают совместимость ради экономии на спичках, и хипстерских понтов, это всегда не особо хорошо.

Почему ты думаешь что это юникс сломал совместимость а не все остальные?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Да какое вообще отношение к теме имеет левая твоя цитата о том, что MS быстро купила права и начала модификацию? Это как-то должно отменять тот факт, что DOS происходит от cp/m, или что ты этим хотел сказать?

И что ты привязался со своим раньше — позже? Какая разница что раньше? Джек Дэниэлс вообще с 1866. Ставь его себе на комп и пей.

javaQest
() автор топика
Ответ на: комментарий от javaQest

Это как-то должно отменять тот факт, что DOS происходит от cp/m, или что ты этим хотел сказать?

Ты уже сам не помнишь что 5 мин назад писал? Вопрос про стиль перевода строк в nix* (комментарий)

Гейтс ведь взял за основу cp/m

TDrive ★★★★★
()
Ответ на: комментарий от javaQest

Джек Дэниэлс вообще с 1866. Ставь его себе на комп и пей.

Ну ясно все.)

TDrive ★★★★★
()

Зато в офтопике два режима открытия файла (текстовый и бинарный), а в юниксе достаточно одного режима.

gorky ★★
()
Ответ на: комментарий от javaQest

Я имел в виду, DOS, да это форк cp/m, надо, блеать, не только читать, но и понимать что читаешь.

Твою фразу:

Гейтс ведь взял за основу cp/m

Я понял как «Гейтс ведь взял за основу cp/m» и даже если попробовать прочитать еще пару раз ни как не получается «DOS, да это форк cp/m», возможно я просто не тот собеседник который тебе нужен.)

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Ну, будем считать, что я оговорился. ок. Постой, ведь я пишу, и даже не пишу, а скорей отправляю данные через сеть, на сервер, да надо уточнить как правильно это выразить, пойду в специальных учебниках посмотрю. Точность — вежливость кого-то там, может даже королей.

javaQest
() автор топика

Комбинация CRLF имела физический смысл на печатных машинках, она позволяла продолжить печать с начала строки, не переходя на следующую. Например так делалось подчеркивание. Неявный CR перед LF сделали в Multics, во первых для экономии байта на строку, во вторых так проще их считать. Были и другие разделители, например в Commodore, Apple, Mac OS < 10 использовался CR.

Во всех rfc, начиная с телнета используется CRLF

at ★★
()
Ответ на: комментарий от at

Комбинация CRLF имела физический смысл на печатных машинках, она позволяла продолжить печать с начала строки, не переходя на следующую.

стоп. Ты, случайно, ничего не путаешь? Это по-смыслу, должен делать как раз CR, а LF

line feed, LF — «подача [бумаги] на строку

это перевод строки.

javaQest
() автор топика
Ответ на: комментарий от javaQest

И что ты привязался со своим раньше — позже? Какая разница что раньше?

Это важно, чтобы определить злодея, который сломал совместимость.

ashot ★★★★
()
Ответ на: комментарий от javaQest

Не путаю, CR это возврат каретки (без перехода на новую строку). То есть можно было сделать так

text<cr>____<cr><lf>
то есть подчеркнуть текст

at ★★
()
Ответ на: комментарий от at

Комбинация CRLF имела физический смысл на печатных машинках

А как-же матричные принтеры, еще не совсем забытая и не везде история? ;)
В DOS можно было сделать что-то типо copy my.txt lpt и принтер хавал текст и спецсимволы сам. При этом можно было пищать, мигать и крутить бумагу взад-вперед, напихав этих самых символов в текст по самое немогу.

anTaRes ★★★★
()
Ответ на: комментарий от anTaRes

Принтеры, в т.ч. матричные появились позже, я про телетайпы говорю, то есть устройства от которых пошло название tty. Они работали точно так же как и электрическая печатная машинка.

А у матричников нет жесткого ограничения на набор выводимых символов, там такое просто не нужно

at ★★
()

эээ тут о сокрытии частностей.

должно ли в тексте управлять устройством отображения ()

это снова вылезло при эволюции html->js->ajax->OnePageApp

у Кроукфорда про твоё «в юниксе сломали» отличное выступление(траскрипт прилогается) Crockford on JavaScript - Volume 1: The Early Years

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

всё есть файл

В этом тоже есть лукавства. Например, если директория есть файл, то почему я не могу сделать с ней все то же самое, что с файлом?

Тут тоже можно провести аналогию с JS, там null — это вроде как объект, но он не ведет себя как объект. Подмена понятий. Одно дело, когда это объект на пользовательском уровне, делай с ним что хочешь, а другое дело, когда это где то в недрах интерпретатора.

Примерно то же самое с этим баззвордом «Все есть файл». Правильнее было бы, «все есть файл, просто уверуй в это, прими файл в свое сердце»

javaQest
() автор топика
Ответ на: комментарий от javaQest

В этом тоже есть лукавства. Например, если директория есть файл, то почему я не могу сделать с ней все то же самое, что с файлом?

Потому, что таким образом можешь разрушить фс

at ★★
()
Ответ на: комментарий от at

Потому, что таким образом можешь разрушить фс

тогда заодно можно отменить rm -rf, а потом скакать *банашкой по форумам, и рассказывать всем, какие nix* - системы волшебные и опасные, а самому под одеялом тихо писать на хаскеле.

javaQest
() автор топика
Ответ на: комментарий от javaQest

rm -rf целостность фс не нарушает, удаляет файлы, для чего и предназначена. А директория, это файл, содержавший имена и ссылки на айноды. Если, например, её просто так удалить (не удаляя содержимое) айноды будут недоступны, но система об этом знать не будет, придется запускать проверку fs. Похожие проблемы будут при копировании и т.д.

at ★★
()
Последнее исправление: at (всего исправлений: 1)
Ответ на: комментарий от at

Если, например, её просто так удалить (не удаляя содержимое) айноды будут недоступны, но система об этом знать не будет

Кстати, я слышал, что в юниксе работает что-то вроде GC. Разве это не его забота, следить за этими вещами?

javaQest
() автор топика
Ответ на: комментарий от javaQest

В никсах особой боязни нет. Рута ограничивают только в некоторых вещах, как, например, в данном случае. Любое изменение содержимого директории должно отражаться на таблице айнодов и т.д.

at ★★
()
Ответ на: комментарий от at

ограничивают только в некоторых вещах

ну а вот, например, буфер обмена, я могу его напрямую прочитать как файл?

javaQest
() автор топика
Ответ на: комментарий от javaQest

Кстати, я слышал, что в юниксе работает что-то вроде GC. Разве это не его забота, следить за этими вещами?

Это подсчет ссылок (можешь считать это GC), то есть в айондах есть счетчик, указывающий на количество жестких ссылок. Работает только когда директории и айноды изменяются согласовано

at ★★
()
Ответ на: комментарий от at

В том смысле, что все есть файл. В «плохой системе» все НЕ есть файл, сответственно, буфер обмена не файл, фи. А в «хорошей» системе, как с этим дела обстоят?

javaQest
() автор топика
Ответ на: комментарий от javaQest

Иксы (и их буфер обмена) это не никсы, там другая идеология. Можешь посмотреть на plan9.

В «плохой системе» все НЕ есть файл, сответственно, буфер обмена не файл, фи. А в «хорошей» системе, как с этим дела обстоят?

Что значит «хорошая» или «плохая»? Подход «всё есть файл» (на самом деле далеко не всё, например сетевые интерфейсы не в любой никсовской системе являются файлами) был выработан для упрощения взаимодействия с устройствами. Чтобы для каждого не нудно было держать свой api

at ★★
()
Последнее исправление: at (всего исправлений: 1)
Ответ на: комментарий от javaQest

в первоюнихах(во фряхи говорят до сих пор)(что подтверждается первыми изданиями TUPE K&P) можно было cat / и получить фактическое представление каталога как он сохранён.

вообщет писание в каталог как файл возможно - при наличии «годного» драйвера который бы запись строки с нужными словами переинтерпритировал как что то наподобии ln - тогда ты как пользователь при использования такового сервиса отдельно бы ещё создавал(просил бы от системы) «inode» для нового файла .

но это лирика.

важно понимать что «всё есть файл» отличная максима. где файл это последовательность чего либо.

и тут итераторы :)

qulinxao ★★☆
()
Ответ на: комментарий от at

ну пиши юникс сейчас вполне могли бы придумать открытия каталога на запись и append в него команд которые файловой системой(а конкретней драйвером этого каталога- т.е этой точки-пути в дереве имён) интерпретировались бы как управляющие конструкции.

но https://en.wikipedia.org/wiki/Path_dependence история такова какова.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

ну пиши юникс сейчас вполне могли бы придумать открытия каталога на запись и append в него команд которые файловой системой(а конкретней драйвером этого каталога- т.е этой точки-пути в дереве имён) интерпретировались бы как управляющие конструкции.

Автопереводчик? Я это прочитал и ничего не понял

at ★★
()
Последнее исправление: at (всего исправлений: 1)
Ответ на: комментарий от qulinxao

ну а что под объектом обычно подразумевается? имеет набор слотов, модифицируем, отвечает на сообщения, наследуем, наследуется.

javaQest
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.