Развлекательный порталРазвлекательный портал


Общее
Игры
Apple
Android
Развлечения
Прохождение
Карта сайта

Конец близок? Орландо Блум рассказал о конфликтах со своей любимой
No Rest For The Wicked получила первый хотфикс в раннем доступе
Попавший в больницу Манукян заговорил о завершении карьеры

Objective-C и C++, рождение
🕑 11.10.2018 Общее 👀 52 просмотров

Удивительно, но всего 15-20 лет назад между поклонниками этих языков шла чуть ли не война. Асимметричная. Со стороны “ущемляемого меньшинства”. “Большинство” даже не подозревало о существовании противника и не сопротивлялось. Интересно: в наши дни кто-нибудь догадается какой из этих языков был “большинством”, а какой – наоборот? Открою еще одну Америку: у каждого из этих языков были и есть свои фирменные недостатки, и они оба относятся к великим языкам программирования. Автору этих срок довелось “пожить” в этих языках, 6 лет в C++ и 15 в Objective-C, что ни о чем не говорит и ничего не гарантирует. Кроме того, пожалуй, что автор кое-что про эти языки знает…

Кто родился раньше?

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

Вот что мне удалось установить: информация об этих языках была впервые опубликована в 18 томе авторитетного издания SIGPLAN, в 1983 году. Про Objective-C – в первом номере этого тома, в январе. Про C++ – в каком-то другом (не первом) номере. То есть, позже. Ура!

А теперь разберемся. Эмоции, бушевавшие двадцать с лишним лет тому назад, больше не искажают реальность, и теперь я могу писать про Objective-C объективно. Архив SIGPLAN в сети есть, но доступ к текстам статей… платный.

Но это не единственный источник информации об этих языках. В 1979 году, датский программист Бьярн Строустроп пришел к выводу (который хоть и перестал в наши дни быть очевидным, но все еще правильный), что объектно-ориентированный подход на порядок ускоряет и облегчает разработку сложного программного обеспечения.

Вот только простому программисту в 1979 году этот подход был недоступен. А программы, которыми мы пользуемся, которые сразу любим и ненавидим, пишутся именно “простыми” программистами, которые занимаются этим непростым делом по 8-10 часов в день пять дней в неделю, год за годом…

Проект, разрабатываемый для себя, Бьярн назвал “C с классами” (C with Classes). Суть замысла была проста и логична: из всех преимуществ ООП (объектно-ориентированное программирование) важнее всего то, что ускоряет и облегчает разработку.

Поэтому “C с классами” был объектно-ориентированным языком только в исходном коде, где существовали классы и объекты, наследование и другие признаки ООП. Компилятор превращал все эти теоретические построения в обычный процедурный код, который не уступал (в начале почти не уступал) по эффективности коду, написанному на традиционных языках программирования обычным способом, без привлечения магии.

С 1979 по 1983 Бьярн выполнил колоссальный объем работы, спроектировав и реализовав “улучшенный C”, добившись его устойчивой работы и даже опубликовал несколько статей о CwC (C with Classes), которые привлекли к ним внимание. В 1983 году Бьярн решил, что язык имеет смысл не только для него, и что пришло время для его активного продвижения. Бьярн переименовал его в C++, написал статью в SIGPLAN и приступил к написанию книги “C++ Programming Language”.

C++ впервые был упомянут в 1983, в публикации в SIGPLAN – это правда, но не вся правда. К тому моменту это был реально существующий язык, его уже пробовали сотни (или даже тысячи) добровольцев. Перед публикацией его, всего лишь, переименовали в “дважды приплюснутый Си”.

В 1985 году C++ стал продаваться, и к началу 90-х тал главным языком программирования во всем мире. Я начал им пользоваться в 1995, по сравнению с Object Pascal C++ был как Боинг 787 по сравнению с кукурузником. Сложнее, разнообразнее, современнее. Мощнее, в конце концов.


Освоение C++ требовало времени и приличных усилий (язык непрост), но он того стоил.

Замысел, приведший к появлению Objective-C

Статья в первом номере 18 тома SIGPLAN называлась “The object-oriented pre-compiler: programming Smalltalk 80 methods in C language”. То есть, “Объектно-ориентированный пре-компилятор: программирование методов Smalltalk 80 на языке C”. В статье, и в отзывах на неё, для обозначения предка Objective-C использовали аббревиатуру OOPC.

В 1983 году OOPC появился в публичном пространстве, находясь в эмбриональной фазе своего развития. Он был чем-то вроде “C с классами”, но от еще одной команды.

