Python 2.5.1 (r251, Sep 29 2007, 13:32:49)
[GCC 4.2.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> len("абвгд")
10
Python 3.0a2 (r30a2:59382, Jan 23 2008, 13:30:56)
[GCC 4.2.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> len("абвгд")
5
Python 2.5.1 (r251, Sep 29 2007, 13:32:49)
[GCC 4.2.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> len("абвгд")
10
Python 3.0a2 (r30a2:59382, Jan 23 2008, 13:30:56)
[GCC 4.2.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> len("абвгд")
5
То, что тотальная динамическая природа языка - это зло, всем понятно? Тогда по мелочам: отсуствие public/private, дурацкая манера создавать поля при присваивании. Еще сильно хотелось бы pattern matching.
Мне не нравится отсутствие статической типизации и компиляции - если бы они были, многие ошибки определялись бы ещё при компиляции. И ещё скорость работы. А так вполне ничего.
Ога, сегодня ты хочешь паттерн-матчинг, завтра захочешь интерфейсы, послезавтра - встроенные регекспы и корованы искаропки. Руки прочь от Питона, лучше иди рубистам давай советы, один чёрт ихнему недоязычку скоро помирать.
> Имелась в виду, естественно, статическая типихация.
в лиспе, допустим, её тоже нету, он это же не мешает лиспу =)
посему я бы не сказал, что динамическая типизая - недостаток. иногда это даже преимущество. =)
> Мне не нравится отсутствие статической типизации и компиляции - если бы они были, многие ошибки определялись бы ещё при компиляции. И ещё скорость работы. А так вполне ничего.
Ога. Здраствуйте. Я, Михаил. Хотел бы чтобы вы сделали язык, программирования суть такова… Программист может использовать динамическую типизацию, компиляцию и скорость работы. И если программист пользуется компиляцией, то типизация статическая, машинные коды набигают библиотеки и сегфолты. Можно грабить корованы...
> бы не сказал, что динамическая типизая - недостаток. иногда это даже преимущество. =)
Я сказал "_тотальная_ динамическая типизация". Плохо именно то, что от нее невозможно отказаться, нет никакой статической проверки, и тривиальные ошибки живут до момента, когда на них натыкается исполнение.
> Плохо именно то, что от нее невозможно отказаться, нет никакой статической проверки, и тривиальные ошибки живут до момента, когда на них натыкается исполнение.
По словам очевидцев хорошее покрытие юнит-тестами спасает.
> По словам очевидцев хорошее покрытие юнит-тестами спасает.
Писать юнит-тесты для того, чтобы отловить ошибки типизации и банальные описки - это трата времени. Кроме того, 100% покрытие тестами достигается редко, и даже оно может не спасти.
сори, не заметил, что вы написали pattern matching в предыдущем посте, бо выр-е "сопоставление с образцом" у меня почему-то ассоциироваллось с перловыми билдин регекспами.
насчёт патерн матчинг - кто вам сказал, что в питоне этого нет? =)
> Писать юнит-тесты для того, чтобы отловить ошибки типизации и банальные описки - это трата времени. Кроме того, 100% покрытие тестами достигается редко, и даже оно может не спасти.
Если проект большой, а ошибки обходятся дорого, без юнит-тестов ты в любом случае не обойдёшься. А статическую проверку кода никто не отменял, есть pychecker и pylint, иди осиливай. Pylint можно обучить практически всему, что умеет компилятор явы или плюсов, была бы необоходимость.
так простите, pyhton - не функциональный язык с богатыми функциональными, декларативными, литеративными и проч. возможностями. это лёгкий *скриптовый* язык для повседневного использования a la налобать гуй за пару минут, налобать скриптик, написать проект под web. это не серебрянная пуля, это не решение вселенский проблем, это просто just another not bad language. всё.
> Ога, сегодня ты хочешь паттерн-матчинг, завтра захочешь интерфейсы, послезавтра - встроенные регекспы и корованы искаропки. Руки прочь от Питона, лучше иди рубистам давай советы, один чёрт ихнему недоязычку скоро помирать.
> Но не для отлова же того, что должен ловить компилятор
В общем я не буду здесь спорить, я на динамических языках почти не писал, из опыта написания юниттестов для джавы могу предположить, что обычные юниттесты практически все опечатки отловят, потому что обычно опечатка сильно влияет на логику работы. Исключения разве что - редко выполняющиеся куски (вроде обработки ошибок).
> O_O ровно наоборот
Почему? Если статическая типизация - к переменной привязываем тип и проверяем. Тип известен, сразу можно писать нужный код. например a + b для int-ов будет ADD, для строк вызываем функцию конкатенации. А вот если динамическая - для каждого значения таскаем тег, в код везде вставляем switch-и. И, по-хорошему, надо от этого по мере сил и возможностей избавляться, проводить сложный анализ, т.е. исскуственно типизировать. Имхо это значительно сложнее.