У меня сейчас есть рулетка-электрошокер – четыре человека засовывают в нее пальцы, и под аккомпанемент музыки и ярких огней она постепенно замедляется, пока одного из них не бьет током. Те, кто работает с электронным оборудованием, всегда соглашаются в нее сыграть, а программисты, как правило, трусят.
Мистер Макколлум позволял мне заниматься всем, чем я хотел. Он даже разрешал мне выходить на работу в одну компанию по пятницам, чтобы я не скучал. Эта фирма называлась Sylvania, она располагалась в Саннивейл, и там я научился программированию. Мистер Макколлум сказал мне, что я уже полностью освоил его программу, и мне остается только устраивать розыгрыши. У нас в школе компьютера не было. И тогда, на фирме, я впервые столкнулся с компьютером, на котором можно было писать программы – и с того момента обратного пути уже не было.
Я никогда не думал, что мне в жизни доведется столкнуться с компьютером. Я думал: «Боже мой! Компьютеры!» Я купил книжку по «Фортрану» и решил для себя: все, теперь я научусь программировать. Один инженер из компании Sylvania научил меня пользоваться клавишным перфоратором. Я помню, как набирал свою первую маленькую программу и как он помогал мне загрузить ее в компьютер и запустить.
Первая настоящая программа, которую я попробовал написать, – «Ход конем». Она перемещала коня по шахматной доске так, что он только единожды попадал на каждую из 64 клеток. Это не так просто сделать. Сначала я написал программу, ходившую на два хода вперед, затем плюс еще один, и так снова и снова – пока не перепробовал все возможные ходы. И если программа не могла сходить единожды на каждую клетку на доске и заходила в тупик, она возвращалась назад и пробовала новые комбинации. Она могла возвращаться назад столько раз, сколько требовалось для правильного ее завершения. Тот компьютер мог совершать миллион операций в секунду, поэтому я решил, что для него это будет плевым делом и поставленную задачу он решит быстро.
Так вот, сижу я, довольный своей программой, и думаю, что это только первый шаг и вскоре я решу все самые сложные задачи в мире. И что вы думаете? Компьютер не выдает никакого результата. Лампочки на машине немного помигали, а потом застыли в одном положении. Ничего не происходило. Мой товарищ, инженер этой компании, еще немного подождал, а потом сказал: «Ну что, похоже, имеет место бесконечный цикл». И он показал мне, что значит бесконечный цикл – когда программа замыкается и делает одни и те же действия по кругу бесконечно. (Просто к слову – Бесконечный цикл стало названием улицы, на которой сегодня располагается штаб-квартира компании Apple.) Как бы то ни было, на следующей неделе я пришел туда снова и написал программу, которая выводила на принтер все ходы. Помню, как я вытягивал эти распечатки из принтера и внимательно их изучал. Тогда я кое-что понял. Программа и правда работала так, как и должна была работать. Я все сделал правильно. Только на поиск решения ей требовалось 1025 лет. Наша Вселенная существует меньше.
Тогда я понял, что миллион циклов в секунду не решает всех задач. Одна лишь скорость – это не всегда решение проблемы. Многие понятные задачи в программировании нуждаются в хитроумном, хорошо продуманном подходе. Особенный метод, используемый в компьютерной программе, в совокупности с правилами, этапами и процедурами, кстати, и называется алгоритмом.
«Ход конем» – больше чем просто математическая задача, в которой надо было перемещать шахматную фигуру коня по доске. Это достаточно старая математическая задача, и люди столетиями пытались решить ее – безуспешно. Суть проблемы – переместить фигуру коня по доске 64 раза таким образом, чтобы она попадала на каждую клетку на доске только один раз.
Я нашел в Интернете два сайта для тех, кому это может быть интересно. По ссылке http://www.borderschess.org/KnightTour.htm находится программа Knight’s Tour Puzzle, которая работает в режиме онлайн. На другой странице, на том же сайте – http://www.borderschess.org/KTsimple.htm – есть полная инструкция, овладев которой, вы просто взорвете другим людям мозг! Удачи.
Я тогда и правда питал громадное уважение к учителям. Я считал, что они и инженеры были умнейшими людьми в мире. Они могли стоять перед нами и рассказывать обо всем простыми словами. Я понимал, что сам был очень способным, но учителя готовились к каждому уроку по учебникам и так уверенно нам потом все рассказывали, поэтому я считал, что они были наверняка гораздо умнее меня. В то время я думал, что все учителя в моей школе были настоящими мудрецами.