«Хтоническая логика Haskell, тяжеловесная мощь «плюсов» и грязная гибкость скриптовых языков наталкивают человека на экзистенциальный поиск. Если апатия приводит в Python, то конструктивный поиск в итоге ведёт к Rust или Go», — считает Игорь Нетай, специалист отдела перспективных исследований компании «Криптонит».

Наш следующий собеседник — математик и аналитик, изучающий нейросети. Он знает несколько языков программирования, играет на разных музыкальных инструментах и рисует на стенах заметающие кривые нового типа. Знакомьтесь: Игорь Нетай, увлечённый исследователь и человек-оркестр!

— На каких языках ты учился программировать?

— Я ведь до какого-то момента не понимал программирование, а задачи на Мехмате решал более-менее наугад, не задумываясь, что происходит, просто на интуиции. Потом подумал, что с этим непониманием пора завязывать и пошёл в Школу анализа данных (ШАД) Яндекса. Это помогло, дало больше понимания, основу культуры и базу, с которой можно эффективно развиваться уже самостоятельно. Я начал участвовать в образовательных проектах уже как программист и параллельно учился на Мехмате МГУ, в НМУ, в ШАД и посещал курсы в Математическом институте им. Стеклова. Потом у меня было программирование для нужд образования на чём попало (Python, Perl, Ruby), которое постепенно перешло в аналитику на Haskell.

— Какой язык оказал на тебя наибольшее влияние?

Определённо Haskell. После C++ и скриптовых языков он меняет сознание, если проникнуться им достаточно глубоко, после него и на других языках начинаешь писать код иначе. Однако постепенно это изменение восприятия и образа мышления логично приводит к освоению Rust. Хтоническая логика Haskell, тяжеловесная мощь «плюсов» и грязная гибкость скриптовых языков наталкивают человека на экзистенциальный поиск. Если апатия приводит в Python, то конструктивный поиск в итоге приводит к Rust или Go.

— Каждому языку – своя область применения?

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

— Игорь, как ты пришёл в «Криптонит»?

— Я попал в нашу компанию практически на старте, когда коллектив только собирался. Как раз в то время решил заняться исследованиями в ИТ, так что было очень удачное стечение обстоятельств.

—  Чем ты занимаешься в нашей компании?

— Сейчас занимаюсь общими задачами, связанными с искусственными нейронными сетями. Исследую причины их сходимости или расходимости, изучаю атаки на нейронные сети, связи архитектур и обучающих данных. Основная цель — найти что-то новое, полезное и опубликовать результаты как научные статьи.

— Что помогло тебе получить столь необычную должность?

— Думаю, что получить работу помог опыт в фундаментальных исследованиях и серьёзный научный бэкграунд. Я закончил механико-математический факультет МГУ и Независимый московский университет (НМУ), получил учёную степень к. ф.-м. н. Вдобавок у меня уже на тот момент был большой интерес к прикладной области и опыт программирования на разных языках.

— Какие у тебя увлечения? Что помогает работать, или наоборот — отвлечься от работы?

— В нашем первом офисе я играл на скрипке. На обычной, акустической. Электрическую скрипку я принёс в офис уже потом, а вслед за ней появилась электровиолончель, электрогитара и гобой. Как-то к нам собеседовалась группа разработчиков. Они интересовались, нормально ли, что они обсуждают рабочие вопросы живо, эмоционально и громко. Им ответили, что громкое выражение мыслей никому не мешает. Тут один сотрудник вообще играет на скрипке прямо в офисе, и все рады. Мне соседний отдел даже делал замечания... что я слишком мало играю! Иногда люди спрашивали, кто громко включает классическую музыку. Мы отвечали, что никто не включает, я воспроизвожу не mp3, а pdf с нотами.

— Насколько для тебя подходящие условия на работе?

— Атмосфера для меня полностью подходящая. Нужен баланс между самостоятельным рабочим процессом, обсуждением его с коллегами и отвлекающими факторами. Полная удалёнка — не моё. В начале пандемии ковида я это осознал. Максимум времени в офисе — наверное, тоже не для меня. Всё же отвлекающие факторы в каком-то количестве тоже нужны. У всех свой режим, но ритм нашего отдела лично мне подходит оптимально.

— Говорят, ты чертил на стене H-кривые?

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

— Если кратко, то что это за кривые, и как они применяются в ИТ?

— Пространственные заметающие кривые полезны для построения индексов баз данных, а большие базы данных в повседневной жизни везде. Это и соцсети с мессенджерами, и медиаконтент в интернете, и ещё куча всего. Чтобы мы могли смотреть всё на смартфончике в каком-то приложении, где-то должна быстро крутиться здоровенная база данных (БД). А для любой БД ключевой инструмент — это индексы. Именно построение индексов H-кривые сильно ускоряют при сохранении прочих полезных свойств. Логика их применения в том, что сложение по модулю степеней двойки — быстрая операция, а композиции вращений пространства (как при построении кривой Гильберта) — операция не столь быстрая. Более развёрнуто можно прочитать в статье, опубликованной в нашем научном блоге. В ней можно найти ссылку на препринт в arXiv и на журнальный вариант научной статьи.

— Как ты придумал новый тип H-кривых? Это было озарение, или кропотливая проработка вариантов?

— Как ни странно, ни то, ни другое. Как обычно бывает, пригодилась конструкция, которая изначально делалась для немного другого. Вообще это довольно частая и скорее типичная ситуация, что придуманные конструкции срабатывают не только там или не совсем так, как ожидалось. В исследованиях ситуация, что «всё оказалось не так просто и очевидно», типична, потому что исследования как раз и занимаются неочевидным. В процессе решения какой-либо задачи могут появляться хорошие конструкции, которые часто могут оказаться более полезными для чего-то более общего или вовсе другого. Но полезную конструкцию надо уметь увидеть, а дальше понять, что с ней делать безотносительно того, для чего она создавалась изначально. Как решение может быть не лучшим для задачи, так и задача может оказаться не лучшей для найденного решения, И для найденного решения всегда нужно смотреть, не надо ли поменять задачу. Так получилось и с Н-кривыми.

— Что порекомендуешь тем, кто тоже хочет заниматься перспективными исследованиями, но не знает, с чего начать?

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


P.S. Если хотите стать коллегой Игоря, то в «Криптоните» открыта вакансия специалиста-исследователя в отделе перспективных исследователей.

Комментарии (8)


  1. WondeRu
    03.10.2022 12:49
    +3

    "Если апатия приводит в Python" - яркое словцо для холивара?)


    1. Source
      04.10.2022 00:47
      +3

      А разве не так? В состоянии апатии человек плывёт по течению, не анализируя, не взвешивая плюсы и минусы. В данный момент такое состояние явно приведёт к Python, ну или к JavaScript, которые сейчас втюхивают на каждом углу.


  1. FrolVII
    03.10.2022 13:38
    +4

    Основная мысль Игоря изложена в заголовке. Зачем остальной текст? Ведь этот текст "не гарантирует отсутствие многих ошибок, и не сужает возможности таким образом, чтобы безопасность из этих ограничений следовала автоматически".


  1. Keeper13
    03.10.2022 15:19

    Apathy is death. Worse than death, because at least a rotting corpse feeds the beasts and insects.


  1. ikostruba
    04.10.2022 23:12
    -1

    Интересно, что поиск приводит, по мнению Игоря, к Rust или Go, ведь это совершенно разные языки, с очень различными свойствами. Тогда уж почему поиск не может привести к чистому С или Erlang/Elixir?

    Вообще, многие растисты, с кем я общался, склонны к каким-то квазирелигиозным оценкам других языков. Любая критика Раста, или сомнения в том, что он так уж хорош, вызывала у них замечания в духе "а что, лучше как в этом вашем (поганом) С++ постоянно разгребать ошибки памяти?". Вот и тут какой-то странный наезд на Python. При чём тут апатия? Почему Питону противопоставляются именно эти два языка?

    По моему опыту, на Расте вполне тоже вовсю пишут такой же нечитаемый и неподдерживаемый говнокод, как и на других языках. Ну и без unsafe там ничего не сделать, даже системную функцию не вызвать. Так что любые побочные эффекты будут unsafe. Любые зависимости -- то же самое. Так что насколько Раст спасает от проблем с памятью -- это еще вопрос. Было вот исследование, что проблем хватает: https://www.infoq.com/news/2021/11/rudra-rust-safety/


  1. JohnScience
    05.10.2022 11:38

    Здравствуйте, попытался зайти к вам на сайт. Встретила ошибка 403 Forbidden от nginx.


    1. Tituch Автор
      05.10.2022 11:40

      В данный момент сайт доступен с IP следующих стран: Россия, Беларусь, Казахстан, Узбекистан, Азербайджан, Молдавия, Кыргызстан, Таджикистан, Туркменистан, Армения


  1. klimkinMD
    05.10.2022 11:38

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

    "Тебе бы не картины, начальник, тебе бы книжки писать!"