Pull to refresh
@NTHubread⁠-⁠only

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

Send message

Русский Язык Программирования

Reading time2 min
Views45K
Начал разработку русского языка программирования.
Сокращенно: РЯП.
Ну и, как следствие, начал разработку интерпретатора РЯП.
РЯП напоминает язык КуМир, но будут существенные отличия и преимущества в сравнении с другими языками.
Читать дальше →

Прощай, Google! 15 Альтернативных поисковиков, которые не шпионят, а сажают деревья и раздают воду

Reading time5 min
Views263K


Аве Кодер!

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

Dракоши. Часть 1. Эволюционная модель мультиагентной системы на базе нейронной сети. Введение

Reading time9 min
Views7.9K

Идея


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

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

«Бесполезное» представление, преобразовавшее математику

Reading time7 min
Views19K

Изначально от теории представлений отказались. Сегодня она играет важнейшую роль в большинстве областей математики.




Когда в конце XIX века впервые появилась теория представлений, многие математики сомневались в ценности этого подхода. В 1897 году английский математик Уильям Бёрнсайд писал, что сомневается в том, что эта необычная перспектива даст какие-то полезные результаты.

«Бёрнсайд, по сути, говорил о том, что теория представлений бесполезна», — сказал Джорди Уильямсон из Сиднейского университета в лекции 2015 года.

Прошло более ста лет после её дебюта, и теория представлений стала ключевым ингредиентом во множестве важнейших математических открытий. Однако её ценность сложно оценить с первого раза.

«Не сразу становится понятно, что её стоит изучать», — сказала Эмили Нортон из Кайзерслаутернского технического университета в Германии.
Читать дальше →

Ликбез про электронные трудовые книжки

Reading time6 min
Views68K


Свершилось, с 1 января 2020 в России введена электронная трудовая книжка. Но от бумаги мы избавляемся только сейчас.

— Что это за штука?
Это запись в базе данных, в которой лежит то же самое, что в вашей бумажной трудовой книжке, только в одном месте в хранилище ПФР. Теперь будет меньше логистики с перемещением этих книжек, сложнее будет утерять старую с записью про увольнение по статье, да и в кадрах не надо будет хранить бумагу 75 лет.

— И уже работает?
Пока нет. Во-первых, всё уже делается с 1 января 2020, но можно решать про оставить ли себе бумажную до 31 декабря 2020. Закон уже работает, административно-техническая база есть, но нужно пройти ещё несколько стадий. Первая стадия — работодатели должны уведомить всех сотрудников об этой особенности до конца июня 2020. Вторая — до 31 декабря 2020 нужно выбрать, хотите вы всё по-старинке, в бумаге, или в электронном виде. UPD: уже можно уведомлять до осени.

— Стоп-стоп, осталась неделя на уведомление? И это ведь государство, и письмо в общий телеграм-чат за документ не считается?
Верно. Уведомлённым считается человек, который прочитал где-то что-то и расписался, то есть как минимум прибыл в офис или отправил такой документ в офис. Либо же уведомлённым считается человек, который получил заказное письмо с описью вложения, где в описи и указано это самое уведомление.

— И что дальше?
Мы уже сделали рассылку словами, и теперь отправляем официальные заказные письма курьерами и почтой. После того, как все будут уведомлены, наступит следующий этап — нужно будет написать или осознанно не написать заявление с выбором типа ведения трудовой книжки до конца рабочего дня 31 декабря 2020.
Читать дальше →

Странная «фича» в почте mail.ru

Reading time3 min
Views34K
TL;DR Если в ящике mail.ru вы смотрите аттач к письму в браузере, то для формирования превьюшки копия документа «улетает» на IP Майкрософт в Редмонд.

Хотелось бы конечно заголовок по кликбейтнее, а-ля «Mail.ru пересылает все ваши письма в США!» или «Microsoft знает содержимое всех вложений на вашем ящике!». Но давайте к фактам и конкретике. Отдельно хотелось бы поблагодарить О.Ю. Анциферова (ex-Dr.PornCop из «лампового» Хакера), который первым обратил внимание на «интересное» поведение почты.
Читать дальше →

Как постичь машинное обучение, если ты не великий математик

Reading time4 min
Views38K
Предлагаем почитать перевод статьи Diego Isco с ресурса dev.to. Она будет полезна начинающим специалистам в области ML.

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

