Pull to refresh
6
0
Николай Михайлов @NickCave

Пользователь

Send message

Нормальные алгоритмы Маркова как основание языка программирования

Reading time 12 min
Views 22K

В этой статье хотелось бы поделиться мыслями о применении Нормальных Алгоритмов Маркова (далее по тексту: НАМ) в качестве основания для языка программирования.

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

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 27

HAL в 4000 байт

Level of difficulty Easy
Reading time 9 min
Views 22K

«HAL 4000» – исполняемая программа для Windows размером ровно 4000 байт. Лучшая работа в номинации 4 kb intro фестиваля Chaos Constructions 2017, второе место в чартах портала pouet.net. «HAL 4000» попала в плейлист Best of Demoscene 2017 наряду с работами Farbrausch, Fairlight, Conspiracy, Alcatraz, Byterapers, обсуждалась на вебинаре анимационной студии, демонстрировалась на различных фестивалях.

Необычная история создания этой работы изложена ниже.

Читать далее
Total votes 110: ↑110 and ↓0 +110
Comments 23

Нескучный туториал по NumPy

Reading time 19 min
Views 216K
Меня зовут Вячеслав, я хронический математик и уже несколько лет не использую циклы при работе с массивами…

Ровно с тех пор, как открыл для себя векторные операции в NumPy. Я хочу познакомить вас с функциями NumPy, которые чаще всего использую для обработки массивов данных и изображений. В конце статьи я покажу, как можно использовать инструментарий NumPy, чтобы выполнить свертку изображений без итераций (= очень быстро).

Не забываем про

import numpy as np

и поехали!
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 19

Теория алгоритма лежащего в основе фантазирования реальностью в мозге

Reading time 6 min
Views 6K

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

Мы видим картинку двухмерной, но при фантазировании, например людей, мы их представляем как трехмерную модель. В ней, как бы у людей есть скелет для моделирования движений рук и ног. Но, не смотря на то, что мы используем 3D моделирование, понять как будут пересекаться объекты сложной формы мы не можем (для этого нужна начертательная геометрия). Согласно, данной теории у нас в мозге нечто среднее между 3D и 2D моделированием с пониманием вида поверхности - это к тому же объясняет, почему мы понимаем принадлежность теней объектам. По сути мы имеем 2D виды со всех сторон, но кроме этого запоминаются срезы объема объекта. (см. рис. 1). Срез - это вид сбоку на проекцию, показывающий объем (поверхность) объекта. Срез, в отличие от проекции является не картинкой, а кривой.

Читать далее
Total votes 11: ↑9 and ↓2 +7
Comments 20

Байт-машина для форта (и не только) по-индейски

Reading time 27 min
Views 15K
image

Да-да, именно «байт» и именно по индейски (не по индийски). Начну по порядку. В последнее время тут, на Хабре, стали появляться статьи о байт-коде. А когда-то давным-давно я развлекался тем, что писал форт-системы. Конечно, на ассемблере. Они были 16-ти разрядными. На x86-64 никогда не программировал. Даже с 32 поиграться не удалось. Вот и пришла такая мысль — а почему бы нет? Почему бы не замутить 64х разрядный форт, да ещё с байт-кодом? Да еще и на Linux, где я тоже ничего системного не писал.

У меня есть домашний сервер с Linux. В общем, я немного погуглил и узнал, что ассемблер на Linux называется GAS, а команда as. Подключаюсь по SSH к серверу, набираю as — есть! Он у меня уже установлен. Ещё нужен компоновщик, набираю ld — есть! Вот так, и попробуем написать что-нибудь интересное на ассемблере. Без цивилизации, только лес, как у настоящих индейцев :) Без среды разработки, только командная строка и Midnight Commander. Редактор будет Nano, который висит у меня на F4 в mc. Как там поет группа «Ноль»? Настоящему индейцу нужно только одного… Что еще нужно настоящему индейцу? Конечно, отладчик. Набираем gdb — есть! Ну что же, нажмем Shift+F4, и вперед!
Читать дальше →
Total votes 53: ↑51 and ↓2 +49
Comments 45

Прикручиваем пространственный индекс к ничего не подозревающей OpenSource СУБД

