Pull to refresh

Comments 21

М-да, чего только люди не придумают, чтобы не писать на C/C++...

-М-да, чего только люди не придумают, что бы не писать на Assembler.....

-М-да. чего только люди не придумают, что бы не писать на машинных кодах....

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

Т.е вы считаете что кто не программирует на ассамблере тот не может считать себя крутым программистом?
Имхо, язык программирования всего лишь инструмент, для каждого задания\проблемы желательно использовать наиболее подходящий для этого инструмент, с другой стороны если мне нужно разбить орех - не вижу ничего зазорного разбить его камнем, или другим подручным предметом а не идти искать часик-другой - где же завалялся у меня орехокол.
Так же считаю нормальным что вместе с функциональностью чего-то важно и удобство\комфорт использования чего-то. Нас окружает куча вещей которые уменьшают свою функциональность во имя комфорта и легкости использования. И я не вижу в этом ничего плохого.
В ту же очередь вот вы называете пайтон самым популярным языком, и именно ИМХО эта популярность и пришла из-за его комфорта и легкости освоения. Теперь ученый, или специалист другой профессии может автоматизировать себе часть работы, + даже обработать данные не прибегая к помощи проф. программистов со стороны. И это на мое скромное мнение замечательно.
По поводу именно компилятора пайтон - весь цимес не в том что бы сделать его быстрее, выше, сильнее - а о переносе его в другое место. Вот например некая небольшая утилитка которую вы написали для своего удобства, и вам по какой-то причине хочется\нужно поделится с человеком который далек от этого всего но ему нужен в даный момент функционал этой утилитки. Вместо инструкции по установке - пайтон, потом пип, потом инсталирования нужных пакетов, можно просто завернуть это все в исполняемый файл и отправить ему. Разве это не круто? И почему-то часть программистов думает что это вот все отбирает их хлеб, что специалист не программист не имеет права ничего кодить для себя или для своей работы, такая своеобразная кастовая структура. И мне кажется что это не правильно.

Т.е вы считаете нормальным, когда программист очень удобно для себя лабает программу, которая работает с такой скоростью, что заказчику быстрее посчитать на калькуляторе
Как же в таком случае по Вашему используется Python в data science и machine learning (а он там, к сведению, один из основных инструментов!) которые на данный момент, пожалуй, самые ресурсоемкие сферы программирования?
А все очень просто — низкоуровневые библиотеки пишут на C++, а вот всю обвязку при их использовани на Python — получается и быстро и удобно.

Да вы прям мастер аппроксимации

https://sun9-40.userapi.com/impf/Raf2loXoer78Loc-BSLRKp2X3ZdJJ7oI91lzTA/scmVm-4BQi4.jpg?size=1590x400&quality=95&crop=81,29,1222,307&sign=e3e3638e87cc4d3136b9fe6372710788&type=cover_group

А если серьёзно, то для каждой задачи и условий есть соответствующие инструменты. Писать сайты на 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 не имею и активно использую в своих проектах. Просто на мой взгляд - если уж пришла пора оптимизировать скрипт, то лучше заново написать на стандартном компилируемом низкоуровневом языке, а не пытаться переписывать скрипт, чтобы соответствовать специфическим требованиям маловостребованного редкоиспользуемого компилятора, попутно изучая его потроха.

Коддинг на С++ отнимает много времени. Жизнь коротка, эффективнее использовать Питон

UFO just landed and posted this here

Графики должны быть кликабельны.

Даже не верится, что у Pyhtran ускорение по сравнению с обычным Python произошло в ~80 тысяч раз.

Год назад Pypy (да и думаю сейчас также) вываливался с ошибкой, если встречал модуль, написанный на С (в том числе numpy, несмотря на все обещания, что так не будет). Так что использовать его можно в ограниченном количестве проектов (например, все библиотеки ML написаны на С/С++).

Спасибо за замечание. Действительно у PyPy есть проблемы с некоторыми проектами, написанными на С/C++ (например, pytorch). Но numpy работает, если взять колесо, собранное под PyPy. Буду благодарен за примеры случаев, где не завелось.

На сколько я понимаю PyInstaller не является компилятором. Это просто упаковщик который запихивает интерпритатор и ваши пакеты в один файл, их легко можно потом достать, а ускорение достигается за счёт быстрого импорта, т.к. все данные уже в памяти. Если интересно подробнее разобраться в компиляции python то вот статья Как скомпилировать python

Когда начинал писать на Python, то тоже парился по поводу производительности. Но со временем понял, что надо научиться в коде отличать "обвязку" от высоконагруженных частей. Python надо использовать только как "клей", который соединяет высоконагруженные части, написанные на С/С++. Например, тяжелые алгоритмы ML написаны на С/С++, а весь остальной вызывающий код занимает сотые доли процента времени выпонения (и поэтому неважно насколько эффективно он выпоняется). Это очень похоже на работу с базой данных: "тяжелые" обращения к серверу будут определять скорость работы, а не клиентский код, формирующий эти запросы / отображающий результаты.

Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её  заказчику. И в этот момент возникают вопросы, о которых многие даже не задумываются.

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

На старте проекта TTM важнее производительности. С помощью описанных в статье компиляторов можем выжать максимум из Python перед переписыванием на C++.

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

я тоже как то пытался искать хороший инструмент для упаковки (или компиляции) кода 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 раз (или около того) :)

Sign up to leave a comment.