LINUX.ORG.RU

Какой ЯП лучше для статистических расчетов?

 


1

3

Использую С++, но очень не удобно, что нет оператора yield. Использую вместо них лямбды для callback, что несколько утяжеляет читаемость кода. У меня их сотни, почти в каждой важной процедуре. В С++ есть какой-то не натив yield, там то же все переусложнено, и еще асинхронность хочет, что уже совсем не то.

На Питоне я еще не пробовал, но вроде он интерпретируемый, а не компилируемый, что не годится. Будет медлено. Или может есть нормально компилируемый? Питон, так же как R, они вроде больше под использование существующих в них библиотек, и не годятся, если хочешь свои тяжелые алгоритмы делать.

Вроде можно попробовать совмещать Python и С++, но пока не решился. Да и те же самые yield из С++ все равно в питон не отправлю.

И вот вопрос, какие могут быть варианты из компилируемых, что бы удобно было делать статистические расчеты на нем?

Нужны yield, нужны лямбды. Д.б. под линукс.

Для статистики же есть R?

R is a language and environment for statistical computing and graphics.

agentgoblin
()

статистические расчеты

Нужны yield

Подозреваю что Вы совсем не туда копаете.

нужны лямбды

Зачем? Красивый код - простой код.

bugfixer ★★★★★
()

для статистических расчетов

R

Питоне я еще не пробовал, но вроде он интерпретируемый, а не компилируемый, что не годится. Будет медлено.

Пишите векторные операции над массивами целиком, и будет быстро.

К этому правилу есть и другие контрпримеры, хотя во многих случаях этот стереотип верен.

Или может есть нормально компилируемый?

Смотрите cython, numba, JAX. Там есть JIT, который компилирует байткод Python в инструкции процессора или даже выполняет часть кода на GPU.

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

Во-первых, свои тяжёлые алгоритмы зачастую сводятся к набору матричных операций, которые эти языки делают быстро при помощи того же LAPACK. Во-вторых, да, всегда можно написать тяжёлую часть на C, C++, Fortran или даже Rust.

И вот вопрос, какие могут быть варианты из компилируемых, что бы удобно было делать статистические расчеты на нем?

Попробуйте ROOT для C++, но это по-прежнему C++.

Попробуйте Julia, там тоже JIT на LLVM, но начальный запуск рантайма будет медленный. Плюс, там до сих пор всплывают проблемы с корректностью.

Такого, чтобы и компилируемый, и для статистики, и yield, в природе нет, зато лямбды есть практически везде. На всякий случай, убедитесь, что это не XY problem.

AITap ★★★★★
()

C# - yield и лямбды из коробки, под Linux работает.

D - лямбды из коробки, yield делается через Fiber’ы (по сути, тоже из коробки), под Linux работает.

И тот и другой будет просто освоить, если ты до этого писал на плюсах.

runtime ★★★★
()
Ответ на: комментарий от AITap

Во-первых, свои тяжёлые алгоритмы зачастую сводятся к набору матричных операций, которые эти языки делают быстро при помощи того же LAPACK. Во-вторых, да, всегда можно написать тяжёлую часть на C, C++, Fortran или даже Rust.

У меня в основном множество рекурсий, работа с графами, классификация по произвольным условиям. С разными чистыми векторными или матричными операциями как раз не проблем, они уже давно упакованны в классы-черные-ящики, да и не много их.

victor79
() автор топика
Ответ на: комментарий от bugfixer

Нужны yield

Подозреваю что Вы совсем не туда копаете.

Копаю я в то, что заполонило у меня код. И вопрос не в том, что в плюсах это делается другими методами, а в том, что глядя на другие языки, в которых есть этот yield, я понимаю, что с ним у меня был бы код раза в два короче и существенно наглядней.

victor79
() автор топика

Вопрос лишён смысла. Для,вычислений полтзуются Fortan, C, C++, Python, Julia, R. Существенными вопросами являются: наличие библиотек, возможности распаралелливания вычислений, возможность вычислений в GPU. То есть, для выбора языка у людей есть разумные причины. Но вы первый, кому причиной кажется наличие или отсутствие yield . Решайте ваш вопрос, как вам нравится.

Partisan ★★★★★
()
Ответ на: комментарий от victor79

Не флейма ради а токмо развития кругозора для:

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

