LINUX.ORG.RU

Гвидо Ван Россум предложил заморозить состояние языка Python

 ,


0

0

Гвидо Ван Россум, автор языка программирования Python, предложил заморозить его грамматику и семантику на несколько лет. Основная причина заключается в том, что частые изменения в языке вызывают много головной боли у разработчиков альтернативных реализаций языка Python: Jython, IronPython, PyPy и т.д. без каких-либо преимуществ для конечного пользователя.

Гвидо ван Россум:

Основной целью сообщества разработчиков языка на данный момент должно стать дальнейшее продвижение Python3000.

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

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

>>> Оригинальное письмо в рассылке



Проверено: maxcom ()
Ответ на: комментарий от x86_64

> Решение - не верное. Обойдут конкуренты.

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

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

> Эк его кидает - то совместимость поломал, то наоборот...

Всё совершенно логично. Поломал - теперь даёт время всем подтянуться.

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

> вместо циклов юзать хвостатую рекурсию

Хвостовая рекурсия не нужна. Делайте уже нормальные циклы.

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

> Собственно он был и остается самым слабым и бедным на идеи создателем ЯП-ов(одна стоящая идея с отступами и все...).

Он просто очень осторожно всё внедряет.

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

> Да что там говорить, лямбда - основа ФП, является просто УГ в питоне, потому что обрезана по самые яйца. Мало того, что можно поставить только одно выражение, так например элементарное присваивание в ней указать нельзя.

И это правильно. Потому что достаточно крупный код будет плохо смотреться. Выносите в именованную функцию.

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

>Это не тот паттерн матчинг

а мужчина не конкретизировал, линков не приводил... вот я его немножко и потроллил :)

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

>ctypes это от лукавого :)

ctypes - это прекрасно, когда надо позвать 10 нативных функций какого-либо проприетарного говна или WinAPI. Связываться с экстеншеном и компилятором в этом случае - полный идиотизм. Да еще и паковать это все в какой-то дистрибутив. А тут - один скрипт и все.

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

> И это правильно. Потому что достаточно крупный код будет плохо смотреться. Выносите в именованную функцию.

Бред. За каким дьяволом в коде List.filter {...} я должен выносить {...} в отдельную именованную функцию ? Что она (функция) здесь забыла ?

Darkman ★★★
()

Гвидо Ван Россум предложил заморочить состояние языка Python

subj fixed

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

>Воспроизведите на питоне такой вот абстрактный код

встроенных конечно нет таких средств... но допилить их несложно, насколько я могу оценить вот тут сделано вроде так: http://home.in.tum.de/~bayerj/patternmatch.py

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

http://home.in.tum.de/~bayerj/patternmatch.py

Как минимум нет такого:

val willWork = List(1, 3, 23, 90)
val willNotWork = List(4, 18, 52)
val empty = List()

for (l <- List(willWork, willNotWork, empty)) {
  l match {
    case List(_, 3, _, _) => println("Four elements, with the 2nd being '3'.")
    case List(_*) => println("Any other list with 0 or more elements.")
  }
}

def processList(l: List[Any]): Unit = l match {
  case head :: tail => 
    format("%s ", head)
    processList(tail)
  case Nil => println("")
}

Плюс не проверяется полнота случаев.

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

>ctypes - это прекрасно

Уважаемые господа анонимусы (отвечаю сразу всем) Вы явно мало работали с этой технологией. Иначе бы не делали глупых заявлений (это прежде всего первого анонимуса касается). Технология FFI - foreign function interface, то бишь вызов функции по ее имени из динамической библиотеки. Беспорно, в отдельных случаях, это действительно красивое и классное решение. Но заявлять "будем пользовать ctypes везде!" сродни лозунгам "перепишем все на java".

Я неслучайно так говорю - отработал достаточно времени в тиме JNIWrapper - это аналог ctypes для java. Так что плюсы и минусы знаю не по наслышке. Почему на винде полезно? Да просто WinAPI на сях (а технология ctypes именно для сишных либ, плюсовые они не поддерживают) и не меняется уже много лет. В линуксе вы сможете вызывать только Gtk функционал ну и базовые либы (freetype, cairo и т.п.). При этом никто вам не гарантирует стабильность АПИ ни в Gtk ни в других либах, поскольку они постоянно развиваются. Кеды и кути - мимо тазика, они на плюсах. Макось - туда же. Интерфейс там на Objective C.

При этом, простота ctypes обманчива. Это до первой сложной структуры. Как только опишите парочку структур с 20-30 членами - ваше мнение сразу поменяется. На сях то это просто одна строчка, а на ctypes - тучная туча кода (практически кусок синшого хедера в питонском исполнении).

