Форум сайта python.su
2 Ferroman:
распухание - в языке - введено много сахара там, где большой надобности в нем не было - все эти геттеры/сеттеры, оператор with, аннотации, операторы / и //, новая форма записи if/else, генераторные выражения и списочные включения.
итераторы, генераторы и метаклассы, - вещи, полезные, но, будучи внесенными в язык изменили характер самого языка.
две несовместимые ветки.
Отдельно частый релиз-цикл, когда предыдущие релизы до конца не ассимилированы.
Офлайн
balu
А я наивно считал все перечисленное - достоинствами 8-)
Отредактировано (Авг. 25, 2009 11:34:34)
Офлайн
Андрей Светлов- геттеры/сеттеры расчудесно работали с property, зачем объявлять по новому?
А я наивно считал все перечисленное - достоинствами 8-)
baluА за это я ничего плохого и не сказал. Разве что не совсем простые эти концепции. Но их полезность превышает затраты на них.
итераторы, генераторы и метаклассы
baluА что тут хорошего? Надо держать в голове фактически 2 разных языка - с 2-ки еще долго многие не слезут, а 3-ка еще мало интересна во многих областях.
две несовместимые ветки.
baluАга, очень неприятно, когда из-за этого у тебя что-то отваливается и приходится патчить. Зато имеем нового сахарку. Лично меня вполне устроил бы и релиз языка раз в 2 года - ИМХО самый оптимальный срок.
частый релиз-цикл
Отредактировано (Авг. 25, 2009 14:10:12)
Офлайн
baluproperty - частный случай дескриптора, который имеет гораздо более широкую функциональность. Реализаций дескрипторов может быть множество (я сам их делал как минимум несколько десятков раз).
- геттеры/сеттеры расчудесно работали с property, зачем объявлять по новому?
baluЭто не только try/finally (с информацией об исключении, которую можно достать и через sys.info - более неявно), но и переменная контекста. Context managers опять же обеспечивают лучшую инкапсуляцию, code reuse и прочие чудесные вещи. Являясь синтаксическим сахаром, конечно. И запись чуть короче. А еще это - некий общий протокол, которому стараются следовать. Это лучше, чем 5 лет назад: пытались делать context managers, но у каждой работы способ их использования был своим, чуть отличным от других.
- чем не угодил try/finally, что ввели with?
baluАннотируется не тип параметра или возвращаемого значения, а сам параметр “вообще”. Т.е. это как с дескрипторами: можно сделать на них property, а можно - нечто совсем другое.
- аннотации лично мне не травятся тем, что аннотируемое может не соответствовать реальным значениям параметров. Можно, конечно, создать и соответствующий декоратор, который будет проверять соответствие типов аннотируемому, но нет никакой гарантии, что его будут применять. Выглядит это, как костыль к объявлению типов.
baluМне читать - привычно. А то, что генераторное выражение является именно expression, а не statement - позволяет включать это где угодно. Упрощая запись. Впрочем, не нравиться - не ешь. Никто не заставляет.
- генераторные выражения и списочные включения лично меня подкупают только большей скоростью выполнения. Но парсить это глазами мне неудобно. Аналогично и с новой формой записи if/else, плюс Питон давно имел эту функциональность.
baluЕще есть как минимум
ИМХО, не было серьезной причины вносить это в язык. Лично я не вижу большого выигрыша на операциях примерно одной сложности. Хороший пример того, что внесли удачно - это декораторы.
baluМетаклассов должно быть мало, но порой без них сложно обойтись.baluА за это я ничего плохого и не сказал. Разве что не совсем простые эти концепции. Но их полезность превышает затраты на них.
итераторы, генераторы и метаклассы
baluВторой ветке массово жить еще полтора-два с половиной года. Потом утвердится тройка, и это меня радует. Помню, то же говорили сразу после выхода Python 2.0baluА что тут хорошего? Надо держать в голове фактически 2 разных языка - с 2-ки еще долго многие не слезут, а 3-ка еще мало интересна во многих областях.
две несовместимые ветки.
baluОтваливается редко и мало, все же. У меня никогда не было больших проблем с миргацией на новую минорную версию. py3k - другое дело, но этот шаг вынужденный. Иногда приходится убирать мусор за собой, и делать это довольно кардинально.baluАга, очень неприятно, когда из-за этого у тебя что-то отваливается и приходится патчить. Зато имеем нового сахарку. Лично меня вполне устроил бы и релиз языка раз в 2 года - ИМХО самый оптимальный срок.
частый релиз-цикл
Офлайн
Андрей СветловЯ прекрасно понимаю, что можно сделать значительно больше, чем просто аннотацию и последующую проверку типа. Мне гораздо больше не нравится, что на этой основе можно наделать несоответствия описываемого реальному. Тут вопрос больше к культуре и самодисциплине программистов, чем к конкретной фиче языка.
Аннотируется не тип параметра или возвращаемого значения, а сам параметр “вообще”
Андрей СветловС позиций двоичных кодов и асм тоже сахар. Плохо не то, что есть сахар. Плохо когда его больше, чем нужно. Все вышеперечисленное является немного улучшенной реализацией того, что уже есть и примерно того же уровня сложности. Мне, любителю минимализма, это не понравилось. Единственная польза, ИМХО, это направление на стандартизацию уже имеющихся решений. Примерно как с абстрактными классами - у многих было реализовано по разному, а теперь есть общая рекомендация.
С позиции асма любой ЯП - не более чем синтаксический сахар. Только иногда на глазах количество перерастает в качество.
Андрей СветловНо и менее функционально. Хотя записывать таки быстрее.
var = a if cond > 0 else b чуть понятней и менее глюкаво
Андрей СветловДумаю больше, увы. Например, у меня 5 из 5 ключевых библиотек на 2.Х, у знакомых тоже примерно та же ситуация. И перейти на 3-ку можно будет только когда они все заработают. Или найдутся адекватные замены. А за это время еще пара минорных версий языка сменится.
Второй ветке массово жить еще полтора-два с половиной года. Потом утвердится тройка, и это меня радует
Андрей СветловИ про плюсы так говорят… И в перле есть много способов сделать что-то. И потом, я ведь не в вакууме живу, приходится принимать то, что не нравится.
Впрочем, не нравиться - не ешь. Никто не заставляет.
Андрей СветловА у меня были - пришлось несколько дней потратить на переписывание после перевода кода на 2.6. Знакомые по той же причине на 2.4 держат часть своего production.
У меня никогда не было больших проблем с миргацией на новую минорную версию
Отредактировано (Авг. 26, 2009 10:20:43)
Офлайн
balu
Кажется, прозвучало ключевое слово - стандартизация имеющихся подходов. И это очень важно. Остальное - шелуха. Плюс каждый может иметь свое собственное мнение.
Вопрос о массовом переходе на тройку - интересен. Поглядим, как оно в жизни пойдет. Я оптимистично думаю, что все будет довольно быстро. Отчасти потому, что помню как это было уже один раз. И, в немалой степени, потому что мне очень нравятся новые изменения и очень хочется видеть их повсеместно - но это уже субъективное.
Офлайн
Андрей СветловМне тоже нравятся, хотя я очень боялся за lambda и reduce, которыми постоянно пользуюсь. В любом случае поживем - увидим. Хотя - прошел почти год, с выхода 3-ки, вышла 3.1, а во многих библиотеках нет никакого шевеления в сторону 3-ки. А жаль, особенно мне хочется Ordered Dictionaries.
И, в немалой степени, потому что мне очень нравятся новые изменения
Офлайн
Двойка тоже пошла “в люди” начиная со знаменитого релиза 2.2
Офлайн
Офлайн
Я новичёк в программировании, опыта мало, хочу купить книгу в бумажном издании, подскажите какую именно приобрести, чтобы не было воды, чтобы всё было понятно, полностью разжёванно так сказать ;)
Спасибо!
Офлайн