LINUX.ORG.RU

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

 ,


0

0

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

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

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

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

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

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



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

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

>> я никакого anonymous тоже в debian stable не видел... по Вашей логике он тоже получается не нужен, так?

>Да, анонимус не нужен.

4.2 батенька, анонимус - доставляэ, а значит нужен. :)

а вот с репами debian это уж точно никак не нужно связывать

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

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

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

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

Все, кому надо, уже портировались, а Twisted всегда были далеки от народа.

kot_otbelivatel
()

Гвидо довел питон до плачевного состояния пытаясь сохранить обратную совместимость со старыми версиями. Сделал 3.0 и понимает что не очень-то народ и ломанулся на новую версию, потому что реально профита 0, а головной боли выше крыши.

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

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

В результате имеем, что хотя Питон3 вышел раньше Перла6 и Руби 1.9, подтягиваться к нему станут позже всего(года через 2 наверное). Потому что фишек ноль, а гиммороя караван и маленькая собачка.

А прикол в том, что Гвидо сдает, он уже не может придумать ничего концептуально нового и стухает. Собственно он был и остается самым слабым и бедным на идеи создателем ЯП-ов(одна стоящая идея с отступами и все...). Все боится, что пользователь не осилит то, да это. Вот и придумал себе отмазку, де мол мы заморозим-ка Питон 3, ибо другие не успевают. Будто бы IronPython, JPython или PyPy сейчас ориентируются на 3-ю ветку...

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

То что в Питоне есть map, reduce и filter никак не делает его функциональным языком. Одна из главных идей ФП - это немутабельность объектов. Если ты посмотришь на стандартные типы вроде списка, то практически все операции меняют сам объект, а не создают копию. Еще и постоянный геморрой ловишь, что при операции над объектом возвращается None, а не сам объект, но при этом его состояние меняется.

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

Питон уныл и постен, а остановка развития 3-ей ветки делает его еще более унылым, потому что пока все сидели на 2-й, можно было смело ломать и строить. Но, увы, не с Гвидо.

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

>Да он там только и делает, что ноет по поводу строгой типизации.

вовсе и нет.. это только один пункт... а есть и 2-я часть статьи... и там более существенные штуки...

http://www.ibm.com/developerworks/ru/library/l-python-elegance-2/index.html

не критично, конечно, но так :)

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

> Еще и постоянный геморрой ловишь, что при операции над объектом возвращается None, а не сам объект, но при этом его состояние меняется.

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

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

>Одна из главных идей ФП - это немутабельность объектов.

честно говоря, первый раз слышу... пруфлинк, пожалуйста...

и в питоне оно так и есть... читайте маны

и да, в erlang это обусловлено определёнными причинами, не более того

>Опять же, нету ни паттерн-матчинга

ну, 4.2, злостное...

http://www.wilmott.ca/python/patternmatching.html

>правильной работы со списками

опа! ну расскажите что не так

>Питон уныл и постен,

ещё один не осилил... иди поучись, а потом уже глаголь

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

>> Еще и постоянный геморрой ловишь, что при операции над объектом возвращается None, а не сам объект, но при этом его состояние меняется.

>Вот это действительно значительный косяк.

три различных примера пожалуйста...

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

Насчёт ФП, один только факт, что Python является statement-ориентированным языком уже вычеркивает его напрочь из числа функциональных. Никаким боком его к ФП не притулить из-за этого.

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

>факт, что Python является statement-ориентированным языком уже вычеркивает его напрочь из числа функциональных

поясните Вашу мысль

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

> три различных примера пожалуйста...

Давно не работал с Питоном, но навскидку в Tkinter такое сплошь и рядом. Даже в перловой обвязке сделали по уму, и там method chaining работает как ожидается. Но питонщеги видимо всё боятся, что кто то там испугается, и потому надо писать всё отдельными утверждениями в лучших традициях голимой императивщины.

anonymous
()

Как-то анонимусы стали скучно троллить.

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

