[Moscow.pm] Perl vs Python

Oleg Alistratov ali на ali.org.ua
Пн Окт 24 14:50:01 PDT 2016


Плюсую.

Я скажу, что меня жмет в питоне; одну из вещей, здесь ее еще не приводили в пример.

В питоне властвует explicit is better than implicit. Это не правда. В перле есть политика «разумного умолчания». И это круто.

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

Перл выполнит delete $hash{foo} и не крякнет. Питон упадет с KeyError. 

И то, и то, в общем-то, верно. В рамках парадигмы языка. Не хочешь, чтобы питон визжал — проверь существование ключа перед удалением.

Вот только в жизни это практически никогда не надо. Если бы меня действительно волновало, есть такой ключ или нет, я бы в перле это легко проверил. В питоне придется проверять каждый раз, или городить try-except, или (на самом деле) использовать неочевидный pop(). 

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

Конечно, проблема перла обратная — он молча переваривает то, что является ошибкой, и найти такие ошибки трудно. 

Но по сумме впечатлений — перл надежнее. Парадокс.


24.10.2016, 20:58, "Толян II" <agrishaev на gmail.com>:
> 24 октября 2016 г., 20:47 пользователь Alexander Q <qalexx на gmail.com> написал:
>> Типизация помогает рефакторить, генерировать тесты, отлаживать мышление, писать более качественный код, писать более быстрый код. Мешает типизация только писать фигню, которую в продакшн выпускать нельзя.
> Иногда, рабочая "фигня" лучше, чем непонятно как написанный "качественный" код.
>
> Чаще "рабочий" и "написанный" лучше "ненаписанный" и "качественный".
>
> А "непонятно как написанный" это вообще зло.
>
>> On Mon, Oct 24, 2016, 20:31 Ivan Petrov <i.petro.77.00 на gmail.com> wrote:
>>>> Ну претензия "нет strict режима который отслеживает необъявленные переменные"
>>>> звучит довольно странно для языка, в котором нет объявления переменных:-)
>>>
>>> отсутствие объявлений переменных - такая же бага в дизайне языка как и
>>> типизация этих самых переменных.
>>> типизация нормальна (вернее термима) для компилируемых языков, но
>>> типизация в скриптовых языках - зло в чистом виде
>>>
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
>>
>> --
>> Moscow.pm mailing list
>> moscow-pm на pm.org | http://moscow.pm.org
> ,--
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


-- 
Oleg Alistratov


Подробная информация о списке рассылки Moscow-pm