Книга Дэвида Кушнера «Повелители DOOM»

Всем привет! IDDQD! Когда-то я писал о книге Кровь, пот и пиксели, в которой рассказывается про историю создания некоторых видеоигр, а недавно дочитал еще одну книгу из той же серии. В книге Дэвида Кушнера «Повелители DOOM» очень подробно рассказывается история двух Джонов — Кармака и Ромеро, а также некоторых других разработчиков, которые создали такие игры как Wolfenstein 3D, Doom, Quake и другие может быть чуть менее известные игры.

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

Читать далее ‘Книга Дэвида Кушнера «Повелители DOOM»’ »

Книга Мартина Клеппмана «Высоконагруженные приложения»

Недавно дочитал книгу Мартина Клеппмана «Высоконагруженные приложения. Программирование, масштабирование, поддержка». В оригинале книга называется «Designing Data-Intensive Applications», а при переводе на русский язык название стало менее конкретным, потому что под высоконагруженными приложениями можно понимать разные виды нагрузки: вычислительную нагрузку на процессор и «высоконагруженные» в том плане, что нужно обрабатывать большой объем данных. Во втором случае основная нагрузка ляжет не на плечи процессора, а узким местом будет сеть или система ввода-вывода. В книге рассматриваются высоконагруженные системы, относящиеся ко второму случаю.

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

Читать далее ‘Книга Мартина Клеппмана «Высоконагруженные приложения»’ »

Книга Джо Боулер «Безграничный разум»

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

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

Читать далее ‘Книга Джо Боулер «Безграничный разум»’ »

Книга Джейсона Шрейера «Кровь, пот и пиксели»

Если вы думаете, что разработчики игр только и делают, что развлекаются, играя в игры, которые создают, и мечтаете пойти работать в какую-нибудь геймдев-компанию, то обязательно почитайте книгу Джейсона Шрейера «Кровь, пот и пиксели. Обратная сторона индустрии видеоигр». Главный вопрос, который так или иначе проходит сквозь все главы книги звучит так: возможно ли создать игру без многомесячных авралов, работы по 12-14 часов в сутки и по выходным? Может быть кому-то это и удается, но только не тем компаниям, о которых идет речь в этой книге, а этот список, между прочим, включает в себя таких монстров индустрии как Blizzard, BioWare, CD Projekt Red и уже не существующая Lucas Arts.

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

Книга «Кровь, пот и пиксели» основана на интервью, взятых автором у создателей (программистов, дизайнеров, сценаристов) игр «Pillars of Eternity», «Uncharted 4», «Stardew Valley», «Diablo III», «Halo Wars» (не путать с «Halo»), «Dragon Age: Inquisition», «Shovel Knight», «Destiny», «The Witcher 3», «Star Wars 1313» (так и не вышедшая игра). До того, как мне попала в руки эта книга, я слышал только о нескольких играх из этого списка, поэтому перед чтением очередной главы шел на Youtube и смотрел ролик-другой, чтобы понять, что это за игра, о которой идет речь. Это очень сильно помогало в понимании того, о чем идет речь в книге. Если же вы фанат каких-то из перечисленных игр, то получите еще большее удовольствие, читая, в каких муках они рождались.

Читать далее ‘Книга Джейсона Шрейера «Кровь, пот и пиксели»’ »

Про книгу Сергея Калинина «Чтение как образ жизни»

Читать я люблю, хотя, в отличие от некоторых, не могу похвастаться сотнями книг, прочитанных за год. В среднем на одну книгу у меня уходит две недели, то есть за год успеваю прочитать около 20-25 книг. Но есть одна проблема — когда в тексте попадаются интересные мысли или появляются полезные идеи, через какое-то время они выветриваются из головы. Особенно обидно, когда читаешь книгу, насыщенную полезными идеями, то поток новых мыслей вытесняют из головы то, что прочитал ранее. Или, говоря по-простому, прочитанное забывается.

Поэтому иногда я люблю читать что-нибудь про то, как правильно читать, чтобы подсмотреть у других, как они справляются с этой проблемой. Классикой темы считается М. Адлер с его трудом «Как читать книги. Руководство по чтению великих произведений». Не могу сказать, что я действую по описанному им алгоритму чтения, однако многие полезные приемы я у него позаимствовал. Например, выделение основных терминов в тексте и основных идей. Если я читаю не художественную бумажную книгу, то обычно важные места подчеркиваю карандашом (именно поэтому в электронном виде я в основном читаю только художественные книги), а термины обвожу в рамку или ставлю пометки на полях, чтобы их можно было проще найти в будущем. Эти приемы позволяют быстрее вспоминать, о чем было написано в книге, но все равно остается неудовлетворение результатом чтения. Поэтому иногда я пытаюсь найти что-нибудь еще интересное на эту тему.

Читать далее ‘Про книгу Сергея Калинина «Чтение как образ жизни»’ »

О книге «Элегантный SciPy»

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

Недавно я дочитал еще одну книгу сразу трех авторов: Хуана Нуньеса-Иглесиаса, Штефана ван дер Уолта и Харриет Дэшноу «Элегантный SciPy», которая посвящена научным расчетам на языке Python. К сожалению, и она страдает той же проблемой, что и другие известные мне книги, но хочется про нее все-таки рассказать.

