Задумка в принципе неплоха - ф-ции как первокласные объекты, множественное наследование (которое впрочем все равно правильно умеет использовать хорошо если один программист из ста), наличие исключений и все такое. Дьявол впрочем как обычно кроется в деталях
- Использование отступов как элемент синтаксиса. Не надо мне заливать про то, что это несерьезная предъява в наше тяжелое время окончательно победивших IDE. Я например большую часть времени провожу в
windbgfar, и там эта фича дико раздражает каждую минуту. В python 3 для усугубления проблемы еще и табуляция была предана анафеме. Так что программиста на питоне можно безошибочно распознать по стертым в пыль кнопкам del & space, бгг - С отказом от префикса типа переменной (как в perl - $,@,%) их типы приходится тупо запоминать. И снова здравствуй, проклятая венгерская нотация
- Клозуры ни разу не первокласные объекты. Например без ипользования nonlocal значение переменных во внешних ф-циях изменять нельзя ! По моему это уже не совсем клозуры. По крайней мере совершенно элементарные примеры из higher-order perl без мата, отладки и напильника не переносятся. Бедные студенты MIT, как же они теперь осилят курс SICP без антидепрессантов
- переход на python 3 по моему нескромному мнению не дал в плане удобства практически ничего - ну привели всякие внутренние методы к единообразному виду, range теперь ведет себя как xrange и все остальное - сущие мелочи. Зачем было полностью отказываться от обратной совместимости ? Полагаю исключительно в силу врожденной злобности автора
- С другой стороны вот за такое например
В Python 3, при одинаковой близости к двум кратным значениям, округление будет выполнено до ближайшего четного кратного (например, значение 0.5 будет округлено до 0.0, а значение 1.5 – до 2.0). Эта особенность представляет серьезную проблему переноса математических программ на Python 3.
в нормальном обществе принято молча бить канделябром - Исключения часто используются не по делу и даже встроенными ф-циями. Что хуже всего - нет никакого механизма узнать, какие именно исключения может выкинуть вызов ф-ции, так что написание долгоиграющих программ становится многословным и параноидальным занятием. Я не понимаю что мешало сделать аннотацию всех возможных типов исключений функции, как это сделано в java например
- в python 3 возможность перезапустить модуль с диска выпилена (ф-ции reload больше нету). Соотв-но невозможно писать всяких долгоживущих демонов, поведение которых должно время от времени меняться в полете
Резюме - не взлетит. Отъест некоторую долю у php например, но в силу врожденной злобности и нестабильности психики автора никаких серьезных вещей на питоне делать строго не рекомендуется
Python3 следует стандарту IEEE 754 http://en.wikipedia.org/wiki/IEEE_754-2008#Rounding_algorithms и по-умолчанию использует чередующееся округление для минимизации систематической погрешности при расчётах. Направленные округления также доступны:
ОтветитьУдалитьmath.ceil(0.5),math.ceil(1.5)
(1, 2)
math.floor(0.5),math.floor(1.5)
(0, 1)
round(0.5),round(1.5)
(0, 2)
скажите пожалуйста какие еще нормальные языки следуют этому явно оторванному от жизни стандарту ?
ОтветитьУдалитьвсе что на .Net например http://msdn.microsoft.com/en-us/library/75ks3aby.aspx
ОтветитьУдалитьпочему тогда в C/C++/Fortran описанного в python3 поведения не наблюдается ?
ОтветитьУдалитьну почему же: http://linux.die.net/man/3/rint
ОтветитьУдалитьпо-умолчанию ведёт себя как раз так
Тоже читаете "Python - полный справочник"? =)
ОтветитьУдалить"Я не понимаю что мешало сделать аннотацию всех возможных типов исключений функции, как это сделано в java например"
То есть речь идет о том, чтобы сделать исключения частью интерфейса. В связи с этим изменение интерфейса (например, добавление еще одного возможного исключения) становиться болезненным. В общем, вариант не без недостатков. Кажется, подробнее где-то у Фаулера было.
***
Лично мне в Python в первую очередь не нравится его вычурность, которая заключается в том, что каждый вызов метода или функции или даже обращения к атрибуту объекта является обращением к словарю. Практическая ценность от такого решения является для меня загадкой, а недостатки налицо: http://eax.me/python-benchmark/ (самопиар детектед)
> Тоже читаете "Python - полный справочник"?
ОтветитьУдалитьиспользую эпизодически именно как справочник
> сделать исключения частью интерфейса
я про это не говорил. вполне можно было бы снабдить каждую ф-цию атрибутом - списком типов бросаемых исключений