Найти - Пользователи
Полная версия: [ANN] Python 3K or Python 2.9?
Начало » Флейм » [ANN] Python 3K or Python 2.9?
1
Александр Кошелев
Забавная статья о Python и не только
http://www.artima.com/weblogs/viewpost.jsp?thread=214112
astoon
1) Да, народ боится Питона 3К, но -
Bruce Eckel
I know that true concurrency support – the ability to run pieces of a program on multiple processors – is hard in a dynamic language. Although they both have threads, neither Python nor Ruby is able to actually allocate those threads to multiple processors. The threading is just for code organization and to handle blocking operations. Ruby and Python are prevented from using multiple cores because they both suffer from the global interpreter lock problem.

But right now we are on the brink of a huge potential gain for dynamic languages, with the advent of multi-core systems. Here's the place where the performance impact of dynamic languages, so often used as an excuse to avoid them, could be erased. Multicores could be what brings dynamic languages into their heyday, and could relegate languages like Java and C++ as “what you use for writing small pieces of your application, only if you absolutely must.”
- это самая веская причина рефакторинга/реорганизации ядра языка.
Деваться некуда, надо постепенно двигаться в сторону языка будущего.
2)
Bruce Eckel
I'm hoping that this is just an issue of “waiting for maturity,” but we need to make support for Python Eggs and Easyinstall part of the python distribution. Easy installation and update of library components should not require effort or be a distraction.
Вот именно. А сейчас Яйца неочевидны. Незнаю, может быть я один их терпеть не могу, но они должны стать лучше. И ведь надо привыкать - вон, Zope 3 вот-вот весь пересядет на яйца. За ним и другие последуют.
Вин-подобные инсталляторы - по моему мнению, это не есть будущее.
Пакетный менеджмент Unix сами знаете, всего не решает для питоновских систем. Кроме того, мейнтейнеры дистрибутивов НИКОГДА не будут успевать за временем.
3) По поводу Support for DSL Creation вообще не воткну, о чем речь идет собственно и почему дисскуссия. Может кто прокомментирует ?
4) По поводу GIL хотелось бы услышать мнение здесь.
5) Из комментариев:
Benjamin Peterson
Well, as Guido said in his preface to Python Programming (Lutz), he's not going to get everything right in Python 3000 so there's always Python 4000…
:lol: :lol: :lol:
6) Прозвучала интересная, как мне кажется, мысль в защиту self:
Luciano Romalho
About self:
Unlike Ruby, Python does not want to be a “pure” OO language (whatever that means). Python is a multi-paradigm or paradigm-agnostic language, and that is something that many of us like about it. The explicit use of self makes the OO and the functional styles work well together.
7) Еще по поводу IDE:
IMHO, во многом тот факт, что популярность Java после первоначального бума в 90-х (а она тогда пришла на пустое место), не упала и продолжает держаться не только потому, что платформа надежна и высокопроизводительна (хотя, конечно, это корневая причина). Просто дело в том, что сработала цепочка: Sun вкладывает миллиарды - IBM вкладывает миллиарды - все другие тоже поверили в платформу и тоже вкладывают миллиарды в различные IDE. И они имеют ГАРАНТИЮ того, что их миллиарды не выброшены на ветер, так как Java имеет официальные спецификации. Да, конечно, разработчики связаны ими и платформа не быстра в развитии поэтому.
Питон же - более хакерская вещь. Здесь нормально не успевать отслеживать новые версии библиотек.
Поэтому в создание мощной IDE не одна здравомыслящая компания вкладывать миллиарды не будет.
Хотя если бы это случилось, возможно, произошел бы взрывообразный всплеск популярности Python.

Все IMHO, конечно.
Андрей Светлов
Яйца для меня - это в первую голову зависимости между пакетами и хорошие средства их интроспекции. Самая большая проблема, кажется - отсутствие толковых описаний на самом PEAK.
GIL если и уберут, то нескоро. GvR жалуется, что навешивание блокировок тормозит выполнение на 10% (вроде как была такая экспериментальная ветка). Жаль, конечно. Мультиядерность сейчас набирает обороты.
По поводу self уже писал здесь.

DSL - просто.

>>> from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
>>> metadata = MetaData()
>>> users_table = Table('users', metadata,
… Column('id', Integer, primary_key=True),
… Column('name', String(40)),
… Column('fullname', String(100)),
… Column('password', String(15))
… )

>>> addresses = Table('addresses', metadata,
… Column('id', Integer, primary_key=True),
… Column('user_id', None, ForeignKey('users.id')),
… Column('email_address', String(50), nullable=False)
… )

>>> from sqlalchemy.sql import and_, or_, not_
>>> print and_(users.c.name.like('j%'), users.c.id==addresses.c.user_id,
… or_(addresses.c.email_address=='wendy@aol.com', addresses.c.email_address=='jack@yahoo.com'),
… not_(users.c.id>5))
users.name LIKE :users_name AND users.id = addresses.user_id AND
(addresses.email_address = :addresses_email_address OR addresses.email_address = :addresses_email_address_1)
AND users.id <= :users_id

или вот:

T.html[
T.body[
T.h1,
T.p],
T.p[
‘I have child too: ’,
T.a(id=“child”, href=url.here.child('childOfChild'))
],
]
]

Скорее всего вы видели такой код не раз, только не знали, что это - DSL.
Еще - статья

IDE. Хмм… Долгое время искал САМУЮ ЛУЧШУЮ IDE. Сейчас хватает хорошо настроенного текстового редактора.
Но - штука, безусловно, завлекательная. Особенно для новичков.
astoon
Андрей Светлов, спасибо за разьяснение по поводу DSL.
Насчет IDE - я в первую очередь имею ввиду тот момент, что корпорации, вкладывающие деньги в раскошные IDE, потом не меньшие деньги вкладывают в раскрутку / рекламу соответствующих технологий. Что мы и наблюдаем на примере Java.
Cleric
Я читал что интерпритатор стал медленее где то в два раза когда убрали GIL ( фак Py3k с ответом на вопрос о GIL), но не суть, если бы Гвидо убрал GIL, тем кому важна скорость могли бы пользоваться серией 2.x. Но похоже придеться ждать еще 8 лет, грустно блин.
Cleric
DSL не ограничиваеться созданием мини-языков под конкретную задачу, с помощью него можно расширять синтаксис самого языка, пример:
t = &switch val ,
1: 'one',
2: 'two',
3: 'three',
:val > 3: 'too big num',
:val < 1: 'too small num'
Это стандартный питон код в том случае если
1. с помощью спец. синтаксиса (знак &) при вызове функции, можно не писать скобки
2. для создания словаря (dict) можно не писать {}
3. синтаксис на подобии ‘:None’ сокращение для ‘lambda : None’

Вот примерная реализация функции switch:

def switch(condition, **candidates):
import types

if(cond in candidates):
return candidates

for candidate, result in candidates.ireritems():
if(type(candidate) == types.FunctionType):
if( candidate() ):
return result

return None
Андрей Светлов
Cleric
External DSL куда менее интересны и к Py3k не имеют никакого отношения, как бы Питон ни развивался.
Cleric
Андрей Светлов, возможно вы меня не правильно поняли, я не говорил о DSL в Py3k.
Насчет того что External DSL не интересны, посмотрите хотя бы на TCL.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB