Сколько стоила NeXT Computer в 1987?

Стив вложил в NeXT 7 миллионов долларов. Кроме того, он оплатил, из своего кармана, создание фирменного стиля и некоторые другие мелочи, в пределах нескольких сотен тысяч долларов. Дохода у компании не было никакого. Попробуйте угадать, сколько стоила NeXT Computer Inc в начале 1987 года…

Сколько стоила NeXT Computer в 1987? Фото.

Продолжение. Предыдущие серии здесь и здесь.

Если вы читали первую серию в цикле про Pixar, вы в курсе бурной активности Стива Джобса, пытавшегося завоевать для Pixar Imaging Computer рынок медицинской техники.

Он встречался с разными людьми, вел многочисленные переговоры, и однажды судьба свела его с миллиардером из Техаса, Россом Перо. Pixar Imaging Computer Перо не увлек, но другое начинание Стива вызывало у него живой интерес, почти любопытство. И Стив не обманул его надежд. Сумел обаять.

Росс Перо выразил желание приобрести 15% NeXT Computer…

Перо… жар-птицы?

Узнав про желание Росса, Стив изобразил задумчивость, стал что-то считать – и пообещал вернуться к этой теме через несколько дней.

Через неделю, Стив сообщил Россу о своем согласии уступить 16% NeXT Computer за 20 миллионов долларов. 16 – чтобы сумма была круглей. То есть, стоимость NeXT Computer, со всеми её активами, пассивами, дубовыми столами на первом этаже и котом Гейтсом, называлась равной 125 миллионам долларов.

Росс ответил через несколько дней. Он принимал предложение.

Росс Перо не был идиотом (идиоты не становятся миллиардерами), и отлично понимал что NeXT стоит раз в двадцать меньше – но, тем не менее, он внес 20 миллионов долларов на счет компании, и вошел в состав её совета директоров, избавив Стива от необходимости еще раз залезать к себе в карман. Вложенные в NeXT деньги подходили к концу, а Pixar быстро опустошала его личный счет – если бы не Росс, Джобсу пришлось бы нелегко.

В Кремниевой долине и на Уолл-Стрит решили, что Росс вложил средства не из деловых, а из чисто эстетических соображений. Всем было любопытно, что за сюрприз приготовил им Стив Джобс на этот раз. К решению Перо, вопреки традициям, отнеслись с пониманием.

Росс Перо ушел в отставку из совета директоров NeXT Computer в 1991 году, но вовсе не из-за того что он перестал верить в Джобса и в NeXT. Он знал, что несмотря на ошибки и неудачи, компания пробьет себе дорогу к вершинам. Рано или поздно.

У него появилось более важное дело.

Росс Перо выставил свою кандидатуру на пост президента США на выборах 1992 года – и стал самым популярным независимым кандидатом на этот пост за всю историю страны. Он набрал 18,9% голосов избирателей: за него проголосовало двадцать с лишним миллионов человек.

На президентских выборах 1996 года он был уже кандидатом от созданной им партии прогресса – но на этот раз он набрал чуть больше 8%, и больше с политикой не связывался. Прогрессу в наши дни, почему-то, всё чаще не везет.

От NeXT Computer он не получил ни цента – и ничего не требовал. Росс хоть и не входит в сотню самых богатых граждан США, живет не слишком плохо. В 2012 он был сто первым по уровню личного капитала в США.

Почему Objective-C?

Сколько стоила NeXT Computer в 1987? Почему Objective-C? Фото.

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

Это решение вызывало у всех, кто не до конца владел ситуацией, чуть ли не возмущение.

Хотя… Что взять с сумасшедших? Пока речь шла о крохотной компании, которая вот-вот поднимет белый флаг, несмотря на все её прекрасные затеи, это считалось еще одной странностью, курьезом.

Почему не C++?

Дело в том, что C++, строго говоря, не относится к объектно-ориентированным языкам. Классы и объекты существуют в нем исключительно с точки зрения программистов, в исходном коде. В конце 80-х в C++ не было даже средств, приближающих этот язык к настоящим ОО-языкам, RTTI и подобных.

Пусть те, кто использует этот язык в наши дни, не ловит меня на ошибках, если C++11 или C++14 стали ближе к идеалам ООП – я с ними дела не имел, меня поражает быстрый прогресс этого языка. В C++ я “жил” с 1995 по 2001.

Самый объектно-ориентированный язык того времени, Смолтолк, был потрясающе хорош, и потрясающе медлителен. Даже на очень дорогих и мощных (по тем временам) рабочих станциях Xerox PARC он еле-еле шевелился.

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

C++, превращающий объектно-ориентированный исходный код в эффективный машинный код, ничем не уступающий по производительности лучшим инструментам разработки того времени, сделал ООП самой распространенной парадигмой программирования. В конце 90-х это был, де факто, главный и основной язык серьезного программирования в мире.

Стив – перфекционист. В 1986 году, в одном из интервью, он констатировал, что во время визита в Xerox PARC его интересовал в основном и почти исключительно графический пользовательский интерфейс, разработанный в этом исследовательском центре, и на все другое, что было показано “яблочным” визитерам, внимание не обратил.