Когда соотношение числа использующих Objective-C и C++ было примерно 1:1000, если не 1:10000 (умозрительная оценка), почему-то это причиняло боль и требовало оправданий. Оправдания были найдены: создатели Objective-C, Брэдли Кокс и Том Лав, названные в википедии “учеными”, будто бы просто экспериментировали, и вообще не планировали для него никакого коммерческого применения.

Просто так, ради чистой науки. Глава и владелец частной компании StepStone Брэд Кокс и один из сотрудников той же компании Том Лав. Ну да…

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

Но мы исправим их ошибку: замысел был что надо.

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

Это, естественно, преувеличение и шутка юмора, но реально существующая проблема в ней отражена точно. Есть ли способ решения этой проблемы? Есть.

Повторное использование кода (reuse). Код, который уже обкатан на пользователях, в котором уже выявили и истребили всех (почти всех) багов, заведомо надежнее чем новый, только что написанный, код.

В объектно-ориентированных средах программирования (типа Smalltalk) нужный эффект достигается проще и быстрее, чуть ли не сам собой (или при соблюдении определенной гигиены при принятии решений). Вот только… Этот подход, как уже сообщалось в эпизоде про создание C++, простому программисту в начале 80-х был практически недоступен.

Использовать Smalltalk можно было только на мощных рабочих станциях (то есть, на очень дорогих), даже на этих станциях написанный на Smalltalk код был невероятно медлителен. И лицензия на сам Smalltalk была, мягко говоря, не бесплатной.

А кроме того, язык был слишком необычен – как используемыми в нем принципами (всё, что в нем есть – объекты, включая числа и классы; все действия, в том числе арифметика, осуществляются отправкой сообщений от объекта к объекту…), так и синтаксисом.

Это не так сложно, как кажется. Язык был разработан в Xerox PARC (Palo Alto Research Center) в Learning Research Group (LRG, группе исследований процесса обучения), проект и группу возглавлял Алан Кэй, и разработчики Smalltalk проводили опыты над детьми.

Дети от 8 до 15 лет, после короткого и совсем несложного обучения основным принципам Smalltalk, запросто решали очень сложные задачи, приводя гостей центра в изумление. На решение подобных задач у взрослых и опытных программистов ушли бы месяцы…

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

Рождение OOPC (Objective-C)

Брэд, Том и оставшиеся безымянными сотрудники StepStone, разработали OOPC, язык для пре-компилятора – код на “чистом C” с добавленными в него обращениями к объектно-ориентированной среде времени исполнения, полностью реализующей ОО-парадигму Smalltalk, за исключением двух её “фич”: сборщика мусора и замыканий.

ОО-парадигма Smalltalk звучит страшновато, на самом деле в С были добавлены три или четыре грамматические конструкции, и она директива. Минимум!

И сам пре-компилятор, который превращал исходные коды на OOPC в коды на обычном стандартном C – который скармливали стандартному компилятору, получая на выходе работающие программы.

Все это делалось в одним из Unix’ов, и к 1983 году работало безупречно. Среда времени исполнения, на порядок более “легкая”, чем аналогичная среда Smalltalk, устанавливалась в Unix’е легко, непринужденно и стандартными средствами.

Для тех, кто понимал что к чему, эффект был потрясающий.

Помимо “повторного использования кода”, о котором мечтали Брэд и Том, и которое эта система разве что делала более удобным и естественным (но его она не гарантировала), это была настоящая действующая объектно-ориентированная среда, аналоги которой стоили десятки (если не сотни) тысяч долларов, которой было достаточно самого обычного компьютера.

Замечательные инженеры и отличные программисты, они так и не смогли превратить созданное ими чудо в источник доходов, сделав его достоянием всего мира. Сколько они хотели за OOPC, неизвестно. Книгу (куда более необходимую для OOPC, чем для C++) они даже не пытались написать.

Канал распространения – через знакомых, знакомых этих знакомых, никакой рекламы. А Интернета еще не было. Трети желающих OOPC достался вообще за так.

В OOPC управление памятью (создание и уничтожение объектов) было делегировано C. Никаких счетчиков ссылок, они появились только в NeXTSTEP 2.0.

В базовом классе (благодаря особенностям OOPC, проблема “хрупкого базового класса” библиотекам OOPC не грозила) Object, был реализован механизм превращения любого объекта в “плоское” представление, для сохранения на диск, и для восстановления из “плоского” представления, и два метода, save и load, для переопределения в подклассах.

Библиотека OOPC была фрагментом библиотеки Smalltalk, в которой отсутствовало все, что связано с графическим пользовательским интерфейсом, с перехватом и обработкой событий, с графикой в любом виде – в современных терминах это был Foundation Kit.

