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



Download 4,8 Kb.
Pdf ko'rish
bet85/128
Sana11.02.2023
Hajmi4,8 Kb.
#910052
1   ...   81   82   83   84   85   86   87   88   ...   128
Bog'liq
robert sesil martin-idealnij programmist-1490197390

10
Оценки
Оценка – одно из самых простых, но при этом самых рискованных
задач, с которыми сталкиваются профессиональные разработчики. От
оценки напрямую зависит коммерческая ценность проекта. От нее
зависят наши репутации. Неверные оценки становятся причиной
наших страхов и провалов. Оценка – это первый клин, вбиваемый
между бизнесменами и разработчиками. Это источник почти всего
недоверия, связанного с этими отношениями.
В 1978 году я был ведущим программистом для 32-килобайтной
встроенной программы Z-80, написанной на языке ассемблера.
Программа «прошивалась» на 32 перепрограммируемых микросхемах,
которые вставлялись в три платы (до 12 микросхем на каждой).
У нас в эксплуатации были сотни устройств, установленных на
центральных телефонных станциях по всем Соединенным Штатам.
Каждый раз, когда мы исправляли ошибку или добавляли новую
функцию, нам приходилось отправлять техников к каждому
устройству для замены всех 32 микросхем!
Это был настоящий кошмар. Микросхемы и платы были
непрочными, контакты на микросхемах гнулись и ломались.


Нечаянные изгибы плат могли повредить места пайки. Риск ошибок и
поломок был огромен, а затраты для компании – слишком высоки.
Мой начальник Кен Файндер пришел ко мне и попросил что-
нибудь сделать. Нам был нужен способ замены микросхем, который
бы не требовал замены всех остальных микросхем. Если вы читали
мои книги или слушали мои лекции, то вы знаете, что я много говорю
о возможности независимого развертывания. Именно тогда я впервые
усвоил этот урок.
Проблема заключалась в том, что программа представляла собой
единый скомпонованный исполняемый файл. Добавление новой
строки кода приводило к изменению адресов всех последующих строк.
Так как в каждой микросхеме попросту хранился один килобайт
адресного пространства, то изменялось содержимое практически всех
микросхем.
Решение было довольно простым. Микросхемы нужно было
изолировать друг от друга. Содержимое каждой микросхемы
преобразовывалось в независимую единицу компиляции, которая
могла записываться независимо от всех остальных.
Я определил размеры всех функций в приложении и написал
простую программу, которая «укладывала» их, словно фрагменты
головоломки, на микросхемах, оставляя 100 байт свободного
пространства для расширения. В начале каждой микросхемы
размещалась таблица указателей на все функции данной микросхемы.
Во время загрузки эти указатели перемещались в память. Весь код
системы был изменен таким образом, чтобы функции никогда не
вызывались напрямую – только через векторы, хранящиеся в памяти.
Да, вы правильно поняли: микросхемы превратились в аналоги
объектов с v-таблицами, а функции вызывались полиморфно. Именно
так я узнал некоторые принципы объектно-ориентированного
программирования задолго до того, как познакомился с понятием
«объект».
Выгода от такого решения была огромной. Мы получили
возможность не только ограничиться установкой отдельных
микросхем, но и вносить исправления «на месте», перенаправляя
векторы в оперативной памяти. Это значительно упростило отладку и
«горячие» исправления.


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

Download 4,8 Kb.

Do'stlaringiz bilan baham:
1   ...   81   82   83   84   85   86   87   88   ...   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