Чтобы прервать затянувшуюся паузу в новостной ленте, пожалуй, отчитаюсь о текущем состоянии дел.
В минувшем апреле я прочитал курс "Архитектура ЭВМ и язык ассемблера" в свежеоткрытом ереванском филиале МГУ. Зная о предстоящей командировке, я очень хотел выпустить второй том до неё, чтобы использовать его в качестве учебника, но не успел (вот просто тупо не успел внести корректуру) — и, как показали дальнейшие события, хорошо, что не успел. Чтение лекций выявило целый ряд интересных моментов (как говорят англоязычные люди, issues), в основном в примерах программ, но не только; в общем, нынче я занят правками, а потом всё-таки надо будет дописать ещё два начатых, но всё ещё не оконченных параграфа в части, посвящённой Си — про valgrind и про системы контроля версий.
Динамика объёмов рукописи такова, что ранее предполагавшиеся третья, четвёртая, пятая и шестая части в один том не лезут уже вообще никак, посему мне пришлось опять скорректировать планы. Во второй том войдут только части про ассемблер и plain C; даже в такой конфигурации оно сейчас вымахало до 465 страниц — судя по всему, в 464 это уже не загнать, так что будет, видимо, следующее число, кратное 16 (размер печатного листа), то есть 480.
Сейчас я предполагаю, что томов будет четыре. В третий войдут часть по операционным системам, часть по сетям (которой раньше не планировалось; в неё превращается одна из глав предыдущей части) и часть, посвящённая параллельному программированию и разделяемым данным. Четвёртый том будет состоять из части про C++, части про Qt, части про парадигмы и, возможно, чего-то ещё. Впрочем, всё это — планы на очень далёкую перспективу, причём, вполне возможно, сей вариант светлого будущего никогда не настанет, и тому есть две причины. С одной стороны, написать предстоит едва ли не больше, чем уже написано, причём если материал, вошедший в уже написанные части, я прекрасно знал, то в частях, которые планируются к написанию, предстоит довольно изрядный объём изучения и повышения собственного уровня.
С другой стороны, проект уже сейчас в хорошем финансовом минусе; деньги на издание второго тома у меня найдутся (собственные ресурсы никто не отменял), но после этого "минус" окажется где-то в районе 150 тысяч, что гораздо больше, нежели я могу себе позволить. Я ещё надеюсь на возобновление потока пожертвований, но никакой уверенности в этом у меня нет. Остаётся надеяться на чудо в виде продажи сколько-нибудь заметной части тиража. Так или иначе, после издания второго тома проект практически неизбежно придётся отправить в анабиоз; в конце концов, у меня есть и другие дела, кроме как эту книжку писать, и я эти свои дела изрядно запустил. В случае, если этот анабиоз сильно затянется, придётся в какой-то момент запустить "план Б": слить оставшиеся (написанные, но не вошедшие в первые две книжки) части в один том и в таком виде издать. Тут меня несколько смущает, что я не представляю, как такой том назвать :-)
Так или иначе, проект пока жив, я очень надеюсь хотя бы до конца мая всё-таки отдать рукопись второго тома в издательство. Спасибо всем, кого этот проект всё ещё интересует!
Почему plain C
Почему plain C разве не pure C.
Ну не так чтобы совсем "нет"...
В принципе оба словосочетания используются, но plain C я встречал гораздо чаще, и по мне так оно существенно лучше передаёт смысл ситуации.
Сбор пожертвований
Андрей Викторович, на каких площадках и где вы собираете пожертвования в данный момент? Мне кажется, что о вас просто почти никто не знает, ушла тема месяца на лоре - и все, забыли.
Про площадки
Инструкция по внесению пожертвования, как и раньше, расположена тут: http://www.stolyarov.info/books/programming_intro/donate.html
Никакими "площадками" я не пользуюсь, причины изложены, например, в предисловии к только что вышедшему первому тому, см. стр. 9, третий абзац сверху.
Финансирование
Будет жаль, если не найдется финансирование. Найти бы способ привлечь еще людей.
Желаю удачи и спасибо за работу.
Ну да, есть такое
С одной стороны, ценность первых двух томов, первый из которых уже вышел, а второй вот-вот выйдет (если только меня трамваем не переедет) изрядно выше, чем двух (?) оставшихся. Так что проект в любом случае уже удался.
С другой стороны, конечно, хотелось бы проект завершить полностью, мне он самому нравится. Ну, пожертвования -- они либо возобновятся, либо нет; я, к сожалению, подозреваю, что основную массу людей, которые могли поддержать этот проект, я уже "выбил". Вот если бы сейчас найти канал сбыта бумажных книжек, ну там магазин какой-нибудь, это бы проект спасло надёжнее, чем пожертвования, поскольку денег от продажи тиража очередного тома вполне может хватить на издание следующего, и так каждый раз.
Параллельное программирование и разделяемые данные
Очень заинтересовала эта тема. Можете посоветовать откуда начать собственное изучение?
А зря
Та часть моей книжки, которая будет этому посвящена, будет написана в духе "почему ни в коем случае всем этим не надо пользоваться".
Точнее, один случай есть -- это когда программа реально требует много процессорного времени. Но такого почти никогда не бывает, а в основном люди используют треды, когда не умеют программировать в терминах явных состояний. То есть они тред используют как хранилище неявного состояния. И при этом обычно не понимают, зачем нужны мьютексы.