Тег «книги»

Книжная халява

Сегодня по дороге на работу купил «Порождающее программирование» и «Распределенные системы». За 40 рублей каждую. А неделей раньше там же приобрел «C++ Boost Graph Library» по той же цене.

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

Где купил — не скажу :)

SICP

Начал почитывать легендарный MIT-овский курс — Structure and Interpretation of Computer Programs. И, соответственно, понемногу делаю оттуда упражнения. Эти упражнения некоторым так нравятся, что они аж целый сайт забабахали с решениями. Не для неосиливших, ни в коем случае! Исключительно для самопроверки.

Пока терзаю первую главу и должен признаться, что если бы нас так учили на первом курсе (а в MIT эту книгу проходят как раз на первом курсе, хотя и не всю), то я бы сейчас был мегазвездой программирования. Хотя теперь уже я для себя в SICP новой информации почти не нахожу, но все же есть ощущение «в первый раз в первый класс». Примерно как у средневекового алхимика, попавшего на школьный урок химии: вроде бы он всю жизнь точно так же смешивал жидкости, но все-таки чего то не хватало для полного понимания того, что при этом происходит. Он, конечно, может начать вопить что-то вроде «Я тут самый умный, да вы жизни не видели, да я свинец в золото тоннами, да я…» (легкий такой намек на «гениальных русских программистов», которые «и так все знают»), но учительница подойдет, треснет указкой по макушке и ласково объяснит, как на самом деле все в жизни обстоит.

Вот и в SICP есть то самое «что-то». Без характерного для «чайниковских» книг сюсюканья, без излишнего усложнения (для первокурсников все же пишут), сложные вещи объясняются простыми словами. После прочтения неизменно наступает просветление. У меня даже возникло было неожиданное желание начать писать конспект. Но лень и здравый смысл победили.

Буду лишь иногда писать выжимки из текста и разбор интересных упражнений. Так, чисто для себя. Или будем меряться решениями?

УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Книга: «Программирование в стандарте POSIX. Часть 2»

Галатенко В.А. Программирование в стандарте POSIX. Часть 2Название: Программирование в стандарте POSIX. Курс лекций. Учебное пособие. Часть 2.
Автор: В.А. Галатенко
Год выхода: 2005
Издательство: Интернет-Университет Информационных Технологий
Тираж: 500
Объем: 384 стр.
Обложка: твердая
Где покупал: нигде (подарок)

Как некоторые, возможно, догадались из названия, эта книга — продолжение уже описанного мною одноименного курса. Как и первая часть, эта книга имеет соответствующий курс на Интуите. Только если первая часть посвящена програмированию в POSIX-системах вообще, то эта — программированию мобильных приложений реального времени. Да еще и в POSIX. Но на обложке об этом ничего не сказано, чтобы, не дай бог, читателей не распугать раньше времени.

Системы реального времени — вообще штука непростая, скажу вам как имеющий к этому делу отношение. А уж мобильное (portable) программирование СРВ — и вовсе высший пилотаж. Хотя бы потому, что мобильность приложений реального времени сродни Неуловимому Джо. Обычно, когда разрабатывается СРВ, софт пишется под конкретную железяку (или уж по меньшей мере под конкретную ОС), на ней же тестируется, и если работает, то его стараются больше не трогать. Переносить уже написанную управляющую программу на другое железо вряд ли кому-то придет в голову. Тем не менее, POSIX имеет определенные средства для написания программ реального времени, и даже позволяет относительно легко написанное потом переносить.

Посмотрим, что нам в этой книге предложено:

  • потоки управления и средства их синхронизации;
  • сигналы реального времени, часы, таймеры;
  • очереди сообщений, семафоры, разделяемая память;
  • файлы, отображаемые в память, типизированная память, удержание страниц в памяти;
  • приоритетное планирование;
  • асинхронный ввод-вывод;
  • рекомендательные интерфейсы;
  • трассировка приложений (не путать с пошаговой отладкой!);
  • технологические (прикладные) интерфейсы.

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

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

Для общего развития вряд ли стоит читать такую книгу, но специалистам по POSIX-программированию однозначно must have. Правда, тираж совершенно мизерный, так что есть вероятность, что в продаже уже не найдешь. Читайте онлайновый курс, там то же самое.

УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Ссылки для изучающих C

Вчера была нетленка, поэтому сегодня расслаблюсь и просто дам несколько ссылок на бесплатные, но очень полезные ресурсы по языку C.

  • C Elements of Style — сокращенный вариант старой доброй книжки лохматого года; слегка устарела, но все равно содержит массу полезного;
  • Learning GNU C — туториал про одноименный диалект C;
  • An Introduction to GCC — руководство по gcc и g++;
  • C FAQ — огромный FAQ по языку;
  • Writing Bug-free C Code — оригинальная методология программирования на C с элементами ООП, позволяющая вроде бы упростить обнаружение ошибок; почитать интересно, но применять стремно;
  • The GNU C Library — мануал по стандартной библиотеке C в исполнении GNU;
  • Top 10 Ways to be Screwed by C — топ 10 сишных граблей; будет особенно полезно начинающим;
  • (UPD) Programming in C — курс лекций по С с упором на UNIX-среду;
  • (UPD) C Traps and Pitfalls — статья про скользкие места C;
  • (UPD) Notes on Writing Portable Programs in C — статья про написание переносимых программ на C; категорически рекомендую;
  • (UPD) Indian Hill: Recommended C Style and Coding Standards — рекомендации по стилю C-программ от ребят из одной лаборатории AT&T.

Интересные ссылки из комментов переносятся в основной пост, так что пишите.

УжасноПлохоНормальноХорошоОтлично (2 голосов, средний: 5.00 из 5)
Loading ... Loading ...

Книга про Python 3

Истинно вам глаголю, третий питон станет массовым, когда на него перейдет Django. Пока это, безусловно, очень перспективный язык, но не хватает ему критической массы разработчиков (которую, как мне кажется, уже набрал Python 2.x). И еще один важный шаг — включение сабжа в репозитории линуксов. Вот тогда-то и начнется!

А пока Марк Пилгрим закончил работу над своей новой книгой — Dive Into Python 3. Написана приятным языком, с юмором, читается легко, примеры программ адекватные. Приятно, что по целой главе уделено блочному тестированию и рефакторингу. Да и вообще, очень жизненно излагает. Внушает, как говорил один персонаж из нашего демократического прошлого по имени Х. М.

Особенно порадовало то, что книгу можно бесплатно и совершенно легально скачать в формате PDF или HTML. Энтузиасты могут даже читать ее прямо на означенном выше сайте. Очевидно, именно для таких людей автор поместил на страницу берущие за душу строки:

This site is optimized for Lynx just because fuck you.
I’m told it also looks good in graphical browsers.

На этой оптимистичной ноте разрешите откланяться.

УжасноПлохоНормальноХорошоОтлично (Еще не оценили)
Loading ... Loading ...

Книга: «Программирование в стандарте POSIX. Часть 1»

Галатенко В.А. Программирование в стандарте POSIX. Часть 1Название: Программирование в стандарте POSIX. Курс лекций. Учебное пособие. Часть 1.
Автор: В.А. Галатенко
Год выхода: 2004
Издательство: Интернет-Университет Информационных Технологий
Тираж: 2000
Объем: 560 стр.
Обложка: твердая
Где покупал: нигде (подарок)

Книгу мне подарил лично Владимир Антонович, поэтому я посчитал себя обязанным ее всю прочитать и поделиться впечатлениями с «уважаемым all».

Книга является дословным бумажным воплощением одноименного курса на Интуите. Так что все сказанное в равной степени справедливо и для оного курса.

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

Лично я теперь пользуюсь этим курсом как прекрасно откомментированным и снабженным примерами man’ом. Программирую, например, что-то связанное со взаимодействием процессов — сразу лезу в соответствующий раздел (кстати, книга в плане поиска нужного места гораздо удобнее онлайн-версии), читаю все подряд и дальше уже с полнейшей уверенностью пишу все как надо. Что выгодно отличает книгу от man’а, так это комплексная подача материала: описываются не отдельные функции, а их работа в контексте общей проблемы. Да еще и примеры достаточно объемные.

Приятно, что книга не стала пересказом стандарта. Например, по главе про shell вполне можно научиться основам программирования командных сценариев. По каждой теме рассказано не только как, но и зачем.

Существует еще и вторая часть книги, в которой рассказывается о «продвинутых» возможностях: потоки, средства реального времени, асинхронный ввод-вывод, трассировка и т.д. Уже взялся ее читать, ждите обзор.

Минусы:

  • код набран слишком крупным шрифтом, ширины страницы часто не хватает, да и по вертикали на странице помещается мало строк.

Плюсы:

  • подробное, но при этом очень сжатое изложение; никакой воды, только информация;
  • рассматриваются многие неочевидные моменты — видно глубокое понимание материала;
  • отличное качество печати и переплета.
УжасноПлохоНормальноХорошоОтлично (1 голосов, средний: 3.00 из 5)
Loading ... Loading ...