-->

Кодеры за работой. Размышления о ремесле программиста

На нашем литературном портале можно бесплатно читать книгу Кодеры за работой. Размышления о ремесле программиста, Сейбел Питер-- . Жанр: Прочая компьютерная литература / Программирование / Биографии и мемуары. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Кодеры за работой. Размышления о ремесле программиста
Название: Кодеры за работой. Размышления о ремесле программиста
Дата добавления: 16 январь 2020
Количество просмотров: 441
Читать онлайн

Кодеры за работой. Размышления о ремесле программиста читать книгу онлайн

Кодеры за работой. Размышления о ремесле программиста - читать бесплатно онлайн , автор Сейбел Питер

Программисты — люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Верни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Саймона Пейтон-Джонса, Питера Норвига, Джошуа Блоха, Брэда Фицпатрика, создателя Живого Журнала, и других. Все они «подсели» на программирование еще в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.

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

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

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

В данном контексте понятия инженер и ремесленник — практически идентичны. Инженер трудится на ниве технологий. Иногда я себя так и ощущаю, но это совсем особые случаи — когда я делаю что-то низкоуровневое. Помнится, я работал над самыми глубокими частями BitBlt или движком байт-кода Smalltalk — и это была действительно ремесленная работа. У меня была возможность несколько раз сделать то же самое, пока все не стало работать оптимально, а это ремесло.

Сейбел: Разница между инженером и ремесленником, на мой взгляд, заключается в том, что инженер — это тот, кто говорит: «Здесь как в мостостроении. Мосты не падают. В мостостроении есть повторяемый инженерный процесс». Ремесленник же говорит: «Нет, здесь больше от работы по дереву. Каждое дерево уникально, есть правила его обработки, но ни один метод не гарантирует результата».

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

Сейбел: Вы сказали, что на время покинули индустрию, а потом вернулись. Устали от компьютеров или просто были изменения в жизни?

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

Сейбел: Есть ли у вас рекомендации для тех, кто хотел бы стать программистом?

Ингаллс: Думаю, прежде всего надо пройти хороший курс компьютерных наук. Я бы организовал его так: сначала нужно выучить несколько разных языков, у которых разные сильные стороны. Так, Smalltalk имеет множество преимуществ, но не является универсальным ответом. Есть логическое программирование. Есть функциональное программирование. Smalltalk можно использовать в функциональном стиле, эта сторона в нем отлично развита. Но помните, что я рассказывал про Lotus 1-2-3 и перевод с английского на «поросячью латынь»? Думаю, полезно было бы взять несколько разных вычислительных сред и одну задачу и попытаться решить ее в каждой из них. Так проявится сила данного языка — или же это побудит вас от него отказаться.

Сейбел: Как вы считаете, сильно ли изменилось программирование, а следовательно, и те люди, которые могут в нем преуспеть? Можно ли быть отличным программистом, работая на высоком уровне, но без знания ассемблера, или Си, или даже тех алгоритмов, которые можно почерпнуть из чтения Кнута, поскольку сейчас мы используем высокоуровневые языки, у которых эти алгоритмы есть в библиотеках?

Ингаллс: У разных людей разные уровни, на которых они могут работать, чувствуя себя профессионалами. Думаю, в наши дни программист может с полной уверенностью пользоваться готовыми библиотеками, не программируя их сам. Это значит, что он просто работает на другом уровне. Честное слово, я вовсе не представляю, что кто-то, желая работать с графикой, станет писать BitBlt. He обязательно делать элемент И-НЕ: можно просто использовать язык ассемблера. Думаю, работать можно на любом уровне. Если вы чувствуете потребность, то можете забраться глубже, а если вы полны энтузиазма, вы захотите забраться глубже.

Сейбел: Как вы считаете, нужно ли современным программистам довольно высокого уровня, работающим в различных средах, учить ассемблер и микрокод? Или набор навыков, помогающий стать успешным программистом, изменился?

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

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

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

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

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

Сейбел: Я работал над проектом, призванным предоставить программную среду для биологов, притом им было нужно, чтобы каждый раз программа соответствовала их случаю. Нельзя создать приложение один раз и этим довольствоваться, потому что биологи не вполне знают, что им нужно, пока не придут к определенным биологическим данным и не скажут: «Я хочу знать X», — а единственный способ найти X — это, разумеется, написать программу.

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

Сейбел: Есть ли что-то, что вы считаете важным, а я вас об этом не спросил?

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

Сейбел: Случалось ли вам забросить все остальные стороны жизни ради страсти к программированию?

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

Сейбел: Но в итоге-то вы получили от сына «Приз великого отладчика».

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

11. Питер Дойч

Питер Дойч — вундеркинд, начал заниматься программированием в конце 1950-х, когда ему было всего 11 лет, после того как его отец принес домой заметку о программировании проектных расчетов для Кембриджского ускорителя электронов в Гарварде. Вскоре после этого он оказался в Массачусетском технологическом институте, где работал над реализацией языка Лисп на компьютере PDP-1, разбирая и улучшая код, написанный программистами MIT, которые были практически вдвое старше его.

Перейти на страницу:
Комментариев (0)
название