Читать далее ‘О книге «Элегантный SciPy»’ »

О языке Rust и книге Дж. Блэнди и Дж. Орендорфа «Программирование на языке Rust»

К языку Rust я присматривался давно. Пару лет назад даже пытался писать на нем небольшую программку, но до серьезного использования дело не дошло. И вот в начале этого года я решил взяться за этот язык основательно.

Rust — это компилируемый язык, предназначенный в том числе и для системного программирования. Основная «фишка» языка — это исключение на уровне компиляции ошибок работы с памятью — не инициализированные указатели, висячие ссылки и т.п. — и избегание неопределенного поведения. При этом не используется сборщик мусора, а сам язык ориентирован на максимально возможную производительность. При этом стиль программирования на Rust сильно отличается от традиционного объектно-ориентированного программирования. Если говорить очень грубо, то это скорее напоминает C с интерфейсами и очень необычной работой с памятью. Разработчики Rust позиционируют язык как замена C++. Особенности языка заставляют заранее продумывать структуру взаимодействия используемых объектов, а не плодить сложную сеть из взаимосвязанных объектов в надежде, что сборщик мусора потом все уберет. У Rust очень строгий компилятор, который откажется компилировать программу, если у него не будет уверенности в том, что она корректно работает с памятью, и что не будет гонок данных в многопоточной программе.

Читать далее ‘О языке Rust и книге Дж. Блэнди и Дж. Орендорфа «Программирование на языке Rust»’ »

Книга С.Л. Соловейчика «Учение с увлечением»

Образование дают, образование получают…
Но надо еще уметь его взять!

Как уже некоторые из вас знают, я работаю в институте и читаю лекции студентам, поэтому меня важно, чтобы мой труд не пропадал даром. К сожалению, чтение лекций проходит с КПД около 15%, т.е. в группе на 25 человек максимум 4 человека проявляют заинтересованность в предмете. Я это оцениваю по тому, насколько студенты втягиваются в обсуждения и задают хоть какие-то вопросы, остальные в лучшем случае молча записывают материал, а в худшем — уходят в телефон. Возможно, они стесняются что-то спрашивать, хотя я постоянно подталкиваю их к взаимодействию во время занятий. Такое ощущение, что большая часть группы приходит на занятия только для галочки, хотя я уже давно отказался от подсчета посещаемости.

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

Этой проблеме и посвящена книга Симона Львовича Соловейчика «Учение с увлечением» (спасибо моей жене, которая навела на эту книгу). Симон Львович был журналистом, который много времени уделял вопросам педагогики, писал статьи и книги на эту тему. В основном он писал об учебе в школе. И книга «Учение с увлечением» посвящена проблеме заинтересованности школьников в изучаемых предметах. Первое издание ее вышло в 1976 году, позже было множество переизданий в советский период.

Читать далее ‘Книга С.Л. Соловейчика «Учение с увлечением»’ »

Книга «Разработка веб-приложений с использованием Flask на языке Python»

Если говорить о веб-разработке на Python, то в первую очередь вспоминается веб-фреймворк Django, на основе которого создано огромное количество как небольших сайтов, а также таких монстров как Instagram, сайт Mozilla, Bitbucket и множество других. Django хорош тем, что к нему «прилагаются батарейки», т.е. в библиотеку входит большое количество инструментов, которые могут понадобиться для построения движка сайтов разных типов — это пакеты для работы с базой данных, для создания профилей пользователей и их авторизации, для создания форм по объектом данных и т.д. Это удобно, но из-за этого сам фреймворк становится достаточно тяжелый, а при его обновлении каждый раз что-нибудь ломается. К тому же, если вас не устраивает какая-то часть фреймворка, то заменить ее на аналог может быть тяжело.

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

Я был приятно удивлен, узнав, что 2016 году была переведена книга Мигеля Гринберга «Flask Web Development», которая на русском языке стала называться «Разработка веб-приложений с использованием Flask на языке Python».

Читать далее ‘Книга «Разработка веб-приложений с использованием Flask на языке Python»’ »

Книга Стивена Вайнберга «Объясняя мир. Истоки современной науки»

В последнее время в этом блоге посты о книгах перемежаются с постами об OutWiker — сейчас очередь книжного поста.

На этот раз речь пойдет о книге Стивена Вайнберга «Объясняя мир. Истоки современной науки» — научно-популярной книге об истории науки, о развитии научного подхода, о роли экспериментов в изучении мира в различные эпохи. Автор этой книги — лауреат Нобелевской премии по физике в 1979 году и известный популяризатор науки.

Большинство книг по истории науки рассказывают в первую очередь о новом времени, начиная с XV — XVII веков, когда уже начали формироваться современные подходы в научной деятельности, в том числе используя которые Ньютон открыл законы, перевернувшие физику. Вайнберг же в книге «Объясняя мир» в основном сосредоточился на описании того, что было до Ньютона. Все-таки некоторые научные подходы начали формироваться еще до нашей эры, во времена Фалеса Милетского, Пифагора, Архимеда и Аристотеля. Вайнберг хотел показать, насколько эти первоначальные подходы сильно отличались от сегодняшних.

Читать далее ‘Книга Стивена Вайнберга «Объясняя мир. Истоки современной науки»’ »