Что-то я решил молодость вспомнить. Перед тем, как меня понесло в сторону Perl, юниксов и всякой функциональщины, я долгое время игрался с сями, ассемблером и WinAPI. Сейчас все это начинает потихоньку забываться, а жаль, потому что, как мы уже выясняли, знать всякие низкоуровневые вещи полезно.
В свое время я довольно сильно увлекался всевозможной низкоуровщиной — ассемблерами (о чем как бы намекает доменное имя блога), сишечкой и так далее. Даже написал пару несложных драйверов для Windows. Но потом я открыл для себя Perl и понеслось.
Недавно мне потребовалось определить load average системы из Erlang. Готового решения найти не удалось. В результате была написана небольшая NIF библиотека для решения этой задачи. NIF (Native Implemented Function) — это функция, написанная на Си, которую можно вызывать из Erlang’а. Эта функция должна находится в динамической библиотеке, которая, соответственно, называется NIF-библиотекой (NIF library).
Помните, я как-то писал про разработку GUI приложений на Haskell с использованием библиотеки wxWidgets? Мне стало интересно, а нельзя ли сгенерировать код GUI на языке C++ в wxGlade или Code::Blocks, а затем связать этот код с кодом на Haskell, реализующим собственно функционал приложения? Оказалось, что можно, и довольно просто.
Мне почему-то всегда казалось, что хэши в Perl, несмотря на название, реализованы в виде бинарных деревьев, а не хэш-таблиц. Как бы дико это ни звучало. Вероятно, это связано с тем, что в STL контейнер std::map обычно реализуется в виде красно-черного дерева, и я ошибочно предположил, что в Perl сделано так же. Но недавно я обнаружил, что в книге «Programming Perl» недвусмысленно утверждается обратное.
Сегодня товарищ redp озадачил меня интересным вопросом. Дескать, если современные компиляторы такие умные, то почему GCC не в состоянии преобразовать даже элементарный макрос инверсии байт двойного слова в ассемблерную инструкцию bswap?
Как и обещал, пишу продолжение своей заметки про wxWidgets. В этом посте будет описана установка wxWidgets и Code::Blocks под различными операционными системами, основы создания GUI с помощью wxSmith, а также приведены небольшие примеры кода.
Некоторое время назад я стал интересоваться разработкой кроссплатформенных GUI приложений. Сейчас существует множество подходов к разработке данного типа программ — это Java, библиотеки GTK и Qt, скриптовые языки. Однако я сделал выбор в пользу библиотеки wxWidgets, и ниже будет рассказано, почему.
Решил поделиться своей старенькой наработкой — библиотекой для работы с большими целыми числами и эллиптическими кривыми, а также привести пример ее использования в криптографических целях. Глубокого погружения в математические основы не будет. За более подробной информации, касающейся работы с большими числами и эллиптическими кривыми, обращайтесь к соответствующей литературе и интернету.
Не знаю, как вы, а я что-то устал от загонов про сплайны, генетические алгоритмы и прочую муть. Для разнообразия я решил рассказать историю, которую мне удалось по крупицам восстановить с помощью одного популярного поисковика. Эта история о судьбе маленького скрипта, написанного в далеком 2007 году.