Пожалуйста, идите пишите на хаскеле и лиспе (который тоже не чисто функциональный). Может даже что-нибудь полезное в реальном мире напишете.

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

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

Вы так говорите как-будто это плохо.

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

> поясните Вашу мысль

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

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

>> Одна из главных идей ФП - это немутабельность объектов.

> честно говоря, первый раз слышу... пруфлинк, пожалуйста...

In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. (педивикия)

Для начала прописываю тебе сеанс просвещения вот здесь: http://www.linux.org.ru/view-message.jsp?msgid=4086949

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

> в Tkinter такое сплошь и рядом

возможно и так, не знаю, но мы не про TkInter

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

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

> Вы так говорите как-будто это плохо.

Я так говорю, чтобы некоторые поняли, что питон весьма далёк от функциональщины. В рамках императивной парадигмы - это вовсе и не плохо. Обычный путь.

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

>В питоне все конструкции (кроме собственно чистых функций) суть императивные утверждения, а в функциональных языках всё - функции, возвращающие значения. Улавливаешь разницу?

осиль ссылку которую я приводил... там как раз и приводится методика как этого достичь в питоне

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

>In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. (педивикия)

теперь что не так с питоном... только с пруфами

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

>Я так говорю, чтобы некоторые поняли, что питон весьма далёк от функциональщины.

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

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

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

Главное то ты не упомянул - иммутабельность данных! Это единственное существенное отличие ФП от императивного подхода. Всё остальное - второстепенные детали. А функциональная декомпозиция возможна и в императивных языках уже сто лет как (в той или иной мере).

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

> теперь что не так с питоном...

Не находишь, что "avoids state and mutable data" это как то не совсем про Питон, а скорее совсем не про Питон? Да, я в курсе, что там есть immutable типы. Но какбэ ООП, на которое заточен Питон, идёт в прямо противоположном направлении.

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

именно что "не совсем про Питон"... так мы и не говорим, что он pure... чего там, даже Lisp не pure :)

>Но какбэ ООП, на которое заточен Питон, идёт в прямо противоположном направлении.

прочитайте внимательно статью... Вы её пропустили

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

Я как-то пропустил выход третьего Питона. Все произошло слишком быстро. И я не совсем понимаю в чем его инновации.
Вот второго Руби ждал еще год назад. А в итоге получили 1.9, который как бы "не стабильный", но на нет обкатываются новые фишки для второй версии. Думаю это правильно. И когда Матц решит зарелизить 2.0, куча сторонних библиотек будет уже портирована.

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

>>http://python.net/crew/theller/ctypes/

>Не надо принимать меня за пионера. Я это знаю. Интересует ctypes в стандартной библиотеке. Потому что это втягивает ctypes в альтернативные реализации. В частности, в интересующий меня Jython.

ctypes это от лукавого :) Не советую его пользовать. Полезен только на винде и только для узкого спектра задач. Да, это красиво, элегантно и не требует перекомпиляции. Но только в том случае если это кто-то пишет за вас :) Экстеншин на сях намного компактее и понятнее получается. Особенно если работа с тиклем. Производительность решений на FFI раза в два ниже чем нативного экстеншина. А от знания езыга Це ctypes не избавляет - пишем на питоне, но Це в уме.

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

> лямбда - основа ФП
> только одно выражение

> присваивание в ней указать нельзя

По-моему, ты делишь на ноль :)

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

> наконец-то великодушный пожизненный диктатор проекта заметил ...

*fix

unisky ★★
()

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

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

В общем, Гвидо молодец!

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

> ctypes это от лукавого :) Не советую его пользовать. Полезен только на винде и только для узкого спектра задач. Да, это красиво, элегантно и не требует перекомпиляции. Но только в том случае если это кто-то пишет за вас :) Экстеншин на сях намного компактее и понятнее получается. Особенно если работа с тиклем. Производительность решений на FFI раза в два ниже чем нативного экстеншина. А от знания езыга Це ctypes не избавляет - пишем на питоне, но Це в уме.