Простой интерпретатор с нуля на Python (перевод) #1

Reading time5 min
Views51K


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


В этом цикле статей я попытаюсь захватить часть этой простоты путем написания простого интерпретатора для обычного императивного языка IMP (IMperative Language). Интерпретатор будет написан на Питоне, потому что это простой и широко известный язык. Также, питон-код похож на псевдокод, и даже если вы не знаете его [питон], у вас получится понять код. Парсинг будет выполнен с помощью простого набора комбинаторов, написанных с нуля (подробнее расскажу в следующей части). Никаких дополнительных библиотек не будет использовано, кроме sys (для I/O), re (регулярные выражения в лексере) и unittest (для проверки работоспособности нашей поделки).
Читать дальше →

Углубление в Scheme

Reading time5 min
Views21K

Если единственный инструмент, которым вы располагаете, это молоток, то множество различных предметов покажутся вам гвоздями.
Марк Твен


Часть 1 Введение в Scheme
Часть 2 Углубление в Scheme
Часть 3 Практика IronScheme

Знакомимся ближе


Настало время изучить основные конструкции языка Scheme. Самый лучший способ научиться использовать новый язык это начать на нем писать. Начнем постепенное погружение с разбора самых базовых элементов языка.
Читать дальше →

Введение в Scheme

Reading time8 min
Views31K

Наиболее важным, но в то же время и наиболее незаметным свойством любого инструмента является его влияние на формирование привычек людей, которые имеют обыкновение им пользоваться.
Эдсгер Вайб Дейкстра


Часть 1 Введение в Scheme
Часть 2 Углубление в Scheme
Часть 3 Практика IronScheme

Введение


В практике программирования часто возникает потребность в написании небольших скриптов для автоматизации различных административных процессов, тестирования и мониторинга. Так же не редко появляется необходимость встроить какой-либо интерпретатор в приложение или просто создать прототип для проверки идеи. Для этих целей можно использовать различные популярные инструменты JavaScript, Python, Lua, Bash, BAT, PHP и много чего еще. А еще бывает потребность хранить структурированные данные в файлах или передавать по сети, когда речь идет о текстовых форматах обычно используются XML, JSON, CSV, даже KV. Однако несмотря на достоинства и распространенность таких широко известных инструментов меня не оставляла навязчивая идея поиска более гибкого и изящного средства.
Читать дальше →

Как облегчить себе жизнь при использовании Git (а также подборка материалов для глубокого погружения)

Reading time13 min
Views38K

Tree of Dragons II by surrealistguitarist

Для тех, кто каждый день использует Git, но чувствует себя неуверенно, команда Mail.ru Cloud Solutions перевела статью фронтенд-разработчика Шейна Хадсона. Здесь вы найдете несколько трюков и советов, которые могут немного облегчить работу с Git, а также подборку статей и мануалов более продвинутого уровня.
Читать дальше →

Основы декларативного программирования на Lua

Reading time12 min
Views52K
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

Отдельные части логики приложения часто бывает удобно описывать в декларативном стиле. Декларативный стиль программирования отличается от более привычного многим императивного тем, что описывается, в первую очередь, каково нечто а не как именно оно создаётся. Написание кода в декларативном стиле часто позволяет скрыть лишние детали реализации.

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →

Почему функциональное программирование такое сложное

Reading time15 min
Views92K

Я несколько раз начинал читать статьи из серии «Введение в функциональное программирование», «Введение в Теорию Категорий» и даже «Введение в Лямбда Исчисление». Причем и на русском, и на английском. Каждый раз впечатление было очень сходным: во-первых, много новых непонятных слов; во-вторых, много новых определений, которые возникают из ниоткуда; в-третьих, совершенно непонятно, как это использовать.


Самым непонятным и зубодробительным оказалось, наверное, Теория Категорий. Я освоился в ней только с третьего подхода. В первые два раза я честно все прочитал, кажется понял, но т.к. никакой связки с реальной жизнью она не имела, то спустя неделю она благополучно полностью выветривалась.


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

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

Как мужик квазигруппы искал (или Учи Python, а то будешь руками работать)

Reading time4 min
Views4.1K
Совсем немного теории

Латинский квадрат — табличка, заполненная буквами так, что в каждой строке и в каждом столбце никакая не повторяется дважды.