А показали им еще две великих технологии: объектно-ориентированное программирование и сети. И только совсем недавно он понял, насколько эти технологии важны и актуальны. Он уже возглавлял NeXT в течении года, и работа над ошибками была в самом разгаре.

Objective-C появился на свет в 1983 году, тогда же когда и C++. Информация о них была опубликована чуть ли не в одном и том же томе периодического издания, посвященного языкам программирования.

В вики написано, что он появился в 1984 – я точно знаю что это не так. 1983. Доказать не могу.

Objective-C был разработан в компании Stepstone Брэдли Коксом и Томом Лав.

Идея такого языка возникла у них после их близкого знакомства с Смолтолком, в 1981 году. Их интересовала проблема повторного использования кода. Существует шутливое эмпирическое правило: в каждых ста строках нового кода, обязательно и как минимум, есть хотя бы две ошибки, которые не будут обнаружены на этапе тестирования и проявят свою нехорошую сущность только в руках у пользователей. С увеличением размера кода в N раз, число ошибок в нем возрастает пропорционально квадрату от N…

Это эмпирика, и шутка – но в каждой шутке только доля шутки. Проблема действительно существует. Две обязательных ошибки существуют в ста строках НОВОГО кода. Если эти сто строк уже прошли обкатку на пользователях, и все ошибки в них выявлены (хотя это не факт, бывают очень живучие баги), то всё – проверено, мин нет, пользуйтесь!

Повторное использование кода, естественно, еще и повышает производительность труда программистов: его не надо снова писать.

Вот только на практике reuse (здесь “повторное использование”, англ) использовать не так просто, как хотелось бы.

Смолтолк подходил бы для reuse замечательно, если бы не несколько но: медлительность написанного на нем кода (это, в конце-концов, устранимо – можете найти информацию про Squeak), и его синтаксис радикально отличается от того, к чему привык и чем виртуозно владеет промышленный программист.

Например, от C. Кроме того, у C много сильных сторон – это язык, применимый для очень широкого круга задач, от самых низкоуровневых до достаточно сложных.

Брэд и Том добавили к стандартному (не “улучшенному”) C объектно-ориентированную механику Смолтолка, за исключением двух её элементов – сборщика мусора и замыканий.

Новый язык появился на свет в виде препроцессора к C, под названием OOPC (Object Oriented Pre-Compiler). В коде на OOPC в чистый C включали конструкции заимствованные из Смолтолка, в которых разрешалось использовать переменные, константы и функции из чистого C – препроцессор превращал это в нечеловеческий код на чистом C, из которого все это становилось машинным кодом, работающим в тесной связке с средой времени исполнения.

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

У Lisp, синтаксис которого требует использования огромного числа скобок (обычных), из-за этого появилась издевательская и совершенно неостроумная расшифровка: Lots of Idiotic Silly Parentheses (Огромное число идиотских дурацких скобок). Вообще-то Idiotic и Silly практически синонимы. Не совсем чистая расшифровка.

К OOPC она подошла намного лучше: Lots of Idiotic Square Parentheses. Даже несмотря на то, что слово Square в английском тоже может обозначать что-то Silly или Idiotic, в данном случае все получается очень складно. Огромное число идиотских квадратных скобок.

Самое забавное, к этим скобкам поразительно быстро привыкаешь. Их оставили в языке.

В NeXTSTEP 0.8, которую устанавливали на первые экземпляры NeXT Computer в 1988 году, Objective-C был языком препроцессора. В конце 1988, в NeXTSTEP 0.9, вместо него был использован настоящий компилятор Objective-C, что позволило разработчикам языка с удовольствием сообщать об уменьшении времени компиляции исходных кодов на 70%.

Сколько стоила NeXT Computer в 1987? Почему Objective-C? Фото.

Стив требовал “быстрый Смолтолк”, и такой, чтобы программистам не пришлось заново учиться “говорить” и привыкать к чуждым им способам выражения мысли. Это не то чтобы трудно, но требует времени на привыкание (а время – деньги).

Objective-C осваивается человеком, хорошо знающим C и/или С++, за неделю. Пробовал на себе, в 2001 – и на десятках других людей. На Смолтолк ушло бы раза в три больше времени.

Objective-C был выбран Эви Теваняном по нескольким причинам:

это практически и Смолтолк, и C, то есть, настоящая реализация ООП, и очень эффективная (эффективность ниже чем у чистого C, но в большинстве случаев вполне приемлемая);
применяться он будет в новой операционной системе, в которую несложно встроить среду времени исполнения для Obective-C, и сделать её неотъемлемой частью системы;
в случаях где требуется увелить производительность, конструкция на Objective-C может быть точечно заменена на эквивалентный код на чистом C.

О том что программирование на объектно-ориентированном языке производительнее и позволяет решать (при том же уровне программиста) значительно более сложные задачи, упрощает повторное использование кода и много чего еще – на всякий случай, сообщаю.

Продолжение следует. В следующей части “Триумф NeXT Computer” и “Почему триумф не превратился в деньги?”

История AppleСтив Джобс