Могли бы вы привести пример, мол, в C++ вот такая портянка, а в C# (или в чем-то другом) были бы вот эти три строчки?

И попутно вопрос: а короутины из C++20 с их co_yield не в кассу оказываются?

eao197 ★★★★★
()

Все питоновские библиотеки для тяжёлых расчётов под капотом давно сканпелированы

zolden ★★★★★
()
Ответ на: комментарий от victor79

работа с графами, классификация по произвольным условиям

Как в R не знаю, но в питоне это уже освоено, всё что надо вынесено в библиотеки на C и т.п. С графами не работал, а вот с классификациями всё норм.

Shadow ★★★★★
()
Ответ на: комментарий от victor79

Как минимум в Python и R у вас бОльшая часть кода уже была спрятана в какой-нибудь библиотеке.

Shadow ★★★★★
()

Вроде можно попробовать совмещать Python и С++, но пока не решился. Да и те же самые yield из С++ все равно в питон не отправлю.

Cython/ctypes. Можно, сам так делаю. Единственный существенный минус - отсутствие нормальной ide, пишу в пичарме дебажу в вскоде.

А вообще обычно ты сначала пишешь алгоритм на там что проще (обычно питон и всякие sklearn), а уже когда все хорошо - начинаешь выправлять скорость. И поверь что в 90% случаев пистона хватает

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)

Я бы советовал сначала подумать над алгоритмом, может удастся написать на том, что знаешь хорошо.

dicos ★★
()

Проблемный код покажи =) Может быть «Неужны yield, неужны лямбды»

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от fluorite

octave

для именно статистики вроде как PSPP. Который в свой черёд породия на SPSS :-)

оба страшны как сон с похмелья, но у их аудитории свои представления о прекрасном.

MKuznetsov ★★★★★
()
Ответ на: комментарий от Shadow

SPSS стиль уже 15 лет же не в моде даже у социологов..

Голубой гигант продолжает клепать версии. Значит кому-то с очень широким карманом это нужно :-)

MKuznetsov ★★★★★
()

Perl с XS. Человеческий синтаксис, богатырская силёнка сишечки, девки, музыка, бухло и угар.

token_polyak ★★★★★
()
Ответ на: комментарий от token_polyak

Perl с XS. Человеческий синтаксис, богатырская силёнка сишечки, девки, музыка, бухло и угар.

Ты перечислил всё чего не будет с перлом?

upcFrost ★★★★★
()
Ответ на: комментарий от ovk48

Julia. Лучше петухона приблизительно всем.

Почитал в википедии, там хвалят. А почему, если он такой хороший, он менее популярный чем питон?

victor79
() автор топика
Ответ на: комментарий от victor79

Ни батареек, ни красивого супа, ни 100500 других библиотек, из-за чего не подходит для 90% аудитории питона.

Тем, кому от питона нужны были scipy и numpy, заходит на ура.

token_polyak ★★★★★
()

Если нужно именно считать статистику и именно анализировать её, не тратя времени на написание программ – тогда это R. Если надо что-то будет делать в виде приложения – Python. R – это очень-очень продвинутый калькулятор.

bookman900 ★★★★★
()
Ответ на: комментарий от MKuznetsov

Он делает это для тех, кто совсем-совсем не может написать и print(«Hello world»)

bookman900 ★★★★★
()
Ответ на: комментарий от bookman900

Ну всякие варианты продвинутые социологи давно использовали. Просто SPSS в России все ВУЗы окучил.

Shadow ★★★★★
()

Haskell уже пробовал?

Aswed ★★★★★
()

В Haskell есть лямбды их коробки. Yield там нет, но из-за ленивых вычислений обычные списковые операции по сути и есть yield. Множество библиотек есть. Компиляция в быстрый машинный код есть. Можно совмещать с твоим С++ через FFI. Статистические расчеты? Да он создан математиками для математиков. Ставишь пакет statistics и погнал.

Aswed ★★★★★
()
Ответ на: комментарий от token_polyak

Видел обсуждение, в котором авторов julia просят добавить возможность отладки-дебага, а авторы не понимают «зачем».

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от grem

Просто они не хотят, чтобы случилось как с JS. Кстати, почему в треде нет сумасшедшего, пишущего всё на JS, предлагающего на полном серьёзе использовать JS...

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

