LINUX.ORG.RU

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


0

0

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

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

anonymous

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

>К сожалению, не все вещи будут совместимыми, поэтому мы также попытаемся создать ряд инструментов, делающих конвертацию кода легкой и простой задачей.

Он меня утешил...

>когда я пытаюсь понять эти вещи, мой мозг взрывается

Гвидо - анонимус?

cthulhu ★☆
()

Надеюсь не так много там поломают, а то придеться пол проекта переписывать. Единственное что радует-такое случается не часто. Что не радует - 2007 год будет скоро

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

так совсем же необязательно переписывать будет все для новой версии - старая никуда не денется и поддерживаться тоже будет.

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

> сам Гвидо, кстати, проводит параллели только между python, perl и ruby. ну и изредка ссылается на java и c/c++.

Потому что java, python и ruby - три перспективные платформы. Именно платформы, а не языки (особенно java). А на перле вообще ничего путного написать нельзя (или можно, но не написано).

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

На перле написаны slashdot.org и livejournal.com. Этого мало?

Анонимус на перле действительно может написать только что-нибудь беспутное. Встроенной защиты от дурака там (как, кстати и в C/C++) не предусмотрено. Perl, по-моему единственный скриптовый язык, у которого существует документированный способ уронить интерпретатор в segfault. Остальные языки на такой низкий уровень скриптописателя не пускают.

Зато если программист понимает, что делает, эти возможности Perl позволяют такое, чего на других языках только посредством компилированных расширений добиться можно.

В общем, как я недавно выразился в RU.CPP, написать удобочитаемую программу на Perl проще, чем переносимую на C++.

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

> На перле написаны slashdot.org и livejournal.com. Этого мало?

Это смешно. Много вы еще знаете проектов на Perl, которые удалось продать? На Java и Python их в сотни раз больше. Enterpise разработок на Perl нет. А то, что нельзя продать, - непопулярно по определению.

"Perl это скотч" (с), а не платформа.

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

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

О стопудова, надо написать расширение для питона, чтоб ронять интерпретатор в segfault. Хуже перла он, чо ли?

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

/* Python extension module for voluntarily creating segfaults
 * Copyright 2006 ero-sennin
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appears in all copies and that both the
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the same name not be used in advertising or
 * publicity pertaining to distribution of the software without specific,
 * written prior permission. We make no representations about the
 * suitability this software for any purpose. It is provided "as is"
 * without express or implied warranty.
 */

/* Compilation:
 * save this code to the file named segfault.c, then compile as following
 * gcc -fPIC -shared -I /usr/include/python2.4/ -o segfault.so segfault.c
 *
 * Basic usage:
 * >>> import segfault
 * >>> segfault.segfault()
 */

#include <Python.h>

static PyObject* segfault(PyObject* self, PyObject* args)
{
        char *s;
        if (!PyArg_ParseTuple(args, ":segfault"))
                return NULL;
        s = NULL;
        *s = 'a';

        Py_RETURN_NONE;
}

static PyMethodDef SegfaultMethods[] =
{
        {"segfault", segfault, METH_VARARGS, "Create a segmentation fault."},
        {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC
initsegfault()
{
        PyObject *m = Py_InitModule("segfault", SegfaultMethods);
        PyModule_AddStringConstant(m, "__doc__",
            "This module allows to create fancy segfaults whenever you like");
}

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

> Python extension module for voluntarily creating segfaults

жжошь :)))

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

Спасибо, порадовал с утра. Обязательно буду юзать для задержки релизов и последующих отмазок (:

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

> Пожет всё таки пайтон .. а не питон ?

Да вот тоже думаю, может Тексас, а не Техас, Дойчлянд, а не Германия. Яву тоже склоняют как хотят - лишь бы понимали о чем речь...

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

> у которого существует документированный способ уронить интерпретатор в > segfault. Остальные языки на такой низкий уровень скриптописателя не > пускают.

Это замечательная и ОЧЕНЬ полезная возможность. Хочу увидеть реальный пример ее использования. В Python просто такие приколы старается перехватывать и трансформировать в exceptions.

> чего на других языках только посредством компилированных расширений > добиться можно.

Все делается "посредством компилированных расширений" просто часть из них возможности языка. До 2.5 релиза в питоне не было ctypes в стдлиб а в 2.5 появились - теперь эта либа перестала быть "компилированным расширением"?

Опять же какие еще примеры крутости перла в этой области кроме падения в кору можем привести?

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

>Enterpise разработок на Perl нет.

ну и ну. Анонимус открывает нам глаза. :))) Чистых может и нет (он не для этого созвадался), но как вспомогательных парсеров, скриптов первичной обработки и т.п. в самом что не на есть ентерпрайз столько, что просто дохрена. :D

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

>Опять же какие еще примеры крутости перла в этой области кроме падения в кору можем привести?

regexp. Питон сосет. Как вообще писать то на нем можно, он же неудобный. Ну ладно еще руби.

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

