Comments 54
и не питон а библиотеки Numpy и Scypy и.т.п
и не хороши, а плохи по производительности по сравнению с тем же
Tensorflow для CPU не говоря уже о паралельном железе.
Для большинства людей, занимающихся наукой (даже теорией), необходим инструмент для каких-никаких расчетов, да чтоб еще графики рисовал. В моей области когда-то давно был такой монстр как IDL, но сейчас все поголовно пишут на Python.
При этом зачастую не используются никакие фичи языка кроме стандартных циклов/ветвлений, функций и многомерных (в лучшем случае) массивов. Всё.
Т.к. никто не хочет тратить время на «это ваше программирование», ни об ООП, ни об оптимизации, ни о чем либо еще люди даже не слышали. К исследованиям Python не побуждает, т.к. почти всё нужное среднестатистическому учёному можно найти в той или иной библиотеке.
Провал между средним «научным» программированием и средним «профильным» программированием настолько велик, что, измеряя его в годах задержки, эквивалентен лагу в хороших лет 30. Такие дела.
Всё вышенаписанное — личное мнение, основанное на личном опыте.
К исследованиям Python не побуждает, т.к. почти всё нужное среднестатистическому учёному можно найти в той или иной библиотеке.
Об этом и речь. Если бы человек хотел заниматься программированием — стал бы программистом, разве нет? А если инструмент прост в освоении и подходит для решения научных задач — в чём польза от времени, потраченного на изучение «профильного» программирования?
Ничего не имею против «программирования ради программирования», но у всего есть свои границы применимости.
Интересно было почитать про IDL, спасибо! А что у вас за область, если не секрет?
Специальность — астрофизика.
К исследованиям Python не побуждает, т.к. почти всё нужное среднестатистическому учёному можно найти в той или иной библиотеке.Хотя, в чем-то и отделяет, например, через возможность связать функции библиотеки с рядом публикаций, указанных в help.
dgamma is computed via the Poisson density, using code contributed by Catherine Loader (see dbinom).
pgamma uses an unpublished (and not otherwise documented) algorithm ‘mainly by Morten Welinder’.
qgamma is based on a C translation of
Best, D. J. and D. E. Roberts (1975). Algorithm AS91. Percentage points of the chi-squared distribution. Applied Statistics, 24, 385–388.
plus a final Newton step to improve the approximation.
rgamma for shape >= 1 uses
Ahrens, J. H. and Dieter, U. (1982). Generating gamma variates by a modified rejection technique. Communications of the ACM, 25, 47–54,
and for 0 < shape < 1 uses
Ahrens, J. H. and Dieter, U. (1974). Computer methods for sampling from gamma, beta, Poisson and binomial distributions. Computing, 12, 223–246.
Пример для функции регуляризованной обобщенной регрессии glmnet:
Author(s)
Jerome Friedman, Trevor Hastie, Noah Simon and Rob Tibshirani
Maintainer: Trevor Hastie hastie@stanford.edu
References
Friedman, J., Hastie, T. and Tibshirani, R. (2008) Regularization Paths for Generalized Linear Models via Coordinate Descent, web.stanford.edu/~hastie/Papers/glmnet.pdf
Journal of Statistical Software, Vol. 33(1), 1-22 Feb 2010
www.jstatsoft.org/v33/i01
Simon, N., Friedman, J., Hastie, T., Tibshirani, R. (2011) Regularization Paths for Cox's Proportional Hazards Model via Coordinate Descent, Journal of Statistical Software, Vol. 39(5) 1-13
www.jstatsoft.org/v39/i05
Tibshirani, Robert., Bien, J., Friedman, J.,Hastie, T.,Simon, N.,Taylor, J. and Tibshirani, Ryan. (2012) Strong Rules for Discarding Predictors in Lasso-type Problems, JRSSB vol 74,
statweb.stanford.edu/~tibs/ftp/strong.pdf
Stanford Statistics Technical Report
Glmnet Vignette web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
И, вдогонку к последнему примеру, обсуждение формулы для смешанной регуляризации на профильном ресурсе (обсуждение на уровне топовых представителей математической статистики): https://stats.stackexchange.com/questions/326427/why-does-glmnet-use-naive-elastic-net-from-the-zou-hastie-original-paper/327129#327129
Все это подстегивает определенный исследовательский интерес. Но, в целом, его подстегивает, в первую очередь, заказ на глубину объяснения используемых методов со стороны заказчика. Если его нет, то тут уж сам скорее себя драйвишь.
+ в карму R (его редко цитируют где-либо в рунете). Я тоже на R фигачу. Но сам этот факт не отделяет этот язык от Python в срезе
"Редко цитируют" не довод для ученого!
Я на Matlab работал с 1989 года с версии 2.0 до примерно 2005.
В течение 12 лет я не встречал ни одного человека, который бы тоже работал в Matlab, за исключением своего универовского друга, который меня и "подсадил", коллег, с которыми я сам поделился сей радостью, и своих студентов.
И с появлением ру интернета очень долго — годы! — никто про матлаб даже не упоминал. Так что ссылки в инете не есть "наше все".
Я только вношу маленький вклад в популяризацию.
Удачи! :)
Также были сложности с переносом в Py логики расчета доверительных интервалов для моделей (то, что в R вызывается в функции, в Py решается матричными операциями, что опять же накладывает ограничение на скорость разработки).
Не только скорость разработки, еще и делегирование ответственности влияет на выбор тулсов.
По степени доверия в вопросах статистики опенсорсный R, пожалуй, уже приближается к SAS.
Да, без проблем найти формулы для доверительных интервалов (и прочей статистической лабуды). И джуниор запрограммирует хоть на питоне, хоть на сях, хоть на фортране.
Вот, только, в серьезный продакшен лучше запускать статистику на надежных библиотеках, а не самописанную. Я так думаю.
По своему опыту научной работы могу сказать, что когда над задачей работает от одного до нескольких человек, он повторном использовании кода речи не идёт. Пишут как получится, используются минимальные возможности языка, о системах контроля версий большинство не знает. Да и в общем потоке информации которую необходимо изучать ( математика, физика) для программирования места почти нет. Может быть, если бы на первых курсах универа больше уделяли этому внимания, ситуация могла быть лучше.
Т.к. никто не хочет тратить время на «это ваше программирование», ни об ООП, ни об оптимизации [...]А зачем? ООП ради ООП, программирование ради программирования? Вы путаете программирование для автоматизации и программирование для вычислений.
Провал между средним «научным» программированием и средним «профильным» программированием настолько велик, что, измеряя его в годах задержки, эквивалентен лагу в хороших лет 30. Такие дела.
Когда мне нужно написать, к примеру, бекенд для веб-приложения, я проектирую архитектуру, пишу классы, использую фреймворки и всё такое.
Когда мне нужно проверить теорию, к примеру, time series forecasting с помощью Х, я беру python, открываю jupyter notebook, пишу модель, тестирую ее, визуализирую результаты, подвожу итоги. Если результат удачный, я перепишу получившийся алгоритм для продакшена, а этот код выкину. Если нет — я этот код опять-таки выкину. Какой смысл наводить красоту в, по сути, одноразовом коде?
Если результат удачный, я перепишу получившийся алгоритм для продакшена, а этот код выкину.Подскажите, а это на сколько трудозатратно. Я вот тоже смотрю в сторону ML, эксперементирую с Anaconda, skikit-learn. Хотел бы ввести некоторые модели и наработки в прод. Сам я также занимаюсь бэкэндом под .NET, архитектурой, БД и автоматизацией в общем. И вот задумался, как бы лучше ввести в продакшн некоторые алгоритмы из библиотеки skikit-learn…
Если же использовать что-то сложное, то лучшее, до чего я смог дойти — запихнуть модель в микросервис на питоне, залить в облако для маштабирования, и обращаться к нему по рест-апи с бекендов на других языках.
cc1 = aa1 + bb1;
c2 = cc1 * dg3
Если вы когда-нибудь работали с legacy-кодом, то представьте что здесь «legacy»-код зачастую пишется в реальном времени.
Понятное дело что ни у кого нет времени писать качественный код, когда нужно делать науку. Хотя вот сейчас пошла мода на требование исходников при публикации определенных типов работ. Может это поправит ситуацию.
--То же можно делать
Почти никогда нельзя.
Не видил ни одного учёного крупного вне математики (в меньшей степени) или информатики (в большей) который бы тратил силы на интеграцию с корбой, GraphQL или кафкой.
Для этого есть специально обученые аспиранты.
Все биндинги написаны теми же аспирантами или самими разработчиками библиотек. И даже не потому-что к питону биндинги писать проще, а потому-что он уже популярен и при наличии биндингов к питону библиотекой скорее станут пользоваться. Все преимущество в положительной обратной связи популярностей у разработчиков библиотек и конечных пользователей. В системах с такой связью велико влияние случайности и совсем не обязательно побеждает лучший.
Почему ruby не стал таким популярным?
Вкратце: буферный протокол, позволяющий эффективно работать с данными.
Потому что есть питон и R и этого достаточно? Кстати, как у Julia с параллельностью?
На параллельность они и давят, вроде бы.
Ну и инерция еще, хотя народ (буржуи) на него постепенно переходит.
Под многомерным массивом тут понимается непрерывный кусок памяти у которого «многомерность» появляется только на этапе индексации. Это дает всякие плюшки типа быстрых решейпов, быстрой индексации, лучшего обращения к кешу и так далее.
Нативно в java такого нет, есть в C#:
byte[ , , ] arr = new byte[2, 3, 8]
Комплексные и гиперкомплексные числа?
А как с памятью дело обстоит? Это будет отдельный кусок в памяти или указатели, на указатели на разбросанные по всей памяти ячейки?
Многие положения статьи показывают, что автор не имел счастья поработать с приличным коммерческим научным софтом, который существовал во все времена, но был не для всех.
Все, что в статье ставится в заслугу Питону, придумано и воплощено давно и другими авторами, как говаривал мой шеф.
Кроме тех преимуществ, которые дал Питону опенсорс, ничего выдающегося в нем для науки ИМХО нет. R люблю больше.
Питон использую вынужденно, если нужен доступ к библиотекам,, с которыми R не подружили.Например OpenCV
Всё вышеописанное конечно не относится к программистам, у которых программа это основной выходной результат — скорее к учёным или людям, программирование для которых является именно инструментом. Сейчас вижу, как у нас всё больше и больше людей разных возрастов (как минимум до 40-50) переходят на питон со всяких fortran, idl, perl и т.п.
Но почему библиотеки «для всего» появились именно в питоне, а не в каком-нибудь R, я что-то так и не понял.
Но почему библиотеки «для всего» появились именно в питоне, а не в каком-нибудь R, я что-то так и не понял.
Положительная обратная связь. Много пользователей — имеет смысл разработчикам делать биндинги своих библиотек, доступно много библиотек — у пользователей появляется стимул перейти в эту экосистему.
Но почему библиотеки «для всего» появились именно в питоне, а не в каком-нибудь R, я что-то так и не понял.
Что и где появилось впервые — вопрос спорный.
Вот здесь главный (но не единственный) репозиторий библиотек R.
Мой взгляд на этот вопрос — выбор во многом зависит кто и откуда приходит в то, что сейчас называют Data Science.
К R приходят те, чей путь тем или иным образом проходит через медико-биологические и кондово-статистические задачи. Т.е. из науки (исходно без программирования), но с кучей данных.
В Python-Sci приходят из программирования, когда открывают для себя науку.
Но эти часто бросаются в Python вместо (бездарного по их мнению) сидения в библиотеке и изучения наследия гигантов. Вот они погуглили, все поняли, а потом все, что они поняли, расскажут коротко и ясно в 3-х минутном ролике на Ютубе.
Утрирую, конечно…
За что и почему я люблю R я писал.
А, ещё очень удобная среда сначала появилась именно для питона — ipython notebook, это уже потом куда подключили всё что можно. И сейчас намного проще писать на питоне, изредка для очень узкоспециализированных вещей используя например R, чем наоборот.
А, ещё очень удобная среда сначала появилась именно для питона — ipython notebook
Идею нотбука на PC я впервые осязал в Mathcad V2.6.
Я с ним немного работал параллельно с Матлабом, но потом Матлаб победил.
А вообще я опасаюсь исторические изыскания молодых и ищущих как вот тут с Питоном. Что компьютер изобрел Бил Гейтся и Стив Джобс — это я уже слышал.
В общем, не против Питона я.
Не сотвори себе кумира — я вот о чем.
исторические изыскания молодых и ищущих
Не знаю насчёт комментаторов, но автора статьи едва ли можно назвать молодым. Он вообще являлся одним из разработчиков Numerical Python, так что, надо полагать, знает о чём говорит.
Сопутствующие bias — отдельная тема, но как попытка описать возможные причины объективно наблюдаемой популярности Python — почему бы и нет?
есть большая четвёрка универсальных программ, есть куча мелких полезных специализированных программ, есть недо-программы. Python (в части набора библиотек по анализу данных) видимо входит в третью группу.
Как универсальная платформа, библиотеки python не дотягивают ни до R, ни до SAS, ни до Matlab. Если человек не работал в статистических программах, то он вряд ли поймёт минусы python, у него нет какого-то сценария, что должен делать уважающий себя статпакет с пол пинка.
По скорости обработки данных тоже есть вопрос. Если pandas относительно молодой, перспективный, то почему он медленнее того же data.table в R?
Как говорил мой преподаватель, Python — это клей между большим количеством разнообразных готовых библиотек.
Почему Python так хорош в научных вычислениях