Комментарии 21
М-да, чего только люди не придумают, чтобы не писать на C/C++...
-М-да, чего только люди не придумают, что бы не писать на Assembler.....
-М-да. чего только люди не придумают, что бы не писать на машинных кодах....
Т.е вы считаете что кто не программирует на ассамблере тот не может считать себя крутым программистом?
Имхо, язык программирования всего лишь инструмент, для каждого задания\проблемы желательно использовать наиболее подходящий для этого инструмент, с другой стороны если мне нужно разбить орех - не вижу ничего зазорного разбить его камнем, или другим подручным предметом а не идти искать часик-другой - где же завалялся у меня орехокол.
Так же считаю нормальным что вместе с функциональностью чего-то важно и удобство\комфорт использования чего-то. Нас окружает куча вещей которые уменьшают свою функциональность во имя комфорта и легкости использования. И я не вижу в этом ничего плохого.
В ту же очередь вот вы называете пайтон самым популярным языком, и именно ИМХО эта популярность и пришла из-за его комфорта и легкости освоения. Теперь ученый, или специалист другой профессии может автоматизировать себе часть работы, + даже обработать данные не прибегая к помощи проф. программистов со стороны. И это на мое скромное мнение замечательно.
По поводу именно компилятора пайтон - весь цимес не в том что бы сделать его быстрее, выше, сильнее - а о переносе его в другое место. Вот например некая небольшая утилитка которую вы написали для своего удобства, и вам по какой-то причине хочется\нужно поделится с человеком который далек от этого всего но ему нужен в даный момент функционал этой утилитки. Вместо инструкции по установке - пайтон, потом пип, потом инсталирования нужных пакетов, можно просто завернуть это все в исполняемый файл и отправить ему. Разве это не круто? И почему-то часть программистов думает что это вот все отбирает их хлеб, что специалист не программист не имеет права ничего кодить для себя или для своей работы, такая своеобразная кастовая структура. И мне кажется что это не правильно.
Т.е вы считаете нормальным, когда программист очень удобно для себя лабает программу, которая работает с такой скоростью, что заказчику быстрее посчитать на калькулятореКак же в таком случае по Вашему используется Python в data science и machine learning (а он там, к сведению, один из основных инструментов!) которые на данный момент, пожалуй, самые ресурсоемкие сферы программирования?
А все очень просто — низкоуровневые библиотеки пишут на C++, а вот всю обвязку при их использовани на Python — получается и быстро и удобно.
Да вы прям мастер аппроксимации
А если серьёзно, то для каждой задачи и условий есть соответствующие инструменты. Писать сайты на 1С или ресурсо-эффективные алгоритмы на Python - бред. Натягивать сову на глобус - любимое занятие новичков во всех сферах человеческой деятельности...
И да, я не вижу ничего зазорного в том чтобы писать определённые участки кода на asm или даже в машинных кодах (загрузчики, непортабельные модули ядра и т.п.)
Python - отличный инструмент для прототипирования, user space и стартапов, но ему не место в нагруженных проектах на проде, ИМХО.
А вы читали мой следующий комментарий? \https://habr.com/ru/company/numdes/blog/581374/comments/#comment_23572348\ Позволю себе наглость процитировать самого-себя - "Имхо, язык программирования всего лишь инструмент, для каждого задания\проблемы желательно использовать наиболее подходящий для этого инструмент". Зачем вы мне пересказываете своими словами мой пост?
Так же из вашего ответа я так и не понял - почему таки компилятор Пайтона не должен существовать, ведь ,как я понял, именно так считает автор первоначального комментария. Как я выше и говорил на каждые потребности желательно использовать свой инструмент - с другой стороны есть неплохие вещи написанные на\по крайней мере часть проекта, на Пайтоне. \Если верить интернетам\
Например - Mount and blade - Все скрипты написаны на Python. Игра отлично работает на слабых машинах.
EVE Online Python использовался для создания игровой логики и управления серверной частью игры. Разработчики использовали улучшенную версию интерпретатора, которая называется stackless python. Так как это ММО, сервер может обрабатывать миллионы запросов, и stackless python отлично справляется с этим.
Civilization 4 - Разработчики не ограничились использованием Python для реализации каких-то частей проекта, они написали на нём практически всю игру.
Blender - Python используется для создания логики, импорта и экспорта, автоматического выполнения задач и работы инструментов.
AlphaStar – искусственный интеллект для Starcraft 2 написан на Пайтон.
Поисковик Гугл, Ютуб, Инстаграм, Фейсбук, Dropbox, Spotify, Netflix, Quora, Uber - так же содержат не маленькие части на Пайтоне - разве это не нагруженные проекты. Почему не писали эти части на более "быстрых" языках? Андроид вот тоже джава машину тащит а не использует нечто быстрее. Значит были наверное у них причины юзать Пайтон итд. Как я и говорил ранее кроме быстродействия так же важно и удобство, функциональность и еще куча всяких нюансов.
Еще раз повторюсь - не все проф программисты, и не все проф программисты пишут исключительно высоконагружаемые системы, статистикой не владею, но мне кажется совсем наоборот только небольшое количество прогеров пишут высоконагружаемые системы.
Комментарий не сразу увидел - только после полного обновления страницы.
Я ничего против Python не имею и активно использую в своих проектах. Просто на мой взгляд - если уж пришла пора оптимизировать скрипт, то лучше заново написать на стандартном компилируемом низкоуровневом языке, а не пытаться переписывать скрипт, чтобы соответствовать специфическим требованиям маловостребованного редкоиспользуемого компилятора, попутно изучая его потроха.
Коддинг на С++ отнимает много времени. Жизнь коротка, эффективнее использовать Питон
Даже не верится, что у Pyhtran ускорение по сравнению с обычным Python произошло в ~80 тысяч раз.
Год назад Pypy (да и думаю сейчас также) вываливался с ошибкой, если встречал модуль, написанный на С (в том числе numpy, несмотря на все обещания, что так не будет). Так что использовать его можно в ограниченном количестве проектов (например, все библиотеки ML написаны на С/С++).
Спасибо за замечание. Действительно у PyPy есть проблемы с некоторыми проектами, написанными на С/C++ (например, pytorch). Но numpy работает, если взять колесо, собранное под PyPy. Буду благодарен за примеры случаев, где не завелось.
На сколько я понимаю PyInstaller не является компилятором. Это просто упаковщик который запихивает интерпритатор и ваши пакеты в один файл, их легко можно потом достать, а ускорение достигается за счёт быстрого импорта, т.к. все данные уже в памяти. Если интересно подробнее разобраться в компиляции python то вот статья Как скомпилировать python
Когда начинал писать на Python, то тоже парился по поводу производительности. Но со временем понял, что надо научиться в коде отличать "обвязку" от высоконагруженных частей. Python надо использовать только как "клей", который соединяет высоконагруженные части, написанные на С/С++. Например, тяжелые алгоритмы ML написаны на С/С++, а весь остальной вызывающий код занимает сотые доли процента времени выпонения (и поэтому неважно насколько эффективно он выпоняется). Это очень похоже на работу с базой данных: "тяжелые" обращения к серверу будут определять скорость работы, а не клиентский код, формирующий эти запросы / отображающий результаты.
Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её заказчику. И в этот момент возникают вопросы, о которых многие даже не задумываются.
Например, зачем я выбрал интерпретируемый язык для программы, которую нужно компилировать?
использовать одну простую числодробилку, которая почти не используюет каких-то особенностей языка, для бенчмарков предельно глупая затея. но ещё глупее считать, что приведённый высер апроксимирует число пи.
я тоже как то пытался искать хороший инструмент для упаковки (или компиляции) кода Python.
как только начинаешь запускать инструмент на чем то настоящем (включая UI) начинаются сыпаться многочисленные проблемы.
с большим трудом pyinstaller (определенной версии, определенные версии пакетов) создает exe файл, который можно таки запустить.
но и даже это не всегда работает (например, а одном месте антивирус заблокировал запуск такого exe файла - тогда опять надо искать версию pyinstaller или пытаться апдейтить антивирус).
мой опыт говорит, что нет хорошо работающего решения.
но хотя бы спасибо pyinstaller, он наиболее близок в моих случаях.
Почему-то сравниваются вещи сделанные принципиально для разных задач.
PyInstaller и cx-Freeze просто упаковщики питоновского кода со всеми библиотеками в отдельный архив и приделывание к нему exe файла для быстрого запуска. На производительность кода никак не влияют
Cython и Nuitka уже переводять код на питоне в код на языке C.
Причем для Cython надо самому код писать, который по сути Си с синтаксисом Python. Nutika пытается кое-что делает по проще. После этих инструментов программы могут действительно работать гораздо быстрее. Они вообще не про распространение пакетов.
А если нужно распостранять питоновские проекты, то все же лучше делать все через setuptools. Создать setup.py сделать архив с помощью команды sdist и отдать закачику.
Проблем гораздо меньше, чем со всякими PyInstaller.
Правда ему придется самому еще Python установить, но он ставится нажатием на кнопочку Next 5 раз (или около того) :)
Компиляция Python