Главная Статьи Ссылки Скачать Скриншоты Юмор Почитать Цитаты Tools Mac OS X Проекты Обо мне Мысли Гостевая

Mac OS X и программирование для нее

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

Немного истории, операционная система NextStep

Свое происхождение Mac OS X ведет от легендарной операционной системы NextStep.

Когда в 1985 году один из основателей компании Apple Стив Джобс вынужден был уйти из нее, он основал новую компанию NeXT, которая должна была заниматься созданием принципиально нового компьютера и, естественно, операционной системы для него.

Цель стояла в создании компьютера для мира "of interpersonal computing". Компьютер должен быть позволять группам людей легко и удобно работать вместе, даже если они находились по разные стороны земного шара.

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

Разработанная операционная система называлась NextStep. Это была полностью 32-битовая операционная система (с полноценной многозадачностью), в основе которой лежала FreeBSD и микроядро Mach.

Вся работа с графикой в ней осуществлялась через Display Postscript, т.е. можно было использовать полупрозрачность, кривые Безье, сложные области и много другое. Использование Display Postscript позволяло издательским приложениям получать на экране изображение, точно соответствующее получаемому при печати.

Сам компьютер Next содержал чип DSP и операционная система предоставляла удобные средства для работы со звуком, включая возможность вложения голосовых сообщений практически в любые документы (задолго до OLE).

Однако жемчужиной NextStep'а стала мощнейшая библиотека готовых объектов и уникальная среда разработки интерфейсов Interface Builder.

В основу библиотеки объектов лег разработанный Брэдом Коксом (Brad Cox) необычайно гибкий и простой язык - Objective-C, фактически позволявший использовать объектную модель языка Smalltalk в языке С.

В отличии от запутанного и громоздкого С++ язык Objective-C крайне прост - программисту на С достаточно всего нескольких дней для освоения Objective-C. Вместе с тем язык обладает такой гибкостью, которая даже не снилась программистам на С++.

За счет использования языка Objective-C и его объектной модели создателям NextStep'а удалось легко завернуть в объекты как основные структуры данных (строки, массивы, словари и т.п.), так и объекты, используемые для построения графического пользовательского интерфейса.

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

Созданный интерфейс можно было сразу же попробовать в действие (не имея при этом вообще ни одной строчки кода - ряд возможностей осуществлялся через установку связей между объектами).

Еще одной возможностью NextStep'а была поддержка распределенных объектов (PDO - Portable Distributed Objects) - работа с удаленными объектами осуществлялась крайне просто и красиво и немалую роль в этой простоте сыграл язык Objective-C .

Уже в 1990 году все это не только великолепно работало, под NextStep уже был создан ряд серьезных приложений, включая электронные таблицы, текстовые процессоры и многое другое.

А что же в это время было у M$ - а у них только-только вышли Windows 3.0. До появления каких-либо средств визуальной разработки (даже таких убогих как Visal Basic) оставались годы. Кроме того, IMHO как VB, так и Delphi заметно уступают средствам разработки в NextStep.

При этом NextStep обладал хорошо продуманным и красивым пользовательским интерфейсом - достаточно просто посмотреть на скриншоты. Кстати вы можете обратить внимание, что ряд визуальных элементов у Windows 95 крайне напоминают соответствующие элементы NextStep'а.

Также в состав NextStep'а входил стандартный набор средств из Unix, включая shell, gcc, gdb и многое другое.

Вполне закономерно, что NextStep была признана лучшей средой для разработки.

Однако цена на сам компьютер Next была довольна велика ($4000 и выше), что сильно сдерживала его распространение. Поэтому через несколько лет Next была вынуждена прекратить производство компьютеров и заняться исключительно операционной системой и продуктами под нее.

Так система была портирована под Sun и компьютеры на базе Intel 486.

Так что к моменту выхода Windows 95 уже была версия NextStep, которая отлично работала на тех же компьютерах, что Windows 95, но при этом была полноценной 32-битовой операционной системой с мощнейшей графикой и высокой надежностью.

Фактически M$ Windows 95 уступала NextStep'у по всем параметрам с огромным отрывом (мягко говоря) за исключением цены и огромной маркетинговой компании по пропихиванию Windows 95.

Windows NT в то время также не составляло конкуренции NextStep'у, уступая как по надежности, графике, так и по средствам разработки.

Как я читал, на первых Next-ах была надпись - "We believe that a small group of people can change the world".

