LINUX.ORG.RU

Зачем Python?

 , ,


5

5

Обычно, ЯП - это инструмент, заточенный для решения задач в какой-то определенной сфере. У создателей ЯП была для него ЦЕЛЬ, которая наполняла смыслом бытие ЯП. Или же ЯП оказался обладателем таких характеристик, которые позволили эффективно решать определенные задачи, даже если изначально на него были другие планы. Это также объясняет необходимость существования ЯП.

Что-то низкоуровневое - Си, Rust, Ada; сервер - PHP, Go (а где-то Java, JS); клиент - JavaScript; энтерпрайз - C#, Java; скрипты для CLI - bash, lua (хотя сойдут PHP или JS); математика - R, Fortran; мобильные приложения - Java, Kotlin, Swift; начальное обучение - Basic, Pascal (можно Lisp, но лучше не стоит). Всё ясно, понятно.

А какие специфические задачи решает Python? В чём его смысл? Вот в (https://youtu.be/KnFrdzG79ak?t=532) МФТИ на информатике говорят, что Python - это классная штука, так как на нём можно всё (и в web, и в смартфон), мол универсальный. Но, имхо, это скорее минус, чем плюс. Это как швейцарский нож - может многое, но всё не очень качественно. В (https://youtu.be/bX3jvD7XFPs) MIT'e перевели обучение с эльфийского (Scheme) на Python. Ну для педагогических целей, для первокурсников, может Python и выглядит лучше. Хотя как аргумент в его пользу - ну так себе.

Пока я вижу, что в реальном мире Python (объективно) нужен для двух задач:

1. Поддержка legacy-кода, уже написанного адептами Python'а. Например, какие-нибудь скрипты для иксов, скрипты для сис.админов и т.п.
2. ML. Просто потому, что под ML были написаны нужные библиотеки (в нужном кол-ве и кач-ве) именно на Python. По неизвестным причинам написаны.

Сфера для (эффективного) применения Python'а очень мала, или мне показалось?

При этом, повсеместно говорят о популярности Python, как это модно-молодежно, его мол и учите. Закрадываются подозрения. А не является ли широкая популярность (или слухи о ней) Python исключительно маркетинговым явлением, когда ЯП, опять же по неясным причинам, проталкивают сверху? Если это так, то для чего это делают? А если не так, и он объективно эффективно решает какие-то задачи (почему его добрые люди и советуют), то объясните какие это задачи, какова целевая сфера применения Python'а, каков его смысл, цель???

Ответ на: комментарий от pawnhearts

дубль-два, для работающих на скорости питона

и нет, сфера свитча шире

Ford_Focus ★★★★★ ()
Ответ на: комментарий от pawnhearts

Лучше уж преждевременная, чем предсмертная. Ибо чем оптимизировать, питон проще выбросить и переписать всё к чертям.

WitcherGeralt ★★ ()
Ответ на: комментарий от RazrFalcon

Я не отрицаю его тормознутость для вычислений, но это узкий круг задач, где ему не место. Я говорю что в вебе, например, все упирается в бд и кеши в любом случае.

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

pawnhearts ★★★★ ()
Ответ на: комментарий от WitcherGeralt

Эрланг

Очень нишевый.

руби

Ещё медленнее питона.

И почему ты не считаешь плюсы?

Потому, что я не наркоман. Даже для раста больше удобных фреймворков, чем для C++. Про сам язык я вообще молчу. Может ещё на сишке писать?

RazrFalcon ★★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 1)

Зачем Python?

Низачем.</thread>

Hertz ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

никто тормознутость питона не отрицал.

прямо утверждает, что это не проблема.

Ты не чувствуешь разницу?

Зы Гуглокапча — говно, макском — скотина.

anonymous ()
Ответ на: комментарий от pawnhearts

Я не отрицаю его тормознутость для вычислений

Ну если обмазаться расширениями на сишке - то ок. Ведь в том же вебе нужно парсить json. Не на питоне же парсер писать.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от pawnhearts

сам зацепился за рандомное название переменной, сам придумал конкретное приложение, но привёл я. ну ок ¯\_(ツ)_/¯

Ford_Focus ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

Для веба, например - да. Потому что веб это в 99% случаев прослойка между бд и nginx, которая дергается пока данных нет в кэше и еще иногда инвалидирует эти кеши. И иногда дергает либы, написанные на си. Переписывание это на языке, который быстрее считает число пи не даст «роста производительности в тысячи раз» как ты утверждаешь.

pawnhearts ★★★★ ()
Ответ на: комментарий от ugoday

Вот именно. Я не много требую - чашечку кофе и власть над всем миром. А то развели всякие PEP8 и прочее.....

Вот в Го правильно сделали, все без отступов. Хочешь свойство сделать публичным - начни его с Большой буквы. Никакой диктатуры...

dem ()
Ответ на: комментарий от anonymous

тогда это было модно и не понимали почем это плохо

