[recovery mode] Что мне не нравится в Python

habr.png

Привет, Хабр!

Я подумал о том чего мне не хватает в Python, и что мне не нравится.

Дисклеймер: это мое субъективное мнение, оно может не совпадать с Вашим.

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

1. Отсутствие const


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

Конечно, Вы можете называть переменные большими буквами и считать их константами (не изменять их).

Но проблема в том, что это не прописано в PEP8. Т.е если Вы присвоите значение переменной CONSTANT, Ваша IDE никогда не скажет Вам, что Вы делаете что-то не так.

2. Медленная производительность


Здесь я имею в виду производительность именно кода на Питоне. Если питоновский скрипт использует для тяжелых вычислений библиотеку на Си, то все становится гораздо быстрее.
Вся стандартная библиотека по максимуму написана на Питоне, не на Си.

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

3. Отсутствие switch


Когда я спрашивал знакомых питонистов, что им не хватает в языке многие сказали, что конструкции switch как в Си подобных языках.

как мог бы выглядеть switch в Python
switch a:
case 1:
i=2;
break
case 2:
i=3;
break
default:
i=4


Пример, понятное дело выдуманный, но согласитесь, что это приятнее чем
if/elif/else, особенно когда условий, которые нужно проверить множество.


4. Обратная совместимость не гарантируется


Основная боль это, конечно, отличия между 2 и 3 версией.

Конечно, можно без особых проблем переписать скрипт со 2 версии на 3, благо есть официальное руководство.

Но согласитесь, неприятно, что для работы всех программ на Питоне нужно иметь 2 интерпретатора: 2 версии и 3. По-прежнему число проектов на 2 версии велико.

Кстати, в 4 версии Python обратную совместимость вроде как опять сломают (PEP401)

кратко о PEP 401
Все очень просто.
Оператор != заменяют на
Вместо того чтобы писать 1!=1 мы будем писать 11

Опробовать новый оператор можно уже сейчас:

from __future__ import barry_as_FLUFL
print(barry_as_FLUFL) #_Feature((3, 1, 0, 'alpha', 2), (4, 0, 0, 'alpha', 0), 262144)
1!=1 #выбросит SyntaxError



На этом все.

А что Вы хотели бы видеть в Питоне и чего Вам не хватает?

Пишите Ваше мнение в комментариях.

© Habrahabr.ru