Прямая пропаганда Python.
- 10 февраля 2022, 17:01
- |
- 3Qu
Спрашивал многих — на чем вы моделируете и отрабатываете стратегии? Ответы — Луа, С #, Delphi, C++, Java, php и пр. Хорошие языки, спору нет. Но хороши они для релиза. И лишь немногие при моделировании стратегий работают с Python.
Чем хорош Python?.. Это простота изучения — с нуля можно начать за считанные дни. Это громадные библиотеки — математические, машинное обучения, преобразования, работа с векторами и сложной графикой. Это простота моделирования — слабать стратегию можно за вечер.
Да, когда придет время релиза, придется все это переписывать на другой язык, но библиотеки можно оставить из Python — они оч быстрые, написаны на С++. Интерфейсы ко многим языкам имеются.
Для проверки ваших рыночных гипотез и моделирования стратегий переходите на Python. Чем могу, помогу. Но не обучаю, для этого книги есть- ничего сложного. По книгам и среде посоветую, для начала.
PS. Так, для справки, если покопаетесь в инете, то увидите, что NASA уже почти все пишет и моделирует на Python, и уже потом критические участки кода переводит на С++.
количество глюков и ошибок в геометрической прогрессии
Python тема чё).
Но вообще не совсем корректно. Стратегии пишутся не на языке, а на язык-фреймворк-платформа[-библиотека]. На питоне без какой-то платформы, библиотеки для тестирования именно стратегий ну можно таблички векторно посчитать, распределения построить, графики всякие, но это не стратегии, а если стратегии, то простые, а если не простые то для каждой стратегии нужно заново делать одни и те же телодвижения.
Короче язык тут не единственное действующее лицо, вот что хотел сказать. Но питон приятен без сомнений).
Кстати, С++ был придуман именно для того, чтобы использовать ранее разработанные модули не вдаваясь в их внутреннюю структуру.
А, вообще, любую функцию хорошо применять имея представление о том, что она делает, но для этого не обязательно писать ее самому — есть библиотеки.
Я бы не назвал lua хорошим языком.
Имхо, R — большая помойка, в смысле библиотек. Возможно там и есть бриллианты, но найти их оч проблематично. Да, и R оч медленный в исполнении.
Ну, и сам язык — это что-то из древних языков.
Ну, у меня первые стратегии (2008 год) тоже на Excel-VBA были, и было достаточно.
Это сейчас секунды решают — прибыль/убыток.)
Они уже написаны в библиотеках, от scilearn до tensorflow.
Я для моделирования кучу сред перебрал, включая и R.
Был бы нормальный API, и костылять lua-прокладки бы не пришлось.
Я то сам за питон, но проблемы с зависимостями удручает… :( и чем дальше все заходит тем хуже..
Я был тоже такого мнения, но оказывается, что нет, много… довольно много людей им пользуется и считает его намного более гармоничным. Но я думаю он скоро умрет :)
Сидел на R, плевался, но пытался работать. Перешёл на Питон, и понял — это самое оно.)
3Qu, мне тоже. С чего начать вообще непричастному?
Но кроме того есть еще и разница в скорости работы, гигантская. между случаем. когда ты например в цикле функцию применяешь к каждому элементу итератора, или к массиву numpy сразу. целиком.
Математика. статистика — это библиотеки numpy, scipy, sympy.
Из sympy можно Си-код генерировать даже.
как конкретно работает — не разбирался
вот взгляните (если будет разборчиво):
возведение в квадрат чисел от 0 до 10000 — 2.7 миллисекунды просто в питоне.
и 15.6 микросекунды с помощью массива numpy
Обычно в примерах пишут что С раз в 30 быстрее питона.
А тут нампи в 150 раз быстрее питоньего кода.
Т.е. еще в 5 раз быстрее, чем тот же код на С.
при всех его недостатках, нравица мне он
Из Дубая как-то раз приезжает…
Код на пайтоне:
def F(n): return 1 if n == 0 else n — M(F(n-1))
def M(n): return 0 if n == 0 else n — F(M(n-1))
print ([ F(n) for n in range(20) ])
print ([ M(n) for n in range(20) ])
тоже самое на С++
#include <iostream>
#include <vector>
#include <iterator>
class Hofstadter
{
public:
static int F(int n) {
if ( n == 0 ) return 1;
return n — M(F(n-1));
}
static int M(int n) {
if ( n == 0 ) return 0;
return n — F(M(n-1));
}
};
using namespace std;
int main()
{
int i;
vector<int> ra, rb;
for(i=0; i < 20; i++) {
ra.push_back(Hofstadter::F(i));
rb.push_back(Hofstadter::M(i));
}
copy(ra.begin(), ra.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
copy(rb.begin(), rb.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
… DLang
Это я к тому, что с++ уж очень безобразен становится последнее время
Блин, Питона освоить не могу, вот реально, раза три пробовал. Он ваще нелогичный, тупой язык.
Короче, наплевать и забыть.)
Для внутренних проектов он хорошо подойдет, но распространять такую поделку конечным пользователям — самоубийство.
Я не понимаю, по моему любой софт все аналогично. Скажем, с с++ все тоже самое. Без либ соответствующей версий не пойдет, и надо либы включать в установщик, либо устанавливать отдельно.
В С++ я рантайм слинкую сразу, а все либы положу в папку программы. И больше никаких проблем и перекрестных зависимостей. Для этого есть redistributable пакеты у нормальных библиотек.
Не зря у Питона куча пакетных менеджеров понаписана — пип, поэтри, конда. Сделать один раз нормальное решение не позволяет идеология.
А обратная совместимость — это просто песня. У какоего еще языка программирования нарушается совместимость в минорных релизах?
Собственно, и распространять нам ничего не надо. И бог с ними, с недостатками. Недостатки есть у всего, вопрос лишь, критичны ли они для нашего конкретного применения.