> regexp. Питон сосет. Как вообще писать то на нем можно, он же неудобный. Ну ладно еще руби.

ээ.. а как же PCRE? они ж на то и Perl Compatible...

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

> Пожет всё таки пайтон .. а не питон ?

Тогда уж лучше сразу "Пифон" или даже "Пюфон", чтобы быть ближе к греческому оригиналу ;)

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

> Вообще-то Джава. Послушай как-нибудь какую-нибудь сановскую презентацию..

Ох, вы ещё цисковских презентаций не слышали! :)

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

> regexp. Питон сосет.

1)Культура общения находится на уровне знания питона :(
2)По поводу regexp непосредственно
а)Отсутствие именованных совпадений - как только регулярки чуть
разрастаются их поддержка становится невозможной т.к. вставил
еще один блок совпадения и номера всех прежних - поплыли.
Примерно как программирование в машинных кодах(до ассемблера)
- добавил инструкцию и вперед - пересчитывать все метки переходов.
б)Вываливание результатов совпадения в глобальное пространство имен -
примерно то-же самое. Если нужно искать в найденном то приходится
сначала прошлые результаты в переменных - удоообно аж жуть.
в)Из первого и второго следует невозможность написания примерно
следующего:
r1 = re.compile("(?P<name>[a-z]*)\s(?P<tele>[-0-9]*)")
r2 = re.compile("(?P<name>[a-z]*)\s(?P<ip>[0-9.]*)(?P<tele>[-0 -9]*)")
def save_res(r,text):
z = r.match(text)
return Result(z.group('name'),z.group('tele'))
if bla-bla-bla : r = save_res(r1,text)
else : r = save_res(r2,text)
При обработке достаточно сложных текстов такое приходится
постоянно делать => поддержка и написание таких программ на перле
превращяется в ужас. Декомпозиция регулярок вообще неимоверно
сложна - опять же из-за отсутствия именов. совпадений.
г) Имеющиеся в перле расширения типа встраивания кода в регулярку
как минимум приводят не сильном снижению читабельности
г) http://shootout.alioth.debian.org/debian/python.php
Начиная с 2.4 регулярные выражения в питоне одни из самых быстрых
(в среднем). Быстрее только супер либа из Tcl. Все мои регулярные
выражения, которые я тестил в перле там работали медленнее.
P.S. С регулярными выр. в перле знакомился по Фридлу - может че и
изменилось с тех пор, но чего то слабо верится.

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

>Ыгы, ваще отстой, когда любой бивень твой код понимает с первого взгляда! То ли дело s/\/\/\/\//\\\\\\\\/!

Если бивень не умеет читать регэкспы - это его личные половые трудности, разве нет ?

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

> Если бивень не умеет читать регэкспы - это его личные половые трудности, разве нет ?

Попробуй brainfuck. Или с девушкой познакомься.

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

> 1)Культура общения находится на уровне знания питона :(

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

Культура общения - обычная лоровская, что бы тебя понимали - надо говорить на Вашем языке.

Ссылка на дебиан забавная, по памяти если смотреть %) Почему интересно вам всем перл не нравится, синтаксисом ? Но сколько раз уже говорили же, просто он свободный, хочешь - пиши так, хочешь - иначе. Это уже оффтоп все,разумеется

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

>Попробуй brainfuck. Или с девушкой познакомься.

Глупо. В смысле подобные сравнения %) Ты сам то что предпочитаешь, и вообще обьясни мне, как можно работать без регэкспов ? Особенно если парсишь, ну например боты поисковые, или еще какая текстово ориентированная автоматизация ? Заебешься же. Реально. Без них.

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

Ты всерьёз думаешь, что в питоне нет регулярных выражений? Почитай pydoc re, потом приходи.

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

> и вообще обьясни мне, как можно работать без регэкспов ?

А это что?

r2 = re.compile("(?P<name>[a-z]*)\s(?P<ip>[0-9.]*)(?P<tele>[-0 -9]*)")

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

> обычная лоровская, что бы тебя понимали - надо говорить на Вашем языке

Даже полные местные отморозки так редко высказываются.

> Ссылка на дебиан забавная, по памяти если смотреть %)

Что забавляет. На тесте регулярных выражений потребление памяти одинаковое(regex-dna). А среднее потребление - ну так я хочу увидеть перл с нормальной объектной моделью, с __getattr__, __getattribute__,метапрограммированием,исключениями,etc - в общем со всеми атрибутами развито'го скриптового языка. Не нравится питон - обратите взор на возможности руби или смалтолка. Тогда и глянем на потребления памяти.

> Почему интересно вам всем перл не нравится, синтаксисом ?

Да. А также вышесказанным. И еще вагоном всего. Qt и Wx хочу(тока не надо про проект уже два года как почивший с миром вспоминать). ORM и Django хочу. Библиотеки для научных расчетов хочу. Еще КУЧУ всего хочу чего без объектов не сделаешь. Это уже даже закостенелые fortran маньяки давно поняли. В перле ОЧЕНЬ много модулей - знач. больше чем в питоне, но вот покрываемый ними спектр задач куда как уже.

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

