Апрель 2009

Последний закат

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

Телефон лежал рядом с ним, всё так же зажатый в кулаке. Пятно крови плыло по асфальту, так же нарочито медленно, как за горизонт уходило солнце, его последнее солнце. А на дисплее мигало её сообщение. Он так и не узнал, что было в нём …

Сон отступал, реальность становилась всё яснее, а кошмар уходил в вечное небытие. Он проснулся и смотрел в потолок. Какое же счастье, что ни один его кошмар никогда не сбывался ...

Менеджер памяти MC Heappie

В наше время при разработке мало-мальски сложных проектов просто необходимо использовать динамическую память под переменные – уместиться в рамки предопределённых массивов и переменных стало просто невозможно, а динамические структуры, будь то связанные списки или деревья, являются сейчас неотъемлемой частью любой программы. В то же время стандартные средства выделения памяти в C/C++ отличаются некоторой медлительностью. Известно, что функции malloc / free очень плохо работают на большом количестве мелких переменных, а функция realloc вообще является ужасом для более-менее опытного программиста.

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

Определим круг задач и требований, которые мы предъявляем к менеджеру памяти:

1. Интерфейс менеджера должен содержать две основных функции – выделение памяти и освобождение памяти.
2. Функция выделения памяти mc_alloc () должна получать на вход размер переменной, под которую необходимо распределить место.
3. Функция освобождения памяти mc_delete () должна освобождать память по указанному адресу.
4. Менеджер памяти должен обладать универсальностью – не должно существовать ограничений на объём выделяемой памяти.
5. Объём памяти, нужный для работы самого менеджера, должен быть минимален – желательно не более 10% от размера выделяемой памяти.
6. Необходимо достигнуть производительности минимум в два раза выше, чем контроллер памяти malloc/free в C/C++.

Существует множество подходов к распределению памяти системы. Мы не будем рассматривать их все – Интернет и так кишит информацией на эту тему. Лучше перейдём напрямую к самому алгоритму менеджера памяти MC Heappie.

(далее...)

Компилятор Brainfuck

Порой преподаватели университета дают весьма интересные задания. На этот раз идеей многоуважаемого Эдуарда Эмильевича Александрова, уже натолкнувшего меня на создание менеджера памяти MC Heappie и OpenGL-генератора Landscape Winter, было создание компилятора ...
Одно "но" - разумеется, он по началу не уточнил, какого именно)
Мой хороший товарищ Тим в своё время говорил о замечательном языке программирования, который "трахает мозг" ... Полистав свою любимую Википедию, я наткнулся на крайне интересный язык программирования - Brainfuck!

Brainfuck (англ. brain мозг + fuck) — один из известнейших эзотерических языков программирования, придуман Урбаном Мюллером (Urban Muller) в 1993 году для забавы. Язык имеет восемь команд, каждая из которых записывается одним символом. Исходный код программы на Brainfuck представляет собой последовательность этих символов без какого-либо дополнительного синтаксиса.

Одним из мотивов Урбана Мюллера было создание языка с как можно меньшим компилятором. Отчасти он был вдохновлен языком FALSE, для которого существовал компилятор размера 1024 байта. Существуют компиляторы языка Brainfuck размера меньше 200 байт. Программы на языке Brainfuck писать сложно, за что его иногда называют языком для мазохистов. Но при этом важно отметить, что Brainfuck является вполне естественным, полным и простым языком и может использоваться при определении понятия вычислимости.

Машина, которой управляют команды Brainfuck, состоит из упорядоченного набора ячеек и указателя текущей ячейки, напоминая ленту и головку машины Тьюринга. Кроме того, подразумевается устройство общения с внешним миром (см. команды . и ,) через поток ввода и поток вывода.

Подробнее о самом языке Вы можете легко почитать на соответственной страничке - Википедия - Brainfuck (ru).

(далее...)

Thandor: The Invasion

Ссылки (для тех, кто не читает текстов):
Скачать: одним файлом (91.2мб) - rar-архив
Патч для XP: скачать (1.1мб) - zip-архив

Году так в 2000 вышла в свет одна замечательная игрушка - стратегия в реальном времени "Thandor: The Invasion", больше известная российским пользователям под именем "Вторжение: Выжженная Земля".

Thandor - The Invasion - Вторжение - Выжженая земля

Thandor: The Invasion

Тогда, лет так восемь назад, я купил это чудо в магазине, почти целиком прошел, но потом так вдруг резко настали времена Windows XP, и выяснилось, что она под ним не идёт ... Было дико обидно, но потом прижилось. И вот совсем недавно я отыскал в интернете патч, с помощью которого можно заставить игрушку мирно работать под WinXP, и ни о чём не думать)

(далее...)