LINUX.ORG.RU

Guido van Rossum о паттернах в Питоне, своей работе в Гугле и Питоне-3000


0

0

Автор языка Питон, Гвидо ван Россум (Guido van Rossum) рассказывает об использовании паттернов в языке, его особенностях, а также рассказывает о планах развития языка и своей работе в Google.

>>> Подробности

anonymous

Проверено: Shaman007 ()

radiator вроде перловый?Да и когда жещ перл 6 версии выйдет?Заманался ждать.

anonymous
()
Ответ на: комментарий от anonymous

>Счас 100 строк кода портирую с PyQt3 на PyQt4 - финская система доступа к банковским данным

100 строк? финская система доступа к банковским данным? Охуеть просто.

Sun-ch
()
Ответ на: комментарий от anonymous

>питона еще нет cpan >>эта пять. очень хорошо что нет.

Глупый анонимус. Большенство проектов на перле это связка спановских модулей. С удобной инсталялкой, обгредялкой, тестами, зависимостями и т.п. из коробки :D.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Вон оно что! А питоновские модули принято ставить средствами дистрибутива, с удобной инсталялкой, обгредялкой, тестами, зависимостями и т. п. из коробки. :~P

ero-sennin ★★
()
Ответ на: комментарий от Sun-ch

Для очередного "читателя" так снизу подправлено - 100к строк

anonymous
()
Ответ на: комментарий от ero-sennin

>А питоновские модули принято ставить средствами дистрибутива

Даже не смешно как-то. Сколько их у тебя этих модулей в дистре ? Сравни с количеством на cpan.org http://cpan.org/modules/01modules.index.html . Даи посчитай перл модуля в своём дистре - думаю их на много больше. (в моей рабочей сусе 9.1 их в два раза больше).

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

> Сколько их у тебя этих модулей в дистре ? Сравни с количеством на cpan.org

А Питон берёт не количеством а качеством. :) На cpan.org есть модули для любой фигни, типа залить картинку на imageshack.us, но попробуй отыщи там аналог http://pyro.sourceforge.net/ или http://www.scipy.org/. =)

ero-sennin ★★
()
Ответ на: комментарий от catap

Избавься от девушки, они только мешают.

anonymous
()
Ответ на: комментарий от vtVitus

> Даже не смешно как-то. Сколько их у тебя этих модулей в дистре ?

У меня в дистре есть easy_install. Делаем так: easy_install ИМЯ_ПРОГРАММЫ

Само найдет(и на pypi и на sourceforge и еще ..),вытянет все что надо закомпилит и поставит. С зависимостями и т.д. Любители безопастности могут ограничить список областей поиска и закачки. Недавно один предлагал в рассылке python-dev больше ничего в стдлиб не включать а только что-то типа портов сделать и easy_install добавить.

anonymous
()
Ответ на: комментарий от anonymous

> Расшифровка генома человека делалась в основном на питоне.

С этого места поподробнее, плиз. Бо Лисп в проекте генома упоминался -- на нем кусочки ДНК кодировали. А вот Питон -- не слыхал.

> кстати yum писанный на питоне - с чего бы это? AFAIK apt тоже - не уверен

ebuild -- наше фсио :-). apt -- ну ни разу не. Да и по yum у меня несколько другая информация...

eugine_kosenko ★★★
()
Ответ на: комментарий от ero-sennin

>А Питон берёт не количеством а качеством. :)

угу качеством, тут на работе был проект на питоне, человек очень был весел из-за этого качества. pyro - то что мне надо было на спане был для них сериализатор. sci - имно это просто питоновский биндонг над сишным кодом, заслуга питона тут, наверно, Очень большая.

>типа залить картинку на imageshack.us

Большенство того, что мне надо было на cpan.org было. В детстве сайт на perl написал, я там использовал порядка 40 модулей с cpan.org и один модуль от коммерческой фирмы. Оно мне на порядок сократило сроки. Имно вы просто не представляете, что ругаете.

