Проект создания новой книги

Programming Intro vol.1 coverProgramming Intro vol.2 coverProgramming Intro vol.3 coverProgramming Intro vol.4 cover

Благодаря усилиям донэйторов были благополучно опубликованы сначала четыре тома первого издания, потом второе издание и задачник. Электронные версии всех книг размещены в открытом доступе. Объём томов первого издания: 464+496+400+656=2016 страниц; объём второго издания: 704+704+704=2112 страниц (при том что предметный указатель теперь один на все тома). Объём задачника 156 страниц, он издан в мягкой обложке.

Уже устал отвечать на один и тот же вопрос, поэтому выношу ответ сюда. Три тома второго издания включают весь материал четырёх томов первого издания, просто было три тома тоненьких и один толстенький, а стало три тома абсолютно одинаковых по толщине.

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

  1. Вводная
  2. Паскаль
  3. Ассемблер
  4. Си
  5. Основные системные вызовы Unix (файлы, процессы, терминал)
  6. Компьютерные сети
  7. Работа с разделяемыми данными
  8. Внутренности ядра
  9. Парадигмы как явление
  10. Си++ (включая GUI на FLTK)
  11. Неразрушающие языки (Лисп, Scheme, Пролог, Хоуп)
  12. Компиляция и интерпретация, в том числе здесь Tcl и Tcl/Tk

Так вот, в первом издании первый том содержал части 1 и 2, второй — части 3 и 4, третий — части 5, 6, 7 и 8, четвёртый — части 9, 10, 11 и 12. Во втором издании части строго те же самые и в том же порядке, только первый том содержит первые три части, второй — части с 4 по 8, а четвёртый как был, так и остался, только стал третьим. Ничего никуда не исчезло, не делось и не было выкинуто. Ну, кроме разве что рисунка обложки от второго тома первого издания, вот им пришлось пожертвовать.

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

О проекте

Книга изначально задумывалась как некий сборник основных сведений, нужных, чтобы самостоятельно освоить программирование с использованием операционных систем семейства Unix и доступных там инструментов в роли учебных пособий. На тему того, как можно стать программистом, была даже написана отдельная статья, анонсированная в своё время следующим образом:

Профессия программиста — одна из самых востребованных, дефицитных и высокооплачиваемых, но никакое образование — даже в самых лучших ВУЗах — не делает человека программистом. Практически все профессионалы сходятся во мнении, что их программированию никто не учил и пришлось научиться самому. Но и самообучение оказывается проблематично в условиях, когда большинство существующих платформ устанавливает высокий барьер вхождения, исключающий программирование на любительском уровне. [СТАТЬЯ ПОЛНОСТЬЮ >>>]

Текст этой статьи позже лёг в основу второго («методического») предисловия, вошедшего в первый том. Сейчас, пожалуй, как раз эти три предисловия вместе — «философское», «методическое» и «напутственное» — дают наиболее адекватное представление об идейной основе и целях проекта.

Исходное описание планов по содержанию книги выглядело так:

Согласно авторскому замыслу, книга должна охватить этапы изучения программирования в объёме «продвинутой» школьной информатики (в той её части, которая непосредственно касается программирования) и первых двух курсов ВМК МГУ, с учётом использования операционной среды ОС Unix. В книгу войдёт (в сильно переработанном виде) материал, ранее использованный в книгах Операционная среда ОС UNIX для изучающих программирование, Программирование на языке ассемблера NASM для ОС Unix, Введение в операционные системы и Введение в язык Си++, что составит, по ощущениям, около половины объёма будущей книги. С нуля придётся написать, во-первых, главу, посвящённую математическим основам программирования — теории алгоритмов и её связи с теорией вычислимости; во-вторых, полностью с нуля будет создана часть, посвящённая начальному освоению программирования на примере языка Паскаль, а также сравнительно небольшая, но необходимая часть, посвящённая языку Си. Если хватит сил, стоит снабдить книгу также частями, посвящёнными Лиспу и Прологу.

Для пояснения сказанного был даже сделан некий план-проспект будущей книги, с которым по-прежнему можно ознакомиться, хотя нынешняя реальность от него довольно сильно отличается. Когда все семь основных частей, из которых должна была состоять книга, были с горем пополам завершены — некоторые путём переработки существующих текстов, некоторые «с нуля» — оказалось, что объём полученной рукописи уже существенно превышает разумный объём для одной физической книги, при этом охвачен ещё не весь материал, который хотелось бы охватить, а некоторые из имеющихся частей всё ещё пребывают в слишком сыром виде. Логичным выходом из сложившейся ситуации стало решение превратить книгу в трёхтомник, а позже, уже в процессе работы над вторым томом, стало ясно, что планировавшихся к включению в него материал, как водится, «не лезет», и планируемых томов естественным образом стало на один больше.

Первые два тома, вышедшие к июлю 2016 г., по своему совокупному объёму превысили изначально ожидавшийся объём всей книги и содержат все наиболее интересные части, написанные с нуля: вводную часть, содержащую всевозможные предварительные сведения; часть, посвящённую начальным навыкам программирования на примере Паскаля; и часть, посвящённую программированию на Си. Кроме того, во второй том вошёл (в изрядно переработанном варианте) материал одной из моих наиболее популярных старых книжек — Программирование на языке ассемблера NASM для ОС Unix.

Оставшиеся три части из семи изначально планировавшихся предполагалось «сделать» из существующих текстов путём не слишком значительной переработки. С появлением в планах третьего и четвёртого томов концепция, естественно, изменилась. Третий том, изданный летом 2017 г., посвящён устройству и возможностям операционной системы, включая взаимодействие процессов через компьютерные сети, а также параллельное программирование, при этом примерно 85% его содержания пришлось написать с нуля.