С чего вы все взяли, что динамика это плохо? Напомню, язычки пыхоплеяды делались для задач скриптования и обучения, никто не закладывался на разработку сложных приложений на них. Динамическая типизация проще в реализации и использовании (до определенных пределов), а удобные системы типов тогда еще не были достаточно отточены, чтобы вот прям любой аспирант мог их запилить.

bread ()
Ответ на: комментарий от pawnhearts

Проблема питоне не только в производительности, но и в дин. типизации. Я бы побоялся писать сервер на таком языке.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Я уже давно не пытаюсь писать на чистом питоне. Надо просто брать батарейки на сях, заодно и гил становится не такой уже проблемой. Хотя конечно код выглядит гораздо хуже, чем если брать питоновые батарейки, но и хер бы с ним. Если чего-то не хватает, то горячий код просто на сях пишу сразу. Профит. Но собственно питон сам по себе очень редко узкое место в итоге, и гил не так и страшен (я конечно знаю насколько на сях быстрее получается, просто тормозит всегда не там где питон медленный).

anonymous ()
Ответ на: комментарий от pawnhearts

Правда, у меня везде type hints.

Последний раз когда я использовать mypy, он тупил на скрипте из 20 строк. Поэтому я ему не доверяю.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Теперь это пропихнули в стандарт, можешь не страдать. Ну и баги везде бывают, особенно в сырых не продакшен реди приблудах.

anonymous ()
Ответ на: комментарий от RazrFalcon

Пока что ничего лучше питона тупо нет

Это теперь есть TypeScript, Go, Rust. А из того что было - питон самый нормальный. А теперь это тупо легаси.

Херасе ты переобулся...

no-such-file ★★★★★ ()
Ответ на: комментарий от anonymous

Мы вообще о разных вещах говорим, забей.

эксплицитный yield?

Нет, но это решается через каналы. В целом одно и то же.

WitcherGeralt ★★ ()
Ответ на: комментарий от RazrFalcon

Если бы мне приходилось много писать на плюсах, то я бы 90% кода писал как на сишке, а из плюсов только стринги иногда юзал и дёргал либы, которые лишнего не навязывают. На голых сях писать тяжеловато, но плюсы это всё же слишком для меня. Но, в любом случае, не на питоне же писать, если производительность критична.

WitcherGeralt ★★ ()
Ответ на: комментарий от no-such-file

Первое предложение про скрипты, второе предложение про вебсервера.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

На сишке могут писать только наркоманы, ибо она даже хуже Go. Хотя казалось бы - куда уже хуже.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

Ну вон ниже пруфает же.

Что пруфает? Фраза «это не проблема» как бэ подразумевает согласие с «питон тормозит». Да тормозит, но всем пофиг.

anonymous ()
Ответ на: комментарий от pawnhearts

Смотря о чём речь. У меня на текущем месте (ещё 3 дня) RESTful API на петоне для информационной системы, тут вообще никаких кешей быть не может. И да, это не сама большая проблема (самая большая проблема — безголовый либреофис для рендеринга документов из шаблонов), но тоже очень заметная.

WitcherGeralt ★★ ()
Ответ на: комментарий от no-such-file

Не, не переобулся. Он всегда говорил, что питон только для скриптов.

WitcherGeralt ★★ ()
Ответ на: комментарий от Ford_Focus
>>> storage = {}                                                                

>>> def add(f): 
...     storage[f.__name__] = f 
...     return f                                                                

>>> @add 
... def foo(): 
...     print('foo')                                                            

>>> storage['foo']()                                                            
foo
tz4678 ()
Ответ на: комментарий от anonymous

Толи плейграунд тупит, толи я, но я не могу там время нормально замерить.

На ноутбучке с кабилейком как-то так (меньше лучше):

  • 144012486 — Map.
  • 72358670 — if-elif-else.
  • 37700902 — switch.

https://paste.ubuntu.com/p/cyTD2MbRCv/

WitcherGeralt ★★ ()
Ответ на: комментарий от Ford_Focus

производительность всё равно уже и так ниже плинтуса

За чтож вы PHP так не любите?

dem ()
Ответ на: комментарий от Ford_Focus

т.к. в питоне, в отличии от того же PHP, нельзя просто присвоить функцию переменной

Обана. Оказывается я лет 10 делаю то что нельзя...

dem ()
Ответ на: комментарий от RazrFalcon

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

Тут нужен немного другой алгоритм, например в C/C++ код можно сгенерить с помощью re2c

annulen ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

Стоп стоп. Где это НАТИВНЫЙ асинхрон и тасклеты?

dem ()
Ответ на: комментарий от WitcherGeralt

питон проще выбросить и переписать всё к чертям.

Давай. Или слабо? Спорю на 1000р, что твоя реализация будет совсем не быстрой и скорее всего уродской.

dem ()
Ответ на: комментарий от dem

В форте вестимо. В форте есть? Если в форте есть, то значит там.

anonymous ()
Ответ на: комментарий от anonymous

1) Приведи примеры.

2) И где ваш форт (хотя я сам его учил и очень уважаю всякие Eserv)

dem ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)