В ходе экспериментов с функциональным программированием я решил написать генератор лабиринтов. Приведенный код не претендует на элегантность или возможность практического применения где-то, кроме как в компьютерных играх. Тем не менее, для людей, постоянно занимающихся прокачкой своего умения программировать, этот пост может быть весьма полезен.
Я знаю, что вы видели уже более 9000 подобных заметок. Просто нужно было что-то делать с черновиком этого поста, а то он уже пол года глаза мне мозолит. Удалять было жалко, поскольку я периодически им пользовался, так что пришлось довести до ума и опубликовать. Возможно, вас утешит то обстоятельство, что тут собраны действительно полезные плагины, которыми я сам пользуюсь или по крайней мере когда-то пользовался.
В этой заметке речь пойдет о создании кроссплатформенных GUI приложений на языке программирования Haskell с использованием библиотеки wxWidgets. Особое внимание будет уделено уменьшению размера программы. Программа, размер которой изначально составлял 26 Мб, будет ужата до 3.9 Мб без потери функциональности. И это без использования UPX.
Под катом — очередной выброс экспрессии. Некоторые из приведенных мыслей ранее уже когда-то мною озвучивались, так что я немного повторюсь.
Пару месяцев назад мне пришло письмо от Игоря Савчука с предложением разместить мою статью Почти объективно на тему «чем FreeBSD лучше Linux» в «Компьютерной газете», а заодно и в блоге Игоря blogerator.ru. А почему бы и нет? Статья уже давно в интернете лежит, пусть печатают. Что интересно, именно статья Игоря БСД: Большие и Страшные Демоны вдохновила меня к написанию сабжевой заметки.
После написания заметки о генераторах фракталов, меня посетила одна идея. В свое время я интересовался автоматическим распознаванием капч (которые captcha). Так вот, распознавание происходит в несколько этапов. Текст капчи отделяются от фона, вычищается от мусора, нарезается на буквы. Затем буквы приводятся к одному размеру и используются для обучения нейронной сети. Притом первый шаг — отделение текста от фона, как правило, является довольно простым.
Не могу удержаться от соблазна выразить еще немного экспрессии в отношении сегодняшней ситуации с языками программирования. Как обычно, я не претендую на знание истины, а просто хочу поделиться своими мыслями/наблюдениями. Соглашаться с ними или нет — дело ваше.
Вопреки распространенному мнению, фракталы — это не только красивые картинки. Фракталы используются в математическом моделировании, голливудских спец-эффектах, алгоритмах сжатия и много где еще. Далее по тексту вы найдете описание нескольких программ-генераторов фракталов с открытым исходным кодом. Их можно использовать как в учебных целях, так и для убивания времени или генерации красивых обоев. Бесспорно, это очень полезный софт!
Я давно знал, что пользоваться системой контроля версий — правильно и полезно. Но все было как-то неохота. Ну вы в курсе, как это бывает. И вот, некоторое время назад, лень удалось побороть. Выбор был сделан в пользу subversion, несмотря на преимущества альтернативных систем. Видимо, чтобы по-настоящему понять преимущества Git/Darcs/Bazaar/Mercurial, нужно какое-то время поработать с SVN. А иначе — с чем сравнивать? К тому же, subversion кажется наиболее «каноничной» системой контроля версий.
Если вы давно читаете мой блог, то можете помнить, как пару раз я говорил о Python разные неприятные вещи, дескать он медленный и памяти много кушает. При этом даже приводились различные пруфлинки. Но, откровенно говоря, нехорошо судить о языке по тому, массивы какой вложенности он поддерживает, с какой скоростью он выполняет пустой цикл из 100500 итераций и тд. Нас же интересует, как он справляется с типовыми задачами. Так что я решил провести собственный небольшой эксперимент.