В конце 80-х, когда NeXT взяла в аренду OOPC, язык и базовая библиотека OOPC почти не изменились. У StepStone, к тому времени, уже был полноценный компилятор Objective-C, но NeXT он чем-то не удовлетворил – и они разработали собственный, основанный на GCC.

Продолжение следует

👍 0 👎 0

>>>Ссылка для отзывов и предложений<<<


Ещё новости с тэгом Общее






















Популярное 2 недели


Сожжение ретроградного Меркурия: знаки зодиака, которые разом избавятся от проблем 11 апреляСожжение ретроградного Меркурия: знаки зодиака, которые разом избавятся от проблем 11 апреля
🕑 10.04.2024 Развлечения Гороскопы Гороскоп 👀 81 просмотров

Как запретить писать в Ватсап и заблокировать спам-сообщенияКак запретить писать в Ватсап и заблокировать спам-сообщения
🕑 09.04.2024 Apple Советы Трюки Обзоры Приложений Для IOS Mac Работе Социальные Сети 👀 143 просмотров

Все не так, как мы ожидали: россиянам рассказали о погоде до конца недели Все не так, как мы ожидали: россиянам рассказали о погоде до конца недели
🕑 08.04.2024 Развлечения Мой Дом Семья 👀 83 просмотров

Прогноз на неделю 8 — 14 апреля по дате рожденияПрогноз на неделю 8 — 14 апреля по дате рождения
🕑 08.04.2024 Развлечения Гороскопы Гороскоп 👀 98 просмотров

Орбакайте спешно уехала из США после скандала вокруг ее концертовОрбакайте спешно уехала из США после скандала вокруг ее концертов
🕑 08.04.2024 Развлечения Звезды Новости 👀 136 просмотров

8 апреля — День российской анимации8 апреля — День российской анимации
🕑 07.04.2024 Развлечения Яркое Детство Календарь 👀 174 просмотров

Впалые щеки, торчащие кости: от прежней Загитовой не осталось и следаВпалые щеки, торчащие кости: от прежней Загитовой не осталось и следа
🕑 06.04.2024 Развлечения Звезды Новости 👀 88 просмотров

«Забрали, чтобы сжечь»: соседка звезды «Дома-2» раскрыла страшную причину ее смерти«Забрали, чтобы сжечь»: соседка звезды «Дома-2» раскрыла страшную причину ее смерти
🕑 06.04.2024 Развлечения Звезды Новости 👀 147 просмотров

Юлия Такшина раскрыла секрет своего гардероба — все вещи модные, а тратиться не нужноЮлия Такшина раскрыла секрет своего гардероба — все вещи модные, а тратиться не нужно
🕑 06.04.2024 Развлечения Звезды Новости 👀 127 просмотров

Как продлить срок службы аккумулятора Apple WatchКак продлить срок службы аккумулятора Apple Watch
🕑 06.04.2024 Apple Советы Трюки Watch Ремонт IPhone Работе 👀 96 просмотров

10 апреля — День братьев и сестер 10 апреля — День братьев и сестер
🕑 06.04.2024 Развлечения Яркое Детство Календарь 👀 278 просмотров

«Может себе позволить»: Подольской приходится оправдываться за некрасивые привычки Преснякова«Может себе позволить»: Подольской приходится оправдываться за некрасивые привычки Преснякова
🕑 06.04.2024 Развлечения Звезды Новости 👀 151 просмотров

Советы красоты для девочек Советы красоты для девочек
🕑 06.04.2024 Развлечения Яркое Детство Советы Родителям 👀 192 просмотров

Таро-прогноз на неделю 8 — 14 апреля для каждогоТаро-прогноз на неделю 8 — 14 апреля для каждого
🕑 06.04.2024 Развлечения Гороскопы Гороскоп 👀 75 просмотров

>>>Ссылка для отзывов и предложений<<<

Новости в картинках