Вот одна интересная с исторической точки зрения статья о Mac OS X и NextStep.

NextStep и idSoftware

Мало кто знает, что разработка игр Doom и Quake велась именно на компьютерах Next. Одной из причин отсутствия редакторов уровней от idSoftware (как и ряда других инструментов) являлось именно то, что соответствующие инструменты были написаны для NextStep.

Эта страница посвящена редактору уровней для игры Quake, использованному idSoftware. На ней можно посмотреть скриншоты редактора и скачать его исходный код.

Более того, id -это стандартный тип в языке Objective-C, обозначающий указатель на объект.

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

В этой статье можно получить более полную информацию о NextStepIntro to NEXTSTEP

Несколько скриншотов. Обратите внимание на простоту и продуманность интерфейса.

На следующих двух скриншотах - NextStep на компьютерах Sun.

NextStep on Sun screenshot

Легендарный DooM идет на версии NextStep для РС.

Основа программирования для Mac OS X

В конце 1996 года произошло фактическое объединение компаний Apple и Next (точнее, компания Apple приобрела Next) и NextStep был взят за основу для новой операционной системы для Маков.

На тот момент времени у Apple дела с их собственной операционной системой были весьма плачевными (мне довелось портировать приложение под Mac OS 7 и эта операционка оставила впечатление чего-то громоздкого и жутко неудобного, аналогичные комментарии есть у Кармака - см. ссылке ранее в тексте).

Подробнее об этом можно прочитать здесь - статья об объединении Apple Computers Inc. и NeXT Software Inc.

Таким образом, за основу для будущей операционной системы (Mac OS X) был взят NextStep, однако был сделан и ряд изменений.

Так основу всей графики в Mac OS X составляет не Display Postscript а Quartz (иногда называемый DisplayPDF). Работа с графикой на низком уровне ведется через OpenGL.

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

Также в Mac OS X была добавлена полная поддержка OpenGL и языка Java (для него были сделаны интерфейсы для всех основных классов).

Еще одним отличием Mac OS X от NextStep'а стало наличие фактически двух платформ для разработки Carbon и Cocoa. Платформа Carbon опирается на С/С++, и обладает меньшей гибкостью и удобством.

Платформа Cocoa - это фактически платформа разработки из NextStep, ориентированная на использование языка Objective-C.

Также в Mac OS X было добавлено много новых технологий и классов.

С точки зрения графики очень интересна технология CoreImage, позволяющая осуществлять обработку изображений непосредственно на GPU. При этом можно самому писать новые фильтры на некотором подмножестве языка GLSL.

Планируется целый ряд статей по программированию под Mac OS X, а пока ниже дается некоторая минимальная информация и ссылки на ресурсы.

Одной из особенностей программирования для NextStep/Mac OS X является фокус на композицию объектов и делегирование. К сожалению, в большинстве доступных книг по ООП этим важным понятиям практические не уделяется внимания, и понятно почему - они очень плохо вписываются в основные положения С++ и Java.

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

Простейшим примером подобной связи является делегирование - объект может передать запрос на выполнение произвольной операции другому объекту.

Программирование под Mac OS X включает активное использование паттернов проектирования - в систему вошли ПРАКТИЧЕСКИ ВСЕ паттерны из "DP". Некоторые паттерны (в основном связанные с созданием новых объектов) в явном виде не используются просто по причине их ненужности - язык Objective-C предоставляет достаточно возможностей для реализации так называемого виртуального конструктора и использование специальных паттернов для этой цели просто не нужно.

В принципе для разработки приложений под Mac OS X можно использовать не только Objective-C, но и С, С++, Java, а также различные их комбинации.

Но лучше всего использовать (особенно для приложений со сложной логикой и/или графическим пользовательским интерфейсом) именно язык Objective-C ( или язык Objective-C++ - в некотором смысле объединение Objective-C и C++, это позволяет легко работать с абстрактными типами данных, сохраняя при этом гибкость).

Первое что нужно - это правильная книга - Cocoa Programming for Mac OS X, 2nd Edition.

Также очень много полезной документации содержится на сайте developer.apple.com.

Одним из наиболее правильных документов является Cocoa Fundamentals, свободно скачиваемый с developer.apple.com.

Большое количество ссылок можно найти в разделе ссылок.



Valid HTML 4.01 Transitional

Напиши мне
Используются технологии uCoz