vtVitus ★★★★★
()
Ответ на: комментарий от eugine_kosenko

знаете, ради интереса зашел в /usr/bin (просто что под руку попало, на дебиане) и посмотрел что на чем написано %)

Питонофилы - повторите, думаю вопросы многие снимутся %)

anonymous
()
Ответ на: комментарий от anonymous

>Само найдет(и на pypi и на sourceforge и еще ..)

Похвально, но там нету единой системы cpan.org. Т.е. пересечесние по названиям, а как-там с поиском ? а с тестами ? А кол-во их ?

vtVitus ★★★★★
()

> на логичный вопрос о том, как же создать тогда singleton, если любой вызов делает новый объект, Гвидо указал два возможных решения. Первый - переписывание __new__ и второй - создание модуля, т.к. модули - это класс и инстанциированная копия объекта одновременно.

Вообще-то, модуль -- это аналог утилиты, что, как известно, не совсем то же самое, что синглетон.

А насчет переписывания __new__ -- слегка ненатуральное решение...

eugine_kosenko ★★★
()
Ответ на: комментарий от vtVitus

> pyro - то что мне надо было на спане был для них сериализатор. sci - имно это просто питоновский биндонг над сишным кодом, заслуга питона тут, наверно, Очень большая.

Называть pyro сериализатором, а scipy - "просто питоновским биндонгом над сишным кодом" - это, мягко, говоря, означает соврать. :D Ну ладно, пусть так. Почему для перла нет таких просто байндингов? :P Или в scipy, например, входит модуль для встраивания сишного кода прямо в питоновскую программу. Где можно посмотреть на перловый аналог? :)

> В детстве сайт на perl написал, я там использовал порядка 40 модулей с cpan.org

Тут и спорить не стану, пока хотя бы не пролистаете туториал по Zope или Django, на выбор. :)

ero-sennin ★★
()
Ответ на: комментарий от eugine_kosenko

Модуль, после того как он импортрирован, это объект, и интерпритатор
гарантирует что он будет только один => сиглетон. Доступ к объекту 
import mysingleton

Есть ещё занятная фигня 'Borg':

class Borg:
    shared_state = {}
    def __init__(self):
        self.__dict__ = self.shared_state

a = Borg()
b = Borg()

a.a = 1
print b.a

Но borg is cool, but he's not your friend ;-)

redvasily
()
Ответ на: комментарий от vsemnazlo

Угу только это pugs - то есть не много не то. Хотя хорошая вешь. Паррот до сих пор вроде не допиннали. Потом в самом языке меняют что-нибудь. Последнее что видел - новая смена синтаксиса для однострочных if-else теперь разделители ?? и !! интересно когда это кончится?В pugs вроде еще то же не все сделали. Там какие ползанья и переделывания под библиотечки новые.

anonymous
()
Ответ на: комментарий от eugine_kosenko

> Вообще-то, модуль -- это аналог утилиты, что, как известно, не совсем то же самое, что синглетон.

Почему всех так тянет бездумно переносить решения из одного языка в другой? Синглетон - это костыль, хотя и остроумный. Зачем он в Питоне, когда любой модуль - уникальный объект, к тому же всегда доступный из особого пространства имён (from чего.то.там import ыыы)?

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>Угу только это pugs - то есть не много не то.

Ну так это ж специально для тех, кому не терпится. :)

vsemnazlo
()
Ответ на: комментарий от eugine_kosenko

eugine_kosenko - ВеликийЗнатокПитонаВДействии )))). Порадовал.

>Вообще-то, модуль -- это аналог утилиты, что, как известно, не совсем то же самое, что синглетон.

Поток сознания слит.

В питоне все - объект в том числе и модуль. А т.к. каждый модуль присутствует ровно один раз в одном питоновском процессе, а именно в sys.modules то он синглтон. Никак, кроме конкр. извращений, вторую копию сделать не удасться. Без основательного прочтения мануала по питону - точно.

>А насчет переписывания __new__ -- слегка ненатуральное решение...

__new__ в питоне не глобальное, как ::new в С++ а свое у каждого класса - это примерно то-же что и перегруженный для конкр. класса new в С++. Вполне нормальное решение. Хотя обычно делают так:

class Sinlgton(object): _class_dict = {} def __init__(self): self.__dict__ = self._class_dict

anonymous
()
Ответ на: комментарий от redvasily

сори redvasily - я страницу не до конца догрузил - твой пост не увидел - просто плагиат вышел (((

anonymous
()
Ответ на: комментарий от r

>На Ельфе! ;)

не, ты греп -H сделай на /usr/bin/perl | less %)

anonymous
()
Ответ на: комментарий от anonymous

>а чт ос питоном только руби можно сравнить. а Луа?

Lua, афаик, встраивается в приложения намного красивее. И расширяется проще. Надо только вкурить луавсие соглашения на вызов функций.

AsphyX ★★★
()

Недавно узнал, как задаются неймспейсы в пайтоновских модулях. Вложенными каталогами! Я пребывал пацтулом...

AsphyX ★★★
()
Ответ на: комментарий от AsphyX

> Я пребывал пацтулом

1)class MyNameSpace(object):

@staticmethod def func(x,y): pass

2)В __init__.py можно как угодно модули переколбасить и установить свою структуру имен и пространств имен в т.ч.

3)Структуру созданную вложенными в каталогами можно так-же перестроить в __init__.py

Можеш вылезать из под стула и доставать учебник по питону для полробного ознак :)).

> Lua, афаик, встраивается в приложения намного красивее. И расширяется проще. Надо только вкурить луавсие соглашения на вызов функций.

Сравнивать Lua и Python могут только люди не знающие ни того не другого. Питон - тяжеловесный язык со всем набором возможностей и библиотек необходимых для разработки самоcтоятельного софта. А Lua - язык для встраивания в друтие программы. В Lua нет исключений,нормальных классов(с наследованием,статик методами,properties,контролем доступа к атрибутам и всей фигней), толковой индексации массивов,..... А самое главное достаточного объема библиотеки или сторонних модулей. Потому как ее место - легкие встраиваемые скрипты - где она и успешно используется. Покажите мне большую программу на Lua плз.

anonymous
()
Ответ на: комментарий от vtVitus

> Большенство того, что мне надо было на cpan.org было. В детстве сайт на perl написал, я там использовал порядка 40 модулей с cpan.org и один модуль от коммерческой фирмы. Оно мне на порядок сократило сроки. Имно вы просто не представляете, что ругаете.

Мне кажется, что ситуация аналогичная. Вы просто не представляете, что ругаете. После perl python - просто праздник души какой-то. Просто в языке есть своя идеология и это нужно принять, иначе ничего не выйдет. А любовь к perl - это возрастное. Со временем любой человек все новое восприниает с трудом, привычка побеждает.

А аналога cpan нет и, наверное, не будет. Потому что нет острой необходимости. Но зато есть easy_install, есть google, в конце концов :-) (а когда cpan создавался, не было ни sourceforge ни поисковиков нормальных)

puxpux
()
Ответ на: комментарий от puxpux

>Мне кажется, что ситуация аналогичная. Вы просто не представляете, что ругаете. После perl python - просто праздник души какой-то. Просто в языке есть своя идеология и это нужно принять, иначе ничего не выйдет. А любовь к perl - это возрастное. Со временем любой человек все новое восприниает с трудом, привычка побеждает.

Сейчас придёт Витус и станет кричать, что Tcl -- наше фсё :)

AsphyX ★★★
()
Ответ на: комментарий от anonymous

Любой может на своей системе запустить следующее:

