Началось (http://comments.gmane.org/gmane.comp.python.announce/7877) бета-тестирование Python 2.6 (http://www.python.org/download/releases/2.6/) и Python 3.0 (http://www.python.org/download/releases/3.0/). Финальные релизы 2.6 и 3.0 запланированы на сентябрь.
Python 2.6 представляет собой переходный релиз, облегчающий переход с Python 2.x на Python 3.0, например появятся предупреждения для разработчиков о тех конструкциях языка, которые могут вызвать проблемы при переходе на версию 3.0. Многие возможности Python 3.0 будут портированы в ветку 2.6 не нарушая совместимости с ранее написанными для Python 2.x скриптами.URL: http://comments.gmane.org/gmane.comp.python.announce/7877
Новость: http://www.opennet.me/opennews/art.shtml?num=16569
Замечательная новость. Python - отличный инструмент
Обещают в 3-ей версии убрать устаревшее и сделать другие улучшения. Конечно я не знаток в языках, но мне этот Питон (2.5) тяжело даётся. Постоянно натыкаюсь в языке на какие-то уходы в сторону мелкого прагматизма в ущерб общей целостности. Практическая реализация пока далека от Питон-Дзэна. Речь не об отсутствии символов для группировки операторов т.е. к отступам можно и привыкнуть, но по-моему это типичный пример когда заявляется одно ("явное лучше неявного") а на деле совсем другое. То же самое с общетиповыми функциями - всё объекты, однако, например, функция определения длины реализована отдельно а не как метод объекта Строка. Ну и т.д в более сложных конструкциях и с перекрываемыми атрибутами в классах и прочие уходы от заявленных принципов, которые вообще-то меня привлекают. Мля, "изобретение" кортежей вообще веселит. :)Тут недавно была новость "Почему Ruby и Python не могут занять место стареющей Java" http://www.opennet.me/opennews/art.shtml?num=16178
Про Ruby не знаю, но Питон, во-первых, ещё не достиг зрелости т.е. будут большие перемены, и, во-вторых, возможно стабилизации не будет так как обнаружатся противоречии в концепции.(Шигорин и остальные "мудрецы", давайте без обвинений в зелённости и без пацанских "самому слабо".)
по секрету - ни один язык не достиг зрелости, кроме С.
если конечно не считать, что зрелость - этап перед старостью и смертью.
> мне этот Питон (2.5) тяжело даётся.
> Постоянно натыкаюсь в языке на какие-то уходы в сторону мелкого прагматизма
> в ущерб общей целостности.perl, PHP или bash попробуй, - сразу почувствуешь разницу. там этого гораздо больше.
> по-моему это типичный пример когда заявляется одно ("явное лучше неявного")
> а на деле совсем другое. То же самое с общетиповыми функциями - всё объекты,
> однако, например, функция определения длины реализована отдельно
> а не как метод объекта Строка.__len__(self)
Called to implement the built-in function len(). Should return the length of the object, an integer >= 0.
Also, an object that doesn't define a __nonzero__() method and whose __len__() method returns zero
is considered to be false in a Boolean context.http://docs.python.org/ref/sequence-types.html
почему сделали именно так? не знаю. возможно потому что "длинна строки"
более естественно переводится в конструкции языка программирования как "len(string)",
чем "string.len()" - "вызов метода len у объекта string с пустым списком аргументов".кроме того, в случае "len(string)" человек читает исходники прямо и быстрым способом,
а "string.len()" придется уже читать задом-наперед, сначала метод, потом имя обьекта.наверное автора python`а эти возвраты раздражали, так же как и лишний синтаксический
мусор в виде begin ; end или { ; } поэтому лично я - принимаю и одобряю его решение.и автор не побоялся критики со стороны ортодоксов обьектно-ориентированного подхода
к программированию. тем более, что в python не одна только эта парадигма поддерживается.ошибки при проектировании языка у него были, вот как раз с версией 3.0 все эти ошибки
он и пытается исправить. а не ошибается, как известно, только тот, кто сам ничего не делает.> Ну и т.д в более сложных конструкциях и с перекрываемыми атрибутами
> в классах и прочие уходы от заявленных принципов, которые вообще-то меня привлекают."критикуя - предлагай". т.е. предложи вариант, как по твоему мнению можно сделать лучше.
тем более, что 3.0 - еще не релиз и твои предложения вполне могут войти в Python 3000.> Мля, "изобретение" кортежей вообще веселит. :)
что именно не нравится с кортежами, поконкретнее можно?
> Питон, во-первых, ещё не достиг зрелости т.е. будут большие перемены, и, во-вторых,
> возможно стабилизации не будет так как обнаружатся противоречии в концепции.это вряд ли. противоречий в концепции например,
у PHP, bash или perl гораздо больше чем у python`а.Ruby и perl 5.10 - сейчас все больше только syntactic sugar
создают вместо новой функциональности, на этом фоне python достаточно хорошо развивается.
>[оверквотинг удален]
>http://docs.python.org/ref/sequence-types.html
>
>почему сделали именно так? не знаю. возможно потому что "длинна строки"
>более естественно переводится в конструкции языка программирования как "len(string)",
>чем "string.len()" - "вызов метода len у объекта string с пустым списком
>аргументов".
>
>кроме того, в случае "len(string)" человек читает исходники прямо и быстрым способом,
>
>а "string.len()" придется уже читать задом-наперед, сначала метод, потом имя обьекта.про literal programming ничего не слышали?
>> "длинна строки" более естественно переводится в конструкции языка программирования как "len(string)",
>> чем "string.len()" - "вызов метода len у объекта string с пустым списком аргументов".
>>
> про literal programming ничего не слышали?при чем тут Literate Programming ?
>>> "длинна строки" более естественно переводится в конструкции языка программирования как "len(string)",
>>> чем "string.len()" - "вызов метода len у объекта string с пустым списком аргументов".
>>>
>> про literal programming ничего не слышали?
>
>при чем тут Literate Programming ?так. пойдем с другой стороны. С точки зрения ООП: str.len - получение атрибута объекта.
>>>> "длинна строки" более естественно переводится в конструкции языка программирования как "len(string)",
>>>> чем "string.len()" - "вызов метода len у объекта string с пустым списком аргументов".
>>>>
>>> про literal programming ничего не слышали?
>>
>>при чем тут Literate Programming ?
>
>так. пойдем с другой стороны. С точки зрения ООП: str.len - получение
>атрибута объекта."string.len()" - это вызов метода.
Не трогайте Шигорина - "он хороший человек" , просто есть пунктик относительно питона.
Кстати, почему-то не указаны 2 новшества - идентификаторы на национальных языках и исчезновение reduce.
А вот, по поводу, почему питон не вытеснит жабу - потому, что очень сложен для изучения. Смешно для языка создоваемого именно для этого? Тем не менее, к сожалению, это именно так. Не замечали, что каждый продвинутый питонист начинает чем-то напоминать Гвидо? Вот и делайте выводы. Именно по этому отступы всегда будут - как отмазка для тех кому не хватило тяму.
>А вот, по поводу, почему питон не вытеснит жабу - потому, что
>очень сложен для изучения. Смешно для языка создоваемого именно для этого?
>Тем не менее, к сожалению, это именно так. Не замечали, что
>каждый продвинутый питонист начинает чем-то напоминать Гвидо? Вот и делайте выводы.
> Именно по этому отступы всегда будут - как отмазка для
>тех кому не хватило тяму.Не замечали, что есть большие многофункциональные системы, изучать и пользоваться которыми однако легко? Это потому, что отдельные части их построены в соответствии одной концепции, выраженной через идеологию ("Дзен"). Так изучив идеологию, понимаешь концепцию и далее всё само собой всасывается. Вот человек об этом же говорит:
===================================================================================
>> История с Аs400 вообще интересна.
>> Я что-то знал об эльбрусах и местах их установки. Это была единственная
>> более-менее приличная машина не-фон-неймановской архитектуры в мире,IK> А где про это можно почитать? Интересно стало...
Про что? Если as/400 - кто-то недавно где-то засвечивал неплохую книжку,
перевод которой выходил в совке. Я сам подробностей об этой машине почти
никаких не знаю.
Если s/360-370 - Джермейн и Радд, две книжки по асм, в первой - s/360, во
второй - s/370. В первой неплохо для начинающего читателя изложена и
архитектура железа. Hо не имея самого железа - очень сложно его понять. В тому
же, объём архитектуры железа там заметно больше, чем на ПК, так что при
понимании спасает только стройность и единостильность архитектуры, иначе
вообще голова кругом бы пошла. ...
===================================================================================У Питона в Дзене заложены проблемы т.е. иеология не полностью соответствует концепции.
Вот концептуальные идеи:
------------------------
Красивое лучше уродливого.+
Явное лучше неявного.+
Простое лучше сложного.+
Частные случаи не настолько существенны, чтобы нарушать правила. <<<<!А вот противоречие концепции:
-----------------------------
Однако практичность важнее чистоты. <<<<!Которое закрепленно другими пунктами из совсем другого уровня детализации (ошибка иерархии модели):
-------------------------
Плоское лучше вложенного.
Разрежённое лучше плотного.
Удобочитаемость важна.
Дзен обожают любители самого задзенного языка - пых-пыха. Наверное, потому, что им тяжко перейти со средневековой философии на язык современной математики.
>Дзен обожают любители самого задзенного языка - пых-пыха. Наверное, потому, что им
>тяжко перейти со средневековой философии на язык современной математики.Дзен всего лишь простая форма описания основных идей людьми, которые полностью не осознали иерархию структурного знания. Проблема в том, что в нём смешивают в одном списке и идеологию и методы, но это лучше, чем совсем ничего. Хотя да, рассказать о принципах языка через Дзен - это нехороший признак. Так как вам Питон?
>Так как вам Питон?А какой Питон?
В стиле хаскеля
def sent_desplit(x_in):
""" sent_split:: Sent::[([],[],[]),] -> Text::([],[],[]) """
concat=operator.concat
f1=lambda (a,b,c),(x,y,z):tuple([concat(a,x),concat(b,y),concat(c,z)])
f2=lambda t:reduce(f1,t,([],[],[],))
return f2(x_in)
C
def f2(x,(y,z)):
global triger
if not triger: triger |= True; x+=[[u'',u'',True],]; x[-1][2]=z
x[-1][0]+= y; return x
Java
class ddict(dict):
def get_formating(self,key):
lst_val=self[key]
lst_format=[u'',]
for i in xrange(len(lst_val)):
if i==1:
lst_format=lst_format+[u'{']+[u'}']
lst_val=lst_val+[u'']
elif i>1:
lst_format.insert(i,u',')
d=map(lambda x,y:x+y,lst_format,lst_val)
return string.join(d)
Можно и в Лисп-, Смолтолк-,С++, только где в стиле Питона?
Может, правда, в том, что примеры выдраны из одного файла, который сейчас просто открыт,не совсем поэтому правильные, но идеология просматривается.
>>Так как вам Питон?
>
>А какой Питон?...
>Можно и в Лисп-, Смолтолк-,С++, только где в стиле Питона?
>Может, правда, в том, что примеры выдраны из одного файла, который сейчас
>просто открыт,не совсем поэтому правильные, но идеология просматривается.Это и есть идеология Питона - нет навязывания стиля.
Что-то пишется объектно, что-то функционально, что-то классически императивно...
Жаль, хорошей поддержки декларативного стиля нет :)
Нарушение обратной совместимости со скриптами, разработанными для более ранних версий Python - новая возможность Python 3.0. Жесть.
>Нарушение обратной совместимости со скриптами, разработанными для более ранних версий Python -
>новая возможность Python 3.0. Жесть."Должен существовать один — и, желательно, только один — очевидный способ сделать это." Старые способы сделать это заменяются новыми. Ревизия и тестирование всегда будет необходимо в таких случаях.
уберут модули md5 и sha, а чем тогда хеши считать ???
>уберут модули md5 и sha, а чем тогда хеши считать ???а на пальцах, слабо?
>уберут модули md5 и sha, а чем тогда хеши считать ???Слабо доки посмотреть?
http://docs.python.org/dev/3.0/library/hashlib.html
>уберут модули md5 и sha, а чем тогда хеши считать ???hashlib-ом
по поводу возмущений об обратной совместимости - а кто мешает не трогать интерпритатор там где это не надо?
>по поводу возмущений об обратной совместимости - а кто мешает не трогать
>интерпритатор там где это не надо?Ага. и я про тоже. Типа ездить на грузовике имея тока категорию С а потом сесть на мотоцикл и возмущаться почему у тя нету права ездить на мотике. Слабая аналогия правда ... но всетаки изменилась мажорная версия. Не надо помидорвами кидать мол питон фуфло обратной совместимости не может сделать. Ну не переходи на другую версию. Оставайся на 2.*
Все ж к лучшему делается...
Это тем кто возмущается отсутсивием обратной совместимости
> Использование Unicode в качестве основной кодировки представления строкА когда вышел Python 1.0? И сколько времени потребовалось на осознание того, что в мире есть не только английский язык, а символов больше чем в ASCII...
Я на версии 2.3 не имел проблем с юникодом. Более ранние Версии не пробовал.
Действительно, когда вышел Python 1.0? Почти 20 лет назад. Многие тогда использовали Unicode? Способны ли были компьютеры того времени значительную часть своей производительности тратить на Unicode?
>> Использование Unicode в качестве основной кодировки представления строк
>
>А когда вышел Python 1.0? И сколько времени потребовалось на осознание того,
>что в мире есть не только английский язык, а символов больше
>чем в ASCII...в коде не должно быть символов выше 127 .. если они появились в коде - вы делаете чтото не так. Тоже касается комментариев
>>> Использование Unicode в качестве основной кодировки представления строк
>>
>>А когда вышел Python 1.0? И сколько времени потребовалось на осознание того,
>>что в мире есть не только английский язык, а символов больше
>>чем в ASCII...
>
>в коде не должно быть символов выше 127 .. если они появились
>в коде - вы делаете чтото не так. Тоже касается комментариевА строковые константы наружу выносить? А по моему наоборот нужно быстренько везде и всё на utf-8 перевести. Весь текст программы в unicode. Нет же проблемы транслировать старые тексты в Unicode? А так застряли все на полпути и отсюда лишняя работа для программиста.
>> Использование Unicode в качестве основной кодировки представления строк
>
>А когда вышел Python 1.0? И сколько времени потребовалось на осознание того,
>что в мире есть не только английский язык, а символов больше
>чем в ASCII...в 1.5.2 "нелатинские ASCII" фунциклировали нормально.
юникод появился тоже ещё до 2.0, AFAIR
Лучше б они нормальную пробелонезависимость сделали
лучше б они мозгонезависимость сделали.
сразу бы проблем не стало.