Как у нас в тиме шутили - данная технология сродни вырыванию гландов через задницу ))))

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

> Как только опишите парочку структур с 20-30 членами - ваше мнение сразу поменяется. На сях то это просто одна строчка, а на ctypes - тучная туча кода (практически кусок синшого хедера в питонском исполнении).

Для этого есть автогенерилка описаний на основе gccxml, юзаю давно, проблем не имею. http://pypi.python.org/pypi/ctypeslib/

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

Есть, и для JNIWrapper'а тоже есть (http://teamdev.com), только они не решают всех проблем. Часто структуры имеют достаточно много уровней вложенности. Попытайтесь напр. сделать эквивалент структуры MagickWand из ImageMagick ;) У вас такой кабан получится на питонской стороне шоппц. А в сишном экстеншине это будет одна строчка - остальное за вас сделает компилятор.

И опять же, в отличии от Java, у питона зачотные сишные интерфейсы. Плюс отличная система сборки, позволяющая легко собирать нативные расширения на любой платформе.

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

>>Да в пень вас обоих - тебя и shty!...

>а меня то почто, боярин? :)


Под руку подвернулся... =)

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

>юзаю давно, проблем не имею

Вызывающе ложная информация. Поскольку:

1.Сам codegen появился недавно.

2.Как пишет аффтар: "There is not yet an official release..." Поверьте, баги там есть. Они не могу те быть. Я просто из опыта говорю. А когда вам нужно поправить неверно сгенеренный код перелопатив 200-300 kb _питонских_ сорцов (а сгенеренный код - это почти как код после обфускации) - приятного в таком мало.

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

> вот я его немножко и потроллил :)

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

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

Я вижу, что ты еще молодой, и пытаешься чего-то защищать этот язык, при этом не зная других. Зачем спорить об ФП, если ты даже не знаешь что это? Посмотри другие языки. Можно Эрланг, можно Камль или тот же Хаскелл. Тогда тебе даже не придет в голову, что питон как-то там дает возможности ФП. Есть какие-то обрубки, но не больше.

Как введение есть две хорошие книжки по Хаскеллу в онлайне: http://learnyouahaskell.com/ http://book.realworldhaskell.org/read/index.html

Почитай хотя-бы первую и больше не будешь участвовать в таких беспредметных спорах.

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

> И это правильно. Потому что достаточно крупный код будет плохо смотреться. Выносите в именованную функцию.

Даже в твоей любимой Луа есть полноценные анонимные функции. А все JavaScript-овые фреймворки(JQuery, Prototype) просто кишат их использованием. В Руби самая вкусная часть реализована на них, не говоря уже про всякие функциональные языки. Что там говорить, даже самое УГ - PHP с версии 5.3 поддерживает их(хотя и с небольшой долей кальца...).

Но ты за два года так и не понял что это нужно? То что, Гвидо не понял за десять, меня не удивляет. Я давно заметил что он тугодум. Может когда он посмотрит на Boo или когда в Яве их реализуют нормально, тогда и он подтянется.

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

WTF?

a = [5,2,3,1,4] a.sort().reverse() # ups...

Деструктивное изменение + возвращение None, вместо интуитивно ожидаемого возвращения self.

В результате: Во-первых постоянно приходиться следить, чтобы не поменять список, и оператор [:] становиться твоим лучшим другом. Во-вторых цепочечные операции всегда разбиваешь на отдельные строки, потому что почти все возвращает None, что работает со списками. В-третьих, для дефолтного значения в функции нельзя использовать список, потому что он будет шариться между всеми вызовами функций и получишь много unexpected experience.

И таких маленьких косячков в Пыхтоне на каждом шагу.

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

a = [5,2,3,1,4] b = reversed(sorted(a))

> и получишь много unexpected experience. > И таких маленьких косячков в Пыхтоне на каждом шагу.

Это задокументированные особенности. Спотыкаются о них только полные новички.

И да, питон позволяет писать в функциональном стиле.

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

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

>Это задокументированные особенности. Спотыкаются о них только полные новички.

Ну я бы сказал, что запись a.sort().reverse() больше джавообразная. :)

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

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

Судя по Вашим разглагольствованиям, Вы знаете не питон, а то чем он отличается от {вставьте-что-хотите} иначе Вы не говорили бы об ограниченности питона.

Питон, чтобы Вы знали, как раз позволяет вполне гибко подходить к написанию кода (чему мультипарадигменность весьма способствует). Это в отличие от Haskell и Erlang, которые довольно жёстко диктуют в каком стиле писать код.

Круче питона в данном аспекте, пожалуй только Lisp. Но у него свои нюансы.

>Я вижу, что ты еще молодой,