Конец близок? Орландо Блум рассказал о конфликтах со своей любимой
No Rest For The Wicked получила первый хотфикс в раннем доступе
Попавший в больницу Манукян заговорил о завершении карьеры
Игроки хвалят Bloober Team за изменение внешности Джеймса в ремейке Silent Hill 2
Найдены главные актёры для нового *Офиса*
По мнению Свена Винке, Baldur*s Gate 3 добилась успеха благодаря правильному обращению с игроками
В GTA 6 может появиться трассировка лучей. Rockstar Games ищет разработчиков с опытом работы с современными API RT
IOS 18 – самое большое обновление iPhone всех времен! Что ...
И месяца не продержались? Муцениеце сообщила о расставании с новым бойфрендом
Как улучшить звук наушников на Андроиде
Играем во всё абсолютно бесплатно: подборка топовых игр для iPhone
Климова в платье с декольте и бантами покорила гостей ММКФ
Женившая сына Жасмин блеснула экстремальным декольте на публике — конфуз был близок
iPhone 17 Plus будет меньше, чем iPhone 16 Plus и iPhone 15 Plus
Bethesda постаралась минимизировать влияние нового обновления Fallout 4 на работу многих модов
Сандра И Сенсиндивер возглавит корпорацию *Вейланд-Ютани* в сериале *Чужой*
70-летней Успенской стало плохо с сердцем — врачи и госпитализация
Режиссёр хоррора *Омен. Непорочная* пришёл в ужас от российской локализации
ТОП-5 полезных приложений для Андроид ТВ, с которыми ты забудешь про настройку телевизора
В *Фуриосе* будет 15-минутная экшен-сцена, над которой работали 200 каскадёров
Разработчики обновили страницу ремейка Silent Hill 2: пользователи заметили новый внешний вид главного героя
Анонсирована фигурка Кэмми из серии Street Fighter за 62 тысячи рублей
Бета-версия Frostpunk 2 получила хвалебный трейлер, подчеркивающий положительные впечатления
Intel подтверждает поддержку памяти DDR5-8800 для поколения Xeon 6
Samsung Galaxy Z Flip 6 появится на Geekbench за несколько месяцев до анонса
Разработчики No Rest for the Wicked обещают улучшить производительность и больше возможностей в следующих обновлениях
Личную переписку братьев Меладзе слили в Сеть — вот почему продюсер развелся с Брежневой
Игроки сравнили локации из трейлера Kingdom Come 2 с реальными местами
Моддеры запустили GTA 5 на Nintendo Switch
Почему я не рекомендую покупать смартфоны HUAWEI на процессорах Kirin
Сафронов о ссоре Пугачевой с друзьями — скользкое поведение мужа всему виной
В Starfield нашли одинаковых сюжетных NPC и обвинили авторов в лени
Винни Пух выходит на охоту в дублированном тизере *Крови и мёда 2*
На PC выйдет бесплатный тактический шутер Arena Breakout
Появились первые изображения Apple Watch Series X
Обновление для PUBG на консолях принесло ряд значительных изменений, которые ранее были добавлены на ПК
В World of Warcraft появятся бородатые дворфийки и раса харрониров
Как удобно читать новости с любимых сайтов на iPhone. Работает даже с AppleInsider.ru
Новый хотфикс ролевой игры *Смута* устранил неполадки, связанные с механикой скрытности
Появились новые кадры боевика *Фуриоса: Хроники Безумного Макса*
«Мне его жалко»: Михалков рассказал о главной ошибке сбежавшего Слепакова
Счастливая Асмус заговорила о второй беременности — от кого родит актриса?
Мобильный процессор AMD Strix Halo Zen 5 RDNA3.5 на базе чиплета, по слухам использует 256-разрядный LPDDR5X-8533
Выяснились причины отказа Андреевой от совместных выходов с Бондарчуком
Данные показывают, что S.T.A.L.K.E.R. 2: Heart of Chornobyl - самая ожидаемая игра Game Pass в 2024 году
Обновление 1.6.4 для Stardew Valley теперь доступно на ПК
Вышел официальный релизный трейлер к игре Tales of Kenzera: Zau
В обновлении 1.50 для American Truck Simulator получат обновления International LT и International LoneStar
Успенская утерла нос Киркорову — побила певца на его же поле
Глобальный кризис в отношениях: Пугачева потеряла контакт с Орбакайте
Какая красотка! Похорошевшая дочка Тома Круза отметила свое совершеннолетие
Amazon продлил сериал «Фоллаут» на второй сезон
No Rest for the Wicked неплохо стартовала в Steam, но технические проблемы снижают отзывы пользователей
Как пользоваться ChatGPT 4 в России бесплатно без VPN и иностранного номера телефона
Никита Кологривый на новых кадрах «Возвращения попугая Кеши»
Похудевшая Заворотнюк рассказала о своей болезни и обратилась к друзьям
Prison Architect 2 перенесли на сентябрь
Kingdom Come: Deliverance II получит русскую текстовую локализацию
Для ремейка хоррора Alone in the Dark вышел хвалебный трейлер
Kingdom Come Deliverance 2 будет верна истории

ePN © 2023 Все права защищены.