3 года назад они таки представили дебаггер. Даже расширение для vscode сделали.

А что было прохого в дебаггере? Вся отладка без него кучей print реализовывалась.

grem ★★★★★
()
Ответ на: комментарий от bookman900

R – это очень-очень продвинутый калькулятор.

Рисователь красивых графиков))

Но к слову на R можно и webgui написать.

einhander ★★★★★
()
Ответ на: комментарий от Aswed

Да он создан математиками для математиков

Только математики им не пользуются.

В общем, вопрос автора темы лишён смысла: ему нужны шашечки, а не ехать. То есть писать операторы, а не решать задачу.

Ключевое слово yield есть в нескольких языках, но имеет в них разный смысл. Похоже, автор освоил основы C#, но не знает, как вызвать из него нужные математические библиотеки, поэтому начал использовать C++, которого совсем не знает. Тут у него возник глупый вопрос: как обойтись без yield? Почесав репу, придумал другой глупый аопрос: на что заменить С++, чтобы был yield? Вопросы глупые так как автор делает обычную ошибку недоквалифицированного программиста: вместо изучения нового для себя языка (в данном примере С++) пытается обойтись уже имеющимися знаниями (C#). Это не приведёт к успеху - надо изучать каждый язык.

Partisan ★★★★★
()
Ответ на: комментарий от Partisan

Все еще считаю, что автору идеально подойдет Хаскель. Причем независимо от задачи, которую автор пытается решить :)

Aswed ★★★★★
()
Ответ на: комментарий от Partisan

Только математики им не пользуются

Ты просто общаешься с неправильными математиками. Математики из Глазго пользуются

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Все еще считаю, что автору идеально подойдет Хаскель. Причем независимо от задачи, которую автор пытается решить :)

Haskell это интересная вещь. Единственное, что от него отпугивает, что на хаха вакансий по нему очень мало. Поскольку если погружаться в этот существенно отличающийся язык, то это надолго.

victor79
() автор топика
Ответ на: комментарий от victor79

Haskell это интересная вещь. Единственное, что от него отпугивает, что на хаха вакансий по нему очень мало. Поскольку если погружаться в этот существенно отличающийся язык, то это надолго.

Когда немного втянешься, то будет глубоко похрен на мирок псевдовакнсий.

Oldboy
()
Ответ на: комментарий от Oldboy

Когда немного втянешься, то будет глубоко похрен на мирок псевдовакнсий.

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

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Ты совершенно прав. Просветление даёт такой плюс к карме, что деньги просто отпадают.

https://www.youtube.com/watch?v=ENo_B8CZNRQ

добавлю, как оно потом на тебя влияет - https://www.youtube.com/watch?v=VgA4wCaxp-Q

Oldboy
()
Последнее исправление: Oldboy (всего исправлений: 2)
Ответ на: комментарий от Aswed

А что мешает писать на нескольких языках?

Я уже столько языков сменил, и поверхностно, и подробненько, что при присматривании к новому, уже не тороплюсь плюхаться туда всей тушкой сразу. Сначала нужно принюхаться.

victor79
() автор топика
Ответ на: комментарий от Oldboy

Ты совершенно прав. Просветление даёт такой плюс к карме, что деньги просто отпадают.

Сами то вакансии оплачиваются хорошо, но их не много. И подозреваю, туда так просто не пустят, потому что кроме Haskell нужно будет знать еще прикладной предмет.

victor79
() автор топика
Ответ на: комментарий от victor79

Ну в твоей задаче не было: «хочу что бы еще и вакансии на ЯП были». Хочешь с вакансиями - бери питон и не выпендривайся. Для статистики там достаточно быстрых фреймворков. scipy там, numpy, pandas всякие

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Ну в твоей задаче не было: «хочу что бы еще и вакансии на ЯП были».

Это да, виноват. Вечно хочется что бы все и сразу и побольше. А получается как всегда.

victor79
() автор топика
Ответ на: комментарий от Shadow

Кстати, почему в треде нет сумасшедшего, пишущего всё на JS, предлагающего на полном серьёзе использовать JS…

А это что?

Какой ЯП лучше для статистических расчетов? (комментарий)

her_s_gory
()
Последнее исправление: her_s_gory (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.