for f in /usr/bin/*; if test -n "`file $f | grep ' text '`"; then echo $f "`head -1 $f`"; fi; end >usr-bin-languages.txt

perl -nle 'm,.*\w/(\w+)\b, && print $1' usr-bin-languages.txt | sort | uniq -c | sort -rn

У меня вышло следующее:

208 sh
128 perl
16 bash
12 python
2 ruby
2 env
1 csh

mihalych ★★★
()
Ответ на: комментарий от mihalych

Во-первых пропущен do, и что это за "end" вместо "done"? У нас sh али windows cmd scripting какой?

Во-вторых, вот типичный вывод.

489 sh
185 perl
57 python
53 env
27 bash
2 ruby
1 wish
1 python2
1 csh
1 awk
1 1

Обратите внимание - все "env" это на самом деле "/usr/bin/env python", стандартный способ в скриптах на питоне, а прямо "/usr/bin/python" нормальные люди не пишут. Итого - 110 программ на питоне против 185 на перле. Вывод - shell все еще популярен, но питон скоро всех сделает.

anonymous
()
Ответ на: комментарий от anonymous

Да, 111 программ, если еще вспомнить "python2". А "1" в конце списка - это /usr/bin/krfb_httpd, который имеет плохие переводы строк и сбил скрипт.

anonymous
()
Ответ на: комментарий от mihalych

>У меня вышло следующее:

>208 sh

>128 perl

>16 bash

>12 python

>2 ruby

>2 env

>1 csh

Придется все на sh теперь клепать...

Статистика- некуда не денешься, блин!

ingoa
()

Программистам искусным в Perl, Python кажется довольно скучным языком. Лень заводить новый flamewar по поводу того, как безнадёжно плох и беден синтаксис Python. :-)

http://www.linux.org.ru/jump-message.jsp?msgid=1206475

Да просто определить стринг, в котором присутствуют много одинарных и двойных кавычек в Python - трагедия. А в Perl нет никаких проблем, да ещё и многими способами, кроме обычных "стринг" и 'стринг'. Например: <<ENDSTRING, q{мой "длинный" 'стринг'} или qq~мой $kind стринг~.

А что будет, когда мы перейдём к многострочным стрингам и вложенным структурам, определённых inline. Здесь Perl тоже выигрывает по читаемости, и синтаксис выглядит родным. В Python же синтаксис структур inline выглядит чужеродным (читать ту старую дискуссию), потому как сами блоки кода не ограничены {}, как в нормальных языках. Или, скажем, очень частый случай - ключи хэша или элементы списка являются однословесными стрингами. { key1 => "value1", key2 => $value2 } или qw(string1 string_2 one-more-string). В Python же всё будет засорено двойными/одинарными кавычками и в некоторых случаях бэкслэшами.

Perl намного читабельней, для тех кто умеет писать и читать. :)

Богатый синтакс (в perl6 он ещё богаче) - это лишь одна сторона войны идиологий. Есть глубокие разногласия и по поводу принципов программирования. Но об этом как-нибудь в другой раз. :)

man perl | grep more

mihalych ★★★
()
Ответ на: комментарий от anonymous

Прошу прощения за укороченный синтакс zsh, где имея "setopt cshjunkieloops" можно даже и так писать (как в tcsh). :)

foreach f (/usr/bin/*)
echo $f
end

mihalych ★★★
()
Ответ на: комментарий от mihalych

>Да просто определить стринг, в котором присутствуют много одинарных и двойных кавычек в Python - трагедия

Aга питончика не знаете :)

print '''aaa"bbb'ccc"ddd'eee"vvv'''

>А что будет, когда мы перейдём к многострочным стрингам

print """ Hello world!"""

>Или, скажем, очень частый случай - ключи хэша

print dict(aaa='aaa', bbb=1')

>или qw(string1 string_2 one-more-string)

print "string1 string_2 one-more-string".split()

>и в некоторых случаях бэкслэшами

print r'aaa\aaa'

anonymous
()
Ответ на: комментарий от anonymous

>А что будет, когда мы перейдём к многострочным стрингам

print """
 Hello
 world!""" 

anonymous
()

А почему Питон, а не Пайтон? К змеюке название не имеет никакого отношения. Название было дано от "Цирка Монти Пайтона".

DIMON ★★★
()
Ответ на: комментарий от anonymous

> > Да просто определить стринг, в котором присутствуют много одинарных и двойных кавычек в Python - трагедия

> Aга питончика не знаете :)

> print '''aaa"bbb'ccc"ddd'eee"vvv'''

Я же сказал "много", то есть включающих и "'''" и '"""'. :) Можно, конечно, разбивать на подстринги и клеить их, но это же неудобно и менее читаемо. А если туда надо ещё и _много_ переменных всунуть, ай-яй-яй...

Остальные примеры решены функциями, а не синтаксисом, а речь-то была о богатстве/бедности синтаксиса, из-за чего повышается/понижается читаемость и самовыражение.

mihalych ★★★
()
Ответ на: комментарий от mihalych

> Я же сказал "много", то есть включающих и "'''" и '"""'.

Какие-то сферокони пошли. Реальный пример можно?

> Остальные примеры решены функциями, а не синтаксисом

И? Это плохо? Давайте тогда все функции заменим специальными синтаксическими конструкциями. Вместо int("3") у нас будет будет >(3)<, вместо sys.stdout.write(bla, blabla) - -=>[(\b\l\a!!! \b\l\a\b\l\a!!!]+=>. А фигли?

ero-sennin ★★
()
Ответ на: комментарий от BastardOperatorFromHell

> По поводу смеси кавычек: a=1 str = ''' qw " we ' sr 'ew ''ewrwe"werw oewrew %s werpwer''' % a

Да нет, Perl-то как раз выигрывает, причём по всем статьям. Уже хотя бы потому, как данное выражение в нём было бы верным (точка с запятой после единички), а вот в Python то, что ты написал - синтаксическая ошибка. Впрочем обо всех безнадёжных проблемах синтаксиса Python было вдоволь продискутировано в той залинкованной дискуссии.

mihalych ★★★
()
Ответ на: комментарий от ero-sennin

> Где можно посмотреть на перловый аналог? :)

Inline::C

Есть оно все, есть...

anonymous
()
Ответ на: комментарий от ero-sennin

Реальный пример для всех, кто не понял смысла фразы "Да просто определить стринг, в котором присутствуют много одинарных и двойных кавычек в Python - трагедия".

Есть стринг состоящий из 20 двойных и 20 одинарных кавычек, ну и ещё другие символы/переменные по желанию. Опишите такой стринг синтаксисом Python.

mihalych ★★★
()
Ответ на: комментарий от mihalych

Меня интересует реальный пример, а не ваши смешные фантазии. Где может понаботиться такой "стринг состоящий из 20 двойных и 20 одинарных кавычек"?

ero-sennin ★★
()
Ответ на: комментарий от mihalych

> Я же сказал "много", то есть включающих и "'''" и '"""'. :) Можно,
> конечно, разбивать на подстринги и клеить их, но это же неудобно и
> менее читаемо. А если туда надо ещё и _много_ переменных всунуть,
> ай-яй-яй..
Если вам таки надо туда много переменным всунуть то используем
string.Template, и, заодно, в переменные загоняем все ваши частоколы
кавычек и тоже подставляем. А еще можно так:
x = '"' * 2234
y = "'" * 4257
c = "asdgsag"

f = "%(x)s + %(y)s - %(c)s" % locals()
Не руби конечно но в перле с этим IFAIK ваше голяк - да?

Но это все фигня как это мы забыли что в питоне нельзя сложную программу в одну строку записать, процессор програмно из мамки вытащить,и, апофеоз всего, в нем нет "документированного способа упасть в кору".)))

Все эти очень нужные на практике возможности конечно компенсируют
отсутствие в перле объектов, кучи библиотек, хоть сколь-нить
близких аналогов Django и Zope,толковых RPC.....

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.