Страница произведения
Войти
Зарегистрироваться
Страница произведения

Фокал - часть 3 (пишется)


Автор:
Опубликован:
24.05.2026 — 24.05.2026
Читателей:
1
Аннотация:
Типа продолжение к "Фокал снаружи и внутри"
Предыдущая глава  
↓ Содержание ↓
↑ Свернуть ↑
  Следующая глава
 
 

хотя бы переставить можно...

Этот самый файл типа .html или лучше всётаки .xml это тоже если хотите

поток потоков... Или пакетов... Но вообще-то он — типа текстовый.

Текстовый файл можно считать потоком не байтов а строк. Тоже, как и пакет,

переменной длины. В разных ФС это организуется по-разному. Например в начале

каждой строки — её длина... Но чаще всего конец строки (и начало следущей)

указывается символом-разделителем строк. Который внутри строки не встречается.

(Вернее как встретился — значит это и есть конец строки.) В кодировках на

основе ASCII это команда ПС (перевод строки, он же 'n') или пара ВК ПС. И еще

текстовый файл по-возможности не содержит "слепых" (непечатных) символов — не

имеющих изображений. (Раньше не имевших — сейчас то картинки сопоставили всем.)

Но вот сейчас в винде вишь взяли моду делать строку размером с целый

абзац — что де программное обеспечение само разобьёт это на строки — по

размеру окна, который может запросто измениться в любой момент по прихоти

пользователя... Запустившие эту моду мелкомягкие недоумки вишь не знали, что

для этих целей на нулевой странице ASCII среди управляющих символов есть

специально для этого предназначенный символ-разделитель групп записей, ну или

абзацев текста. Или и знать не хотели, а хотели воспользоваться тем, что уже

есть — создали всем остальным проблему на ровном месте...

Файлы типа .html и .xml впринципе тоже текстовые, но только в том смысле,

что состоят из печатных символов. (А к разбиению на строчки там относятся

примерно так же, если не хуже.) Разбиение на что-то (вот на такие же "пакеты")

там с помощью своего рода скобок — "тегов". (Тег — "ярлык".) Именованных.

Открывающая и закрывающая скобки выглядит как <имя> и и между ними -

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

Скобочки впринципе должны быть сбалансированы, но в .html с этим — бардак.

Потому что по исходному замыслу это команды форматирования текста. При чем в

виде скобок — только некоторые из них: типа выводить вот таким шрифтом не всё

нижеследующее (пока на другой шрифт не переключат), а только заключенное в оные

скобочки. За сим в .xml сделали: <имя/> — пакет без тела; скобка разом

открывающая и закрывающая. И придумали .xhtml — где бардака поменьше.

Внутри открывающей скобки (заголовка пакета) могут быть дополнительные

поля — тоже именованные. Вида: имя="значение".

У .xml все эти имена — какие сами выдумаем. И смысл у них такой, о котором

сами с собою договоримся. А вот у других файлов этого семейства — типа уже

договорились. В частности у .fb2 это элементы оформления книги: автор,

название, разные виды заголовков, деление на главы и абзацы... У .html это

команды управления просмотрщиком. Который сперва был совсем простеньким — умел

выводить текст разного вида, размера и цвета (например курсив: текст

(i потому что "итальянский")), но главное — умел переходить по ссылке:

текст_изображающий_ссылку (если конечно ткнуть в эту

ссылку мышкою) в результате чего и получается "гипертекст": несколько

связанных вот такими ссылками файлов. Лежащих как на одной машине, так и на

разных. И тогда этот не просто имя файла, а сетевой адрес. (Который тоже

"путь", но сначала по сети, а потом уже по тамошней файловой системе.)

А вот форматирование текста как изначально было дурацкое, так и осталось:

штатных средств сделать по-человечески — чтобы абзац начинался с красной

строки, а не отделялся пустой строкой от предыдущего, как небыло предусмотрено,

так нет и не предвидится. И приходится по-всякому выёживаться...

Ну и весь такой файл это один пакет: .... внутри которого

еще два — заголовок и тело. Оформленные вот таким же образом. В начале правда