Reading time 9 min
Views 17K
image
Мне всегда нравилось, когда заголовок однозначно говорит о том, что будет дальше, например, «Техасская резня бензопилой». Поэтому под катом мы действительно будем добавлять пространственный поиск к СУБД, в которой его изначально не было.
Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 15

Ассоциативные связи

Reading time 4 min
Views 4.7K

Что такое идеальный "квант информации" или "минимальная единица смысла" и зачем задаваться этим вопросом? С этим связано много боли, часто даже не осознаваемой. Мы предлагаем решение, но сначала нужно разобраться для чего это нужно. Рекомендуем ознакомиться с первой статьёй в серии.

Одна Связь, чтоб править всеми
Total votes 8: ↑3 and ↓5 -2
Comments 11

Язык программирования Форт

Reading time 5 min
Views 32K
Первая реакция у многих людей, с которыми мне приходилось говорить о Форте: «Это, наверное, разновидность Фортрана?». К сожалению, уровень осведомленности околокомпьютерного сообщества насчет этого совершенно непохожего на остальные языка программирования достаточно низок. В этой статье мы попробуем разобраться с тем, что представляет собой Форт, и почему этот язык программирования не используется повсеместно.

Окунемся в историю Форта (Forth). В начале 1970х годов Чарльз Мур занялся разработкой программного обеспечения для микроЭВМ, управляющей работой радиотелескопа. Поскольку программирование на Ассемблере привело к неуправляемости разработки довольно сложной программы, а для использующейся микроЭВМ из-за аппаратных ограничений не было языка высокого уровня, Чарльз Мур приступил к созданию компактного и мощного языка программирования, позволившего с блеском решить поставленные перед ним задачи. Успех нового языка программирования определился тем, что на ограниченных ресурсах устройства была создана быстрая и функциональная программа, позволившая делать намного больше, чем первоначально планировалось в техническом задании.

Читать дальше →
Total votes 55: ↑48 and ↓7 +41
Comments 47

Conways Game of life на Python

Reading time 3 min
Views 27K

Это мой первый пост, где я хочу рассказать про самый известный клеточный автомат "Игра жизнь", а также напишем её на Python с использованием графики Pygame.

Conways Game of life ( по русски 'Игра жизнь' ) - клеточный автомат, придуманный Джоном Конвеем в далеком 1970 году.

Правила очень просты, вся игра происходит в 2D пространстве (плоскости) на которой могут быть 2 типа клеток "Живые" - 0 и "Пустые" -1. Основные правила жизни клетки таковы Birth3 Survive23, что значит клетка рождается при трёх соседях и выживает при двух или трёх, иначе умирает.

Читать далее
Total votes 12: ↑6 and ↓6 0
Comments 11

Разбираем алгоритмы компьютерной графики. Часть 1 — «Starfield Simulation»

Reading time 7 min
Views 16K

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

Действовать буду по следующему принципу: беру какой-либо графический эффект (из демо, программы, игры – не важно) и пытаюсь реализовать этот же эффект максимально простым и понятным способом, разъясняя что, как и почему сделано именно так.

В качестве основы для вывода графики будет использован язык Python и библиотека PyGame. Этим набором можно очень просто что-то выдать на экран, сделать анимацию и т.п. не отвлекаясь на технические детали реализации.

Читать далее
Total votes 46: ↑46 and ↓0 +46
Comments 11

Учим компьютер различать звуки: знакомство с конкурсом DCASE и сборка своего аудио классификатора за 30 минут

Reading time 8 min
Views 6.4K

Статья написана совместно с ananaskelly.


Введение


Всем привет, хабр! Работая в Центре Речевых Технологий в Санкт-Петербурге, мы накопили немного опыта в решении задач классификации и детектирования акустических событий и решили, что готовы им с вами поделиться. Цель этой статьи — познакомить вас с некоторыми задачами и рассказать о соревновании по автоматической обработке звука “DCASE 2018”. Рассказывая вам о конкурсе, мы обойдемся без сложных формул и определений, связанных с машинным обучением, таким образом общий смысл статьи будет понятен широкой аудитории.