баба Ванга?

>Как введение есть две хорошие книжки по Хаскеллу в онлайне

вот за книжки спасибо :)

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

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

И да, максимализм - он свойствен "вьюношам" со взглядом горячим. не палитесь. :)

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

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

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

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

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

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

> Функции как FCO ...

Ещё один, забывший математическое определение функции. Грош цена твоим FCO, если нельзя для них сайд-эффекты запретить на уровне компилятора.

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

мсье, подскажите пжалста, а где ваш окэмел реально используется? Парадигма крутая, но где практический выхлоп (распальцовка на ЛОРе - не считается)?

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

> В любом случае все как сидели, так и сидим на 2.5 - 2.6

Py2.5 (Debian 5, Mac OS 10.5), кое что на Py2.4 (Debian 4). Всё работает и совместимо между Маком, Линуксом и Питонами.

Вскоре с уже вышедшим Mac OS 10.6 и разрабатываемым Debian 6 будем начинать тестирование продуктов на Py2.6.

Py3.0 и Py3.1 - без сторонних модулей бессильны. Необходимо морозить, а то разработчикам не угнаться. Некоторые модули только недавно статуса Py2.6 достигли.

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

> Воспроизведите на питоне такой вот абстрактный код :

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

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

> Будто бы IronPython, JPython или PyPy сейчас ориентируются на 3-ю ветку...

Если Гвидо не остепенится (что он вроде как понял), то Py3 не включат ни в Debian 7 ни в Mac OS 10.7 года через два, что будет печально для Py3.

Хотя Py2.7 тоже обещали... То есть Питон конкурирует сам с собой.

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

+1 Для sK1 в нативых экстеншинах пришлось немного править. Но это даже не с 2.6 проблемы а с тиклем. Чисто питонский код не правили ваще (а в code base есть код которому уже >10 лет стукнуло).

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

ну вот... че-то стеснительные анонимусы пошли. Как в православном порыве сопли пузырями надувать - дык завсегда. Как про применение ихней крутизны спросишь - сразу стесняются аки красны девицы ))))

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

Вам рассказать, где применяются языки функционального программирования? У вас Гугл забанили? Ну не знаю, почитайте хотя бы второй номер журнала "Функциональное программирование". Опять же, F# в Майкрософт пилят не ради научного интереса. Есть интересные применения Ocaml и Scala при построении сложной бизнес-логики. Про Lisp и Erlang найдете сами. Пересказ в число бесплатных услуг не входит.

Капча: comfortable pedantic

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

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

Кое что всё-таки изменилось, хоть по отношению ко второй ветке и немного:
http://docs.python.org/dev/whatsnew/2.6.html

Что точно не раз встречал: "String exceptions have been removed.".

CherryPy пришлось адаптировать, так как в Py2.6 метод "setDaemon()" сменился на свойство "daemon" в модуле "threading":
http://www.cherrypy.org/changeset/2096
Других примеров не искал.

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

Можно и далее по тикетам CherryPy (и других модулей) пробежаться и пару моментов несовместимости обнаружить.

С версии Py2.6 только на Винде отсутствует одна из констант IPV6 в модуле sockets:
http://www.cherrypy.org/changeset/2543

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

> Вам рассказать, где применяются языки функционального программирования?

Вопрос не ко мне, но что это даст? Больше проектов? Более скоростное выполнение заданий? Уважение от клиентов?

> Опять же, F# в Майкрософт пилят не ради научного интереса.

Кто бы в этом сомневался.

> Есть интересные применения Ocaml и Scala при построении сложной бизнес-логики.

У Питона более широкий круг применения.

> Про Lisp и Erlang найдете сами.

Писал пару лет на Lisp-е, очень интересно, но мало практично.

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

>Вопрос не ко мне, но что это даст?

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

>У Питона более широкий круг применения.

1) Что это значит? 2) Если это означает количество батареек, то у F# и Scala их не меньше. И качество этих батареек, как правило, значительно выше. 3) И в Ocaml, и в Scala можно применять и ООП, и императивное программирование. 4) Если вы о скрипах, то современные компилируемые языки обеспечивают их комфортную разработку, при этом, избавляя разработчика от стремных сайд-эффектов, связанных с динамикой.

>Писал пару лет на Lisp-е, очень интересно, но мало практично.

Очень смелое утверждение. Если вы про батарейки, посмотрите на Clojure.

Больше того, люди часто пишут на Лиспе, сами того не замечая: http://lionet.livejournal.com/43152.html

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

> Как в православном порыве сопли пузырями надувать - дык завсегда. Как про применение ихней крутизны спросишь - сразу стесняются аки красны девицы