$A$ $B$ $C$
$B$ $C$ $A$
$C$ $A$ $B$

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

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?

Как ускорить игру «Жизнь» в сто раз

Reading time17 min
Views52K
image

Сложно найти человека, не знакомого с игрой "Жизнь", придуманной английским математиком Джоном Конвеем еще в 1970 году, и до сих пор не теряющей своей популярности. Многие программисты писали свою реализацию этой игры, и еще одна вряд ли кого-то удивит. Однако эта игра является отличным примером, показывающим, насколько полезной может оказаться оптимизация вычислений, даже не меняющая асимтотическую сложность алгоритма. Мы начнем с простейшей реализации на c# и будем последовательно применять различные оптимизации, ускоряя работу программы.

Мы также улучшим алгоритм на JavaScript, ускорив его в 10 раз по сравнению с неоптимизированной версией.

В конце статьи дана ссылка на код, а также на online-реализацию игры с оптимизированным алгоритмом на JavaScript, выполняющим до двухсот итераций в секунду на поле размера 1920x1080 (Full HD), где вы можете убить время поиграть в эту замечательную игру.
Читать дальше →

Машинное обучение: с чего начать или как построить первую модель

Reading time8 min
Views14K


В качестве первой задачи для машинного обучения возьмем что-то понятное и простое, например, прогноз стоимости жилья. Готовый датасет можно найти на сайте kaggle. На первых шагах обучения не стоит брать датасеты с большим количеством переменных, например, «House Prices: Advanced Regression Techniques» состоит из 80 переменных и advanced regression, остановимся на «House Sales in King County, USA» с 21 параметром. Скачиваем данные и анализируем предоставленное описание. В наличии дата, цена, количество спален, ванных комнат, общая и жилая площадь, этажность, оценка вида, вид на море, оценка общего состояния, грейд (оценка строительства и дизайна), площадь над и под уровнем земли, год постройки, год последнего ремонта, код зоны, координаты (долгота и широта), данные о площади домов 15 соседей.

Итак, мы выбрали задачу и готовы приступить к ее решению. Решение будет включать два этапа: анализ данных и построение моделей.

1. Работа с данными.

Сделаем отступление и отдельно отметим важность анализа данных. В настоящий момент все более-менее популярные алгоритмы уже написаны в виде библиотек и непосредственное построение модели сводится к нескольким строкам кода, например, k-ближайших соседей из sklearn в python:
Читать дальше →

Машинное обучение с подкреплением через соревновательные нейронные сети

Reading time3 min
Views8.8K
В классической игре «крестики-нолики» существует возможность представить все вероятные ходы — и никогда не проигрывать. Эту возможность я использовал как метрику своего обучения нейронной сети игре.

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

Конечно крестики-нолики не похожи на сложную игру, чтобы обучать их подкреплением. Однако, она хорошо подходит для освоения методики обучения через соревновательные сети, которая позволит улучшить качество и сократить время на обучение сети.

Далее я опишу общий алгоритм обучения с подкреплением через соревновательные сети в контексте игры крестики-нолики с демонстрацией обученной сети делать “осмысленные” ходы, то есть играть.


Ссылки:
Запись игры обученной сети
Обучить сеть с нуля
Исходники

Также можно ввести предобученную модель из GitHub по нажатию на соответствующую кнопку, чтобы сразу начать испытывать нейронную сеть.
Читать дальше →

VAX — инструмент для визуального программирования, или как написать SQL мышкой

Reading time7 min
Views41K


Я хочу рассказать про созданный мною web редактор для «визуального программирования» и его историю создания.
Читать дальше →

Компания National Instruments выпустила бесплатные LabVIEW 2020 и NXG 5.0 Community Edition

Reading time4 min
Views34K
Здравствуйте, коллеги!

В конце апреля произошло событие, которого так ждали поклонники рисования кода мышкой: компания National Instruments наконец-то выпустила бесплатную редакцию своей системы графического программирования — LabVIEW Community Edition.

image

Название перекликается с Visual Studio Community, но в отличие от Студии среда разработки LabVIEW абсолютно бесплатна лишь для некоммерческих проектов, и для обучения в школах (для ВУЗов потребуется Academic Site License).

Ну а теперь все желающие могут приобщиться к увлекательному миру графического программирования, скачать LabVIEW и играть с ней так долго, насколько хватит желания (и терпения).
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity