Friday, June 8, 2018

Анджей Сапковский "Меч предназначения"

"Меч предназначения" - вторая книга из цикла о ведьмаке и она мне понравилась намного меньше чем первая. Но начнем с хорошего.

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

Что же не так с "Мечом предназначения"? Во-первых язык. То ли дело в том, что первую книгу я читал на английском и просто не мог заметить там явных огрехов, то ли в переводчике (хотя я читал, что перевод Евгения Вайсброта лучший из всех), то ли сам Сапковский так пишет, а может быть все вместе, но язык мне показался очень топорным. Где-то он слишком простой, где-то излишне вычурный, где-то видно что автор натужно старается передать какую-то мысль, но эффект такой же как если бы всех этих прилагательных и причастных оборотов не было. Это сильно ломало мне опыт. Как будто в какой-то момент замечательный складный фильм останавливается и начинается излишняя драма, когда неумелый актер кричит плохо заученные слова вроде "Брось меня, Базовски!"

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

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

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

"Последнее желание" (первая книга) дала краем глаза взглянуть на мир ведьмака и персонажей. Полюбив и то и другое, заинтересовавшись всем этим, я углубился в ведьмака, захотел изучить его, но заглянув за витрину, обнаружил что что-то очень важное внутри сломано. И очень печально, что первая книга в сюжетной серии оказалась для меня разочарованием.

Однако кредит доверия выданый "Последним желанием" на "Мече предназначения" не иссяк. Я попробую почитать и следующие книги серии, надеюсь что с ними все будет уже получше.

Friday, April 20, 2018

Роберту Иерузалимски "Программирование на языке Lua. Третье издание"

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

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

У Lua и Javascript есть много общих моментов и, в принципе, понимая как работает Javascript, проблем с Lua возникнуть не должно. Представления объектов как ассоциативных массивов, области видимости переменных (по умолчанию в Lua все переменные глобальные), замыкания - все это работает очень похожим образом. Чисто теоретически, Lua можно использовать как формат описания данных, заменяя тем самым JSON, и выигрывая по скорости чтения и интерпретации данных (естественно, с запущенным интерпретатором).

Lua довольно гибкий язык и с этой гибкостью следует быть очень осторожным. Например, все функции в Lua анонимные, а если у функции есть название, то это всего лишь переменная, ссылающаяся на анонимную функцию. Что это значит? Что стоит вам переприсвоить переменную, как вы тут же навсегда потеряете свою функцию. И, несмотря на то, что в своем коде ты сам себе злобный буратино, полная мутабельность данных превращает всю ситуацию в поле из граблей. Полная мутабельность данных означает что даже библиотеку, написанную на Lua можно изменить (если программист не предпринял дополнительных мер для запрета мутабельности) и переприсвоить функции из библиотеки любое значение которое захочет пользователь. То есть ваша библиотека вместо функции может попытаться вызвать численное значение, потому что пользователь решил переприсвоить переменную, содержащую функцию. Взрыв мозга.

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

Память в Lua контроллируется сборщиком мусора. До Lua 5.0 сборщик мусора был stop-the-world, в следующих версиях при каждом выделении памяти интерпретатор выполняет какое-то количество шагов сборщика мусора, таким образом достигается псевдо параллельность и ускоряется работа программы. Есть возможность контроллировать количество шагов сборщика мусора, отключать его и включать снова как из С так и из Lua. Любые объекты для которых память выделялась в ручную из С также должны быть собраны вручную, так как сборщик мусора о них ничего не знает.

API совместимости с С с одной стороны очень низкоуровневое, с другой максимально легковесное. Работа осуществляется через стек, на стек кладутся значения аргументов функций, со стека также забирается результат. Существуют функции позволяющие менять стек, манипулировать значениями не снимая их со стека (например конкатенировать строки). Между различными модулями используется общий реестр, хранящий глобальные значения, а также можно использовать значения upvalue, которые представляют собой замыкания, но для С функций.

"Программирование на языке Lua" считается библией языка - той книгой, которую стоит давать каждому, кто собирается использовать Lua. Тот факт что она состоит всего из 300 с лишним страниц, говорит о его размерах и о количестве знаний требующихся для его понимания. Однако компактность и легкость языка делает его сложным для разработки, в том плане, что нужно быть постоянно внимательным и следить за всем, что ты пишешь, так как ни одна IDE не может понять в динамических языках что на самом деле имел в виду программист.

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

Friday, March 16, 2018

Дэниэл Киз "Множественные умы Билли Миллигана"

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

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

