Ошибка NeXT

Раз за разом, представляя журналистам, экспертам и прочим случайным людям NeXTSTEP, Стив Джобс внушал слушателям мысль о том, что программировать в этой системе легко и просто – он даже показывал, сев за клавиши, как это легко. И очень многие ему верили.

Ошибка NeXT. Фото.

Дружелюбные к пользователю операционные системы были враждебны и жестоки к тем, кто пишет для них программы. Об удобстве для работников “машинного отделения” никто не думал. На это не было ни времени, ни ресурсов. К тому же, “инженер должен стойко переносить лишения и трудности своего ремесла”.

Считалось, что именно так все и должно быть. Кто-то должен платить за всё. Но NeXT, не то из любви к людям нелегкой профессии, не то в поисках собственной идентичности, не побоялась покуситься на устои мира. В данном случае NeXT – это Стив Джобс.

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

Естественно, техническое задание было выполнено в точности. Им удалось создать самый дружелюбный и эффективный в мире (как минимум, на тот момент) набор для разработчика. Тем более, что проблемы себе подобных были им до боли знакомы.

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

Начало здесь, продолжения здесь, здесь, здесь, здесь и здесь.

Реакции

Стив ошибался, в очередной раз считая слушателей более умными, чем они были на самом деле. От этой дурацкой привычки его очень скоро отучит жизнь – но даже в 1997 году, уже имея представление о природе людей, он продемонстрировал поклонникам Apple умение пользоваться InterfaceBuilder и красоту ProjectBuilder, с тем же самым результатом.

Зная, к чему повторение этих заклинаний привело, проанализируем реакции слушателей с разным уровнем интеллекта.

Первые поверили, и едва добравшись до компьютера (дома или в офисе, а то и прямо на демонстрационной площадке), принялись пробовать себя в роли программиста. Те из них, кто поумнее, нашли Tutorial’ы, и, хоть и не с первой попытки, но смогли сотворить нечто работающее. Но любая попытка отклониться в сторону хотя бы на шаг, оканчивалась ничем.

Жулики – решал умный товарищ, и шел в редакцию (или в прокуратуру) писать об этом.

Другой приходил к выводу, что здесь есть какие-то правила, как в покере или в шахматах, и пытался прочитать документацию. Она была под рукой, но её было слишком много. И в ней почти все было непонятно – не покер. Не то жулики, не то “я_чего-то_не_понимаю”.

Другие даже не стали ничего пробовать, просто поверили – и задумались о том, что очень сильно переплачивают работающим у них разработчикам. Можете представить себе, как таким людям надоели непонятные проблемы, баги, отставание от сроков…

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

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

Другие (опытные программисты) либо просто и навсегда не поверили показанному, либо сразу просекли фишку: система сложная и мощная, на её изучение уйдет много времени, но попробовать стоит.

К сожалению, профессионалы и те кто подозревает в незнании чего-то самого себя, были в меньшинстве.

Козырь был многократно бит.

Противоречия

Ошибка NeXT. Противоречия. Фото.

И чего только мне не приходилось читать про программирование в NeXTSTEP/OPENSTEP и в Cocoa/Mac OS X. Критические мнения кажутся (инстинктивно?) более правдоподобными, поэтому их с удовольствием цитируют и приводят в качестве аргументов в споре.

С одной стороны (данные статистики), число тех, кто мог считать себя NeXT’овским программистом и регулярно писал в его среде разработки программы, было необычно большим для столь малочисленной платформы. На 100-150 тысяч пользователей, только зарегистрированных на NeXT программистов было около 70 тысяч.

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

Судя по всему, люди не имеют представления о том, как пишутся большие программы для широкого круга пользователей. Одного желания тут мало. Элементарный текстовый процессор, и в NeXTSTEP, и в Mac OS X, писался в “полпинка”. Он позволял вводить текст, использовать все доступные шрифты и стили, вставлять графику и видео, и даже смотреть эти видео. В 1984 году его можно было бы продавать. В 1989 текстовый процессор должен был уметь делать много других вещей.

Создание программ для широкого круга пользователей – целый технологический процесс, требующий участия разных специалистов: дизайнеров, инженеров по UX/UI, аналитиков, тестировщиков и даже менеджеров. Бывают исключения: люди умудряются писать, без всей этой банды прожорливых и непонятливых людей, замечательные программы. Но, как правило, это относительно небольшие программы с четко очерченным кругом задач.

А любой организованный и регулярный труд должен кем-то организовываться, и, опять же регулярно, должен “компенсироваться”.

Еще ругали оторванные от жизни примеры программ из документации. Обвинения те же, что и в начале статьи: “шаг в сторону – и всё разваливается, перестает работать”. О чем не читал, но догадываюсь – “в документации много букв, и всяких непонятных слов”. Ага.

Никаких противоречий, на самом деле, никогда не было. Я много раз был свидетелем того, как профессионалы, независимо от их отношения к Apple, а до меня – к NeXT, достаточно быстро справлялись с изучением очень непростых и требующих усилий для понимания “правил” в Cocoa (если кто не в курсе, это прямой потомок объектно-ориентированной среды разработки NeXTSTEP/OPENSTEP).

И успешно все это использовали. Допускаю, что кому-то все это могло не понравиться, те же миллионы квадратных скобок, например – но ни один профессионал ни разу не обвинил среду разработки в неспособности решать сложные задачи.

Реальность

Среда разработки в NeXTSTEP и тщательно продуманные объектно-ориентированные библиотеки, вместе с уникальным инструментарием (это я про InterfaceBuilder), и в самом деле облегчали (и облегчают) труд программистов. Но все это написано людьми, и нив коем случае не идеально.

Это очень сложная система, с непростыми, иногда не самыми удачными, правилами. Её освоение требует времени, проб и ошибок.

Она не гарантирует от ошибок, а иногда просто провоцирует на их совершение.

Но, тем не менее, в 90-х это была лучшая в мире среда разработки – и одна из лучших до сих пор, несмотря на глюки в Xcode (потомок ProjectBuilder) и медлительность симулятора iOS и других систем.

Хорошо бы все это встряхнули и почистили, и еще раз попробовали бы посмотреть на все со стороны… Надеюсь, это не нытье?

Компьютеры AppleРабота в AppleСтив Джобс