Идеальный программист. Как стать профессионалом разработки по



Download 4,8 Kb.
Pdf ko'rish
bet107/128
Sana11.02.2023
Hajmi4,8 Kb.
#910052
1   ...   103   104   105   106   107   108   109   110   ...   128
Bog'liq
robert sesil martin-idealnij programmist-1490197390

ECP-18 в средней школе
В 15-летнем возрасте, когда я учился в старших классах, мне
нравилось проводить время в математической лаборатории. Однажды
туда привезли устройство размером с циркулярный станок. Это был
учебный компьютер для средних школ, он назывался ECP-18. Нашей
школе был предоставлен двухнедельный пробный период.
Я стоял в стороне и слушал разговоры учителей и техников. У
машины были 15-разрядные слова (что такое «слово»?) и барабанный
накопитель на 1024 слова. (Тогда я уже знал, что это такое, но только
теоретически.)
Когда машину включили, она издала свист наподобие того,
который издает реактивный самолет при взлете. Я предположил, что
это раскручивался барабан. Когда устройство набрало обороты, оно
работало относительно тихо.


Машина была очаровательной. Она напоминала офисный стол, над
которым возвышалась потрясающая панель управления – как на
капитанском мостике боевого корабля. Панель была украшена рядами
лампочек, которые также можно было нажимать, как кнопки. Сидя за
таким столом, человек ощущал себя словно в кресле капитана Керка.
[53]
Я наблюдал за тем, как техники нажимали кнопки. Когда кнопку
нажимали, лампочка загоралась, а при повторном нажатии она гасла.
Также они нажимали другие кнопки с названиями типа «Загрузить» и
«Выполнить».
Кнопки в каждом ряду были объединены в пять групп по три. Мой
Digi-Comp тоже был трехразрядным, так что я мог читать
восьмеричные цифры в двоичной форме. Было нетрудно понять, что
каждая строка представляет пять восьмеричных цифр.
Я слышал, как техники, нажимавшие кнопки, что-то бормочут. Они
нажимали 1, 5, 2, 0, 4 в строке «Буфер памяти», говоря при этом:
«Сохранить в 204». Они нажимали 1, 0, 2, 1, 3 и бормотали:
«Загрузить 213 в аккумулятор». Там был ряд кнопок с подписью
«Аккумулятор!»
Через десять минут моему 15-летнему разуму было абсолютно
ясно, что 15 означает «сохранить», а 10 – «загрузить», что в
аккумуляторе находились сохраняемые или загружаемые данные, а
остальные числа были номерами одного из 1024 слов на барабане.
(Так вот что такое «слово»!)
Слово за слово (непреднамеренный каламбур), мой пытливый ум
все глубже проникал в коды инструкций и концепции. К тому
моменту, когда техники ушли, я уже понимал основные принципы
работы машины.
Этим же днем, во время часов для самостоятельной работы, я
пробрался 
в 
математическую 
лабораторию 
и 
начал
экспериментировать с компьютером. К тому времени я уже отлично
знал, что проще попросить прощения, чем добиться разрешения! Я
ввел программу, которая умножала содержимое аккумулятора на 2 и
прибавляла 1. Я ввел в аккумулятор 5, запустил программу – и увидел
в аккумуляторе 13! Программа работала!
Я ввел еще несколько таких же простых программ, и они тоже
работали так, как положено. Я был повелителем Вселенной!


Сутки спустя я понял, насколько я был глуп – и как мне повезло. Я
нашел в лаборатории памятку, в которой были перечислены все
инструкции и коды операций, в том числе и тех, которые я не мог
узнать, наблюдая за техниками. Я с радостью узнал, что известные мне
коды были интерпретированы правильно, а остальные вызвали прилив
энтузиазма. Однако среди новых инструкций я заметил инструкцию
остановки HLT. Так уж совпало, что инструкция остановки была
словом из одних нулей. И еще совпало то, что я включал в конец
каждой из своих программ слово из одних нулей, чтобы стереть
содержимое аккумулятора. Концепция остановки мне просто не
приходила в голову. Мне казалось, что программа сама остановится,
когда все сделает!
Помню, я однажды сидел в математической лаборатории, наблюдая
за тем, как один из учителей боролся со своей программой. Он
пытался ввести два числа в десятичной форме с подключенного
телетайпа, а потом распечатать их сумму. Каждый, кто пытался
программировать подобные задачи на машинном языке мини-
компьютеров, знает, что они отнюдь не тривиальны. Нужно прочитать
символы, разбить их на цифры, затем преобразовать в двоичную
форму, просуммировать, преобразовать их обратно в десятичную
систему и закодировать в символы. Поверьте, когда программа
вводится в двоичном виде с передней панели, все намного хуже!
Я наблюдал за тем, как он вставил в программу команду остановки
и запустил. (О! Хорошая мысль!) Примитивная точка прерывания
позволила ему проанализировать содержимое регистров и понять, что
сделала программа. Помню, как он пробормотал: «Ого! Как быстро!»
Понятия не имею, какой алгоритм он использовал. Такое
программирование для меня еще оставалось чем-то вроде волшебства.
И он ни слова не сказал мне, пока я смотрел ему через плечо. Никто
не говорил со мной об этом компьютере. Думаю, меня считали
помехой, на которую не стоит обращать внимания, – чем-то вроде
мошки, порхающей по лаборатории. Достаточно сказать, что ни
ученик, ни учителя не обладали высокими навыками социальных
коммуникаций.
В итоге его программа заработала. Выглядело это потрясающе: он
медленно вводил два числа, потому что, несмотря на более ранние
восклицания, компьютер работал довольно медленно (подумайте,


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

Download 4,8 Kb.

Do'stlaringiz bilan baham:
1   ...   103   104   105   106   107   108   109   110   ...   128




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish