Программирование: введение в профессию. 1: Азы программирования - 2016 год
Предисловие первое, философское
Книга, которую вы читаете, представляет собой практически уникальное явление — но речь в данном случае идёт не о её содержании, этому аспекту пускай оценку дадут другие. Речь идёт о том, каким образом книга появилась на свет.
Идея написать книгу, подобную этой, появилась у меня достаточно давно, по меньшей мере лет пять назад. Опыт написания книг у меня к тому времени уже был, и достаточно большой, но ни одна из ранее написанных мной книжек не превосходила по объёму двести страниц. До сей поры я всегда обходился своими силами; задумав книгу, я просто садился и писал её. Некоторые из моих учебных пособий были изданы в учебных заведениях, где я работаю или работал, другие я благополучно издавал за свой счёт, окупая такое издание продажей части тиража: при тираже в сотню-другую экземпляров это, в принципе, не так сложно, хотя и долго. Несколько раз я предпринимал попытки взаимодействия с издательствами; если бы я согласился на их условия, то мне не пришлось бы издавать за свой счёт некоторые из моих книжек, но этих книжек не было бы на моём сайте в открытом доступе: издатели всегда и везде требуют полной передачи им имущественных прав на книгу, что полностью исключает легальное бесплатное распространение электронной версии. Спасибо, господа, не надо: я пишу свои книги, чтобы их читали, а не чтобы вы на них зашибали деньги, обдирая моих читателей.
Всё было хорошо, пока мои задумки не отличались масштабностью; мне всегда удавалось выкроить пару более-менее свободных недель, чтобы написать текст, и десять-пятнадцать тысяч рублей (эквивалент моей зарплаты примерно за полмесяца), чтобы издать написанную книжку. Но в этот раз реальность несколько отличалась. Во-первых, объём задуманной книги изначально предполагался достаточно большим; издание такого увесистого тома даже самым небольшим тиражом, увы, превосходит мои личные финансовые возможности. Во-вторых, с самого начала было ясно, что для написания книги мне предстоит серьёзный трудовой марафон. Части этой книги, посвящённые программированию на языке ассемблера, теории операционных систем и языку Си++, уже существовали в виде отдельных книг; написать вводную часть, а также части, посвящённые языкам Паскаль и Си, предстояло с нуля. Используя имеющийся опыт, предстоящие трудозатраты я оценил в 500 часов, и, как выяснилось, почти не ошибся.
Пятьсот часов рабочего времени — это никак не пара недель и даже не пара месяцев; с учётом наличия основной работы на написание книги должно было уйти по меньшей мере полгода, причём при условии, что на это время я откажусь от фрилансерских подработок и частных уроков. В дополнение к этому сумма, которую предстояло отдать за издание книги, по самым оптимистичным подсчётам соответствовала моей зарплате за полгода. Всё это вместе превращало проект в прожект.
Можно было бы обратиться к издателям; скорее всего, мне удалось бы найти кого-нибудь, кто согласился бы заключить со мной так называемый договор авторского заказа и даже заплатил бы мне какой-нибудь символический гонорар. Но дело тут не в гонораре. Распространение книги в электронном виде, как я делаю это со всеми своими книгами, оказалось бы тогда полностью исключено; прочитать книгу можно было бы либо только на бумаге, либо, что ещё хуже, купив электронную версию. Такой вариант противоречит моим убеждениям; в частности, я глубоко убеждён, что платить за электронные книги можно разве что электронными же сканами денег.
Прежде чем окончательно отказаться от своей идеи, я решил, притом без особой надежды, попробовать последнюю возможность, которую видел: модный в последнее время краудфандинг; попросту говоря, я решил попросить денег на проект у публики.
Посмотрев на сайты, ориентированные на краудфандинг, я вынужден был отказаться от их использования. Такими сайтами вообще нельзя пользоваться: работа с ними требует регистрации, при которой необходимо принять “условия использования”, а эти условия, в частности, разрешают тамошним хозяевам рассылать зарегистрированным пользователям рекламу и вообще всё, что им там вздумается — и таковы условия использования на всех краудфандинговых сайтах, которые я видел. К тому же они дружно отказываются работать при отключённом в браузере JavaScript. Я попросту не могу никого просить посещать подобные сайты, это исключено.
Кроме того, я не приемлю модные в последние годы так называемые “социальные сети”, которые, вообще говоря, совсем и не сети1; довершает картину то обстоятельство, что я крайне щепетилен в выборе средств рекламы и пиара и категорически не готов терпеть ничего даже отдалённо напоминающего спам — в конце концов, моя диссертация по философии называлась “Информационная свобода и информационное насилие”, а выросла она из исследования частного вопроса о том, по каким конкретно причинам нельзя считать спам проявлением свободы слова.
Между тем, собрать нужно было солидную сумму в 600000 рублей. Предполагалось, что половина этой суммы уйдёт на частичную компенсацию моего рабочего времени, что позволило бы остаться на плаву, не тратя время на случайные подработки; вторая половина суммы должна была уйти на издание бумажной книги. Выкладывая на свой сайт stolyarov.info анонс и материалы проекта, я, если совсем честно, почти ни на что не надеялся, но всё-таки продумал систему поощрений для тех, кто окажет мне материальную поддержку: за пожертвование от 300 рублей я обещал упоминание в списке спонсоров, который будет помещён в книге, за пожертвование от 500 рублей — “фирменный” компакт-диск с автографом автора; при пожертвовании от 1500 рублей — экземпляр бумажной книги, опять же, с автографом, а от 3000 рублей — книгу в подарочном исполнении, в котором она будет изготовлена в соответствии с количеством таких пожертвований.
Почти сразу — во всяком случае, существенно раньше, чем поступили первые пожертвования — несколько человек задали мне вопрос, что будет с деньгами, если нужная сумма не соберётся; в ответ я написал отдельную страничку, где пообещал хотя бы что-то сделать в любом случае, даже если не получу вообще ни одного пожертвования. Конкретно я пообещал, что если сумма собранных пожертвований окажется меньше 25 000 рублей, я всё равно напишу часть книги, посвящённую языку Си, и издам её отдельной книгой, плюс к тому в очередной раз доработаю текст своей книги по Си++ и переиздам её в четвёртый раз. При сумме пожертвований от 25 до 55 тысяч я пообещал доработать и переиздать также свою старую книжку по NASM, при сумме от 55 до 100 тысяч — переработать и переиздать “Введение в операционные системы”, при сумме от 100 до 120 тысяч — написать часть, посвящённую Паскалю, и издать её отдельной книгой. Наконец, при достижении порога в 120 тысяч я пообещал, что задуманную книгу напишу полностью и продолжу сбор денег, чтобы сделать возможным её издание. Датой принятия решения я назначил 1 сентября 2015 года, тогда как описываемые события происходили в начале января — анонс проекта был датирован 7.01.2015.
После анонса два дня было тихо; первое пожертвование поступило на следующий день, но это можно было не считать: проект решил поддержать один из моих старых знакомых, известный под ником Gremlin. Карусель завертелась лишь 10 января, когда за день мне пришло семь пожертвований на общую сумму свыше 14 тысяч. Пользуясь случаем, я хотел бы самым искренним образом поблагодарить Григория Крайнова, который, прислав второе по счёту пожертвование, не поленился и донёс информацию о проекте до широкой публики через пресловутые “социальные сети”.
Первый из намеченных рубежей в 25 000 проект преодолел уже 12 января, второй рубеж (55 000) — 16 января; 4 февраля сумма перевалила за 100000, а 10 февраля — за магические 120000, так что все мои “запасные варианты” разом утратили актуальность; книгу теперь нужно было заканчивать хоть тушкой, хоть чучелом.
Конечно, не всё было столь радужно; ближе к весне первая волна пожертвований окончательно иссякла, так что мне даже пришлось прервать работу над рукописью, чтобы заработать денег на стороне. Летом я догадался сообщить о проекте на сайте Linux.Org.Ru, отдельное спасибо его владельцу Максиму Валянскому за разрешение на это; анонс породил вторую волну пожертвований. Проект много раз “уходил в минус” и снова выныривал, до последнего было непонятно, хватит ли денег на издание и в каком виде. Сейчас, когда готовится к печати первый том, денег на это достаточно, но при этом, видимо, резервы будут полностью исчерпаны, так что со вторым томом придётся либо подождать, пока не соберётся нужная сумма, либо изыскивать какие-то ещё ресурсы. Но все эти трудности с лихвой перекрывает одно важное обстоятельство: никто, включая меня самого, не ожидал, что удастся собрать в виде пожертвований сумму, превышающую 400 000, то есть больше двух третей от заявленной цели.
Здесь я привожу полный (на 19 февраля 2016 г.) список донэйторов, кроме тех, кто пожелал сохранить инкогнито; каждый участник включён в список под таким именем, которое указал сам:
Gremlin, Grigoriy Kraynov, Шер Арсений Владимирович, Таранов Василий, Сергей Сетченков, Валерия Шакирзянова, Катерина Галкина, Илья Лобанов, Сюзана Тевдорадзе, Иванова Оксана, Куликова Юлия, Соколов Кирилл Владимирович, jeckep, Кулёва Анна Сергеевна, Ермакова Марина Александровна, Переведенцев Максим Олегович, Костарев Иван Сергеевич, Донцов Евгений, Олег Французов, Степан Холопкин, Попов Артём Сергеевич, Александр Быков, Белобородов И. Б., Ким Максим, artyrian, Игорь Эльман, Илюшкин Никита, Кальсин Сергей Александрович, Евгений Земцов, Шрамов Георгий, Владимир Лазарев, eupharina, Николай Королев, Горошевский Алексей Валерьевич, Леменков Д. Д., Forester, say42, Аня “canja” Ф., Сергей, big_fellow, Волканов Дмитрий Юрьевич, Танечка, Татьяна ’Vikora’ Алпатова, Беляев Андрей, Лошкины (Александр и Дарья), Кирилл Алексеев, kopishS2, Екатерина Глазкова, Олег “burundukS” Давыдов, Дмитрий Кронберг, yobibyte, Михаил Аграновский, Александр Шепелёв, G.Nerc=Y.uR, Василий Артемьев, Смирнов Денис, Pavel Korzhenko, Руслан Степаненко, Терешко Григорий Юрьевич 15e65dSd, Lothlorien, vasiliandets, Максим Филиппов, Глеб Семёнов, Павел, unDEFER, kilolife, Арбичев, Рябинин Сергей Анатольевич, Nikolay Ksenev, Кучин Вадим, Мария Вихрева, igneus, Александр Чернов, Roman Kurynin, Власов Андрей, Дергачёв Борис Николаевич, Алексей Алексеевич, Георгий Мошкин, Владимир Руцкий, Федулов Роман Сергеевич, Шадрин Денис, Панфёров Антон Александрович, os80, Зубков Иван, Архипенко Константин Владимирович, Асирян Александр, Дмитрий С. Гуськов, Тойгильдин Владислав, Masutacu, D.A.X., Каганов Владислав, Анастасия Назарова, Гена Иван Евгеньевич, Линара Адылова, Александр, izin, Николай Подонин.
Я хотел бы выразить свою глубочайшую признательность всем, кто принял участие в финансировании проекта. Кроме того, отдельное огромное спасибо: Глебу Семёнову и Алексею Виссарионову, которые не поленились прочитать рукопись и буквально завалить меня замечаниями, позволившими сделать текст гораздо лучше, чем он был; Андрею Вороненко за ценные замечания относительно “математической” части книги; Екатерине Ясиницкой за героический корректорский труд, граничащий с подвигом; Елене Доменновой за прекрасный рисунок для обложки и дизайн этой самой обложки.
Кстати об обложке. Сюжет рисунка, где земной шар стоит на трёх костылях на спине бага, едущего по полю с граблями на велосипеде с квадратными колёсами, а вокруг летает офигевшая рыба с крыльями и перепончатыми лапами, я позаимствовал из произведения неизвестного автора, которое легко отыскивается в Интернете по названию “Удивительный мир программирования”. Исходное произведение представляло собой рисунок фломастерами по whiteboard’^ который кто-то не поленился сфотографировать. Большое спасибо автору оригинального рисунка за идею, обеспечившую меня изрядной дозой позитивного настроения; надеюсь, что наш римейк ему понравится :-)
Опыт этого проекта заставил меня во многом переосмыслить своё отношение к окружающей действительности и в каком-то плане даже поверить в человечество. Вряд ли можно придумать другое столь же убедительное доказательство тому, что моя деятельность востребована и я не напрасно трачу время на свои книги. Но главный вывод из успеха нашего с вами, дорогие донейторы, проекта состоит в том, что мы можем, действительно можем обойтись без копирайтных паразитов и вообще института так называемого “авторского” (а на деле сугубо издательского) права. Создатели свободного программного обеспечения в своей области показали это уже давно; в области художественной литературы это обстоятельство уже тоже практически очевидно, порукой тому множество “самиздатовских” сайтов в Интернете и обилие любительских переводов зарубежной “художки”; книга, которую вы держите в руках — это ещё один весьма наглядный гвоздь в крышку гроба традиционного (т. е. копирайтного) издательскомедийного бизнеса, построенного на информационном насилии, и очень серьёзный шаг к построению свободного информационного общества, в котором люди вольны вступать в коммуникацию по обоюдному согласию передающего и принимающего, не оглядываясь при этом на всевозможных цензоров и “правообладателей”. С этой весьма убедительной, хотя и небольшой победой я хотел бы сегодня поздравить и вас, и себя.
1 Подробности о моём отношении к так называемым “социальным сетям” изложены в моей статье “Театр контентного абсурда. Социальные сети: история одной терминологической деформации”, которую легко найти в Интернете с помощью поисковых машин.