Pull to refresh
33
0
Юрий @yurixi

Программист

Send message

Как компилятор C++ находит правильную функцию

Reading time13 min
Views15K

Увлекательный пересказ того, как компилятор C++ находит правильную функцию, которую надо вызвать, когда в коде вызывается функция. По сути, это просто сжатое объяснение алгоритма, уже описанного на cppreference.com, который, в свою очередь, является сокращенной версией стандарта C++.

Читать дальше →
Total votes 22: ↑19 and ↓3+21
Comments3

Лицензия для вашего open-source проекта

Reading time98 min
Views186K
В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

Статья будет полезна тем, кто хочет:

— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
— подобрать свободную лицензию для своего проекта;
— разобраться, что нужно писать в шапке файла исходного кода.
Читать дальше →
Total votes 136: ↑132 and ↓4+128
Comments117

Как работают трансформеры: разбираем математику

Level of difficultyMedium
Reading time28 min
Views20K

В этом посте я представлю подробный пример математики, используемой внутри модели трансформера, чтобы вы получили хорошее представление о работе модели. Чтобы пост был понятным, я многое упрощу. Мы будем выполнять довольно много вычислений вручную, поэтому снизим размерность модели. Например, вместо эмбеддингов из 512 значений мы используем эмбеддинги из 4 значений. Это позволит упростить понимание вычислений. Мы используем произвольные векторы и матрицы, но при желании вы можете выбрать собственные значения.

Как вы увидите, математика модели не так уж сложна. Сложность возникает из-за количества этапов и количества параметров. Перед прочтением этой статьи я рекомендую прочитать пост Illustrated Transformer (или читать их параллельно) [перевод на Хабре]. Это отличный пост, объясняющий модель трансформера интуитивным (и наглядным!) образом, поэтому я не буду объяснять то, что уже объяснено в нём. Моя цель заключается в том, чтобы объяснить, как работает модель трансформера, а не что это такое. Если вы хотите углубиться в подробности, то изучите известную статью Attention is all you need [перевод на Хабре: первая и вторая части].

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments8

Галопом по Европам: Легитимные процессы Windows на пальцах

Level of difficultyEasy
Reading time12 min
Views25K

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

Читать далее
Total votes 52: ↑50 and ↓2+59
Comments36

Как я сделал игру на ChatGPT

Level of difficultyEasy
Reading time12 min
Views24K

Рассказываю как сделал текстовый квест на ChatGPT и с какими проблемами столкнулся в промптинге. Что и как не получалось и как потом получилось.

Внутри полный текст промпта.

Читать далее
Total votes 53: ↑50 and ↓3+56
Comments53

Вся мощь паттернов в Wolfram Language

Level of difficultyMedium
Reading time32 min
Views4.3K

Редкая птица долетит до середины Днепра, не каждый разработчик осилит все паттерны в WL. Нет ему равных языков в паттерн-матчинге. Чуден и необычен язык этот. Изобилует он точками, подчеркиваниями, да запятыми так, что в глазах рябит, да разум мутнеет.

В этой статье я постараюсь сделать как можно более подробный обзор на механизм сопоставления с образцом в Wolfram Language (WL) и покажу реальные примеры, где я сам и мои товарищи его активно используют. А также я поделюсь всеми неочевидными тонкостями работы с шаблонами, с которыми лично я столкнулся в процессе написания кода на WL. По возможности я буду приводить примеры на других языках программирования - на Python и C#. Это позволит всем, кто не знаком с WL лучше понять код и сравнить синтаксис.

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

SCP: почему сеттинг тайного агентства по исследованию артефактов стал так популярен?

Reading time8 min
Views26K

Если вы активно обитаете в сети и любите интернет-фольклор — скорее всего, вы знаете, что такое SCP.

Если не знаете — то и славно. А за теми, кто знает, уже выехали. Шутка.

SCP — один из самых необычных феноменов коллективного интернет-творчества. Своего рода фэндом без исходного произведения. Точнее, исходник есть – но представляет собой крошечный текст из бездн имиджборд.
Читать дальше →
Total votes 55: ↑52 and ↓3+71
Comments39

Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript и не только

Level of difficultyMedium
Reading time20 min
Views8.1K

На Хабре уже проскакивали упоминания о совместимых или систем-копиях Wolfram Mathematica, но реализованных на других языках, скажем, Mathics. В качестве расширения этой ниши я представляю молодую систему, которая не только воспроизводит многие ключевые функции блокнота Mathematica с нуля, но и расширяет функционал гораздо дальше, чем там, где очертил его границы Стивен Вольфрам, создав эту потрясающую систему более 30-ти лет назад.

Читать далее
Total votes 24: ↑23 and ↓1+36
Comments5

10 рекомендаций по VS Code для повышения продуктивности

Level of difficultyEasy
Reading time7 min
Views52K
Visual Studio Code остаётся наиболее предпочтительной IDE среди разработчиков. Причём этот редактор всё чаще используют именно начинающие программисты. Источник: survey.stackoverflow.co/2023

