— Чем же он удивительный? Я знаю пару десятков языков и для меня не проблема изучить еще один новый, я просто уже не вижу необходимости.

Пролог — уникален. Это единственный язык представляющий парадигму декларативного программирования; это язык, который имеет сотни различных имплементаций, но они все равно называются Prolog, добавляя лишь префиксы и суффиксы к названию; это живой язык в котором не происходит никаких существенных изменений более 20 лет; это, наверное, единственный настолько популярный язык программирования, который не имеет применения в реальном программировании. Почему же Prolog?

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

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

Читать дальше →

По адресу area://Ru.Fidonet.Digest/?msgid=2:50/15+4e2448be (эта WebBBS, правда, может и не выдержать хабраэффекта) в «Дайжесте Фидонета» нетрудно прочесть мрачную новость о том, что 14 июля 2011 года на крупном узле и гейте 2:5020/400 произошёл технический сбой: в результате выхода жёсткого диска из строя прекратили работать все фидонетовские службы на ddt.demos.su — в том числе NNTP-гейт news://ddt.demos.su (поддерживавший иерархию fido7.* в USENET) и FTP-сервер ftp://ddt.demos.su/pub/fileecho/ с архивами файловых эхоконференций.

Разумеется, в связи с этим на всех WebBBS и на всех NNTP-гейтах, получавших фидопочту от 2:5020/400, также нет новых писем из Фидонета. Верно и обратное: письма, отправляемые из Интернета через те гейты, которые работали в обе стороны, не достигают Фидонета.

Эта проблема затронула, как минимум, следующие сайты:Что будет с этим узлом в дальнейшем, каким будет его восстановление — не очень ясно.

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

Некоторые любители Фидонета, читавшие его не изнутри, теперь, должно быть, всю неделю не знают, что же случилось.

На днях нас посетила забавная идея — провести анализ QR-кодов, которые генерируют пользователи. Результаты оказались, с одной стороны, несколько предсказуемыми, с другой — удивили, а с третьей — даже повеселили. Но обо всем по порядку.

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

Однако интеграция Ext GWT и GWT до сих пор оставляла желать лучшего — по сути, вторая версия Ext GWT полностью вытесняет все средства компоновки интерфейса GWT, предлагая собственные API для всего, вплоть до обработки событий. Поэтому для третьей версии библиотеки, доступной сейчас в виде developer preview, разработчики из Sencha активно переписывают скриптовое наследие Ext JS, используя паттерны и идиомы, принятые в GWT. Главное ожидаемое преимущество — более корректная интеграция с GWT и, как следствие, более компактный и оптимизированный код интерфейса: генерация и обфускация JavaScript и CSS происходит на этапе GWT-компиляции, с использованием механизма deferred binding, за счёт чего исключаются фрагменты кода, не использующиеся в текущем проекте.
Читать дальше →

Многие наверняка слышали, что open source проект CUBRID решил устроить конкурс, а так как время сдачи работ уже завершилось, я расскажу вам о том как решал конкурсное задание, какой способ использовал и с какими особенностями СУБД CUBRID столкнулся.

Задание (примерное)


Дана БД, которая состоит из таблиц, содержащих строго определенные типы столбцов:
VARCHAR, CHAR, STRING, INT, SMALLINT, BIGINT, NUMERIC, FLOAT, DOUBLE, DATE, TIME, DATETIME и TIMESTAMP.

Требуется найти наиболее часто встречаемое в БД не числовое значение (то, которое состоит не только из цифр) и число его использований. Ответ надо записать в таблицу results. И все (это вкратце, более подробно читайте на странице конкурса).
Читать дальше →

Многие наверняка слышали, что open source проект CUBRID решил устроить конкурс, а так как время сдачи работ уже завершилось, я расскажу вам о том как решал конкурсное задание, какой способ использовал и с какими особенностями СУБД CUBRID столкнулся.

Задание (примерное)


Дана БД, которая состоит из таблиц, содержащих строго определенные типы столбцов:
VARCHAR, CHAR, STRING, INT, SMALLINT, BIGINT, NUMERIC, FLOAT, DOUBLE, DATE, TIME, DATETIME и TIMESTAMP.

Требуется найти наиболее часто встречаемое в БД не числовое значение (то, которое состоит не только из цифр) и число его использований. Ответ надо записать в таблицу results. И все (это вкратце, более подробно читайте на странице конкурса).
Читать дальше →