В книге рассказана история со стороны самого Миллигана, начиная с детства и заканчивая долгим странствием по психиатрическим клиникам. Довольно хорошо раскрывается причина появления личностей, что интересно, потому что я отлично могу представить в какой ситуации и на какие именно личности у меня мог бы произойти раскол. Звучит странно и страшно, но "У каждого из нас можно найти психическое заболевание" как сказал один из психиатров в зале суда над Миллиганом.

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

Я подозревал, что в государственных психиатрических клиниках США, также как и в моей родной стране не происходит ничего хорошего. Насколько мне известно, Киз выпустил еще одну книгу, конкретно про то как Миллигану жилось в клиниках строгого режима. Книга была запрещена в США за критику медицины, однако была выпущена во многих других странах. Думаю стоит почитать и ее, но с доброй долей скептицизма, с которой стоит читать и "Множественные умы Билли Миллигана".

Saturday, March 3, 2018

Jesse Schell "The Art of Game Design: A Book of Lenses"

This book is a collection of useful questions that help you to understand how to make a game better on each step of the development process from idea generation to final release. Something like Bible for a game designer.

The main idea of the book is that game designers don't create games - they create experiences. A good game should generate right emotions in a player and help the player to feel himself in the skin of someone else (like the king or military general, or coffee shop owner etc). People like games when they feel immersion and this is the main goal of a designer to create this feeling. The game is a mere instrument to achieve the main goal - create an experience. You can create an experience in different ways, not only by the game but with book or movie and even within a game genre experience can be created by sports game or board game or video game. The game designer should understand what will serve him best to deliver right feeling to the player and chose the right genre to work in.

One of the most useful skills of the game designer is listening. It is helpful on every step - from idea generation to understand the team. For me, the most insightful thing was that listening to yourself during different experiences is the key point for idea generation. Many genres of art have their own ways to deliver an experience and something you like and something you don't. If you understand what do you particularly like in one thing and don't like in another it will help you to understand more about how to deliver an experience you want to a player. Or even more: what experience you want to deliver to a player.

"The Art of game design" is the book about games, and more specifically video games (however many advice are applicable in other arts as well), so it covers all aspects of game development. It destructures the games to four main parts - Mechanics, Aesthetics, Story, and Technology. Usually, by making decisions on each of these four parts you form a game that delivers an experience you want. 

Another good advice from the book is that process of development should be iterative. You always have to start with the simplest thing, then ask yourself questions about problems you see and then constantly improve your game by answering these questions and always checking - does the game deliver an experience you want, or not.

Other advice in the book is about very concrete things that I think it doesn't make sense to retell it here. I will definitely reread certain chapters of the book if I'll finally decide to build my game.

Saturday, December 30, 2017

Chuck Palahniuk "Choke"

I had experienced so many emotions during reading this book. At first, I didn't like, then I tried to convince myself that the novel is not good, but it became harder and harder because I started to understand what is it about. And in the end, I closed with a thought "Yes, I like it!".

First thing I love about "Choke" is narration. Palahniuk gives you short chunks of the story without time connection but intentionally to let you understand the next chunk. Every chapter reveals you more and more puzzle details that in the end form you a whole picture. Every chapter you think that you understood, and then, the next chapter gives you something that let you see the story from a new angle.

I have so many posts blaming different books for a lot of redundant information. "Choke" is just perfect in this sense. Despite it contains a lot of sex scenes, each one reveals some very important information about the main hero and shows why he decided to do the next action. You literally cannot remove any scene without losing the sense of the story. It was quite an interesting trick from the author, by the way, to show how sexaholic thinks through the process of sex.

"Choke" is a short novel but deep at the same time. It is built around one strong idea and every sentence serves to explain it. And the text still doesn't feel dry instead it is very light and artistic. 

Images and symbols are bright. Some of them are quite stereotypical but they still have some zest, that makes the narration interesting. I love the idea of a colonial museum where the main hero works, showing his ignorance and comfort zone, and I love the idea of Dr. Paige Marshall showing literally the hero's future. 

All scenes are made the way to expose the culmination. One small detail, even one exact word turns all the picture that you saw before upside down and it strengthens a lot an effect of culmination. This is really a perfect work of the writer, he did it like a director who shots a movie, but without a movie.

I said a lot about how the book is written instead what is inside because I don't think it is worth to retell the plot - it is much better to read it yourself (it isn't long). The main idea is simple - if life is terrible it is you who you need to blame. You should find a reason and no matter how difficult is it you should get rid of the source of your problems. And then you should decide who you really want to be and build your life as you want. Any crisis has a source and any crisis can be overcome by removing the source. 

If we talk about a modern fiction I think this book is definitely worth to read. 

Tuesday, December 19, 2017

Joseph Campbell "The Hero with a Thousand Faces"

Every time someone notes that he has already heard/seen/read the same story somewhere else, usually he hears an answer “Of course, there is even a book that says that all stories are actually the same and has the same structure!” People usually mean “The Hero with a Thousand Faces” and it seems that they have no idea what are they talking about.

“The Hero with a Thousand Faces” is a work of comparative mythology. Indeed it introduces the term “monomyth” to define the common structure of legends in different cultures. However, at the end of the book, Campbell says that all myths are different. Despite some of them have something in common, some of them share common archetypes, the proportion of equal things is not large.

This book is not giving a skeleton of every myth in a world. Instead, it investigates what different myths have in common and why people who were in thousands of kilometres from each other, without any way to communicate, with contradicting moral foundations still tell stories about same things, with same archetypes.

No matter how different people are, they are still humans. They have same nature and same structure of brains. Apparently, Campbell thinks that it is a reason why myths of different cultures have something in common. He tries to explain plots, archetypes, characters with Freud’s theory of the unconscious. 

However this suggestion makes a lot of sense, and some things really have an obvious connection with Freud’s theory, I could not understand a majority of parallels. Some proofs were not enough for me, others were far-fetched. Sometimes the author doesn’t even try to prove his point of view, he just gives tons of myths fragments and then states the proposition without even explaining it.

And about the myths fragments — the book consists, I guess, by 80% of myths fragments. And I’m not overestimating: the author makes a statement, then adds two or three different myths passages. Passages are very long and take few pages each with verbose dialogs full of redundant phrases (like one phrase repeated three times), synonym, and multiple sentences that describe the same thing. It makes the reading process much more difficult. For effective prove, it would be enough a short retelling and a reference to the original myth. 

Author’s language is very complicated. I reread each paragraph at least five times and sometimes didn’t understand the main thought. And it seems the problem is not in my knowledge of English, because my friend, who read it at the same time but in Russian always complained me that he doesn’t understand half of a book. I think though it can be because of the age of a book. Nowadays literature adapted to the weak attention of a reader and talks with him very gently. Whereas books of start and middle of the twentieth century are very tough. 

The end of “The Hero with a Thousand Faces” is about modern myth. Campbell says that nowadays when there is no unknown land and science is on top of everything the modern hero goes not to the world of dead or to the mountain of gods, but inside himself. The biggest mystery now is the man himself and the one who is able to descend to his unconscious and meet the inner’s god blessing will be the hero and the savior.



Saturday, November 18, 2017

Neil Gaiman "American Gods"

Why are some books become classics? What makes the book interesting? I guess every author wants to know answers to these question. Despite there is no formula for success, years of studying literature gave us some principles on which successful books are made. One of it (and the most important) is that attention of your reader is a very limited resource and it is very easy to lose it. A reader like a little child can become bored in a second, just because you give him wrong information. And by wrong, I mean either too little or too much or redundant. It is so easy to overwhelm your reader with redundant info. You just place one word that you can avoid and it becomes much more difficult to read and understand the whole sentence. And what is worse - if you place in your book redundant character and the worst is a redundant storyline.

Unfortunately, "American Gods" is full of redundant things. If you remove all the unimportant stuff that doesn't affect the main plot and the idea you will have just a few pages, instead of a huge novel. And it is frustrating: when you read one more story about an ancient god, you expect to see this god at least make some impact to the main story, but then the chapter ends and you will never read anything about this god or characters that were on previous ten or twenty pages, spoke with each other, lived their lives. "American Gods" is like a stage with hundred guns that never shoot, and somewhere behind this guns, you see a couple of main characters talking about the weather.

And main characters is my second problem with this book. They are stereotyped. They are not alive. You feel nothing when reading about their problems or emotions. How you can sympathize with a huge sullen wooden doll who robbed a bank, beaten his partners, has no sense of humor and now still works with bandit and rogue and doesn't change? Dialogs are so simple as it was written for thirteen-year-old girls. Some moments are written just to be in the book because people like moments like this. It feels awkward and out of place.

When you read "American Gods" you have a strong feeling that someone selling you something. It's like watching an advertisement where everyone smiling and colors are bright and the food is delicious and everything is made just to make people like it. And it wouldn't be so bad if I wouldn't notice it. But I did, and that makes this book unnatural for me.

"American Gods" is, at first place, about America. About people, about places, and about diversity. Probably, if you are American you will like it because you will recognize familiar places, familiar types of people and familiar stories. It is a very patriotic book, that shows you a real love to the country. I am not American and I've been there a couple of days so I cannot look at this book under this angle, and I can only judge as a foreign reader, so I, personally, didn't like it. But a lot of my friends did, so maybe I just missed some point, that covers all negative sides that I mentioned, who knows? Give it a try, if you want.