LINUX.ORG.RU
ФорумTalks

Чем плох Python?

 ,


4

4

Просьба к Python-хейтерам - вы можете адекватно и по пунктам сформулировать, чем он плох? Чем он хуже по сравнению с Perl, Ruby, Javascript, другими подобными языками?

Не являюсь питоно-хейтером, сам на нём даже не пишу, самое значительное из плохого — стандартная реализация очень медленная.

fernandos ★★★
()

Чем он хуже по сравнению с … Ruby

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

На Питоне это просто какое-то постоянное приключение «угадай, что!».

У меня похожие впечатления были только от php. Там тоже автор следовал пути сделать всё не как у всех.

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

Ну одно другому не мешает. Когда надо - пишем, когда бесит - хейтим.

wandrien ★★
()

Тоже не пишу, но язык пытались делать простой, что может выйти боком. Отступы как часть синтаксиса, например.

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

В Tiobe он посередине между руби и матлабом

Сомнительная жизнь.

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

Не являюсь питоно-хейтером, сам на нём даже не пишу, самое значительное из плохого — стандартная реализация очень медленная

https://habr.com/ru/post/481782/ — это мой обзор проблем питона касательно одной только производительности и поддерживаемости. То есть, даже без анализа всяких сахарков и «лямбды некрасивые». Причем, большинство из этих проблем нерешаемы без переписывания языка со стандартной библиотекой заново. Собственно, с развитием того же asyncio появилась необходимость половину стандартной либы переписывать.

Я уже оставил попытки даже размышлений о том, что можно было бы как-то обычный питон сделать лучше — нет, это невозможно, потому что получится абсолютно другой язык с другой библиотекой, а весь смысл пользования питоном заключается исключительно в билиотеках, стандартных и не только. Потому что в остальном язык — говно, и можно говорить о том, что вместе со своей стандартной либой по сложности он сравним с C++ и его стандартной либой. Легко и просто он выглядит только на хелло ворлдах, по мере роста сложности кода очень быстро выясняется, что фичи языка и библиотеки, как правило, логически слабо не связаны друг с другом и плохо комбинируются. То есть, библиотеку нельзя понять — ее можно только запомнить.

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

Да, в какой-то момент времени Гвидо и ко поняли, что такое положение никуда не годится, и придумали механизм PEP для стандартизации библиотеки. Но в итоге в последнее время PEP сводятся к бесконечному добавлению новых фич, не согласующихся со старыми.

В фундаменте этой проблемы лежит тот самый тезис, который я процитировал: у питона низкая скорость выполнения, и сделать с этим ничего не получается. Эта проблема была подперта одним специальным костылем. потом вторым, потом тысячным — и в итоге мы имеем целую стандартную библиотеку из сплошных костылей, которые на самом деле пытаются обойти единственную проблему — невозможность написать быстрый переиспользуемый алгоритм на самом питоне. 60% стандартной библиотеки написано на сишке именно по этой причине — это я считал без учета самого компилятора-интерпретатора.

byko3y ★★★★
()

Питон сносен для обучения и для мелкого софта.

Javascript

Питон медленнее и это не исправить.

И вообще, в 2к21 есть swift, kotlin, f#. Они лучше питона всем кроме, ситуационно, библиотек.

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

И вообще, в 2к21 есть swift, kotlin, f#. Они лучше питона всем кроме, ситуационно, библиотек

Как бы да, но как бы что в итоге на них можно написать и на чем это потом запускать? У F# адекватная поддержка только на винде (как и у других малопопулярных решений на базе дотнета), Swift и Kotlin имеют аналогичные проблемы с узостью поддерживаемых платформ. А если отрываться от готовых платформ и решений, то можно было бы и на лиспе писать.

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

Почитаю вашу статью, спасибо, что скажете про руру

Не помню, писал ли я в статье по поводу него, но PyPy — это единственная успешная попытка заставить питон работать быстрее, не переписывая язык заново. К сожалению, JIT-компиляция имеет свою цену, и однократно исполняющиеся строки кода на CPython работают быстрее, чем на PyPy.

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

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

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

Отвечая самому себе:

PyPy — это единственная успешная попытка заставить питон работать быстрее, не переписывая язык занов

Однако же, таки большинство проблем совместимости PyPy с CPython возникают из-за того, что кучу модулей из стандартной библиотеки пришлось переписывать с Си на RPython. RPython — это язык транслятора и части стандартной либы PyPy, введение которого необходимо для сквозной оптимизации, вроде вывода типов, инлайна, скаляризации векторов-контейнеров, и прочего. Это парадоксально, и в то же время иронично: язык Си является препятствием для оптимизации выполнения питоньего кода.

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

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

Эти самые «высокопроизводительные библиотеки», в большинстве своюм, и явялются бесполезными костылями, решающими проблемы производительности питона. Pandas, Numpy, а также все связанные с ними интерфейсы в других либах, вроде Tensorflow и Matplotlib — это бесполезные фичи, которые не делают ничего нового, чего нельзя было бы сделать простым питоном. Однако же, в простом питоне это работало бы настолько медленно, что стало бы никому не нужным. Ты просто не представляешь, насколько питон будет медленным, если из него выкинуть всю эту гору ускорений в виде стандартной библиотеки.