А вы знали, что 73% разработчиков по всему миру используют один редактор кода? Так и есть. Результаты проведённого в 2023 году опроса Stack Overflow показали, что VS Code является самой популярной средой разработки.

И мы все знаем почему — он очень крут!

Но в полной ли мере мы задействуем его потенциал? Текущая статья будет посвящена знакомству с некоторыми интересными возможностями VS Code, способными повысить продуктивность работы. К ним, помимо прочих, относятся локальный контроль исходного кода, анимация курсора и быстрое удаление строк. Использование этих возможностей поможет ускорить реализацию проектов разработки.
Читать дальше →
Total votes 77: ↑69 and ↓8+87
Comments83

Прототипы в JS и малоизвестные факты

Reading time7 min
Views53K

Лирическое вступление 


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


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

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

Физически информированное машинное обучение, или Как я перестал бояться и полюбил искусственный интеллект

Level of difficultyMedium
Reading time7 min
Views7K

Привет, Хабр. Меня зовут Марат Хамадеев. Я — физик-теоретик, хотя кто-то, возможно, знает меня как научного журналиста, писавшего про физику для N + 1. Профессионально я рос в провинциальной академической среде, представители которой довольно скептически относились к применениям машинного обучения и, в частности нейронных сетей, для решения рутинных научных задач. Мне передался этот консерватизм — пока я писал новости про физику, я старался избегать исследований, построенных вокруг этого подхода.

Но жизнь не стоит на месте, и на новой работе я столкнулся с необходимостью поближе познакомиться с искусственным интеллектом и машинным обучением. Мне выпала замечательная возможность послушать лекции на Летней школе Искусственного интеллекта, организованной AIRI, и среди них была серия докладов, посвященных применению машинного обучения для физического моделирования. Они полностью развеяли мои страхи и побудили меня кратко рассказать вам о том, как связаны две эти области.

Читать далее
Total votes 11: ↑10 and ↓1+13
Comments6

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

Level of difficultyEasy
Reading time9 min
Views6.1K

Как-то раз я поехал в гости к родственникам, у которых есть маленькая девочка Саша (6 лет). Заранее продумал, чем с ней заниматься, чему можно попробовать научить, что показать, как заинтересовать. Ведь скоро в школу. Подготовил хорошие книги, мультики, наборы для рукоделия и разные подарки. Разработал электронные конструкторы.

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

Интересно? Тогда, как говорит Саша, «давайте пАять» (с ударением на А)!
Читать дальше →
Total votes 37: ↑28 and ↓9+33
Comments44

Как создавать качественные ML-системы. Часть 2: приручаем хаос

Reading time11 min
Views3.6K


Команда VK Cloud перевела вторую статью из серии о создании ML-систем. Первую читайте по ссылке. Здесь поговорим о Data-centric ИИ, данных для обучения, разметке и очистке, синтетических данных и еще немного о Data Engineering и ETL.
Читать дальше →
Total votes 12: ↑9 and ↓3+14
Comments0

Эйлер, Чёрч и Мандельброт — этюд о красоте и математике

Level of difficultyEasy
Reading time9 min
Views13K

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

В начале 90-х годов XX века немецкий информатик Юрген Шмидхубер представил невероятно красивую и математически строгую теорию математической красоты. Согласно этой теории людям кажутся красивыми сложные объекты, обладающие наименьшей алгоритмической сложностью. Эта величина, также известная как колмогоровская сложность, названа в честь впервые описавшего её советского математика Андрея Колмогорова.

Читать далее
Total votes 51: ↑49 and ↓2+62
Comments28

За что Интернеты полюбили Ктулху? Часть 3: как Ктулху выплыл из тьмы забвения и при чём тут гики

Level of difficultyEasy
Reading time10 min
Views7.5K

Ктулху, как известно, фхтагн. А также мем, кандидат в президенты США, персонаж бесчисленных комиксов и один из любимых героев Интернетов. Несмотря на всю свою мрачность, хтоничность и фхтагничность, а возможно — как раз благодаря им. Как получилось, что существо из совершенно не «выстрелившей» в годы выхода новеллы малоизвестного автора превратилось в культовую во всех смыслах фигуру, легко узнаваемую любым завсегдатаем Сети?

В первой статье мы начали говорить о Ктулху: кто он такой по канону, чем занимается (спойлер: в основном дрыхнет на дне и иногда икает), где живёт на этом самом дне и почему ему на голову могла упасть советская станция «Мир». Во второй обсудили, откуда Ктулху взялся в фантазиях Лавкрафта именно такой, со всеми его щупальцами, крыльями и пузом — ведь в мировой культуре прямого аналога такой фигуры не существовало. Ну а теперь проследим путь Ктулху из безвестности на момент публикации первого рассказа к массовой известности в конце ХХ — начале ХХI века.
Читать дальше →
Total votes 43: ↑39 and ↓4+56
Comments3

Поговорим об оптимизирующих компиляторах. Сказ второй: Доминирование

Level of difficultyMedium
Reading time10 min
Views9.7K

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

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