Да понимаешь, я просто устал уже от таких вопросов. Окамл, Ерланг, Хаскел используются по назначению много где. Но вас примеры никогда не убеждают, сразу начинаете брызгать слюной: "а покажите браузер на Окамле, покажите офис на Хаскеле". Зачем вас переубеждать, считайте дальше, что фп-языки никому не нужны. С точки зрения мейнстрима, кстати, ваш питон, а тем паче тикль (при всём уважении к этому языку) - такая же маргинальная байда.

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

надо не писать параграф про аццкую усталость, а дать одну-две ссылки. Коих я не наблюдаю :) Касательно F# - в МС много всякой байды пишут и все сплошь "новатОрское и ынтырпрайзое"... правда вспоминают про эту писанину через 3-4 года далеко не все и то по подпитию или с жесткого бодуна.

Относительно "маргинальной байды" - если один из ваших любимцев всетки дорастет до уровня "байды" по использованию, я явственно вижу как местные поклонники будут с транспарантами закапывать на ЛОРе Це/Цехх/жабу и пр. маргинальшину :)

Это не упрек в сторону ФП. Просто не нравится, когда с видом вселенского гуру вещают граждане, в бытность на работе педалящие на брутальном пыхпыхе или жабе.

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

и еще... тот же окемел 85го года разлива. Старше питона на 6 лет. Разрабатывался институтом, а не одиночкой Гвидо. И где справедливость??? Доколе эта красота не будет использоваться повсеместно?

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

>и еще... тот же окемел 85го года разлива. Старше питона на 6 лет. Разрабатывался институтом, а не одиночкой Гвидо. И где справедливость??? Доколе эта красота не будет использоваться повсеместно?

Порефлексируйте, поправьте очки и жахните еще пару идиотских камментов. Я начал писать на Питоне с версии 1.5. Тогда это было новаторство. Все тогда ходили с умном видом типа вашего и пожимали плечами, называя его маргинальной поделкой одиночки. Прошло время. Что мы видим? Питон используется во многих крупных проектах. Ну из последних - Google Wave. Что на это скажут те снобы? Так и со, скажем, Ocaml и Scala. Индустрия должна созреть. Созреет - появится взрывной интерес. Нечто подобное уже наблюдается по отношению к Erlang, который начинает заполнять ту нишу, для которой предназначен. Да и к первым двум интерес возрастает с ростом интереса к DSL.

Да, и не забывайте, что и традиционные языки очень сильно эволюционирут. Java образца 1998 абсолютно не похожа на Java образца 2009. Там кроме скобочек и тривиальных операторов ничего и общего-то нет. Тоже самое и с Питоном. P1.5 и P3 - это разные языки программирования. Что показывает наивность изначально заложенных в эти языки принципов. Ocaml с тех пор, как концепция, как язык, эволюционировал не особо сильно.

Вы ссылок хотели? Ну пожалуйста:

http://cufp.galois.com/2008/slides/SymeDon.pdf http://pchiusano.blogspot.com/2009/08/scala-success-story-commercial-usage-of... http://fprog.ru/2009/issue2/

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

Почитали? Продолжим?

>Относительно "маргинальной байды" - если один из ваших любимцев всетки дорастет до уровня "байды" по использованию, я явственно вижу как местные поклонники будут с транспарантами закапывать на ЛОРе Це/Цехх/жабу и пр. маргинальшину :)

Теперь по поводу Це/Цехх. Например, такие ссылки:

http://lionet.livejournal.com/33547.html

http://lionet.livejournal.com/37311.html

http://lionet.livejournal.com/37805.html

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

> CherryPy пришлось адаптировать, так как в Py2.6 метод "setDaemon()" сменился на свойство "daemon" в модуле "threading":

setDaemon()/isDaemon() из 2.6 никуда не делись.

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

> Erlang, который начинает заполнять ту нишу, для которой предназначен

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

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

Глупость какая! Erlang прекрасно взаимодействут с Java. И какие библиотеки нужны в системе обработки банковских транзакций?

А с библиотеками все прекрасно, наверно, в Perl. На CPAN их over 9000 и ни одной нормальной. Абсолютно тоже самое можно сказать про PHP. Без слез смотреть невозможно. С Питоном ситуация немного другая, но не принципиально лучше.

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

>Ещё один, забывший математическое определение функции.

Нет бога кроме Аллаха, и языка кроме Хаскела...

yyk ★★★★★
()

<Не холивора ради, а токмо с целью удовлетворить любопытство =)>

Я совсем не знаю ФП (тока в Википедии почитал про него=), но очень интересно понять про лямбда-выражения: почему они удобнее нежели обычные функции и где их лучше применять и когда? И в чём их "глубинный смысл"? ;-)

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