Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Технический директор, Архитектор программного обеспечения
Ведущий
Kotlin
Kotlin Multiplatform
Проведение исследований
Анализ данных
Проектирование архитектуры приложений
Самоорганизация не работала, не работает и работать не будет. Если вы предоставите возможность сообществу "договариваться между собой", то в лучшем случае, у вас будет ResearchGate, в котором поговорить как бы можно, а толку нет. Или "рынок" будет очень быстро перекроен "под себя" воротилами от науки. Настройка рейтинга — вещь очень тонкая и сделать так, чтобы он играл на руку, скажем, большим коллаборациям, не сложно. Если участь, что эти рейтинги — это живые деньги, то нет, так это точно работать не будет.
Ну и кроме того, тут есть две дополнительные потенциальные ошибки:
Вообще, важно понимать, что наука занимается не поиском абстрактной истины, которую сложно определить, а поиском консенсуса в научном сообществе, который определить уже вполне реально, в том числе формально на уровне теории графов.
В общем много про это думали и готовы поделиться наработками. Не готов читать все комментарии на хабре, так что пишите лично, если интересно.
В обществе научных работников (http://onr-russia.ru/) было довольно много дискуссий на эту тему.
А в микроконтроллерах вы скорее всего используете С с классами или даже без них, опять же касаясь только очень маленькой разумной части стандарта.
Анализ бывает очень разный. Если брать ускорительную физику, то как правило есть что-то вроде таблицы (Root TTree, который совсем не дерево), элементы строк которой могут быть вложенными таблицами или произвольными объектами. По этой таблице делается что-то типа фильтрации и строятся гистограммы определенных параметров и их производных. Потом по этим гистограммам делаются картинки и как-то сравниваются. Как-то так, если не брать калибровки, которые очень индивидуальны для каждого эксперимента. Ну там еще есть аспект сбора, потому что с ускорителей сыплются дикие объемы данных, и для того, чтобы их просто предварительно отсеять надо распределенные системы подключать.
Если мы говорим о неускорительной физике, то тут уже все совсем индивидуально. К примеру, анализ данных на Троицк ню-масс — это очень многослойная композиция, состоящая из считывания первичных данных в бинарном формате, обработке и группировке данных (там совсем не тривиальная процедура, могу ссылку на диссертацию Василия дать), потом применении кучи калибровок, которые надо получить из других данных и правильно отнормировать, потом построения модели, интегрирования и фитирования всего этого (могу ссылку на свою диссертацию дать). В общем черт ногу сломит (правда это один из самых сложных анализов в области). Достаточно сказать, что после получения данных на окончательную обработку как правило уходит несколько лет. Объемы данных у нас маленькие — масштаб десятки и сотни гигабайт в бинарнике, но обработку надо провести неисчислимое количество раз, подставляя разные параметры.
По визуализации как правило используют тот же Рут — он исходно создавался для построения гистограм. Но к счастью в последнее время начали переползать на питон. Мы на эксперименте используем в процессе сбора свою собственную систему на JFreeChart (с большим количеством настроек). Для статей использовали Origin, но сейчас переползли на Plotly.
С публикациями туго, поскольку у физиков не принято говорить о софте. Это такая магия, которая или работает или не работает. Сейчас ситуация начала меняться и физики хотя бы начали признавать факт того, что software matters, но очень медленно.
Если вопрос про котлин, то вот статья: medium.com/@altavir/plotly-kt-a-dynamic-approach-to-visualization-in-kotlin-38e4feaf61f7, а вот светлое будущее: kotlinlang.org/docs/reference/data-science-overview.html
Теперь про типы. Есть разные уровне проверки данных. Первый уровень проверки — это структуры — это у тебя есть, ты проверяешь, что к тебе прилетели твои Sequence, а не что-то левое. Следующий уровень — это проверка типов содержимого, если твоя задача берет таблицу, она должна проверить, что это таблица, а не число. Вот этого уже нет. И наконец, твои x и x+1 — это проверка состоятельности данных. Как правило это уже делается в момент выполнения, хотя в супер-типизированных языках вроде Хаскеля, можно частично перенести это на уровень типов.
Это точно. Но я сильно не уверен, что подобные системы можно всерьез делать на питоне. Минимальные штуки и прототипы — возможно.
Ярослав, хорошая работа, но давай я поизображаю из себя оппонента и укажу на проблемные места.
В том, что касается конкурентов, список явно не избыточен, и начать, разумеется, надо было с https://spark.apache.org/ или с его питоновской производной pyspark. Собственно, все системы такого рода должны сравниваться именно с ним. Есть еще несколько аналогичных систем, в том числе с байндингами на питоне. Ну и в порядке знакомства, мог бы сослаться на https://doi.org/10.1051/epjconf/201817705003.
Ключевая проблема, которая не решается pipeline процессорами, и твоя система тут не исключение — это валидация промежуточных состояний. Собственно проблемы нет, если нет кэширования промежуточных результатов, но если ее нет, то ленивость оказывается не очень полезной.
Еще одна проблема — это валидация типа данных в элементах "последовательности". Что будет, если кто-то забудет вписать промежуточный преобразующий элемент и данные окажутся невалидным для следующего действия? Вероятно у тебя все упадет в рантайме. Если дейсвтия перед этим достаточно дорогие, то это может быть сильно дорого. Я не уверен, что человеческую валидацию типов можно сделать в питоне без сильных костылей.
Третья проблема тоже с типами. Рано или поздно приходится работать с неоднородными данными, то есть когда у тебя есть не просто массив, а какая-то смесь данных с разными типами (например данные и калибровки). Как поступать с этим? Можно конечно подмешивать калибровки путем захватывания элементов из внешней программы, но тогда элементы последовательности получают явные сайд-эффекты (в идеале они должны быть чистыми или псевдо-чистыми, то есть иметь доступ только к ограниченному количеству внешних операций).
Есть еще куча вопросов, но пока остановимся на этом.