Для тех, кого в названии привлекла именно сборка классификатора, мы подготовили небольшой код на python, и по ссылке на гитхабе вы можете найти notebook, где мы на примере второго трека конкурса DCASE создаем простую сверточную сеть на keras для классификации аудиофайлов. Там мы немного рассказываем о сети и признаках, используемых для обучения, и как с помощью простой архитектуры получить близкий к baseline результат (MAP@3 = 0.6).



Дополнительно здесь будут описаны базовые подходы для решения задач (baseline), предложенные организаторами. Также в будущем появится несколько статей, где мы будем более подробно и в деталях рассказывать как о нашем опыте участия в соревновании, так и о решениях, предложенных другими участниками конкурса. Ссылки на эти статьи будут постепенно появляться здесь.

Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Comments 0

Фрактальное сжатие изображений

Reading time 7 min
Views 12K
image

Пару лет назад я написал очень простую реализацию фрактального сжатия изображений для студенческой работы и выложил код на github.

К моему удивлению, репозиторий оказался довольно популярным, поэтому я решил обновить код и написать статью, объясняющую его и теорию.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 5

Антимонопольное регулирование цифровых платформ в России. Почему ФАС возбудила дело против Google?

Reading time 20 min
Views 5.7K

Привет, Хабр!

Я 8 лет занимаюсь проектами в антимонопольной сфере – одном из самых интересных направлений юриспруденции. Сейчас руковожу командой в юридической фирме ART DE LEX, которая специализируется на цифровых рынках. Мы ведем работу по возбужденному сегодня Федеральной антимонопольной службой делу против Google.

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

В последнее время заметно беспрецедентное внимание государства к сфере IT и в первую очередь к деятельности техногигантов – Apple, Alphabet, Amazon, и Facebook. Важное значение здесь имеет активность Минюста США и Федеральной торговой комиссии, известных ранее своим мягким отношением к этим компаниям и делавших ставку на возможность саморегуляции отрасли. Например, основания для подачи иска против Google из-за действий по монополизации рынка мобильного поиска были у ФТС еще восемь лет назад, но экономисты регулятора не усмотрели тогда существенных рисков.

Теперь ситуация изменилась – в конце прошлого года Минюст США подал иск против Google, ФТС – против Facebook, а Конгресс США и вовсе рассматривает возможность принудительного разделения компаний. Такая активность на родине техногигантов (с учетом высокого уровня протекционизма) стала еще одним сигналом другим странам к работе в данном направлении. Тем более, что есть уже примеры довольно агрессивного поведения со стороны отдельных компаний. Так, в Австралии в ответ на новый закон, обязывающий делиться частью рекламных доходов, получаемых за счет использования контента новостных изданий, Google пригрозил закрыть в стране свою поисковую систему, а Facebook на какое-то время заблокировал ссылки на новости от австралийских издателей.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Comments 14

Вычисления на GPU – зачем, когда и как. Плюс немного тестов

Reading time 12 min
Views 82K
Всем давно известно, что на видеокартах можно не только в игрушки играть, но и выполнять вещи, никак не связанные с играми, например, нейронную сеть обучить, криптовалюту помайнить или же научные расчеты выполнить. Как так получилось, можно прочитать тут, а я хотел затронуть тему того, почему GPU может быть вообще интересен рядовому программисту (не связанному с GameDev), как подступиться к разработке на GPU, не тратя на это много времени, принять решение, нужно ли вообще в эту сторону смотреть, и «прикинуть на пальцах», какой профит можно получить. 


Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Comments 29

Создание бота для участия в AI mini cup. Опыт применения GPU

Reading time 6 min
Views 4.3K


Продолжение статьи1 и статьи 2.


Ниже под катом, расскажу об опыте автора по использованию GPU для расчетов, в том числе в рамках создания бота для участия в AI mini cup. Но скорее это эссе на тему GPU.


-Имя у вас волшебное…
-Знаете что, Джоэл?.. Волшебство уходит...

Total votes 12: ↑10 and ↓2 +8
Comments 0

Простой интерпретатор Lisp на Umka

Reading time 3 min
Views 3.9K