Каждое предложение - бред. При чем здесь винда? При чем здесь FFI (которое используется в основном только для callback вызовов и иногда без его замыканий просто не обойтись)? Вы, вообще, пишите обертки для тикля или для питона?

ЗЫ: Сам ленюсь и использую SWIG

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

>Что же. теперь есть повод перевести все, что возможно на Jython или IronPython.

А зачем?

А затем, что у меня все пока на 2.5, больше интересных фишек в питон не предвидится, а язык развивается в направлении, которое мне не нравится. Зато если питон поставляется с какими-то там батарейками, то жаба или дотнет с электростанцией. И несколькими языками впридачу. В итоге все, что есть у меня заработает на жабе или дотнете, а развивать дальше на более интересных языках. Тех же жабщиков или шарперов проще найти. Мне интереснее f# или scala.

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

к тому же есть скрипты для перегона.

Они не очень помогают в некоторых случаях.

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

>Не знаю как вы, а я, чем больше языков изучаю, тем больше люблю цпп, как-то прозрачно и роднее.

Не знаю как вы, но я, изучив не очень много языков, остался верен чистому Ц... впрочем для "быстрого" кодинга питон подходит лучше...

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

>Главное то ты не упомянул - иммутабельность данных! Это единственное существенное отличие ФП от императивного подхода.

Да в пень вас обоих - тебя и shty!... Ладно пока иммутабельность была "одним из основных" характеристик. А теперь уже единственная... ЕТМ! Функции как FCO, лямбды (как следствие первого), ФВП - опять-же следствие первого. А обязательная иммутабельность в мультипарадигменном языке - нонсенс.

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

>> Не знаю как вы, а я, чем больше языков изучаю, тем больше люблю цпп, как-то прозрачно и роднее.

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

Давно замечаю такую тенденцию любители Ц/Ц++ любят так же и Питон, и обратное так же верно ))) Интересно с чем это связано, вроде бы ничего общего.

Мнение любителей функциональных языков на это, НЕНУЖНО.

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

>Мнение любителей функциональных языков на это, НЕНУЖНО.

Ну, раз "ненужно" - значит и не будет. Хочу лишь заметить, что самоанализ сливает стороннему анализу "по определению".

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

>> Мнение любителей функциональных языков на это, НЕНУЖНО.

> Ну, раз "ненужно" - значит и не будет. Хочу лишь заметить, что самоанализ сливает стороннему анализу "по определению".

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

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

> единственный язык который позволяет вполне нормально использовать функциональный стиль, объектный и процедурный

То же самое можно сказать и про Ruby.

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

http://www.wilmott.ca/python/patternmatching.html

Это что угодно но не FP pattern matching.

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

val TextR = """([\w\s]+)""".r // регексп

val ls = List[String] ("aaa", "12345")

def findText (text: String): Option = {
   ls.find {s => s == text} match { // ищем совпадение
    case Some(x) => { x match {
        case TextR(t) => return Some(t) // совпадение с регеспом
                                        // и выделение содержимого  
                                        // скобок 
        case _ => return None
      } 
    }
    case None => return None 
   }
}
Darkman ★★★
()
Ответ на: комментарий от kto_tama

нету кэйзов в питоне

Это не тот case который switch. Это то что в окамле:

match e with
  A -> ...
| B -> ...
| C -> ...
Darkman ★★★
()
Ответ на: комментарий от AngryElf

>perl6 нету

даже в дебиан есть, ваша гента катится куда то не туда ;]

hizel@hzwork:~$ apt-cache search 'perl 6'
<skip>
parrot - A virtual machine for dynamic languages
rakudo - implementation of Perl 6 for Parrot


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

Еще и постоянный геморрой ловишь, что при операции над объектом возвращается None, а не сам объект, но при этом его состояние меняется.

WTF?

class A():
    def a(self):
        return self

	
>>> a = A()
>>> a.a()
<__main__.A instance at 0x00C52468>
>>> a.a().a()
<__main__.A instance at 0x00C52468>
>>> 
elio
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.