byko3y ★★★★
()

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

Но я не вижу у него только одно достоинство - легко писать расширения на С и как следствие большая библиотека.

Все остальное хуже чем у Perl и Javascript

Особенно Питон отстаёт от Typescript

Медленный, отсутствие статической типизации

grim ★★☆☆
()

Фичи сокращения кода на перле (всякие дефолтные переменные и проч.) приводят к тому, что на перле пишут скрипты write-only, которые человеку, не писавшему данный скрипт, нужно сначала расшифровать, тем более если он не знаком с перлом. На питоне обычно есть один способ реализации, он может показаться дуболомным и не крипто-изящным, но он обычно понятен с первого раза. Перл привлекает таких дурачков, которые, вычитав, как сократить исходник ещё на один символ, спешат побыстрее применить это знание в своем мега-скрипте. Но это выгодная стратегия, если ты какой-нибудь недоадмин или недокодер, который как паучок в заброшенном сортире, сидит на своем коде, как на паутине, и не хочет, чтобы ещё какой-то паучок-конкурент сходу разобрался в его перлах (какое удачное словесное совпадение!). Эдакий незаменимый для фирмы кадр.

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

На Питоне сложно писать однострочники. Особенно, с вложенными if-ами и for-ами. Особенно, чтобы было читаемо :)

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

С другой стороны, был какой-то древний пост на SO, в котором чел тестил производительность регулярок перл против питона, и перл уделывал питон чуть ли не в разы. Но может быть с тех пор питоновская реализация стала более эффективной.

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

Спасибо, тогда есть повод поставить калькулейт в виртуалку.

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

На Питоне сложно писать однострочники. Особенно, с вложенными if-ами и for-ами

Есть онлайн-сервисы для решения этой задачи:

http://www.onelinerizer.com/

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от seiken

С другой стороны, был какой-то древний пост на SO, в котором чел тестил производительность регулярок перл против питона, и перл уделывал питон чуть ли не в разы. Но может быть с тех пор питоновская реализация стала более эффективной

Ты забываешь, что регулярки — это в принципе нерасширяемое и несочетаемое говно. Ну типа для чего их можно применить? Чтобы распарсить HTML? Чтобы найти интересующие строки в терабайте логов с серверов? Чтобы распарсить дату в локальном формате?

byko3y ★★★★
()

Меня оттолкнуло отсутствие switch, хотя, говорят вроде, уже завезли.

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

Статическая типизация в языке - это самый жирный минус

Никогда не встречался с ситуацией, что коллега кинул аргументом твоей функции вместо строки криптообъект? Причем, оно еще и работало как-то в таком виде, но через раз. На масштабе 10к+ строк код очень быстро выходит из-под контроля.

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

Перевести, емнип, можно, но текущий pypy совместим больше с 3.6. А так как его удалили из репы, то было принято решение pypy перевести в testing обратно. В рассылке про это было. Пока не знают как с ним быть.

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от byko3y

Чтобы распарсить HTML?

Если человек малограмотный, то да, он может попытаться разобрать КС и сложнее грамматики при помощи конечного автомата без магазинной памяти. А так, да, в неструтурированном тексте искать простые последовательности.

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

Тоже не пишу, но язык пытались делать простой, что может выйти боком. Отступы как часть синтаксиса, например.

Вот интереснее всего, что обычно к синтаксически важным отступам в основном имеют претензии люди, которые на данном языке не пишут.

(Эти же люди часто в упор не видят ничего плохого в синтаксисе Makefile’ов.)

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

Выйти боком, если их не делать? Но зачем их не делать?

grem ★★★★★
()

Неправильно формулируешь вопрос.

Чем он хуже по сравнению с Perl, Ruby, Javascript

Ничем. Python во всём лучше перечисленного.

Тем не менее он отстой. Но тут опять же, нужно понимать, что хорош он или плох зависит от того как его использовать.

Основные проблемы: типизация, скорость, GIL. В какой-то мере это решается тайпхинтами, mypy, asyncio и async/await с убодным запуском нескольких инстансов приложений с помощью контейнеризации, либо ProcessPoolExecutor.

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

На Питоне это просто какое-то постоянное приключение «угадай, что!»

[не] консистентный

Угадываю уже на протяжении более чем 10 лет, и каждый раз успешно. Что я делаю не так?

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от x3al

Питон медленнее и это не исправить

Глупость феерическая. У JS вообще нет референса. А у питона помимо референса есть Cython, PyPy и Numba.

WitcherGeralt ★★
()

Меня он раздражает пакетными менеджерами. pip устаревший, pyenv оооооочень меееееееедленный и тупой. После npm смотрю на них, как на говно. Ну и скорость огорчает. А так, хороший язык для своих задач.

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

зато JS просто работает, без костылей и поедания кактуса

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

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

И да. Я терпеть ненавижу питон. Он совершенно нелогичен, стандартная библиотека выглядит набором рандомных функций. Как выше уже говорили, хуже только в php. Работа с модулями ужасна.

shell-script ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.