Objective-C и C++, рождение

Удивитeльнo, нo всeгo 15-20 лeт нaзaд мeжду пoклoнникaми этиx языкoв шлa только ли нe вoйнa. Aсиммeтричнaя. Сo стoрoны “ущeмляeмoгo мeньшинствa”. Интeрeснo: в нaши существование ктo-нибудь дoгaдaeтся кaкoй из этиx языкoв был “бoльшинствoм”, a кaкoй – нaoбoрoт? Oткрoю eщe oдну Aмeрику: у кaждoгo с этиx языкoв были и eсть свoи фирмeнныe нeдoстaтки, и oни oбa oтнoсятся к вeликим языкaм прoгрaммирoвaния. Крoмe тoгo, пoжaлуй, чтo aвтoр кoe-чтo прo сии языки знaeт…

Ктo рoдился рaньшe? Во что мне удалось установить: информация об сих языках была впервые опубликована в 18 томе авторитетного издания SIGPLAN, в 1983 году. Насчет Objective-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++ стал реализовываться. Ant. покупаться, и к началу 90-х тал главным языком программирования нет слов всем мире. Я начал им пользоваться в 1995, вдоль сравнению с Object Pascal C++ был как Боинг 787 ровно по сравнению с кукурузником. Сложнее, разнообразнее, современнее. Мощнее, в конце концов. Проработка C++ требовало времени и приличных усилий (язык непрост), а он того стоил. То есть, “Объектно-ориентированный пре-программа: программирование методов Smalltalk 80 на языке C”. В 1983 году OOPC появился в публичном пространстве, находясь в эмбриональной фазе своего развития. Симпатия был чем-то вроде “C с классами”, но через еще одной команды. Когда соотношение числа использующих Objective-C и C++ было например 1:1000, если не 1:10000 (умозрительная оценка), с чего-то это причиняло боль и требовало оправданий. Оправдания были найдены: создатели Objective-C, Брэдли Пища для домен и Том Лав, названные в википедии “учеными”, будто бы элементарно экспериментировали, и вообще не планировали для него никакого коммерческого применения. Несложно так, ради чистой науки. Глава и владелец частной компании StepStone Брэд Швелькокс и один из сотрудников той же компании Книжка Лав. Ну да…
По сравнению с понятной и привлекательной угоду кому) обычного программиста концепцией C++, замысел Брэда и Тамара был глубже и, поскольку никто так и не туман его внятно и понятно изложить, казался заумным и притянутым по (по грибы) уши. Но мы исправим их ошибку: козни был что надо. По старому программистскому поверью, в каждых ста строках нового стих, независимо от того насколько тщательно и педантично некто тестируется, обязательно есть два серьезных бага, которые проявят себя чуть оказавшись в руках пользователей. Это, естественно, преувеличение и в шутку юмора, но реально существующая проблема в ней отражена вправду. Есть. Код, который уже обкатан на пользователях, в котором поуже выявили и истребили всех (почти всех) багов, самоочевидно надежнее чем новый, только что написанный, адрес. Вот только… Этот подход, как уже сообщалось в эпизоде насчет создание C++, простому программисту в начале 80-х был только что не недоступен. Использовать Smalltalk можно было только получи и распишись мощных рабочих станциях (то есть, на очень дорогих), ажно на этих станциях написанный на Smalltalk адрес был невероятно медлителен. И лицензия на сам Smalltalk была, ласково говоря, не бесплатной. Это не так петляво, как кажется. Дети от 8 до 15 планирование, после короткого и совсем несложного обучения основным принципам 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. Продолжение следует

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *