
           .gif)

Александр Сиротинин, sir@irk.ru
У истоков...
|
Вновь наша газета предлагает вашему вниманию материал о компьютерах Macintosh. Пусть Mac'овая платформа опять оказывается лучше Witnel'овской - в этой статье с позиции человека с «яблочными» вкусами. Сравнивая две идеологии и узнавая о них что-то новое - все равно хорошее или плохое, вы сами задумаетесь об истинных ценностях информационного мира и лишний раз проверите, в какую сторону склоняются весы выбора "рабочей лошадки" в облике вычислительного устройства.
Продолжение. Начало в N 18(49) "CR".
Преимущества Мак ОС над другими операционными системами - 4. Организация ресурсов
Программисты живут в мире понятий, которые для непосвященного - абсолютно темный лес. Фактически, это представители "чуждого разума", которым иногда приходится в их творениях напрямую обращаться к пользователю. Многие из программистов давно утратили "связь с народом", и когда меню, текстовые сообщения, картинки и курсоры хоронились в глубинах непроходимого кода программ, и доступ к их созданию и изменению был целиком и полностью в руках программистов - людей, забывших нормальный человеческий язык, пунктуацию и правописание, последствия бывали ужасными... Пока...
Пока Apple Computer Inc не изменила расстановку сил с помощью элегантной и несложной для понимания идеи "ресурсов". Ее разработчики разделили файл (в том числе и файл программы) на 2 четко разграниченные части (фактически, на 2 файла): на подраздел (Fork, = развилка дорог, разветвление) данных и подраздел ресурсов. В подразделе ресурсов в "доступной пониманию человека" форме хранились все эти самые текстовые сообщения, картинки, меню, курсоры, иконки, окна - и многое другое. Отныне любой пользователь мог, не опасаясь за последствия, исправить все, что угодно...
Чтобы еще больше облегчить жизнь непрограммистам, сама Apple разработала программу ResEdit, а другая американская фирма Mathemaestetics - Resorcerer, с помощью которых изменение ресурсов стало еще проще. Ресурсы на Маке существуют обособленно, они всегда и легко доступны, они очень хорошо задокументированы. Подраздел ресурсов состоит из некоторого числа типов (в файле различных типов не может быть больше чем несколько тысяч), в каждом типе может быть от нуля до 64000 различных пронумерованных "экземпляров" ресурсов. Типы ресурсов обозначаются теми же самыми 4-хсимвольными "словечками", какие используются для обозначения типов и создателей файлов, а также очень широко применяются в MacOS. Сначала Apple оставила за собой все "мнемоники" состоящие из заглавных латинских букв, а также значка "#" для ресурсов, состоящих из множества повторяющихся элементов.
Например, ресурсы типа WIND содержат описания окон: тип окна (с кнопочкой закрытия вверху или без, с закругленными краями или нет, с планкой заголовка или без нее), его размеры и положение на экране, должно ли оно стать видимым при его создании, а также какой заголовок нужно выводить в поле заголовка. Со временем информации, связанной с окнами, и которую удобнее хранить в ресурсах, стало больше. Но ResEdit и Resorcerer часто скрывают сложности от глаз пользователя.
Программист, когда он "заказывает" для некоторых нужд программы "новое окно", может попросить Mac OS "сделать для него окно такого-то типа, в таком-то месте, такого-то размера, с таким-то именем...", а может просто указать: "сделай-ка мне окно как описано в ресурсе номер ..." Во втором случае, пользователь несколько десятков лет спустя может причудливым образом изменить форму и поведение некоторого окошка в старой программе... Для многих "стандартных" типов ресурсов, таких как WIND, MENU, ALRT и т.п. есть специальные "команды", типа GetMenu или GetWindow... Вообще, любой ресурс можно "всосать" в программу с помощью GetResource... Начиная с 1986 года, Apple захватила и все мнемоники, состоящие целиком из маленьких буковок...
Все, связанное с ресурсами в Mac OS, исчерпывающе точно и без умолчаний отражено в документации. Для своих нужд каждый программист может без особых усилий создавать ресурсы и комплексы ресурсов любой сложности (с повторами, циклами, условными ответвлениями и т.п.), ресурсы, содержащие исполняемый
код, и так далее...
Многие типы ресурсов (в том числе и внедренные силами "третьих фирм") стали своеобразным стандартом в Мак ОС. Вообще же, в значительных по размерам программах используются сотни и сотни типов ресурсов, большая часть из которых разрабатывается специально для этой программы.
Немаловажное свойство ресурсов на Маке - "цепочки ресурсов". Дело в том, что подразделы ресурсов всех файлов, открытых в данном процессе, остаются доступными данному процессу. Файл System является ничем иным, как просто большим хранилищем разнообразных ресурсов. Он всегда открыт, пока работает Mac OS. Если программа запрашивает ресурс типа Abcd с номером 0, и этого ресурса не оказывается в файле программы, ОС ищет его "по цепочке вверх" - то есть, в системном файле. Многие программы работают не только с ресурсами "в себе", но и с ресурсами в своих документах, то есть, в файлах, которые эти программы открывают. Заказанный Abcd с номером, скажем, 32100, сначала ищется в подразделе ресурсов документа, затем - в подразделе ресурсов программы, затем - в системе. Если и в программе, и в документе, есть такой ресурс, будет использован первый обнаруженный.
Подробнее об этом можете прочитать на страничке http://developer.apple.com/techpubs/macos8/mac8.html.
Ряд других систем тоже внедрили в свои произведения аналогичные решения. Но... Скажем, реализация ресурсов в Windows, повторяя в общих чертах основную идею, совершенно упускает из виду некоторые принципиально важные моменты... Ресурсы в NextStep/OpenStep/Rhapsody/MacOS X Server реализованы
несколько по другому, представляя из себя самые настоящие иерархические каталоги с ресурсами-файлами... Для пользователя, не вооруженного специальными инструментами, такая иерархия воспринимается как один-единственный файл... Фактически, такой подход позволяет говорить о наличии "нескольких ресурсовых подразделов" у некоторых специальных файлов.
|

           .gif)
|