Здравствуйте, scf, Вы писали:
scf>Здравствуйте, Shmj, Вы писали:
S>>Java и C# (тем более последний потихоньку портируют на кросс-платформу) — это намного более правильные языки.
scf>Любой серьезный программист обязан знать хотя бы два языка программирования — промышленный, для больших проектов, и скриптовый, для всего остального.
scf>Питон как скриптовый язык в настоящее время может соревноваться только с node.js: scf>- отсутствие фазы компиляции scf>- отсутствие статической типизации — можно писать кратко scf>- мнгновенный запуск и небольшое потребление ресурсов — очень актуально для скриптов по крону scf>- широкий набор библиотек для всего
Вот опять согласен, только зачем они монстроидальные веб апликации на нем пишут? Я теряюсь в догадках.
Хотя если ты (не вы конкретно) C++ разработчик под Linux, то джаву ты с трудом пойдешь копать. NET Core вот где старт попроще.
AS>Расскажи как достигнуть огромной скорости разработки? Я честно пытался, но скорость разработки на питоне как минимум на порядок меньше чем на тех же плюсах. AS>Начинать проект получается резво, а дальше всё начинает вязнуть в дичайшем количестве тесто-кода (рутины). Дойдя до середины проекта понимаешь, что скорость разработки настолько загрузла, что быстрее всё будет бросить и переписать на плюсах. Ибо тогда 99% кодо-тестов просто ненужно, потому что с++ статически типизирован. AS>Так до конца довести ни один проект на питоне не получилось — тупо жалко столько времени терять на ерунду. Проще сделать на нормальном языке.
Ну, при желании можно любую мысль испортить и что-то там сломать.
Нужно соблюдать равновесие между тестами и кодом. Потом взяв стат. анализатор и используя аннотации ты поймаешь 90% глупых ошибок.
AS>Полезного совета по этому поводу так никто и не дал. Совет — делать часть на плюсах, а остальное на питоне — тоже бредовый (либо от "теоретиков"). Потому что на привязку плюсов к питону тратится больше времени, чем дописать недостающие части на плюсах. Да и вообще деплой зоопарка очень неинтересное занятие.
Не доводить до абсурда и иметь регресиооные и интеграцуионные тесты, а не только юниты.
Нужные QA люди, если программа крупная.
AS>Итого я не вижу применения питону, кроме однострочников, микро-утилит и админства.
Я вообще не вижу смысла писать обработку данных на чём либо ином. Ибо это будет сплошным мучением и вилосипедописательством.
Здравствуйте, Danchik, Вы писали:
D>Хотя если ты (не вы конкретно) C++ разработчик под Linux, то джаву ты с трудом пойдешь копать. NET Core вот где старт попроще.
NET Core под Linux вызывает интерес только у NET девов с винды, которые не знают куда им деваться после того как MS сдала сервер. Линуховый плюсовик на нее даже смотреть сейчас не будет и если питончик ему не подойдет, возьмет конечно джаву или какую-нибудь скалу/котлин.
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>А в Питоне каждый тип, начиная с инта, надо превращать в Питоновские объекты с кучей ограничений. SVZ>Генераторы с этим справляются лишь частично — приходится писать для генератора кучу хинтов. Чтобы получить привычный АПИ надо сперва состряпать маршаллинг во что-то, что в принципе будет понятно Питону, а потом на Питоне написать врапперы, чтобы этим можно было пользоваться.
Здравствуйте, Pzz, Вы писали:
Pzz>Он умеет откладывать яйца. По-моему, это классно. Какой еще язык программирования умеет откладывать яйца.
С питонихой не путаешь?
Здравствуйте, novitk, Вы писали:
SVZ>>А в Питоне каждый тип, начиная с инта, надо превращать в Питоновские объекты с кучей ограничений. SVZ>>Генераторы с этим справляются лишь частично — приходится писать для генератора кучу хинтов. Чтобы получить привычный АПИ надо сперва состряпать маршаллинг во что-то, что в принципе будет понятно Питону, а потом на Питоне написать врапперы, чтобы этим можно было пользоваться.
N>Ты про ctypes или что-то другое?
Не, ctypes это когда надо дёрнуть одну функцию, желательно без параметров
Я про обертки, которые встраиваются в твою dll, дергают функции из Python.h и создают питоновские PyObject'ы.
SWIG худо-бедно справляется с этой задачей, но всё равно приходится ему помогать.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>Не, ctypes это когда надо дёрнуть одну функцию, желательно без параметров
Если у тебя C/API использовать надо как раз его. Есть автогенераторы, которые строят все по хедерам. Собственно это и есть аналог матлабовского FFI.
SVZ>Я про обертки, которые встраиваются в твою dll, дергают функции из Python.h и создают питоновские PyObject'ы. SVZ>SWIG худо-бедно справляется с этой задачей, но всё равно приходится ему помогать.
SWIG nиспользовать стоит только если C++/API. Про cython, boostpython и djinni слышал?
Здравствуйте, novitk, Вы писали:
SVZ>>Не, ctypes это когда надо дёрнуть одну функцию, желательно без параметров N>Если у тебя C/API использовать надо как раз его. Есть автогенераторы, которые строят все по хедерам. Собственно это и есть аналог матлабовского FFI.
Я так и не нашел автогенератора, работающего под виндой.
А вручную писать обертки для полторы сотни функций (а ведь потом их придется поддерживать) — проще удавиться.
SVZ>>Я про обертки, которые встраиваются в твою dll, дергают функции из Python.h и создают питоновские PyObject'ы. SVZ>>SWIG худо-бедно справляется с этой задачей, но всё равно приходится ему помогать. N>SWIG использовать стоит только если C++/API. Про cython, boostpython и djinni слышал?
СВИГ подходит в первую очередь для Си. В том числе умеет (не известно, насколько хорошо) генерить обёртки для С++.
boostbython — это закат солнца вручную. Нужно оборачивать каждую функцию. Помножаем на число функций и идём за верёвкой и мылом.
cython — это вообще диалект Питона. На мой взгляд, он тут не в кассу. Если пользователь им пользуется, то сможет сам написать обертки.
А что касается djinni, то о чем именно идет речь? "Hire developers with Djinni"?
Или "Djinni is a tool for generating cross-language type declarations and interface bindings. It's designed to connect C++ with either Java or Objective-C."?
Если второе, то они честно пишут: "Python support is available in an experimental version on the python branch".
Т.е. лет через несколько, если проект не загнется, его можно будет посмотреть.
Ну и опять же, чем оно лучше СВИГа?
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Stanislav V. Zudin, Вы писали:
SVZ>У него главная проблема, свойственная всем языкам без статической типизации — без подробной инструкции хрен догадаешься, что передавать в параметры. Об ошибке узнаешь только в рантайме.
А Вы читали про type annotations? Pycharm поддерживает, Консольная утилита (mypy) тоже имеется. Иногда, правда, точки зрения этих инструментов расходятся Да еще если разработчики библиотеки удосужились написать docstring'и, то в том же Pycharm'е их можно видеть в отдельном окне просто по установке курсора на класс/функцию.
Здравствуйте, Андрей Ушаков, Вы писали:
SVZ>>У него главная проблема, свойственная всем языкам без статической типизации — без подробной инструкции хрен догадаешься, что передавать в параметры. Об ошибке узнаешь только в рантайме.
АУ>А Вы читали про type annotations? Pycharm поддерживает, Консольная утилита (mypy) тоже имеется.
type annotations полезная штука, но поздновато появилась. А т.к. она необязательная, то проку от нее как от комментариев — хорошо, если применяется по назначению и горе, если забывают обновлять вместе с кодом.
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, novitk, Вы писали:
N>Здравствуйте, Danchik, Вы писали:
D>>Хотя если ты (не вы конкретно) C++ разработчик под Linux, то джаву ты с трудом пойдешь копать. NET Core вот где старт попроще.
N>NET Core под Linux вызывает интерес только у NET девов с винды, которые не знают куда им деваться после того как MS сдала сервер. Линуховый плюсовик на нее даже смотреть сейчас не будет и если питончик ему не подойдет, возьмет конечно джаву или какую-нибудь скалу/котлин.
Или для тех кто начинает работать с Azure.
От заядлого C++ сника и питониста последние 5 лет давиче услышал: «не все так страшно как казалось, сразу заработало и сильно поприятнее Java. И я могу писать в vime. Вместо трассировки меня компилятор потыкал носом в проблемы»
D>Вот опять согласен, только зачем они монстроидальные веб апликации на нем пишут? Я теряюсь в догадках.
Веб он весь такой, без привязки к языку.
Если ты про джанго и фласк, то там 80% всего на хтмл-е и ява-скрипте всё равно. Питон нужен только для связки с базой или/и другими системами.
Здравствуйте, Ватакуси, Вы писали:
D>>Вот опять согласен, только зачем они монстроидальные веб апликации на нем пишут? Я теряюсь в догадках. В>Веб он весь такой, без привязки к языку. В>Если ты про джанго и фласк, то там 80% всего на хтмл-е и ява-скрипте всё равно. Питон нужен только для связки с базой или/и другими системами.
О нет, в моем мире я видел ужас на питоне. И нет это не Javascript, это REST с бизнес логикой на питоне. База данных созданная Django, которая пару лет работала, а потом загибаться начала из-за говнозапросов. Что-то в базе менять — это ганять тесты и проходить ручное тестирование огромнейшего проекта. И они не зря боятся там что-то менять, так как бизнес логика завязана на Django ORM и все полетит к чертям. А как бы все просто было если бы они дотнетовские ORM использовали. Оно бы просто не скомпилилось.
Python 2.6, надо переводить на 3-й, работы куча. Потому что новые либы перестают поддерживать второй. Нужные библиотеки в зародышном состоянии, и иногда с паршивым перформансом.
Я не питонист, но вот насмотрелся. Я им делаю рабочий PoC на .NET за день, а потом они пару недель это имплиментят на питоне. Работает оно потом как правило не < 1сек, а 3-4сек. Да скорее всего уровень питонистов написавших сие не был высок, но такая боль рефакторинга говорит не в пользу подсудимого.
Здравствуйте, Danchik, Вы писали:
D>Или для тех кто начинает работать с Azure.
К Azure сервисам нет Java API?
D>От заядлого C++ сника и питониста последние 5 лет давиче услышал: «не все так страшно как казалось, сразу заработало и сильно поприятнее Java. И я могу писать в vime. Вместо трассировки меня компилятор потыкал носом в проблемы»
Ну не знаю. ИМХО у большинства линуксоидов все, что связано с MS, вызывает отторжение.
Java и С# пахнут для них примерно одинаково — просто и убого, как три копейки. Оставьте такое джамшутам! Настоящим красноглазым плюсовикам имеет смысл посмотреть на Скалу. Там есть любимые натив(и js!) сo стековой аллокацией, неявные преобразования, метапрограммирование, зависимые типу и прочий хаскель. Во время компиляции можно привычно пойти попить кофе.
D>>>Вот опять согласен, только зачем они монстроидальные веб апликации на нем пишут? Я теряюсь в догадках. В>>Веб он весь такой, без привязки к языку. В>>Если ты про джанго и фласк, то там 80% всего на хтмл-е и ява-скрипте всё равно. Питон нужен только для связки с базой или/и другими системами.
D>О нет, в моем мире я видел ужас на питоне. И нет это не Javascript, это REST с бизнес логикой на питоне. База данных созданная Django, которая пару лет работала, а потом загибаться начала из-за говнозапросов. Что-то в базе менять — это ганять тесты и проходить ручное тестирование огромнейшего проекта. И они не зря боятся там что-то менять, так как бизнес логика завязана на Django ORM и все полетит к чертям. А как бы все просто было если бы они дотнетовские ORM использовали. Оно бы просто не скомпилилось.
Ну, это как бы не так страшно. Если с умом сделано. Если конечно по како-нибудь руководству лабали, таки да, может быть плохо. Но это везде так.
D>Python 2.6, надо переводить на 3-й, работы куча. Потому что новые либы перестают поддерживать второй. Нужные библиотеки в зародышном состоянии, и иногда с паршивым перформансом.
Ну, такое старьё как бы в принципе только проблемы приносит. Если бы ты с 2-го нета (а то и с 1.1) переходил на последний, у тебя бы тоже не сладкая жизнь была бы.
D>Я не питонист, но вот насмотрелся. Я им делаю рабочий PoC на .NET за день, а потом они пару недель это имплиментят на питоне. Работает оно потом как правило не < 1сек, а 3-4сек. Да скорее всего уровень питонистов написавших сие не был высок, но такая боль рефакторинга говорит не в пользу подсудимого.
Ну, это как бы звучит несколько страннова-то. В 100% строго наооборот бывает.
Если конечно ты не про UI говоришь.
Здравствуйте, Ватакуси, Вы писали:
D>>>>Вот опять согласен, только зачем они монстроидальные веб апликации на нем пишут? Я теряюсь в догадках. В>>>Веб он весь такой, без привязки к языку. В>>>Если ты про джанго и фласк, то там 80% всего на хтмл-е и ява-скрипте всё равно. Питон нужен только для связки с базой или/и другими системами.
D>>Я не питонист, но вот насмотрелся. Я им делаю рабочий PoC на .NET за день, а потом они пару недель это имплиментят на питоне. Работает оно потом как правило не < 1сек, а 3-4сек. Да скорее всего уровень питонистов написавших сие не был высок, но такая боль рефакторинга говорит не в пользу подсудимого.
В>Ну, это как бы звучит несколько страннова-то. В 100% строго наооборот бывает. В>Если конечно ты не про UI говоришь.
Я не упоминал UI тут. Ну вот честно, как может питон соревноваться с .NET в скорости вычитки из базы данных? Никак, и джава пасет задних с тем же успехом. Ни у одно ни у другого нет компиляции кода налету, что дает возможность сделать максимально эффективный маппер.
В>>Ну, это как бы звучит несколько страннова-то. В 100% строго наооборот бывает. В>>Если конечно ты не про UI говоришь.
D>Я не упоминал UI тут. Ну вот честно, как может питон соревноваться с .NET в скорости вычитки из базы данных? Никак, и джава пасет задних с тем же успехом. Ни у одно ни у другого нет компиляции кода налету, что дает возможность сделать максимально эффективный маппер.
Я так понял, ты писал про скорость разработки. Причём тут компиляция?
Питон из того же Постгреса читает через драйвер, конечно же.
Который на ц++ или просто ц написан.
Здравствуйте, Ватакуси, Вы писали:
В>>>Ну, это как бы звучит несколько страннова-то. В 100% строго наооборот бывает. В>>>Если конечно ты не про UI говоришь.
D>>Я не упоминал UI тут. Ну вот честно, как может питон соревноваться с .NET в скорости вычитки из базы данных? Никак, и джава пасет задних с тем же успехом. Ни у одно ни у другого нет компиляции кода налету, что дает возможность сделать максимально эффективный маппер.
В>Я так понял, ты писал про скорость разработки. Причём тут компиляция? В>Питон из того же Постгреса читает через драйвер, конечно же. В>Который на ц++ или просто ц написан.
И про скорость разрабоки и исполнения. Ну что вы в самом деле. К черту что там внутрях написано на cpp. Я вам говорю что .NET рантайм дает возможность налету, во ВРЕМЯ ИСПОЛНЕНИЯ, создавать код который подхватывается Jit, который это преобразует в машинные кода и аккуратненько вкладывает данные в обьекты без потерь, как будто бы вы руками это писали на cpp, и даже иногда быстрее. Это на тысячах записей дает ощутимый прирост в скорости. На питоне у вас еще прослойка транслятора, динамический маппинг. На джаве это рефлекшин, со всеми вытекающими тормозами.
Давайте я вам схематисески обьясню что там происходит в ручном варианте
while (reader.Read())
{
list.Add(
new SomeEtity
{
SomeId = reader.GetInt(0),
SomeNullableId = reader.IsNull(1) ? null : reader.GetInt(1),
SomeStr = reader.IsNull(2) ? null : reader.GetString(2)
/// и так далее
}
}
И вот весь код начиная с new SomeEntity генерится налету и аккуратно превращается в машинные кода.
В языках типа питон, джава и других это дело надо исполнять динамически на кажный обьект со всеми накладными расходами.
D>И про скорость разрабоки и исполнения. Ну что вы в самом деле. К черту что там внутрях написано на cpp. Я вам говорю что .NET рантайм дает возможность налету, во ВРЕМЯ ИСПОЛНЕНИЯ, создавать код который подхватывается Jit, который это преобразует в машинные кода и аккуратненько вкладывает данные в обьекты без потерь, как будто бы вы руками это писали на cpp, и даже иногда быстрее. Это на тысячах записей дает ощутимый прирост в скорости. На питоне у вас еще прослойка транслятора, динамический маппинг. На джаве это рефлекшин, со всеми вытекающими тормозами.
Тема скорости разработки на C# не раскрыта. Ты первый кто заявил о превосходящих возможностях C#
D>Давайте я вам схематисески обьясню что там происходит в ручном варианте
D>
D>while (reader.Read())
D>{
D> list.Add(
D> new SomeEtity
D> {
D> SomeId = reader.GetInt(0),
D> SomeNullableId = reader.IsNull(1) ? null : reader.GetInt(1),
D> SomeStr = reader.IsNull(2) ? null : reader.GetString(2)
D> /// и так далее
D> }
D>}
D>
D>И вот весь код начиная с new SomeEntity генерится налету и аккуратно превращается в машинные кода. D>В языках типа питон, джава и других это дело надо исполнять динамически на кажный обьект со всеми накладными расходами.
В курсе про PyPy, Cython? Питоны они разные бывают.
Во-вторых, далеко не всегда нужно перегонять в объекты. В последнее время вообще не нужно. Сразу из бызы в json и на клиента.
Здравствуйте, Ватакуси, Вы писали:
D>>И про скорость разрабоки и исполнения. Ну что вы в самом деле. К черту что там внутрях написано на cpp. Я вам говорю что .NET рантайм дает возможность налету, во ВРЕМЯ ИСПОЛНЕНИЯ, создавать код который подхватывается Jit, который это преобразует в машинные кода и аккуратненько вкладывает данные в обьекты без потерь, как будто бы вы руками это писали на cpp, и даже иногда быстрее. Это на тысячах записей дает ощутимый прирост в скорости. На питоне у вас еще прослойка транслятора, динамический маппинг. На джаве это рефлекшин, со всеми вытекающими тормозами. В>Тема скорости разработки на C# не раскрыта. Ты первый кто заявил о превосходящих возможностях C#
Да C# с его библиотеками и нововведениями языка дает мне быструю скорость разработки. Если не прыгать по антипаттернам, то все также как на питонируемом движке.
D>>Давайте я вам схематисески обьясню что там происходит в ручном варианте
В>В курсе про PyPy, Cython? Питоны они разные бывают. В>Во-вторых, далеко не всегда нужно перегонять в объекты. В последнее время вообще не нужно. Сразу из бызы в json и на клиента.
Да, это мощно, загрузить базу сериализацией в придачу с увеличением траффика. Когда можно наставить кучу серверов которые будут это дело сами делать разгрузив RDBMS от рутины.
И что эти ваши версии питона генерят машинные кода под маппинг в рантайме? Хотелось бы увидеть пруфы.
И что это за дело: пишем, пишем, тупит — надо на CPython переходить, со всемы вытекающими нюансами (мои предположения как не питониста).