Дорогие друзья!
Пока рукопись имеющихся частей готовится к изданию, у меня возникла мысль, которую я хотел бы с вами обсудить. С одной стороны, издание хочется уже начать как можно скорее; с другой стороны, многие идеи пока что не реализованы, и чем дальше, тем сильнее мне кажется, что части, посвящённые альтернативным парадигмам программирования, а также, например, часть о графических интерфейсах всё же должны существовать.
Мысль у меня в связи с этим такая. Вместо одной книги я хочу начать издание трёхтомника; первый том будет иметь рабочее название "Программирование для начинающих", в него войдут предисловия, введение (включая сведения из математики, историю и т.п.) и часть про Паскаль. Этот том можно будет издать практически прямо сейчас, вот только корректор закончит с ним возиться -- ориентировочно в начале января можно будет отдать его в печать.
Во второй том войдут части, посвящённые ассемблеру, Си, операционным системам и параллельному программированию. Пока первый том готовится и печатается, я всё-таки успею дописать главы, посвящённые ncurses (в части про Си — под заголовком "полноэкранные терминальные программы") и termios (в части про операционные системы). Где-то в феврале этот том, соответственно, тоже уйдёт в печать — под рабочим названием "низкоуровневое программирование".
Из существующих на данный момент семи частей в эти два тома войдут первые шесть; останется седьмая -- посвящённая C++, но это не страшно, поскольку моя книжка по C++ уже неоднократно издавалась и доступна на сайте, а получившаяся из неё седьмая часть "большой книги" отличается очень слабо. То есть, опубликовав первые два тома, я при этом пущу в печать (и выложу на сайт) весь материал, который был создан (или всерьёз переработан в сравнении с оригиналом) в ходе проекта.
Часть по Си++ войдёт в третий том, который будет издан, в зависимости от обстоятельств, ориентировочно через семь-восемь месяцев под рабочим названием "высокоуровневое программирование". Кроме Си++, туда войдёт ещё часть про Tcl/Tk (здесь разом убиваются даже не два, а три зайца: демонстрируется командно-скриптовая парадигма и даются простейшие навыки создания графических интерфейсов, плюс к тому показываются в работе встраиваемые и расширяемые интерпретаторы -- Tcl умеет быть и тем, и другим), часть про какую-нибудь библиотеку виджетов (скорее всего Qt, хотя возможны варианты) и часть про "альтернативные" языки, куда войдёт описание Лиспа, краткое описание Scheme и её отличий от "обычных" лиспов, а также описания Пролога, Рефала и, возможно, чего-то ещё в таком духе (да простят меня хаскелисты, но точно не Haskell; с ним не ко мне).
С "плюшками" для донейторов я предполагаю поступить следующим образом. Кому я обещал диск с автографом -- я его вышлю сразу после выхода второго тома. Кому была обещана книга -- я предоставлю комплект из двух первых томов, опять же сразу после выхода второго тома. Несколько сложнее с "подарочным вариантом"; здесь я склоняюсь к мысли, что после выхода третьего тома нужно будет сделать "фирменный" чехол на все три тома (сделать его можно только после выхода всех трёх томов, иначе никак не угадать с толщиной); соответственно, этим донейторам я сразу после выхода первых двух томов вышлю эти два тома, а после выхода третьего -- пришлю ещё и третий, ну и сувенирный чехол вдобавок. Что касается упоминаний в тексте, то список _всех_ донейторов, пожертвования которых превысили 300 рублей, я намерен включить в каждый из томов (естественно, в каждом томе будет список, актуальный на момент выхода этого тома).
Если у кого-то есть возражения и прочие соображения, готов их выслушать; и спасибо всем, кто дочитал до этого места :-)
GTK+
Предлагаю для третьего тома в качестве библиотеки ГИП рассмотреть GTK+. Дополнительно к демонстрации построения оконных интерфейсов и событийно-ориентированного программирования, этим вы могли бы показать использование ОО-подхода в не ООП-языке.
Отклоняется
Пусть этот монстр сначала научится статически собираться.
Собирается
configure --disable-modules
The --disable-modules argument indicates that they should all be built statically into the GTK+ library instead. This is useful for people who need to produce statically-linked binaries.
Источник: https://developer.gnome.org/gtk3/stable/gtk-building.html
Слон сдох
Спасибо за инфу, попробую на досуге. Если действительно соберётся, то, может, действительно имеет смысл про неё написать.
P.S. Если что, у меня несколько лет назад попытки собрать статически программу с WXWidgets/GTK окончились ничем именно из-за GTK, после чего я сильно обозлился, т.к. под виндой та же программа с WXWingets/win32 собралась под MinGW без малейших жужу, выдав самодостаточный exe-шник. Ну то есть вот мои ощущения -- пишу под Linux, портирую под Win, в итоге под ненавистной виндой имею полный успех, а под любимым линуксом -- эпик фейл.
Андрей
Андрей Викторович , хорошая мысль! Полностью поддерживаю.
Я вроде как про это же(разбить книгу на тома) писал вам гостевую книгу. С нетерпением ждём!
Идея отличная
Андрей Викторович , мне кажется это более хорошая идея, трехтомник будет лучше одной огромной книги.
"Плюшки" для донейторов
Получается, что донейтеры, которым была обещана книга, получат на самом деле 2/3 "большой" книги (в бумажном виде) -- не очень справедливо.
Вообще-то не 2/3,
Вообще-то не 2/3, а около 7/8 (шесть частей из семи, плюс предисловия, которые тоже по объёму как отдельная часть), а если в страницах, то около 9/10. Плюс к тому оставшаяся "в загоне" седьмая часть не представляет собой ничего нового. Наконец, есть ещё один момент, который вы, видимо, упускаете: донейторам было в явном виде сказано, что я оставляю за собой право не исполнять какие-то или все из предложенных здесь поощрительных мер, как в отношении отдельных доноров, так и вообще в целом. Как можно заметить, цель в 600000 достигнута не была, вот и приходится изворачиваться.
Вообще-то я об этой "несправедливости" думал. В принципе, я мог бы, наверное, одновременно с первыми двумя томами издать ещё и сотню экземпляров "Введения в C++", благо она тоненькая, и разослать её вместе с двумя томами двухтомника тем из донейторов, кому "не положен" третий том; тогда бы все формально получили ровно то, что им обещалось. Но тут есть один недостаток: с выходом третьего тома "Введение в C++" отдельной книжкой окончательно лишится любых шансов на распродажу, а следствие из этого довольно забавное: третий том не будет издаваться, пока те (примерно 60) экземпляров "Введения в C++", которые останутся после рассылки донейторам, не будут распроданы. А это, судя по опыту предыдущих её изданий, может занять пару лет. Оно надо?
Мне кажется, в
Мне кажется, в таком виде третья часть отступит от основной идеи книги "я знаю, как преподавать основы всем, кто поступил на программистскую специальность" и начнёт ново-старую тему "используйте немейнстримные инструменты" (к тому же, распадающуюся на части).
И лично мне было бы удобней видеть эти главы как "дополнительные тесты" к основному, неизданными, в виде электронных статей на сайте. Не знаю, какие у Вас соображения именно к ИЗДАНИЮ этих текстов, по-моему, это не слишком осмысленно.
?
Мысль не понял, но на поставленный вопрос ответить, пожалуй, всё же могу. Я, кроме всего прочего, читаю ещё и курс "Парадигмы программирования" и по нему давно хотел сделать пособие. Что касается "электронных статей", то вот в этом я вообще не вижу никакого прока. Публика такие тексты всерьёз не воспринимает, если текст претендует на что-то серьёзное, он должен быть опубликован в бумаге.
И, кстати, вот уж чего я никогда не имел в виду, так это предложения "использовать немейнстримовые инструменты". Зато я точно знаю, что когда-то очень давно, больше двадцати лет назад, я вполне профессионально писал на Паскале (реально зарабатывал этим деньги), и тут вдруг пришлось — практикум у нас такой был на кафедре — изучать Лисп. Так вот, мой паскалевский код "до" и "после" этого можно было отличить невооружённым взгядом.
Я к тому, что парадигма — она в голове, а не в инструменте, хотя и в инструменте тоже.
(от одного из
(от одного из жертвователей)
Хорошая идея, я поддерживаю! Считаю, что если книжка по программированию получается толстой, то в ней обязательно надо рассказать про разные парадигмы программирования.
Из ваших отчетов в процессе написания меня несколько разочаровал подход к изучению программирования через языки: во-первых, всевозможных книжек вроде "Введение в Си++" кубометры в любом магазине, и нет необходимости ещё в одной, а во-вторых, фраза "я хороший программист, знаю Си, Си++ и Си шарп" - это фраза студента на собеседовании, ведь умение программировать измеряется не в изученных языках, а скорее в освоенных подходах и парадигмах, и хотелось бы, чтобы книжка скорее давала представление об этом. Разделение серии на введение и части по низкоуровнему и высокоуровнему программированию с хорошим введением к каждой части снимет эту претензию, поэтому я за.
Кстати, если для бумажного издания поступивших средств недостаточно (пару раз были фразы об этом), считаю возможным преобразовать плюшку "получение бумажного экземпляра" в плюшку "выкуп бумажного экземпляра со скидкой по себестоимости", лично я бы не возражал.
Гм
За поддержку спасибо :-) Но, пардон, если бы книжек вроде моей по C++ были не то чтобы кубометры, а хотя бы одна, я бы свою тогда писать не стал. Реальность такова, что мне уже очень давно не попадалось книжек по C++, где бы изучался сам язык (плюс АТД и ООП), а не его дебильная "стандартная библиотека".
Насчёт преобразования плюшки — такой вариант почти ничего не даст, тираж менее 100 экземпляров в любом случае не имеет смысла, разница по стоимости между 100 и 150 небольшая, а если, например, пытаться зайти на офсетный тираж (от 500 и выше), то тут просто без вариантов останутся нераспроданные экземпляры, и чего я, спрашивается, стану книжки эти экономить, причём на тех людях, благодаря которым они вообще появились.
Что думаете
Что думаете насчет рассмотрения Python'а, а не Tcl/Tk?
Python также скриптовый язык, и встраивается, и расширяется. Python более распространен в индустрии; на мой взгляд, он также более удобен, красив и понятен начинающему. В нем, правда, в отличие от Tcl/Tk runtime-значения имеют собственный тип, не обязательно строковый. Также его стандартная библиотека включает в себя средство создания GUI Tkinter --- надстройку над Tk, и для Python'а есть байндинги к распространненным GUI-библиотекам (PyGTK, PyQt, wxPython), так что объяснять GUI-программирование можно и на его основе.
Написание дополнительных текстов я поддерживаю.
Пожалуй, всё-таки нет
Честно говоря, я не хотел бы продвигать Python ещё больше: на мой взгляд, его популярность и так превышает то, что он заслуживает, притом в десятки раз. Tcl хотя бы не претендует на роль универсального языка, это именно что скриптовой язычок для скриптовых применений; а питонисты норовят на этом их питоне писать всё что можно, и что нельзя тоже. Так что вряд ли.
Потеря комментариев
К этой странице было написано несколько очень интересных комментариев; к сожалению, ни archive.org, ни Google не успели эти комментарии утащить к себе, так что при аварии сервера 12.01.2016 г. информация оказалась потеряна.Если у кого-нибудь случайно есть копия этой страницы с комментариями, я был бы очень признателен, если вы её мне пришлёте.
Прошу прощения за случившееся ЧП.
upd: В кеше Яндекса обнаружился экземпляр почти со всеми комментариями, так что всё в итоге восстановлено. Уфф.