Четвёртый том, если до него дойдёт дело, будет целиком отдан программированию высокого уровня, начиная с ООП и языка Си++, заканчивая «альтернативными» парадигмами и экзотическими языками, такими как Лисп, Пролог, Хоуп и т.п.; в этот же том планируется включить главу о создании графических интерфейсов на основе какой-то из подходящих библиотек (скорее всего Qt, но пока что это не окончательно) и о скриптовом программировании (Tcl + Tcl/Tk). Из всего этого великолепия к настоящему времени существует (и выдержал три переиздания) только текст о языке Си++, что составляет не более трети объёма планируемого четвёртого тома. Более подробно о планах будущее рассказывается на отдельной странице.

Написание четвёртого тома заняло больше времени, чем создание первых трёх вместе взятых, и по объёму он получился, естественно, самым большим. Так или иначе, теперь он доступен для публики.

Финансовый вопрос

Первоначальный анонс краудфандингового проекта содержал следующий текст:

Сотрудничество с издателями по их правилам означало бы, что книга, если она когда-нибудь появится, будет доступна исключительно в бумажном виде, либо, что ещё хуже, кто-нибудь из торговцев воздухом типа литреса или ещё кого начнёт продавать её электронный вариант за вполне реальные деньги (хотя за биты и байты платить можно разве что даже не ксерокопиями, а электронными сканами денег — такой обмен был бы справедливым). В таком случае книгу лучше вообще не писать; среди всех возможных результатов своей деятельности я совершенно не расположен видеть обогащение этих паразитов, причём обогащение за счёт моих читателей.

С другой стороны, бумажный вариант — наряду с вариантом электронным, который должен быть доступен, что называется, по определению бесплатно — всё же желательно тоже сделать. А ещё есть такой момент, что проект оказывается достаточно масштабным, по предварительным оценкам написание книги потребует около 500 часов, плюс-минус полсотни. К получению «адекватной оплаты» за потраченное время я не стремлюсь — это заведомо невозможно, для этого нужно заниматься не тем, что хочется делать самому, а тем, чего хочет очередной заказчик. Просто чтобы выделить такой объём рабочего времени, мне нужно временно (на период работы над книгой) перестать заниматься подработками, а жить на что-то всё-таки надо.

Исходный финансовый план проекта предполагал, что деньги пойдут на две основные цели: частичную компенсацию рабочего времени автора (600р/час) и издание бумажной версии книги; затраты рабочего времени ожидались порядка 500 часов, стоимость издания оценивалась в 280 тыс. рублей, 20 тыс. оставлялось на непредвиденные расходы; общий бюджет проекта, таким образом, оценивался в 600 000 рублей.

В действительности только на подготовку первых трёх томов ушло свыше 950 часов, а общие монетарные расходы (издание, корректура, дизайн обложки, рассылка обещанных экземпляров донэйторам) в настоящий момент приближаются к 400 тысячам, при том что тираж вышедших томов составил всего 300 экземпляров, а не 1000, как это исходно планировалось. Проект сейчас находится в глубоком финансовом «минусе» (upd: уже нет). Грядущие монетарные расходы на четвёртый том ожидаются порядка 150 тысяч; ну а времени потребуется ещё по меньшей мере 300-400 часов (и это, скорее всего, слишком скромная оценка), так что общий бюджет проекта с учётом издания всех четырёх томов должен составить приблизительно 1300000 рублей. Подробно финансовый план проекта изложен на отдельной странице.

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

Как поддержать проект

Оказать поддержку проекту можно тремя основными способами: купив уже изданные тома в бумажном виде, пожертвовав деньги на дальнейшее развитие проекта и, наконец, рассказав о проекте кому-нибудь ещё.

  • Покупка книг

Все три вышедших к настоящему моменту тома могут быть заказаны на этом сайте как в единичных экземплярах, так и мелким оптом (от пяти экземпляров каждого тома); заказ может быть выслан почтой в любую точку России. См. соответствующую страницу сайта. К сожалению, в настоящее время у нас отсутствует возможность работы с зарубежными заказчиками; за это приносим свои извинения.

  • Финансовая поддержка проекта

С благодарностью принимаются любые суммы от одного рубля. Ваши пожертвования вы можете перевести на указанный номер счёта в Сбербанке (для клиентов Сбербанка из Москвы сам перевод бесплатный, если делать его из «Сбербанк Онл@йн» или из банкомата). О сделанном пожертвовании просьба сообщить по электронной почте с указанием, как (под каким именем) вы хотите быть упомянуты в списке доноров; пожертвования, по которым в течение двух дней не пришло электронного письма, будут обозначены в списке как анонимные. Реквизиты и прочие подробности здесь: [ВНЕСЕНИЕ ПОЖЕРТВОВАНИЙ >>>]

  • Word of mouth (a.k.a. сарафанное радио)

Было бы прекрасно, если о проекте узнает как можно больше людей, имеющих отношение к IT и профильному образованию, но только при условии разборчивости в средствах распространения информации [РАСПРОСТРАНЕНИЕ ИНФОРМАЦИИ О ПРОЕКТЕ >>>]

Что взамен

Как это обычно делается в краудфандинговых проектах, для всех, кто пожертвует более-менее заметные суммы (начиная от 300 рублей), предусмотрены определённые (как нематериальные, так и осязаемые) вознаграждения в знак признательности за поддержку проекта [«ПЛЮШКИ» ДЛЯ ДОНОРОВ >>>]