Здравствуйте, so5team, Вы писали:
S>Ты на питоне вызвал готовую функцию. Почему другой чел на C++ не смог взять готовую стороннюю реализацию -- это отдельный вопрос.
Хороший вопрос. Я взял встроенную функцию. Да и сторонние пакеты затянуть в питоне на порядки быстрее, чем это в C++. Я когда работал над модулем на Go, удивлялся, насколько там быстро подцеплять сторонние пакеты- еще проще, чем в питоне. Сравни это с C++, где такое ощущение, что специально, усложнения и грабли.
Здравствуйте, Артём, Вы писали:
Аё>Хороший вопрос. Я взял встроенную функцию. Да и сторонние пакеты затянуть в питоне на порядки быстрее, чем это в C++. Я когда работал над модулем на Go, удивлялся, насколько там быстро подцеплять сторонние пакеты- еще проще, чем в питоне. Сравни это с C++, где такое ощущение, что специально, усложнения и грабли.
Тут не так всё однозначно. Я сутки промучался, пытаясь запустить на Питоне один проект. Ставлю всё чин чином, pip install -r requirements.txt, все дела. Запускаю — где-то падает, что-то несовместимо. Ищу по issue на гитхабах, узнаю, что кто-то там что-то поменял в API, оно работало на Python 3.6, а для моего 3.9 уже такого нет. Правлю, запускаю — падает. Ищу, говорят, что надо обновить другой пакет теперь. Этот новый конфликтует с другими старыми. Удаляю старое, ставлю новое — теперь не работает уже то, что работало до этого. Я где-то ллазаю по гихабу, где-то поисходникам, исправляю. Теперь начало работает, падает в конце после получаса работы алгоритма. Опять ищу причину, опять какое-то API какого-то пакета (а их штук 30 в зависимостях). И так целый день, с утра до вечера, а потом ещё и утро следующего дня. Компиляции нет, совместимость API не проверить пока оно не упадёт где-то.
Может, у меня с лыжами проблема? Или реально в питоновском мире перенести проект с компилятора в пределах одной мажорной версии (3.х) такая большая проблема? Ну, сущее мучение разбираться со всей этой хренью. На С++ я не трачу столько времени на инфраструктурные проблемы. Переход между стандартами приносит минимальные сложности. Да и то эти сложности хорошо задокументированы и решение лежит тут же на cppreference. В жопу всю эту динамику с её библиотеками, на ней только формулы небольшие писать, а не программы.
Здравствуйте, Nuzhny, Вы писали:
N>Тут не так всё однозначно. Я сутки промучался, пытаясь запустить на Питоне один проект. Ставлю всё чин чином, pip install -r requirements.txt, все дела. Запускаю — где-то падает, что-то несовместимо. Ищу по issue на гитхабах, узнаю, что кто-то там что-то поменял в API, оно работало на Python 3.6, а для моего 3.9 уже такого нет. Правлю, запускаю — падает.
Проблема кривого пакета, запускай под питон 3.6. Деплоить в докер. Да, компилируемая среда тут лучше- Go lang как пример, просто супер, компилит в target одним ключиком, batteries included.
Здравствуйте, Артём, Вы писали:
Аё>Проблема кривого пакета, запускай под питон 3.6. Деплоить в докер. Да, компилируемая среда тут лучше- Go lang как пример, просто супер, компилит в target одним ключиком, batteries included.
Не, все пакеты нормальные. Но мало кто заботится о сохранении совместимости. А в условиях динамики я не могу без запуска приложения по всем веткам исполнения сразу понять, где и какой пакет это API поменял.
Докер тут — это просто костыль, который не решает проблему, а лишь оттягивает решение на неопределённый срок.
Здравствуйте, so5team, Вы писали:
S>Ты на питоне вызвал готовую функцию. Почему другой чел на C++ не смог взять готовую стороннюю реализацию -- это отдельный вопрос.
вот кстати -- одна из основных проблем плюсов, которая, похоже, так никогда и не будет решена
Здравствуйте, Nuzhny, Вы писали:
N>Не, все пакеты нормальные. Но мало кто заботится о сохранении совместимости.
Как это нормальные, если сломались?
N>Докер тут — это просто костыль,
Докер тут- главная причина твоей боли с поломанной совместимостью: народу просто стало не надо и лишь ты наступил на граблю.
Здравствуйте, Артём, Вы писали:
N>>Не, все пакеты нормальные. Но мало кто заботится о сохранении совместимости. Аё>Как это нормальные, если сломались?
Сломалась совместимость с ними в данном конкретном проекте, который писался на Питоне 3.6. И я не могу обнаружить все эти проблемы пока не пройду все ветки выполнения. В компилируемом языке мне бы о них сказал компилятор.
N>>Докер тут — это просто костыль, Аё>Докер тут- главная причина твоей боли с поломанной совместимостью: народу просто стало не надо и лишь ты наступил на граблю.
Я наступил на типичную граблю типичного языка с динамической типизацией. Докер тут не нужен и не поможет. На том же С++ я могу взять большой чужой проект, включить его исходники в свой, собрать, при необходимости подключить правильно собранные зависимости и компилятор мне найдёт ошибки, связанные с несовместимостью API и/или типов данных. В Питоне библиотек туева хуча, все они развиваются и никто совместимость их друг с другом не поддерживает. У меня в проект на С++ может собираться и правильно работать с 5-6 версиями OpenCV. Или с разными версиями ffmpeg — это не проблема. Посмотри на типичные питоновские проекты, где фиксируются версии десятка пакетов сразу и ни-ни: CUDA 11.1, TensorRT 7.5, TensorFlow 1.14 etc. Мне надо использовать одну функцию и что, заводить Докер с гигабайтом зависимостей? И сколько Докеров мне таких надо для небольшого проекта? Бред же
Здравствуйте, Nuzhny, Вы писали:
N>Сломалась совместимость с ними в данном конкретном проекте, который писался на Питоне 3.6. И я не могу обнаружить все эти проблемы пока не пройду все ветки выполнения. В компилируемом языке мне бы о них сказал компилятор.
Да, это так. Также верно и то, что компилятор бы тебе сказал, и ты бы мучался это скомпилить.
N>>>Докер тут — это просто костыль, Аё>>Докер тут- главная причина твоей боли с поломанной совместимостью: народу просто стало не надо и лишь ты наступил на граблю.
N>Я наступил на типичную граблю типичного языка с динамической типизацией. Докер тут не нужен и не поможет.
Слушай, ну что ты уперся? Докер для того и существует- слепить из того, что было, и забыть о совместимостях. Пакет работает только под 3.6? Ок, пишем, питон 3.6. Все.
N> Мне надо использовать одну функцию и что, заводить Докер с гигабайтом зависимостей? И сколько Докеров мне таких надо для небольшого проекта? Бред же
Не с той стороны смотришь. Микросервис завернул в докер и все. Да, поднять 50 микросервисов сразу- нужно от 64г рамы. Ну и что. Облака же.
Здравствуйте, Артём, Вы писали:
Аё>Да, это так. Также верно и то, что компилятор бы тебе сказал, и ты бы мучался это скомпилить.
Я бы мучался не долго и в известных местах.
Аё>Слушай, ну что ты уперся? Докер для того и существует- слепить из того, что было, и забыть о совместимостях. Пакет работает только под 3.6? Ок, пишем, питон 3.6. Все.
Нет, это хрень какая-то. У меня плюсовые проекты работают одинаково на серверах, на ноутах, в облаках и на Nvidia Jetson. И это один репозиторий, одни и те же исходники. Я не хочу и не буду разводить на Питоне хрень с десятком версий, считаю это неверным и непрофессиональным.
Аё>Не с той стороны смотришь. Микросервис завернул в докер и все. Да, поднять 50 микросервисов сразу- нужно от 64г рамы. Ну и что. Облака же.
Здравствуйте, Nuzhny, Вы писали:
Аё>>Да, это так. Также верно и то, что компилятор бы тебе сказал, и ты бы мучался это скомпилить.
N>Я бы мучался не долго и в известных местах.
В чужих исходниках? Но что тебе в питоне помешало тогда?
Просто я считаю неправильным делать правки в стороннем пакете. Это обычно приводит к тому же version lock- поправил, положил в свою репку, все, так и застрянет.
Аё>>Слушай, ну что ты уперся? Докер для того и существует- слепить из того, что было, и забыть о совместимостях. Пакет работает только под 3.6? Ок, пишем, питон 3.6. Все.
N>Нет, это хрень какая-то. У меня плюсовые проекты работают одинаково на серверах, на ноутах, в облаках и на Nvidia Jetson. И это один репозиторий, одни и те же исходники. Я не хочу и не буду разводить на Питоне хрень с десятком версий, считаю это неверным и непрофессиональным.
Ты путаешь теплое с мягким. Точно также при компиляции приходится лочить версию компилятора. Потому что при апгрейде компилятора, ненулевая вероятносиь что что-то отвалится.
Аё>>Не с той стороны смотришь. Микросервис завернул в докер и все. Да, поднять 50 микросервисов сразу- нужно от 64г рамы. Ну и что. Облака же.
N>Это мировоззрение мне не близко и непонятно.
Т.е. ты не пишешь распределенные масштабируемые под нагрузку приложения?
Здравствуйте, night beast, Вы писали:
S>>Ты на питоне вызвал готовую функцию. Почему другой чел на C++ не смог взять готовую стороннюю реализацию -- это отдельный вопрос.
NB>вот кстати -- одна из основных проблем плюсов, которая, похоже, так никогда и не будет решена
Поживем увидим.
Еще 6 лет назад проблему управления зависимостями каждый решал в меру своей распущенности. Сейчас уже есть vcpkg и conan, каждый со своими тараканами, но они есть и ими уже можно пользоваться. К чему-то же это должно привести в итоге.
Здравствуйте, so5team, Вы писали:
S>Еще 6 лет назад проблему управления зависимостями каждый решал в меру своей распущенности. Сейчас уже есть vcpkg и conan, каждый со своими тараканами, но они есть и ими уже можно пользоваться. К чему-то же это должно привести в итоге.
О конан докладывал его автор в ~2017г. Это как весь мир пересел на теслу, а C++ все пытается разродиться копейкой.
Здравствуйте, Артём, Вы писали:
Аё>В чужих исходниках? Но что тебе в питоне помешало тогда?
Да, конечно, исходники надо читать. В Питоне я не умею читать исходники: не знаю, где сломано — только в момент выполнения в одном из N проблемных мест. Далее, читаю я исходники и очень редко понимаю, что там за типы используются. Редко кто использует аннотации типов и это сложно читать, быстро устаю.
Аё>Просто я считаю неправильным делать правки в стороннем пакете. Это обычно приводит к тому же version lock- поправил, положил в свою репку, все, так и застрянет.
Ничего не застрянет. Я что-то форкаю и веду параллельно, что-то из правок авторы репозиториев принимают себе. Нет проблем.
Аё>Ты путаешь теплое с мягким. Точно также при компиляции приходится лочить версию компилятора. Потому что при апгрейде компилятора, ненулевая вероятносиь что что-то отвалится.
Не приходится в том смысле, как в том же Питоне. Выставляю в cmake С++17 и всё, проект нормально собирается компиляторами, поддерживающими эту опцию.
N>>Это мировоззрение мне не близко и непонятно. Аё>Т.е. ты не пишешь распределенные масштабируемые под нагрузку приложения?
Нет, я пишу приложения/библиотеки/сервисы, которые оптимизированы под конкретный инстанс. Зачастую они работают там, где масштабирование в принципе невозможно (на столбе на edge device или на сервере со строго определённым железом и строго определёнными требованиями). Что-то работает и в облаках, и в докерах, но этой частью я уже не занимаюсь.
Здравствуйте, so5team, Вы писали:
NB>>вот кстати -- одна из основных проблем плюсов, которая, похоже, так никогда и не будет решена
S>Поживем увидим.
S>Еще 6 лет назад проблему управления зависимостями каждый решал в меру своей распущенности. Сейчас уже есть vcpkg и conan, каждый со своими тараканами, но они есть и ими уже можно пользоваться. К чему-то же это должно привести в итоге.
а еще есть bazel.
и у всего этого нет поддержки со стороны разработчиков стандарта, которых это проблема не особо волнует.
к чему-то может и придет, но не уверен что к чему-то простому (см. например cmake)
Здравствуйте, Артём, Вы писали:
S>>Еще 6 лет назад проблему управления зависимостями каждый решал в меру своей распущенности. Сейчас уже есть vcpkg и conan, каждый со своими тараканами, но они есть и ими уже можно пользоваться. К чему-то же это должно привести в итоге.
Аё>О конан докладывал его автор в ~2017г.
Тёмчик, освежи арифметику на уровне первого класса. Шесть лет назад был 2016-й год. Тогда на ладан дышала предтеча conan-а, biicode.
Аё>Это как весь мир пересел на теслу
Здравствуйте, night beast, Вы писали:
NB>и у всего этого нет поддержки со стороны разработчиков стандарта, которых это проблема не особо волнует.
С одной стороны, разработчиков стандарта, временами, реальная жизнь вообще не волнует. Можно хотя бы вспомнить то, что стандарт C++98 появился в 1998-ом, а компиляторы, которые поддерживали его в более-менее полном объеме, только спустя 5-6 лет. Да и то, вроде как был всего один широко известный в очень узких кругах компилятор, который поддерживал C++98 в полном объеме. После чего еще можно и вспомнить ряд мертворожденных штук, которые вошли в C++98, а к C++20 были выпилены нафиг.
Кстати, тот же C++20. Принят, если не ошибаюсь, или в самом конце 2019-го или в начале 2020-го. Сейчас уже 2022-й, два года прошло. Как там с поддержкой C++20 в основных компиляторах? Кого это волнует, неужели комитет?
А комитет уже вроде как к feature freeze для C++23 готов.
Ну и у меня много незлых тихих слов по поводу того, как и куда C++ развивается в последние лет 5. Но не буду
Просто посмотрю, куда все это идет.
И да, еще на счет комитета. Вроде как еще во время работы над C++20 в комитете была создана рабочая группа по тулчейну для C++. Но я не верю в то, что эта группа даст какой-то результат. Скорее мы будем наблюдать за естественной эволюцией и борьбой vcpkg/conan/bazel/bukaroo/cpm и пр.
NB>к чему-то может и придет, но не уверен что к чему-то простому (см. например cmake)
К простому точно не приведет, мы же в C++, здесь просто не бывает. Ну вот вообще никогда
Здравствуйте, Nuzhny, Вы писали:
N>Не приходится в том смысле, как в том же Питоне. Выставляю в cmake С++17 и всё, проект нормально собирается компиляторами, поддерживающими эту опцию.
Похоже, питон так не может. Но никто не мешает установить параллельно старую версию питона. Гемор, не спорю.
N>Нет, я пишу приложения/библиотеки/сервисы, которые оптимизированы под конкретный инстанс
Т.е. пишешь монолит.
Здравствуйте, so5team, Вы писали:
S>И да, еще на счет комитета. Вроде как еще во время работы над C++20 в комитете была создана рабочая группа по тулчейну для C++. Но я не верю в то, что эта группа даст какой-то результат. Скорее мы будем наблюдать за естественной эволюцией и борьбой vcpkg/conan/bazel/bukaroo/cpm и пр.
NB>>к чему-то может и придет, но не уверен что к чему-то простому (см. например cmake)
S>К простому точно не приведет, мы же в C++, здесь просто не бывает. Ну вот вообще никогда
+1
потому в последнее время и посматриваю на раст.
но сейчас в основном работа на питоне идет, так что руки не доходят.