Причаститься
Total votes 49: ↑49 and ↓0+49
Comments18

Что делает ChatGPT… и почему это работает?

Level of difficultyMedium
Reading time75 min
Views156K

То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).

Читать далее
Total votes 248: ↑248 and ↓0+248
Comments121

Нейросеть, что это такое и как создать свою? Детальная инструкция

Reading time21 min
Views46K

В поисковых системах ежедневно растет количество запросов, что такое нейросеть (далее — НС). Прежде всего это связано с растущим интересом к технологиям на базе искусственного интеллекта (далее — ИИ). Многие из нас даже не подозревают, что мы практически ежедневно используем модели глубокого обучения. Запросы Siri или взаимодействие с чат-ботами в мессенджерах — один из ярких примеров использования НС. 

Мало кто из нас знает, что нейронки существуют уже 80 лет. Первая НС была представлена в 1943 году Уорреном Маккалоу и Уолтером Питтсом. В ее основе лежала пороговая логика для построения вычислительных моделей. Но с годами подходы к реализации нейронных сетей изменились, как и технологии, которые используются для их разработки. Углубимся в основы НС и разберемся с ключевыми вопросами. 

Читать далее
Total votes 25: ↑18 and ↓7+17
Comments1

Поговорим об оптимизирующих компиляторах. Сказ первый: SSA-форма

Level of difficultyMedium
Reading time9 min
Views17K

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

Коротко обо мне. Меня зовут Макс, и так получилось, что я вот уже 10 лет, почти с самого начала своей карьеры, занимаюсь оптимизирующими компиляторами. Я начинал в Intel, потом перешёл в Azul Systems, год провёл в Cadence и вернулся обратно, всё это время занимаясь компиляторными оптимизациями для Java, C++ и нейросетевых моделей. На момент написания статьи у меня чуть за 900 патчей в LLVM, большинство из них посвящено цикловым оптимизациям.

За это время я провёл десятки собеседований на позиции как интернов, так и инженеров сеньорного уровня, и довольно часто люди, приходя на эти собеседования, многих вещей не знают или знают поверхностно. И я подумал: а мог бы я написать такой цикл статей, чтобы человек, прочитав их, узнал бы всю ту базу, которая, на мой собственный взгляд, необходимо начинающему компиляторному инженеру? Очень бы хотелось, чтобы новичку в этой области можно бы было дать один (относительно небольшой по объёму) набор текстов, чтобы он получил оттуда всё необходимое для старта. Это не перевод, текст оригинальный, поэтому в нём могут быть ошибки и неточности, которые я буду рад исправить, если вы мне их укажете.

Итак, поехали.

Погрузиться
Total votes 93: ↑91 and ↓2+117
Comments58

Удивительные клеточные автоматы: направленные и пользовательские окрестности

Level of difficultyEasy
Reading time7 min
Views3.3K


?, Хабр!

На прошлых неделях мы познакомились с различными вариациями альтернативных окрестностей – начиная с учёта расположения нотацией Хенселя, через альтернативные шаблоны расположения, и заканчивая взвешенными окрестностями. Сегодня добавим в тему окрестностей стандартного поля небольшой финальный штрих – пользовательские расположения.
Что здесь происходит (для новых читателей серии)
В этой серии мы разбираем клеточные автоматы – дискретную модель, основой которой является сетка из ячеек-клеток, которые изменяют (или не изменяют) своё состояние в зависимости от количества соседей.
Учёт соседей определяется правилами, которые устанавливаются нами. Вариаций правил существует бесчисленное множество, и они были систематизированы в определённые конфигурации.
Самая популярная конфигурация – «B/S», или «life-like», по названию крайне широко известного клеточного автомата «Game of Life», где B/S обозначает, что в нашем правиле мы описываем всего два параметра – количество соседей необходимых для рождения новой клетки в пустой ячейке, и количество соседей для выживания существующей клетки.
В каждой статье серии мы углубляемся в данную конфигурацию, добавляя новые параметры, либо дополняя существующие. Иногда заглядываем и в прочие конфигурации.
Для понимания сегодняшней статьи достаточно знать, что:
  • поиск соседей изначально выполняется в радиусе 1 (8 окружающих клеток – ), но мы можем установить другой, добавив к правилу Rx, где x – нужный нам радиус;
  • мы можем изменять шаблон окрестности поиска соседей. Изначально подразумевается окрестность Мура – R в каждую сторону (и диагональ) от рассматриваемой клетки, – но указывая Nxx мы будем определять иной шаблон, что, конечно, изменит вид правила. Сегодня мы продолжаем расширение этой части правила. Знакомство с предыдущими расширениями не является необходимым, но вы, конечно, можете предварительно ознакомиться с ними и прочими дополнениями, для большей последовательности чтения. Ссылки в конце материала и в профиле.
Читать дальше →
Total votes 38: ↑37 and ↓1+50
Comments9

Information

Rating
Does not participate
Location
Иркутск, Иркутская обл., Россия
Registered
Activity