Новости

[Перевод] В 1982 году замена 1 бита спасла меня от трёх месяцев асфальтных работ

Сражение с Искусственным интеллектом в фильме 1982 года «Трон»

Перед летними каникулами 1982 года через несколько месяцев после окончания школы мама отвела меня в сторонку и сказала: «Отец хочет, чтобы ты этим летом нашёл работу и частично оплатил своё обучение в колледже». В свои 18 лет я никогда не работал и побаивался этой идеи. Я был типичным компьютерным гиком и сидел дома. Честно говоря, мне было лень и совсем не хотелось работать. Но я знал, что лучше не спорить, потому что понимал точку зрения отца.

Папа всю жизнь трудился автомехаником. Он начал впахивать ещё в школе. Моё дорогое обучение в колледже не входило в его планы. К счастью, он поддержал эту идею, а также оплатил обучение из денег, которые мы получили от продажи дома после смерти бабушки. То есть всё было (в основном) оплачено, но от меня ожидалось, что я тоже поучаствую…

Отец не вступал в конфронтацию по таким вопросам, а действовал через маму. Но я знал, что работа — это серьёзно, и я обязан что-то придумать.

Как всегда, на помощь пришла мама. Она нашла несколько объявлений, в том числе на летнюю работу в городском дорожном департаменте. Итак, солнечным июньским утром я робко отправился на собеседование. В большом здании посреди грузовиков и куч песка навстречу вышел крепкий парень в оранжевом жилете. Парень скептически оглядел меня с головы до ног. Я был долговязым, худым, прыщавым подростком. И хотя слово «ботаник» ещё не вошло в моду, полностью подходил под это определение.

Осмотрев меня, он первым делом спросил следующее (я не выдумываю):

— Ты ведь понимаешь, что работа требует физических усилий?

— Конечно… конечно, — я старался отвечать как можно убедительнее.

Вряд ли он купился, но пожал плечами:

— Хорошо. Когда можешь начать?

И тут меня охватила паника. Правда в том, что я вообще не задумывался реальном физическом труде. Конечно, теоретически я всё понимал. Но сейчас я живо представил долгие дни под палящим солнцем, разгребая горячий асфальт рядом с грузовиком, а в нескольких сантиметрах проносятся машины. Не спорю, вполне честная работа на лето для подростка, которому требуется закалить тело и дух… Но я не хотел этим заниматься.

Я знал, что в конце концов придётся куда-то устроиться и придётся несладко. Это настоящая работа, за неё платят деньги. Разумеется, она может быть неприятной. Тогда мне и в голову не приходило, что компьютерные штучки, которыми я развлекался, позволят избежать любого физического труда в жизни, практически навсегда. Я этого не знал. Однако в тот июньский день в здании дорожного департамента я понял, что откажусь от этой работы.

Я сказал здоровяку в оранжевой жилетке, что мне нужно сходить домой и проверить «расписание летних каникул» и что я позвоню по поводу даты (спойлер: так и не перезвонил). А затем как можно быстрее удрал из района.

Когда мама позже спросила о работе, у меня не хватило духу соврать. Я попытался объяснить, и мне стало стыдно. Уверен, она была разочарована, но в то же время в какой-то степени понимала меня.

Последнее, что она сказала по этому поводу: «Не говори отцу».

И я не сказал. Но продолжил поиски менее трудоёмкой работы. Ездил в местный универ, пытался найти там работу продавца в компьютерном магазине, какую-нибудь должность помощника техника или что-то в инженерном отделе. Я не учился в этом университете, так что попытки казались довольно безнадёжными — все подобные вакансии уже заняли студенты.

Тем не менее я старался. Заставлял себя вежливо разговаривать с людьми, пробовал разные варианты, хотя вряд ли родители оценили эти попытки. Но ничего не вышло. И через пару недель я начал думать, что совершил серьёзную ошибку, отказавшись от работы в дорожном департаменте.

Однажды мама пришла с интересным предложением. Она работала на радиостанции, составляя расписание рекламных роликов. Один из рекламодателей — местный парень по имени Джим, который занимался продажей и ремонтом подержанных автомобилей. У него возникли какие-то проблемы с компьютером, и он спрашивал на радиостанции, есть ли у них «компьютерные эксперты». Парень дал маме номер телефона, а она передала мне. И я позвонил.

Давайте проясним ситуацию. Хотя в последние четыре-пять лет я использовал любую возможность, чтобы поработать с любым компьютером, но формально я не считался «компьютерным экспертом». Да, я прослушал в колледже несколько курсов по Фортрану и структурам данных по программе компьютерных курсов для школьников. И неплохо программировал на BASIC, потратив кучу времени в попытках писать игры на соседском компьютере TRS-80. Но мои знания в программировании были довольно отрывочными. Я не писал больших, сложных программ и никогда не работал в коллективе.

Но у меня было эдакое «хакерское отношение» — отсутствие страха перед компьютерами в целом и перед неизвестным. Страсть к исследованиям, экспериментам, импровизации.

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


Примечание: этот персонаж очень похож на Джима, но этот не он

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

Проблемы с компьютерами возникли после предыдущего контракта с системным интегратором из Калифорнии, очень маленькой компанией, возможно, всего один или два человека. Они поставили систему Data General Eclipse — 16-разрядный мини-компьютер с несколькими терминалами и проприетарный софт для обработки заказов, выставления счетов и расчёта зарплаты.

В какой-то момент отношения с этим поставщиком испортились, тот прекратил разработку ПО и требовал слишком много денег за исправление багов, которые теперь создавали большие проблемы для сотрудников. Не знаю подробностей, но дело дошло до того, что они прекратили всяческие контакты. Джим фактически застрял с брошенным ПО. Он обратился за консультацией, но ему сказали, что программа «зашифрована»: они не могли открыть исходный код.

Джим смотрел на меня скептически. Вполне понятно, ведь я был неловким парнишкой, который только окончил школу. Но ему было очень интересно. В то время в обществе начала распространяться идея о существовании неких «ботаников-компьютерщиков». А я точно не похож на большинство людей, с которыми он ежедневно общался.

Я вошёл в систему, начал копаться — и сразу заметил, что учётная запись ограничена в привилегиях. Я сказал Джиму, что он должен предоставить более полный доступ. Это сразу его поразило. Он объяснил, что специально создал аккаунт с пониженными правами, чтобы проверить меня. Это был своего рода тест. Я втайне выругался, ибо права аккаунта казались наименьшей проблемой.

Более серьёзная проблема заключалась в следующем. Все файлы этой системы написаны на BASIC, что было замечательно, потому что я довольно хорошо знал BASIC. Но при открытии файлов все они были пусты. Код был внутри, но редактор ничего не показывал. Когда я смотрел на файлы в каталоге, я видел их размер, но что-то делало их недоступными для просмотра.

Если бы у меня в детстве был доступ к хорошим компьютерам, я мог застрять на этом месте и уйти ни с чем. Но я много времени сидел с действительно старой и примитивной техникой, такой как Digital PDP-8/E 1974 года в школе или учебный комплект Netronics ELF II за $150 у меня дома, с hex-клавиатурой, 256 байтами памяти и светодиодными индикаторами ввода/вывода. Я много возился с этими машинами и кое-что знал о машинном коде, форматах файлов и заголовках, утилитах операционной системы и подобных низкоуровневых вещах. По крайней мере, я знал, что они существуют.


Компьютер ELF II с hex-кейпадом

Поэтому я предположил, что кто-то повредил заголовки файлов, чтобы сделать их нечитаемыми. Я нашёл в системе hex-редактор для просмотра и редактирования файлов в необработанном виде, включая заголовок. Редактор показывает содержимое файла в виде аккуратных столбцов шестнадцатеричных цифр. Рядом соответствующие символы ASCII.

В этом редакторе ясно виден исходный код BASIC всех программ. Он был там, не зашифрованный. Это уже дало надежду: очевидно, есть способ скопировать этот код в нормальные, видимые файлы.

Любопытный Джим постоянно шатался рядом, но, к его чести, вёл себя тихо и не мешал. Уверен, со стороны выглядело так, будто я знаю, что делаю, поскольку на экране летали цифры и таблицы. На самом деле я просто пробовал всё подряд и пытался понять, как исправить эти файлы.

Я создал с нуля «хороший» BASIC-файл и открыл его в hex-редакторе. Затем сравнил с одним из «плохих». Содержимое явно отличалось, но заголовки отформатированы одинаково. В заголовке записано имя файла, расположение, размер, защита и др. Поскольку у него вполне обычный формат, я смог понять некоторые части.

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

Но потом заметил одно hex-значение, которое в хорошем заголовке было E, а в плохом — F (двоичные 1110 и 1111, соответственно). Между 1110 и 1111 всего один бит разницы. Поэтому в hex-редакторе я изменил единицу на ноль, поменяв значение с F на E.

И исходный код волшебным образом появился на экране. Я был поражён. «Защита» от производителя заключалась буквально в переключении одного бита в заголовке каждого файла, чтобы файл по-прежнему запускался, но не открывался в редакторе. Это программный эквивалент тех игрушечных замочков для чемодана: крошечный сдерживающий фактор, не эффективный против того, кто решительно настроен проникнуть внутрь.

Сердце учащённо забилось: теперь казалось, что я действительно смогу решить проблему. Я пробыл на месте около часа, ещё 45 минут ушло на просмотр всех файлов и замену бита в каждом заголовке. Сегодня я бы написал какой-то скрипт, потому что мы программисты действительно ленивый народ. Но в те школьные годы я ещё этого не умел, да и Data General Eclipse — не самая приятная среда для создания скриптов, так что даже не знаю…

В итоге на снятие защиты ушло не более двух часов. Когда я исправил все файлы, Джим был ошеломлён и обрадован — именно в таком порядке. Он с возбуждением попросил меня исправить другую ошибку в форме ввода, которая мучила его менеджера по работе с клиентами. Там поле не устанавливалось правильно, так что использовать компьютерную форму было невозможно. Около 30 секунд ушло на её поиск и ещё 30 секунд на исправление. Это была простая ошибка, но она приводила к бесчисленным часам ручного труда офисных сотрудников из-за неработающей формы.

А когда я исправил ошибку менее чем за минуту, Джим вообще выпал в осадок. С этого момента я стал в его глазах «компьютерным гением». Он просто уставился на меня и спросил:

— Сколько ты хочешь?

Этот вопрос возглавляет список самых пугающих вопросов, которые мне когда-либо задавали, после вопроса здоровяка из департамента шоссейных дорог «Когда можешь начать?» несколькими неделями ранее.

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

Какое число назвать? Я понятия не имел, сколько стоят услуги программистов, что такое консультант или сколько денег может стоить моё время. Не хотел обидеть Джима необоснованной суммой. И не хотел быть обманутым. Поэтому выбрал цифру, которая показалась мне довольно крутой, но, вероятно, посильной для Джима: сто долларов.

И тут на лице Джима расплылась огромная улыбка. Это была улыбка человека, которого долгое время держали за яйца и вдруг освободили. Но также это была улыбка человека, который только что обнаружил невероятную выгодную сделку. Джим посмотрел на своего менеджера по работе с клиентами и сказал:

— Выпишите Неду чек на сто долларов.

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

И я ушёл со ста долларами в кармане и работой на лето. Родители были в восторге, и я тоже был очень рад. Я проработал у Джима всё это лето и следующее, что позволило оплатить все расходы в колледже, а также купить первый «настоящий» компьютер, Commodore VIC-20. Это были хорошие деньги, а я занимался любимым делом.


Commodore VIC-20

Однако в течение некоторого времени меня не покидало ощущение, что я недооценил себя на первой встрече с Джимом. Я прекрасно понимал, что мог легко получить гораздо больше ста долларов. Он бы точно заплатил. Возможно, это было даже справедливо, учитывая, что никто другой не смог помочь в том деле. На самом деле в прошлом он платил другим людям гораздо больше за компьютерную работу. Сколько я мог получить в тот день? — такой вопрос мучил меня. Может, я поступил недостаточно профессионально?

Время всё расставляет по своим местам. Сейчас я понимаю, что минимальная заработная плата в США в 1982 году составляла менее $4 в час. Эти сто долларов соответствуют 25 часам ремонтных работ в дорожном департаменте с лопатой и асфальтом. Даже больше, если вычесть налоги, тогда как Джим заплатил в своём классическом стиле, в конверте. И я получил свою первую работу по ставке $20 в час или больше, потому что работал всего 20 часов в неделю за 400 долларов. Занимаясь чем-то, что и по сей день не ощущается как «работа», во всяком случае, в том смысле, в котором её определил бы мой отец. Короче, довольно приятная сделка.

Безусловно, Джим тоже оказался в выигрыше. Он получил настоящего программиста по цене студента. Позже Джим усовершенствовал этот подход, наняв ещё нескольких студентов. Однако я больше не рассматриваю вопрос, кто кем пользовался. На самом деле, ситуация взаимовыгодная.

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

Если же воспринимать эту историю в качестве урока, как избежать трудной физической работы, то даже не знаю, какой совет дать напоследок. На ум приходят только банальные избитые фразы: «Делай то, что тебе нравится, деньги придут позже» или «Найди работу, которую любишь, и тебе не придётся работать ни дня в своей жизни».

Но в них есть доля правды, по крайней мере, в моём случае. Кроме того, у меня есть совет по личному опыту. Идучи искать работу, лучше заранее продумать ответы на страшные вопросы типа «Когда можешь начать?»


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

Кнопка «Наверх»