Разработка моего статически типизированного скриптового языка Umka вошла в ту стадию, когда потребовалась проверка языковых возможностей на более сложных примерах, чем скрипты в пару десятков строк. Для этого я решил реализовать на своём языке интерпретатор Lisp. На это меня вдохновил педагогический эксперимент Роба Пайка, одного из создателей языка Go. Недавно Пайк опубликовал маленький интерпретатор Lisp на Go. Особенно впечатлило замечание Пайка, что описание интерпретатора заключено на одной странице 13 древнего руководства по Lisp 1.5. Учитывая синтаксическое родство Umka и Go, было трудно не поддаться соблазну построить такой интерпретатор на Umka, но не буквальным переносом кода Пайка, а полностью заново, от основ. Надеюсь, знатоки Lisp и функциональных языков простят мне наивное изумление от соприкосновения с прекрасным.

Читать далее
Total votes 20: ↑18 and ↓2 +16
Comments 2

Логика сознания. Часть 1. Волны в клеточном автомате

Reading time 7 min
Views 66K
Начнем разговор о мозге с несколько отвлеченной темы. Поговорим о клеточных автоматах. Клеточный автомат – это дискретная модель, которая описывает регулярную решетку ячеек, возможные состояния ячеек и правила изменений этих состояний. Каждая из ячеек может принимать конечное множество состояний, например, 0 и 1. Для каждой из ячеек определяется окрестность, задающая ее соседей. Состояние соседей и собственное состояние ячейки определяют ее следующее состояние.
Наиболее известный клеточный автомат – это игра «Жизнь». Поле в игре «Жизнь» состоит из ячеек. Каждая ячейка имеет восемь соседей. Задается начальная комбинация. Затем начинается смена поколений. Если у занятой ячейки два или три занятых (живых) соседа, то ячейка продолжает жить. Если соседей меньше 2 или больше 3, то ячейка умирает. Когда у пустой ячейки оказывается ровно 3 соседа в ней зарождается жизнь. Задав произвольную начальную комбинацию можно пронаблюдать ее эволюцию.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Comments 65

Машинный анализатор. Часть 1. Волновые нейроны

Reading time 2 min
Views 2.5K


Вступление


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

Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Comments 4

Как работает доказательство Гёделя

Reading time 8 min
Views 73K

Его теоремы о неполноте разгромили поиск математической теории всего. Почти сто лет спустя мы всё ещё пытаемся осмыслить последствия этого.




В 1931 году австрийский логик Курт Гёдель провернул, вероятно, один из самых потрясающих интеллектуальных трюков в истории.

Математики той эпохи искали неколебимые основы математики: набор базовых фактов, аксиом, которые были бы непротиворечивыми и полными, играя роль строительных блоков всех математических истин.

Однако шокирующие теоремы Гёделя о неполноте, опубликованные им всего лишь в 25-летнем возрасте, разбили эту мечту. Он доказал, что любой набор аксиом, который вы можете предложить на роль основы математики, неизбежно будет неполным. Всегда найдутся истинные утверждения, касающиеся чисел, которые невозможно будет доказать при помощи этих аксиом. Он также показал, что ни один набор аксиом нельзя использовать для доказательства их собственной непротиворечивости.
Читать дальше →
Total votes 109: ↑104 and ↓5 +99
Comments 346

Книга «Обработка естественного языка в действии»

Reading time 16 min
Views 6.3K
imageПривет, Хаброжители! Мы издали практическое руководство по обработке и генерации текстов на естественном языке. Книга снабжена всеми инструментами и методиками, необходимыми для создания прикладных NLP-систем с целью обеспечения работы виртуального помощника (чат-бота), спам-фильтра, программы — модератора форума, анализатора тональностей, программы построения баз знаний, интеллектуального анализатора текста на естественном языке или практически любого другого NLP-приложения, какое только можно себе представить.

Книга ориентирована на Python-разработчиков среднего и высокого уровня. Значительная часть книги будет полезна и тем читателям, которые уже умеют проектировать и разрабатывать сложные системы, поскольку в ней содержатся многочисленные примеры рекомендуемых решений и раскрываются возможности самых современных алгоритмов NLP. Хотя знание объектно-ориентированного программирования на Python может помочь создавать лучшие системы, для использования приводимой в этой книге информации оно не обязательно.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 2
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity