«Хтоническая логика 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)
FrolVII
03.10.2022 13:38+4Основная мысль Игоря изложена в заголовке. Зачем остальной текст? Ведь этот текст "не гарантирует отсутствие многих ошибок, и не сужает возможности таким образом, чтобы безопасность из этих ограничений следовала автоматически".
Keeper13
03.10.2022 15:19Apathy is death. Worse than death, because at least a rotting corpse feeds the beasts and insects.
ikostruba
04.10.2022 23:12-1Интересно, что поиск приводит, по мнению Игоря, к Rust или Go, ведь это совершенно разные языки, с очень различными свойствами. Тогда уж почему поиск не может привести к чистому С или Erlang/Elixir?
Вообще, многие растисты, с кем я общался, склонны к каким-то квазирелигиозным оценкам других языков. Любая критика Раста, или сомнения в том, что он так уж хорош, вызывала у них замечания в духе "а что, лучше как в этом вашем (поганом) С++ постоянно разгребать ошибки памяти?". Вот и тут какой-то странный наезд на Python. При чём тут апатия? Почему Питону противопоставляются именно эти два языка?
По моему опыту, на Расте вполне тоже вовсю пишут такой же нечитаемый и неподдерживаемый говнокод, как и на других языках. Ну и без unsafe там ничего не сделать, даже системную функцию не вызвать. Так что любые побочные эффекты будут unsafe. Любые зависимости -- то же самое. Так что насколько Раст спасает от проблем с памятью -- это еще вопрос. Было вот исследование, что проблем хватает: https://www.infoq.com/news/2021/11/rudra-rust-safety/
JohnScience
05.10.2022 11:38Здравствуйте, попытался зайти к вам на сайт. Встретила ошибка 403 Forbidden от nginx.
Tituch Автор
05.10.2022 11:40В данный момент сайт доступен с IP следующих стран: Россия, Беларусь, Казахстан, Узбекистан, Азербайджан, Молдавия, Кыргызстан, Таджикистан, Туркменистан, Армения
klimkinMD
05.10.2022 11:38Хтоническая логика Haskell, тяжеловесная мощь «плюсов» и грязная гибкость скриптовых языков наталкивают человека на экзистенциальный поиск.
"Тебе бы не картины, начальник, тебе бы книжки писать!"
WondeRu
"Если апатия приводит в Python" - яркое словцо для холивара?)
Source
А разве не так? В состоянии апатии человек плывёт по течению, не анализируя, не взвешивая плюсы и минусы. В данный момент такое состояние явно приведёт к Python, ну или к JavaScript, которые сейчас втюхивают на каждом углу.