еще иногда встречаются рудименты другого языка (известного как SGML, вот это:

— его скобочки, и коментарий вида: тоже его

наследство) куда более замудрённого и громоздкого, нигде и никогда так всерьёз

и не применявшегося. Однако с упорством, достойным лучшего применения, это таки

суют якобы для обратной совместимости...

Вопрос: а еще что-то типа вот таких ссылок у нас есть? А как же! Вон

каталоги, вернее файлы в них. Правда штука это — закрытая. Операционная

система работает с ними только сама — по заявкам "заинтересованных лиц"...

Доступ только по именам, а позиционирование — фиг! (Хотя это где как.) Но тем

не менее...

В общем не будем тянуть кота за хвост. Была вот такая идея: ввести еще

один канал ввода/вывода (типа для поиска файлов) направленный по умолчанию на

устройство "Д", изображающее собою текущий каталог. И ежели открыть что-то под

этим псевдонимом, то это и будет эквивалент команды !CD, каковая в ДОС`е

работает (потому что процесс — один общий для всех) а в UNIX`е не должна.

(Потому что для каждой выполняющейся программы процесс — свой. И есть места,

куда даже король ходит пешком.) Но открыть можно будет только файл с признаком

"d". (В точности так же, как на запись можно открыть только файл с признаком

"w", то есть разрешенный для записи. А переключить канал вывода, тоже

получится только на что-то открытое для записи...) Так что к R и W в

псевдониме открытого файла надо добавить еще буковку D.

Пользоваться этим каналом будут оператор Oper и функция FTEll("имя_файла")

Вернее — уже. В смысле, оказывается так оно и было всегда, изначально. Только

мы вот как-то внимания на это не обращали. А вот устройство Д... Да, таки надо

сделать — а то и в самом деле: как же с "cd" под UNIX`ом? (Но гром не грянет,

мужик не перекрестится! Пока вот как то и так обходились...)

((И, кстати, а вот открываем мы файл под псевдонимом Х, а на него как раз

УЖЕ направлен один из каналов, ну например вывода... И что-то я не припомню,

чтобы проверялось что файл открывается именно для вывода и что он вообще

разрешен на запись — чтобы иначе была ошибка...))

Вспомним, что в том же UNIX`е у каждого файла аттрибуты: -rwx (что их три

комплекта — пока несущественно) где вместо прочерка может быть a b c d... при

чем "а" (самый обычный файл) никогда не пишут, так и оставляют прочерк. Вот "d"

как раз и означает, что это каталог... А вот многие аналоги Нортон-Командера

позволяют "заходить" например в архивы типа .rar .zip ... как в каталоги...

Нечто типа каталога имеют в себе и файлы других типов (библиотеки подпрограмм

например). Тот же самый файл .wav содержащий внутри себя именованные потоки,

тоже бы подошел в этом качестве... И вообще любой файл, содержащий в себе

записи, имеющие два обязательных "выделенных" поля: "имя" — текстовое и

"поток" — либо встроенный поток, как у пакета, так и указатель на что-то

подобное.

Но это чисто на будущее...))

...Но таки надо отличать средства "разукрашивания" текста (ну ладно,

пусть "форматирования"), как тот же .html, где выкинь все эти урашательства и

останется чистый текст, который и есть главное содержимое... Отличать от

средств формирования структуры (как тот же .xml) — самоопределяющейся. Где

текст это всего лишь значения её полей. А главное — сама структура.

Хотя грамматика у них — вроде как практически одинаковая. И даже не

"вроде как" и не "практически" а один в один! Имена и смысл тегов разные...

Для форматирования текста есть еще масса других средств, начиная с

UNIX`овского roff (а так же производных от него nroff, troff...), изначально

сделанного чтобы управлять некоторой фотонаборной машиной. Про который я

смутно помню только что к уже имеющемуся форматированию он относился бережно,

и что каждая команда там занимала отдельную строку и начиналась с точки в

первой позиции. (Такая вот UNIX`овская заморочка, что мол ничего осмысленного

начинаться с точки не может. Там у них и в главном текстовом редакторе ed

(стареньком, маленьком и неудобном, за то работающем всегда — в том числе в

самых-самых тяжелых условиях, потому что с интерфейсом командной строки!)

