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

В предыдущей статье от Питерской Вышки мы показывали, как при помощи машинного обучения можно искать баги в программном коде. В этом посте расскажем о том, как мы вместе с JetBrains Research пытаемся использовать один из самых интересных, современных и быстроразвивающихся разделов машинного обучения — обучение с подкреплением — как в реальных практических задачах, так и на модельных примерах.
\Sigma
. Определение типа Sorted
дадим через сопоставление с образцом, вдохновившись определением из уже упомянутой статьи про упорядоченные списки.\func SortedList (O : LinearOrder.Dec) => \Sigma (l : List O) (Sorted l)
\data Sorted {A : LinearOrder.Dec} (xs : List A) \elim xs
| nil => nilSorted
| :-: x nil => singletonSorted
| :-: x1 (:-: x2 xs) => consSorted ((x1 = x2) || (x1 < x2)) (Sorted (x2 :-: xs))
Sorted
содержится во вселенной \Prop
. Это произошло потому, что все три образца в определении Sorted
являются взаимно исключающими, а конструктор consSorted
имеет два параметра, оба из которых принадлежат \Prop
. Sorted
, скажем, что хвост упорядоченного списка сам является упорядоченным списком (это свойство пригодится нам в дальнейшем).В осеннем семестре 2020 года команда лаборатории Нейробиологии и физиологии развития прочитала курс «Вычислительные Нейронауки» для студентов партнерских магистратур ВШЭ и ИТМО, а также для заинтересованных вольнослушателей. Курс проводится в рамках образовательных программ JetBrains c 2019 года. В этом году, в отличие от прошлого, формат обучения был, естественно, дистанционный –– лекции и семинары проводились в виде видеоконференций. В ходе курса студентам был предложен базовый материал для изучения и обсуждения в аудитории, материалы для самостоятельного, более глубокого погружения, интересные практические задания по моделированию нейронов и биологических нейронных сетей.
Цель курса –– дать студентам представление о том, что и какими способами можно моделировать в нейробиологии и дать им возможность немного попрактиковаться в этом на нескольких относительно простых задачах. Пререквизитами для полноценного усвоения материала являются умение программировать и интерес к биологии, однако, если даже вы не умеете программировать, но интересуетесь вопросами, касающимися работы нервной системы и ее моделирования –– вам все равно будет интересно послушать эти лекции!
Привет! Сегодня мы будем говорить про многопоточность и расскажем про инструмент Lincheck – один из ключевых проектов Лаборатории параллельных вычислений в JetBrains Research. Если в двух словах, то это фреймворк для тестирования многопоточных структур данных под JVM, предоставляющий возможность декларативного написания тестов. Что это значит? Как правило, при написании тестов мы пишем саму логику тестирования. С Lincheck-ом же все иначе – вместо указания того, как тестировать, вы объявляете операции, которые необходимо проверить, критерий корректности (например, линеаризуемость) и возможные ограничения (например, "single-consumer" для очередей) – то есть указываете что тестировать. А дальше Lincheck уже сам со всем разберется. В этом посте мы сделаем краткий обзор Lincheck-а и расскажем про режим model checking, который мы недавно зарелизили и который уже спас нам десятки часов отладки ошибок в алгоритмах.
JetBrains Research объединяет более 150 исследователей, участвующих в проектах более 19 лабораторий и групп. Лаборатории и группы ведут работу в самых разных направлениях — от физики элементарных частиц до разработки ПО.
Привет, Хабр!
Меня зовут Елена Картышева, я выпускница программы «Разработка программного обеспечения» Университета ИТМО — одной из образовательных инициатив JetBrains. Вообще я занимаюсь биоинформатикой и машинным обучением, и сегодня хочу рассказать о своей выпускной квалификационной работе. В рамках диплома я улучшила модель предсказания совместных побочных эффектов лекарств. Это поможет разрабатывать более эффективный дизайн клинических исследований и собирать информацию о побочных эффектах новых препаратов.
Надоели нестабильные баги в многопоточном коде? Попробуй воспользоваться модел-чекерами! Ведь больше не надо бояться неверифицированных модел-чекеров, работающих либо за экспоненциальное время, либо неоптимально. Все это в прошлом: в Max Planck Institute for Software Systems разработали новый алгоритм под названием TruSt, который решает эти проблемы и, кроме того, верифицирован на Coq.
Меня зовут Владимир Гладштейн. Этим летом я проходил стажировку в MPI-SWS в группе, которая придумала алгоритм нового модел-чекера для поиска багов в многопоточных программах. Этот алгоритм является оптимальным и truly stateless (вследствие чего работает с линейными затратами по памяти). В этом посте я расскажу, как работают модел-чекеры, в каких случаях их можно использовать, и что за алгоритм придумали мои коллеги. А еще как я проверял доказательства его корректности на Coq.
Привет, Хабр! В этом году мы провели пятый ежегодный опрос о состоянии экосистемы разработки и выяснили, чем живут программисты, какие языки, технологии и инструменты они используют и как изменился мир разработки по сравнению с 2020 годом. Мы доработали методологию и расширили географию опроса — теперь он охватывает весь мир.
Отчет основан на мнениях 31 743 респондентов из 183 стран и регионов, большое спасибо всем участникам! Около двух тысяч опрошенных программистов — из России, и это позволило сделать выводы о том, чем российский рынок разработки отличается от остального мира. Вот некоторые интересные отличия:
— Российские разработчики моложе, но менее счастливы. В мире доля программистов старше 40 лет составляет 14%, а в России их 8%. Однако только 6% российских программистов считают, что они очень счастливы, в других же странах – 21%.