background preloader

Programming

Facebook Twitter

Алгебраические типы данных и их использование в программировании. Аннотация: Статья рассматривает важную идиому программирования — алгебраический тип данных (АТД).

Алгебраические типы данных и их использование в программировании

Приводится теоретическая база, которая лежит в основе практического применения АТД в различных языках программирования. Прикладные аспекты рассматриваются на языке функционального программирования Haskell, а также кратко на некоторых других языках программирования.Algebraic Data Types (ADT) is an important programming idiom. A theoretical background is given that forms a foundation for practical application of ADT in various programming languages.

Practical aspects of ADTs are discussed using Haskell and are also briefly outlined for certain other programming languages.Обсуждение статьи ведётся по адресу Введение В 1903 году английский математик Бертран Рассел предложил антиномию в рамках языка классической («наивной») теории множеств Георга Кантора, которая показала несовершенство введённого им определения множества: «множество есть многое, мыслимое как единое»1 [10, 11]: 1 Мотивация где:

Js

Язык и среда R - ROC кривые. Перевод записи в моем английском блоге.

Язык и среда R - ROC кривые

ROC - Receiver operating characteristic, это график, позволяющий оценить качество разделения двух классов. Кроме визуальной составляющей, есть численная характеристика ROC AUC - Area under ROC curve (AUROC, ROC AUC), площадь под ROC кривой, чем выше значение - тем лучше, 0.5 - плохая классификация, не отличающаяся от равновероятностной, больше 0.75 - считается хорошая классификация, и по моему мнения больше 0.8 - уже прекрасно и публикабельно, если значение 0.2 - то вам необходимо обратить лейблы.

ROC curve является все навсего графиком двух значений: соотношения количества правильно и неправильно классифицированных признаков при каком-то выбранном значений (см.алгоритм построения ROC кривых здесь pdf - язык простой, но заморский). История этого метода прозаичная - необходимо было определить качество распознавания сигналов радаров японцев среди всех остальных. В R я обычно использую ROCR, хотя алгоритм реализован во многих других пакетах. Вероятностное программирование. Вступление Эта публикация является первой частью краткого вступления с иллюстрациями в вероятностное программирование, которое является одним из современных прикладных направлений машинного обучения и искусственного интеллекта.

Вероятностное программирование

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

«Обычное» программирование А теперь вероятностное программирование Пример Байесовской линейной регрессии. Почему юнит-тесты не работают в научных приложениях. В этой статье я хочу поделиться своим опытом разработки научных приложений, и рассказать, почему Test-Driven Development и юнит-тесты не являются панацеей, как принято считать в последнее время, по крайней мере с точки зрения нахождения программных ошибок.

Почему юнит-тесты не работают в научных приложениях

Почему же? Статья будет состоять из нескольких разделов: «Введение», в котором я расскажу, почему решил написать ее«Иллюстрационный алгоритм». Здесь будет кратко описана научная проблема и алгоритм, который будет иллюстрировать дальнейшее изложение«Недостатки юнит-тестов» Здесь будут приведены аргументы, объясняющие недостатки юнит-тестов для научных приложенийЗаключение Сразу замечу, что я не рассматриваю пользу от TDD как от способа разработки архитектуры, а исключительно с точки зрения тестирования программы. Практическое руководство по Jekyll. Jekyll на Хабрахабре уже светился.

Практическое руководство по Jekyll

Коротко говоря: это система генерации статических сайтов, ориентированная на блоги. Основная особенность: используется на Github Pages, что позволяет держать исходники сайта в репозитории на Github — а несколько кэширующих серверов его в пределах 10 минут после коммитов будут собирать и отображать посетителям. Если интересно больше и коротко: рекомендую к прочтению эту статью, часть материала которой я упомяну и здесь. А я расскажу о Jekyll поподробнее: как им можно пользоваться по назначению, для чего им пользоваться не по назначению, и на что он вообще способен.

CSharp

Java. 50 цитат о программировании всех времён. Delphi. Очень полезные команды Linux на одном листе [Записки на полях] Lex's Blog. Python. Ruby. RSDN. Оглавление. Другие файлы - расширения, форматы файлов. С++ Project Euler. Problems. Все задачи - Проект Эйлера. Пусть sum(A) - сумма элементов для любого множества чисел A.

Все задачи - Проект Эйлера

Рассмотрим множество B = {1,3,6,8,10,11}. Существует ровно 20 подмножеств B, которые состоят из трех элементов, а суммы этих подмножеств равны: sum({1,3,6}) = 10, sum({1,3,8}) = 12, sum({1,3,10}) = 14, sum({1,3,11}) = 15, sum({1,6,8}) = 15, sum({1,6,10}) = 17, sum({1,6,11}) = 18, sum({1,8,10}) = 19, sum({1,8,11}) = 20, sum({1,10,11}) = 22, sum({3,6,8}) = 17, sum({3,6,10}) = 19, sum({3,6,11}) = 20, sum({3,8,10}) = 21, sum({3,8,11}) = 22, sum({3,10,11}) = 24, sum({6,8,10}) = 24, sum({6,8,11}) = 25, sum({6,10,11}) = 27, sum({8,10,11}) = 29.

Некоторые из этих сумм встречаются более одного раза, другие - уникальны. Пусть U(A,k) - множество уникальных сумм k-элементных подмножеств A. Теперь, рассмотрим 100-элементное множество S = {1.