поставить одинокую точку в начале строки — это выйти из режима набора текста в

командный.)

Это и дурацкий и-би-эм`овский формат .rtf — крайне примитивный (как и сам

аглицкий язык, что всегда вызывает непомерную сложность на следующем уровне),

отличающийся тем, что скобки там уже есть — фигурные. Типа для сохранения

контекста: всё что установлено в скобках, при выходе из них — отменяется.

И восстанавливается то, что было до. И еще там есть команды: слова,

начинающиеся с (обратной косой черты), и состоящие только из букв, потому что

дальше впритык идёт числовой аргумент (в том числе, говорят, что и

отрицательный, но я не видел), хотя может и отсутствовать. Еще эта самая

обратная косая черта служит там экранирующим символом (для себя и для скобок).

А вот всё остальное, что не скобки и не команды — сам текст.

Это и макрогенератор ТеХ (где букву Е традиционно пишут смещенной вниз на

пол строчки) и производные от него (типа LaTeX), который изначально придумал

лично Дональд Кнутт, когда захотел пристойно изображать в своих статьях

математические формулы. И там команды — тоже с символа

Это и уже упоминавшийся ПостСкрипт — вполне себе полноценный

алгоритмический язык, вернее его интерпретатор, каковой нынче встроен во все

лазёрные и струйные принтеры. (Мелкопроцессоры, ими управляющие, вишь стали

нынче весьма мощные.) А формат .pdf — суть программа на этом языке (немножко

урезанном).

Раньше-то всё было просто: разом и терминалом и принтером был телетайп

(разновидность электрической пишущей машинки), украденный на почте — там еще

на моей памяти с их помощью телеграммы передавали по четыре копейки за слово.

(А у одного мужика в командировке деньги кончились, так он послал жене

телеграмму из одного слова: "сторублируй"!)

В электрической пишущей машинке электрического только электромотор,

вращающий резиновый валик, около которого для каждого рычага-литероносителя

пристроилась такая полукруглая деталька... Которую, лёгким нажатием кнопки на

клавиатуре, слегка прижимает к этому валику. Дальше он её проворачивает, а она

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

оставляет на ней отпечаток литеры. (А то, боюсь, многие живую пишущую машинку

уже и не видели...) В механической пишущей машинке надо было колотить по

кнопкам со всей дури. При чем по разным — еще и с разной силою! Потому что

это усилие распределяется по площади литеры. И если А или Т напечатаются

нормально, Ж или Ш — бледно, то точка или запятая пробьют в бумаге дырочки!

(Ну бумага-то всё стерпит, но перед ней — красящая лента...)

Телетайп — это такая электрическая пишущая машинка, где на печатающий

механизм воздействуют не клавиши напрямую, а электромагнитики. А клавиатура

выдаёт им для этого коды нажатых кнопок. Которые можно пробить на перфоленту и

потом быстренько передать по линии связи (так обычно на почте и делали) или

посылать в линию связи сразу — чтобы их и удалённый телетайп отрабатывал...

А он либо печатает буковку, либо что-то делает — что умеет. Немногое: ПС, ВК,

ВШ, ГТ ЗВ (перевод строки — прокрутка на одну строку бумагоопорного валика,

возврат каретки, возврат на шаг, горизонтальная табуляция, звонок — реально

звякающий специательным колокольчиком)... Еще в нулевой странице ASCII (помним

еще, откуда она?) была пара команд то ли для установки и сброса табулостопа в

текущей позиции, то ли для переключения цвета (красящая лента нужна была

двухцветная!), которые потом приспособили для переключения регистров... А всё

остальное там — для оформления пакетов и управления коммутацией в телетайпетной

сети.

Далее, когда появились отдельно дисплеи (где маркер можно поставить в

любую точку экрана), и отдельно — принтеры, в том числе игольчатые, где можно

было изобразить что-то графическое, напрямую управляя отдельными иголками,

вспомнили про "эскейп-последовательности". На нулевой странице ASCII есть две

команды: АР1 и АР2 (она же ЕСЦ) — "авторегистр" 1 и 2 с кодами 10 и 27, первая

из которых — "экранирующая": отбирает "командный" смысл у следующего после

него кода, а вторая — наоборот: придаёт следующему после него коду специальный

смысл, позволяя учинять дополнительные команды. Сначала такие команды были

просты и немногочисленны. (Например как у VT-52 и его аналогов: в дополнение к

вышеперечисленным ПС, ВК, ВШ, ГТ, ЗВ, еще несколько штук: после EСЦ одна

буковка: A, B, C, D — перемещение маркера вверх, вниз, вправо, влево на одну

позицию; H, I, J, K — маркер в начало экрана; обратный перевод строки (как и

ПС, только на предыдущую строку, и если она крайняя — тоже с прокруткой

изображения); стереть от маркера до конца строки и экрана. Сложная — одна:

прямая адресация маркера: ЕСЦ Y и еще два байта — координаты, куда его

поставить. И последняя: ЕСЦ Z, на которую дисплей, если он есть, должен был

отозваться тремя байтами: ЕСЦ / Z.) Потом команды стали многочисленными,

сложными и навороченными. (Как у VT-100 и его аналогов.) У принтеров — тоже.

При чем кто-то придерживался неких стандартов де-факто, заимствуя систему

команд, например, у принтера фирмы Эпсон; кто-то придумывал свои собственные...

Но для более серьёзного полиграфического оборудования... А лазерный или

струйный принтер тоже уже можно причислить к этой категории... В общем, в

конце концов догадались, что чем передавать изображение по точкам, проще и

быстрее построить его на месте по куда более компактному описанию...

Уже упоминавшийся ПостСкрипт не спешит, как некоторые, рисовать указанные

ему графические примитивы... Сперва он строит абстрактный "путь" — траекторию,

добавляя эти самые примитивы к её концу. Возможно, замкнутую: там есть

специальная команда для её замыкания — соединения конца с началом. (Возможно,

это будут контуры буковки.) Которую, вместе с "листом", на коем она рисуется,

можно как хошь перенести, повернуть или отмасштабировать. И вот только потом

либо этот контур заливается указанным цветом, либо прорисовывается указанными

линиями (некоторой толщины, а то и пунктирности)...

Сам этот ПостСкрипт — вполне себе универсальный интерпретируемый язык

общего назначения. (Который, если что, как и Фокал, можно например использовать

в роли калькулятора.) Построен он на тех же принципах, что и язык Форт:

"стэкового" типа. (У нас так сделаны %r и %R в форматном выражении оператора

Write.) Всё с чем работаем — берётся со стека и что получилось — туда же

123 ... 1011121314
Предыдущая глава  
↓ Содержание ↓
↑ Свернуть ↑
  Следующая глава



Иные расы и виды существ 11 списков
Ангелы (Произведений: 91)
Оборотни (Произведений: 181)
Орки, гоблины, гномы, назгулы, тролли (Произведений: 41)
Эльфы, эльфы-полукровки, дроу (Произведений: 230)
Привидения, призраки, полтергейсты, духи (Произведений: 74)
Боги, полубоги, божественные сущности (Произведений: 165)
Вампиры (Произведений: 241)
Демоны (Произведений: 265)
Драконы (Произведений: 164)
Особенная раса, вид (созданные автором) (Произведений: 122)
Редкие расы (но не авторские) (Произведений: 107)
Профессии, занятия, стили жизни 8 списков
Внутренний мир человека. Мысли и жизнь 4 списка
Миры фэнтези и фантастики: каноны, апокрифы, смешение жанров 7 списков
О взаимоотношениях 7 списков
Герои 13 списков
Земля 6 списков
Альтернативная история (Произведений: 213)
Аномальные зоны (Произведений: 73)
Городские истории (Произведений: 306)
Исторические фантазии (Произведений: 98)
Постапокалиптика (Произведений: 104)
Стилизации и этнические мотивы (Произведений: 130)
Попадалово 5 списков
Противостояние 9 списков
О чувствах 3 списка
Следующее поколение 4 списка
Детское фэнтези (Произведений: 39)
Для самых маленьких (Произведений: 34)
О животных (Произведений: 48)
Поучительные сказки, притчи (Произведений: 82)
Закрыть
Закрыть
Закрыть
↑ Вверх