нет, я не думаю что там их нет, разумеется.
Я думаю что там они медленнее, и что они неудобные. Вот казалось бы в (прости Космос за упоминание) пыхпыхе тоже вроде как есть, но реально когда начинаешь что-то делать, то одни маты, у питона еще нет cpan, лично я считаю что питон - возможно вполне неплохой язык, да, даже может быть идеологически правильный, в чем то. Но я бы выбрал Руби, если бы сейчас начал что-то такое учить (просто я не кодер, приходится по работе автоматизировать частенько разное - перл просто безбожно рулит, остальное не хочется даже смотреть, если бы это делал на питоне - пожалуй убил бы себя уже). Java упомянутая тут зачем то - оставим ее для индусов, ну а что там еще есть ? Окамлы с хаскелями ? Но они как бы для другого. Я именно про автоматизацию говорил, такую, верно кто-то тут заметил - на перле дохера прослоек разных, он именно удобен тем что не нужно ебсти себе мозг - а сразу берешь и делаешь.

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

> Это смешно. Много вы еще знаете проектов на Perl, которые удалось продать? На Java и Python их в сотни раз больше. Enterpise разработок на Perl нет.

Ну-ка, enterprise python в студию. Gmail не считается - он beta ;-)

На Perl еще большая часть Amazon написана, если что. И еще мильон проектов, которые просто это не афишируют.

> А то, что нельзя продать, - непопулярно по определению.

Можно, можно. И Perl пока еще популярнее Python, хотя последний местами и лучше (а местами и хуже).

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

>Ну детсад. У питона есть http://cheeseshop.python.org/pypi

По приведенной вами ссылке - действительно детсад %) Спасибо, подняли настроение %-)

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

> Я думаю что там они медленнее, и что они неудобные Неудобные это конечно "каждому свое". А медленные так смотрим пост выше или сразу идем на http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=pyth...

>у питона еще нет cpan

easy_install - нет, это не cpan - но выполняет примерно те же ф-ции что и apt или yum(кстати yum писанный на питоне - с чего бы это? AFAIK apt тоже - не уверен).

> просто я не кодер, приходится по работе автоматизировать частенько разное - перл просто безбожно рулит

Странно. Я тоже кодер. То же автоматизирую но на питоне. Например генерю частенько плюсовый код из шаблонов или формул, чтоб руками не писать. Пока о суициде не помышлял.

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

>То же автоматизирую но на питоне. Например генерю частенько плюсовый код из шаблонов или формул, чтоб руками не писать. Пока о суициде не помышлял.

это временно %-( Сейчас уже даже наркотики не помогают, и не "тоже кодер", вы читать учитесь что-ли.. Я вообще начинало когда то с ассемблера, тогда было кодером, а сейчас я бы с радостью забил на эту всю сраную IT, но пока увы, просто не могу, надо что-то жрать и снимать квартиру.

ps. вот кстати, какого хера тут проверочный код сам не обновляется ?! ы ?

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

зы, про скорость - да, я знаком с этим известным дебиановским ресурсом, но вообще было бы здорово сравнить конкретику, а не синтетику, т.е. взять какую нить задачу, несложную (что бы алгоритм не влиял, а то по разному могут написать) - и потестить. Еще иногда (для меня например, ибо автоматизировать приходится как правило инетное разное барахло) скорость это вообще не критерий, давно уже по несколько гигов стоят рам и многоядерные процессоры кругом, а вот скорость написания - да, важно, и то что инструмент знакомый. И опять же, просто больше информации, в отличии от питона (про руби еще меньше, но вот почему то он мне больше чем питон нравится, гораздо причем, хз..)

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

> Ну-ка, enterprise python в студию

Нпример Zope. Идем на entacoders.com и смотрим на кол-во проектов писанных на питоне. Да оно намного меньше чем на C/C#, но Perl я там за 3 года ваще не видел. Счас 100 строк кода портирую с PyQt3 на PyQt4 - финская система доступа к банковским данным - уже 8 лет как работает во всю. Вот еще например http://pyro.sourceforge.net/projects.html список проэктов использующих pyro питоновский аналог corba. В Google далеко не только gmail крутится на питоне. Посмотрите откуда Django появился.Тут еще можно вагон написать.......

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

Да,совсем кривые руки стали, там не 100 а 100k строк. ((

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

> т.е. взять какую нить задачу, несложную (что бы алгоритм не влиял, а то по разному могут написать) - и потестить Было сравнение Django vs Rails vs (PHP фрейм какой-то - забыл). Угадаете кто выиграл? Например все серьезные математические либы имеют привязку к питону вплоть до ROOT. То-же угадайте почему. Расшифровка генома человека делалась в основном на питоне. Есть две системы квантовомеханических расчетов на питоне (ну конечно это не чистый питон, но довольно много)- при том что их очень мало и в почти все остальные - чистый fortran.

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