Библия программиста

advertisement
Библия программиста
1.
2.
3.
4.
5.
6.
7.
8.
9.
Вначале было слово, и слово было 2 байта, а больше ничего не было.
И отделил Бог единицу от нуля, и увидел, что это хорошо.
И сказал Бог: да будут данные, и стало так.
И сказал Бог: да соберутся данные каждые в свое место, и создал дискеты, и винчестеры, и
компакт-диски.
И сказал Бог: да будут компьютеры, чтобы было куда пихать дискеты, и винчестеры, и
компакт-диски, и сотворил компьютеры, и нарек их хардом, и отделил их от софта.
Софта же еще не было, но Бог быстро исправился и создал программы, и большие, и
маленькие, и сказал им: плодитесь и размножайтесь, и заполняйте всю память.
Но надоело Ему самому создавать программы, и сказал Бог: создадим программиста по
образу и подобию нашему, и да владычествует над компьютерами, и над программами, и
над данными. И создал Бог программиста, и поселил его в своем ВЦ (вычислительном
центре), чтобы работал в нем. И повел он программиста к дереву каталогов, и заповедал: из
всякого каталога можешь запускать программы, только из каталога .Windows не запускай,
ибо маст дай.
И сказал Бог: нехорошо программисту быть одному, сотворим ему пользователя,
соответственно ему. И взял Он у программиста кость, в коей не было мозга, и создал
пользователя, и привел его к программисту, и нарек программист его юзером. И сидели они
оба под голым ДОСом, и не стыдились.
Билл был хитрее всех полевых зверей. И сказа Билл юзеру: подлинно ли сказал Бог: не
запускайте никакого софта? И сказал юзер: всякий софт мы можем запускать, и лишь из
каталога Windows не можем, ибо маст дай. И сказал Билл юзеру: давайте спорить о вкусе
устриц с теми, кто их не ел! В день, когда запустите Windows, будете как боги, ибо одним
кликом мышки сотворите, что угодно. И увидел юзер, что винды приятны для глаз и
вожделенны, потому что делают ненужным знание, и поставил их на свой компьютер; а
затем сказал программисту, что это круто, и он тоже поставил.
01. И отправился программист искать свежие драйвера, и воззвал Бог к программисту,
и сказал ему: где ты? Программист сказал: ищу свежие драйвера, ибо нет их под голым
ДОСом. И сказал Бог: кто же сказал тебе про драйвера? Уж не запускал ли ты винды?
Программист сказал: юзер, которого Ты мне дал, сказал, что отныне хочет программы
только под винды, и я их поставил. И сказал Бог юзеру: что это ты сделал? Юзер сказал:
Билл обольстил меня.
02. И сказал Бог Биллу: за то, что ты сделал, проклят ты перед всеми скотами и перед
всеми зверями полевыми, и вражду положу между тобою и программистом: он будет
ругать тебя нехорошими словами, а ты будешь продавать ему винды.
03. Юзеру сказал Бог: умножу скорбь твою и истощу кошелек твой, и будешь
пользоваться кривыми программами, и не сможешь прожить без программиста, и он
будет господствовать над тобой.
04. Программисту же сказал: за то, что послушался юзера, прокляты компьютеры для
тебя, глюки и вирусы произведут они тебе; со скорбью будешь вычищать их во дни
работы своей; в поте лица своего будешь отлаживать код свой.
05. И выслал Бог их из своего ВЦ, и поставил пароль на вход.
Кто же такие программисты?
Кто такой программист? Это человек, который пишет программы для компьютера.
Программа – это текст, написанный на таком языке, который компьютер «понимает»: другими
словами, это последовательность точных указаний, которые компьютер может выполнить. Если
обратиться к компьютеру с вопросом на естественном языке(на русском или английском), он не
сможет правильно истолковать вопрос. Программу же компьютер «поймет» обязательно. И либо
выполнит то, что от него требуется, либо сообщить об ошибках в формулировке. Но главное,
чтобы общаться с компьютером, следует говорить с ним на одном языке.
Чем так отличается язык программ, язык компьютера, от того языка, на котором мы
говорим? Главное отличие состоит в том, что это язык формальный, то есть такой, который можно
перевести в набор машинных команд (то есть на другой формальный язык) без потерь и
разночтений. Александр Межиров писал, что поэзия «вовеки непереводима, родному языку
верна». При любом переводе, например, с английского на русский, мы неизбежно что-то теряем, а
что-то добавляем к оригиналу. Это неустранимая трудность. Если говорить о поэзии, то при
переводе стихов, за редчайшими исключениями, которые кажутся почти чудом, происходит почти
полное перевоплощение текстов – иногда удачное, иногда не слишком. Если говорить о деловом
письме – то потери и разночтения при переводе могут быть сведены к минимуму, но все равно они
есть. И потому человек при переводе необходим. Именно он принимает окончательное решение о
том, что считать правильным. Он принимает решение на основании опыта или эстетического
чувства.
При переводе команд любого языка программирования, будь то Паскаль или Си, мы можем
быть уверены, что перевод будет точным и однозначным. Этот перевод осуществляется
автоматически, за конечное время, благодаря однозначности конструкций – то есть он может быть
осуществлен программой.
Программирование – это не математика, это гораздо более живое, непосредственное дело.
Так происходит потому, что у нас есть средство мгновенной обратной связи – компьютер. Наш
обязательный собеседник и судья.
Программист, преображая мир вещей в мир количеств и форм, пользуется формальным
языком. Это – его инструмент, его оружие и орудие. Именно язык программирования, вечный
спутник программиста, и отличает профессию программиста от других многочисленных
профессий, связанных с работой с компьютером.
Программирование – это очень тяжелая работа, даже если она увлекает и захватывает. Илья
Эренбург (писатель) говорил, что нет ничего труднее, чем водить перышком по бумаге. Пожалуй,
водить курсором по экрану немногим легче. Самое, может быть, трудное, на что не обращаешь
или почти не обращаешь внимания в молодости, и что может стать с возрастом непреодолимым
барьером, заставляющим иногда менять профессию, - это умение не терять концентрацию
внимания на протяжении многих часов подряд. Известно, что одним из самых неприятных
побочных эффектов, связанных с работой за компьютером, является утомление глаз – человек
моргает слишком редко и глазное яблоко недостаточно увлажняется. Программист тоже редко
моргает, иначе можно «проморгать» ошибку. Только здесь ситуация много сложнее – нельзя
«моргать» не только глазом, но и умом. Программирование – это умение концентрироваться,
умение составлять задачу в деталях и не упускать ее из плотной хватки многие часы, дни, месяцы
подряд.
Программист не мыслит свое существование без компьютера, без задачи и без языка, на
котором эта задача пишется. Они становятся его продолжением – частью тела и ума. Цель,
которую преследует программист, это не решение задачи. Цель программиста – создать
совершенный код, который бы воплотил в цифрах образы реального мира, преломленные
сознанием и представленные в виде элегантных языковых конструкций. И, как всякое
совершенство, эта цель недостижима. А значит, нужно снова и снова садиться за клавиатуру и
писать, радоваться находкам и огорчаться неудачам. Жить, каждый день делая цифровой мир
чуть-чуть человечнее.
Download