пятница, 23 октября 2009 г.

[comp.prog.flame] Заморозят ли развитие языка Python

Новость с OpenNet.ru:

Гвидо ван Россум (Guido van Rossum), великодушный пожизненный диктатор проекта Python, предложил сообществу разработчиков прекратить внесение изменений в грамматику, семантику и встроенные функции языка Python в течение нескольких лет. В качестве причин необходимости заморозки языка называется желание дать возможность создателям альтернативных реализаций языка Python, обеспечить в своих продуктах полную совместимость с классическим CPython.

Вот это я понимаю, вот это правильно. Пока толпы(?) глотающих слюну приверженцев D и Scala с вожделением ждут, когда же их любимые языки устаканятся и придут в состояние enterprise ready, язык Python будет тихо и незаметно использоваться в сотнях и тысячах новых приложений.

Помнится, около двух лет назад, когда в news-группах языка D стали обсуждать выделение ветки D 2.0, не совместимой с D 1.0, я там писал, что это плохо. Что должен быть период в 3-4 года, чтобы появились приложения и инструменты для D 1.0. Что при наличии перспективы выхода версии 2.0 нет серьезных стимулов писать что-то под D 1.0. Тогда этому много возражали. И что в итоге? Где приложения на D? И это не смотря на то, что релиз 1.0 был более двух лет назад. Даже Tango 1.0 так и не вышла… Редиски, короче.

И вот Гвидо говорит о том, о чем я когда-то говорил разработчикам D. Еще бы кто-нибудь сказал об этом Мартину Одерски и Co.

18 комментариев:

Rustam комментирует...

Да интересно, я проморгал, работы много. Вообще в отличии от большинства разработчиков языков Гвидо работает, да и всегда работал и как обычный разработчик, так как не все время посвящает именно развитию питона, но и сам на нем немало пишет, так что по идее он самый прагматичный из языкостроителей :)

eao197 комментирует...

Боюсь, ты пристрастен. По имеющимся у меня слухам, такими же качествами обладали и Страуструп, и Гослинг, и Матцумото, и Хейлсберг, и Лари Уолл.

Наверное поэтому их языки как раз очень прагматическими и являются :)

Rustam комментирует...

Ну не знаю, Страуструп по моему уже давно нет, да и Вальтер Брайт похоже тоже :(

Гослинг и Хейлсберг кажется только над языками работают.

eao197 комментирует...

AFAIK, когда Страуструп работал в Bell Labs, он не только C++ом занимался, но и разным моделированием (решая это дело как раз на C++).

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

Про Хейлсберга не знаю, принимал ли он участие в разработке .NET Framework-а, или же только компилятором занимался.

Rustam комментирует...

Ну так вопрос в том чем они сейчас занимаются :)

eao197 комментирует...

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

Судя по тому, что Java 7 никак не выйдет, Гослинг уже ничего не программирует. Но раньше-то, когда Java еще дышала, он был действующим программистом :)

Skynin комментирует...

Судя по тому, что Java 7 никак не выйдет
Почему ж никак, если беты выходят регулярно download.java.net/jdk7/binaries/, а кандидат релиз запланирован на февраль. - openjdk.java.net/projects/jdk7/calendar/

Там другие проблемы, после утрясок и согласований были оставлено немало идей для Java 8. Как раз руководствовались тем же - если что так спорно, то "размораживать" ли джаву? И решили что не стоит. Консерваторы бюрократы вобщем. Из последнего что слышал, зарубили Swing Application Framework как стандартный, "сырой" мол.

eao197 комментирует...

2Skynin: ну это больше мой сарказм на тему того, что принадлежащий всего одной корпорации язык вдруг так замедлился в своем развитии. Ладно, когда комитет C++0x уже шесть лет ваяет, там понятно. А вот почему с Java заминка? Да еще переход из Sun в Oracle... Как в анекдоте "Герасим, куда ты меня везешь? Чего ты молчишь? Ты что-то от меня скрываешь?" ;)

Skynin комментирует...

А вот почему с Java заминка?
1. Консервативность, с которой берет пример Гвидо. Минимум потому что кроме Sun еще 2 корпорации вложились в реализацию стандартов языка, VM и байткода.
2. Потому что сам ЯП не критичен. Я потому хоть и читаю, все эти разговоры о ФП, D, споры о компактности кода, об "удобстве написания циклов", улыбаюсь. Та же Sun вложилась в массу технологий и продуктов основанных на существующих стандартах. Поэтому каждое крохотное изменение, новшество, обсуждается и обсматривается долго. И то, на Java 4 продолжают работать системы, и переходить мечтают, да дорого.
3. И в чем - заминка, вот что не пойму. Гвидо меряет годами заморозку. Тоже будем объявлять заминкой, если прислушаются?

Да еще переход из Sun в Oracle...
Главное, при такой серьезности Java - чтобы последний релиз не датировался прошлым годом. Главное это исправление ошибок, проблем совместимости с ОСями и другим новым ПО. А не добавление фич в ЯП потому что кодеры-студенты - вздыхают :)

ну это больше мой сарказм
Да я понял :) В Java как и в Windows - плюнуть признак хорошего тона :)

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

eao197 комментирует...

2Skynin: а мне кажется, что у того, что остановилось в развитии, нет будущего. У людей есть странная особенность -- они хотят чего-то нового. Постоянно хотят. Уж казалось бы, сколько хорошей рок-музыки было сделано в 1970-1980-х. Но для многих это уже ретро. Сколько фильмов было хороших сделано. Но они уже ретро. Что-то меняется вокруг нас, ритм жизни, язык, стиль... Все это должно находить отражение в том, что мы используем. В том числе, и в языках программирования.

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

Даже долгострой в виде C++0x все равно вот-вот привнесет в язык очень серьезные изменения. А то, что Java этого не делает (ну, точнее, делает медленно), говорит о том, что Java рискует стать современным COBOL-ом. Да, это может обеспечивать нас средствами на жизнь, но это все равно останется ретро. Хорошо это или нет, но ретро...

Skynin комментирует...

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

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

У людей есть странная особенность -- они хотят чего-то нового.
При этом изменяющееся будущее их страшит :) До панической кататонии.

Но мир не стоит на месте.
Тоже вопрос философский:
"Что было, то и будет, и нет ничего нового под солнцем"

Java рискует стать современным COBOL-ом. Да, это может обеспечивать нас средствами на жизнь, но это все равно останется ретро.
Мне активность развития C# тоже больше импонирует (кстати на форумах, те самые студенты якобы жаждущие нового жалуются нередко - не успел освоить 3.5 а тут уже вникай фичи 4.0), критика джавы - по бОльшей части психологический феномен. То же "ретро" - эмоциональная оценка.

А вот сравнение "Даже долгострой в виде C++0x" - совсем не корректно. Потому C++0x пока полная фикция. Его судьба даже после появления компиляторов для основных платформ - не известна. Может оказаться что он будет никому не нужен (как не нужен всем даже С++, и пишут на С) А джава - тягловая лошадь. Таким количеством ПО, которое развивается может похвастать только C/C++.

Психологический феномен даже в коротком нашем обсуждении. Тот человек что написал:
Пока толпы(?) глотающих слюну приверженцев D и Scala с вожделением ждут, когда же их любимые языки устаканятся и придут в состояние enterprise ready
к джава применяет другой принцип:
мне кажется, что у того, что остановилось в развитии, нет будущего

Так какой же вывод сделаем о предложении Гвидо - он решил превратить Python в ретро-cobol?

eao197 комментирует...

Остановки развития джавы я и не приметил :)

Последние серьезные изменения непосредственно в языке были сделаны осенью 2004-го года. Т.е. пять лет назад. При этом Java всего лишь более-менее приблизилась по возможностям к конкурентам (generic-и дали хоть какое-то подобие шаблонов C++, коим на тот момент уже было больше десяти лет). С тех пор развития Java как языка (а не как платформы) я не вижу.

Психологический феномен даже в коротком нашем обсуждении. Тот человек что написал:
"Пока толпы(?) глотающих слюну приверженцев D и Scala с вожделением ждут, когда же их любимые языки устаканятся и придут в состояние enterprise ready"
к джава применяет другой принцип:
"мне кажется, что у того, что остановилось в развитии, нет будущего"


Нет, принцип один и тот же. Проблема с D/Scala в том, что они не могут выйти на первый более-менее стабильный релиз. А у Java проблема в том, что последний стабильный релиз именно языка был очень давно.

Так какой же вывод сделаем о предложении Гвидо - он решил превратить Python в ретро-cobol?

Мое мнение таково: язык программирования должен модернизироваться не чаще, чем раз в 3 года и не реже, чем раз в 5 лет. От 3 до 5 лет стабильности вполне достаточный срок для того, чтобы люди решились на разработку серьезных приложений на этом языке. Если язык изменяется чаще -- он опасен, собственный код будет устаревать быстрее, чем хочется. Если язык изменяется реже, то это заставляет программистов при написании нового кода использовать старые приемы. (При этом важно, чтобы новые релизы языка имели очень большую долю совместимости с предыдущими. Для ломающих совместимость релизов временные отрезки должны быть гораздо больше).

С Python-ом в последние годы ситуация была простая -- он очень динамично менялся. Выход Python3K -- это очень серьезно. Поэтому сейчас нужно дать разработчикам приложений года 3 (а то и больше), чтобы они могли спокойно перейти на Python3K. А вот Java дала разработчикам уже 5 лет. Мне кажется, что это многовато. Можно глянуть на пример C++.

Skynin комментирует...

С тех пор развития Java как языка (а не как платформы) я не вижу.
Теперь понятней.

Программирование, как отрасль, давно уходит от чистых ЯП к "платформам" (от натива, к комплексам технологий вокруг управляемого ЯП). Недостатки Java как языка, с лихвой окупаются качествами JVM и всего стека технологий.
Более понятно: как развивается ЯП 1С? И кого это волнует, если развивается - платформа?

Здесь и приходим к тому что споры о ЯП - частенько сугубо академические, не влияющие на их путевку в жизнь. Но если еще и сам ЯП сегодня такой, а завтра другой, то кто ж такому ветренному вверит серьезное?

Развитие же джавы подчиненно реальному спросу на нее - http://en.wikipedia.org/wiki/Java_version_history
а не академическому заказу, или потребности в лестных отзывах "программерской тусовки"

Б. Эккель в своем блоге вообще высказался - развитие ЯП Java, может быть, стоить прекратить полностью, чтобы она не превратилась в "С++", а развивать платформу, где Java будет выполнять роль системного ЯП (типа С), а программист будет выбирать из Scala, jRuby, Clojure, и т.д.

язык программирования должен модернизироваться не чаще, чем раз в 3 года и не реже, чем раз в 5 лет. От 3 до 5 лет стабильности вполне достаточный срок для того
Моя "рефлекторная" реакция на слово "должен" - никто ничего никому не должен.

В данном случае - Каждая последующая модернизация ЯП будет происходить все реже. Или (то же самое): в каждой последующей модернизации ЯП - серьезность изменений будет все меньше.

Возраст Java уже к этому и привел. Как и других ЯП. Как и уже и изменения в С# 4.0 в сравнении с C# 3.0 (сравним изменения С# 1.1 и С# 2.0, 2.0 и 3.0)

eao197 комментирует...

Более понятно: как развивается ЯП 1С? И кого это волнует, если развивается - платформа?

Платформа хороша для нишевых продуктов. Для универсальных языков программирования ситуация иная. На ЯП 1С не пытаются делать игры и не запихивают его в платежные карты.

Б. Эккель в своем блоге вообще высказался - развитие ЯП Java, может быть, стоить прекратить полностью, чтобы она не превратилась в "С++"

Превращение в "С++" -- это удел любого успешного языка. Наслоение множества новых возможностей на старый язык можно видеть везде -- COBOL, FORTRAN, C++, Ada, Java, C#. В этом смысле разве что C остается более-менее стабильным, но это, вероятно, как раз следствие нишевости.

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

Возраст Java уже к этому и привел. Как и других ЯП. Как и уже и изменения в С# 4.0 в сравнении с C# 3.0 (сравним изменения С# 1.1 и С# 2.0, 2.0 и 3.0)


Все это так, но в случае с Java мы видим, что он стартовал как абсолютно убогий язык. По своим языковым возможностям даже C++ его уделывал только так (чего стоили массивы, в которых хранились object-ы, и необходимость постоянных cast-ов). В Java 1.5 язык только-только довели до ума, по большому счету. И вот здесь бы пойти дальше, закрепить успех. Сделать для новых разработчиков Java хотя бы такой же привлекательной, как C# 3.0. Но ведь этого нет.

Моя "рефлекторная" реакция на слово "должен" - никто ничего никому не должен.

В ситуации "производитель-потребитель" как раз должны. Потребители должны сохранять верность производителю, производитель должен удовлетворять потребности потребителей. Иначе их отношения разорвутся.

Я как смотрю на вещи: вот представится мне возможность уйти с C++ (гипотетически). Куда идти: есть только Java и C#. На Java не хочется, т.к. язык убогий (а в Scala/Closure и polyglot programming я не верю). Остается C#. Так что, если не будет серьезных требований по кроссплатформенности, то выбор для меня предрешен.

Skynin комментирует...

Для универсальных языков программирования ситуация иная.
ИМХО - эпоха универсальных языков прошла. Нет у айти отрасли уже потребности в них.

На ЯП 1С не пытаются делать игры
На Java - тоже, и драйвера писать не думают.

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

но в случае с Java мы видим, что он стартовал как абсолютно убогий язык
А каков C# 1.1, это ж просто недоразумение :)

Сделать для новых разработчиков Java хотя бы такой же привлекательной, как C# 3.0. Но ведь этого нет
Потому что нет спроса. История с D для меня показатель того, что к комьюнити энтузиастов - применимы такие же правила развития. Энтузиазм проходит, а до дела не доходит.
Новые же разработчики смотрят не на качества языка Java vs C# - а как раз на платформу, то что выходит за область просто ЯП.

В ситуации "производитель-потребитель" ... Иначе их отношения разорвутся.
Тогда с Java полный порядок :) См. Java Community Process - вот откуда возникло замедление изменений в ЯП Java. (для примера - JSR #14
Add Generic Types To The JavaTM Programming Language
Community Draft Ballot
)
Эти то серьезные дядьки, в виде айбиэмов с ораклами и тормозили развитие чтобы вкладывать деньги.

Да, и еще Sun бросила силы на JavaFx в последние года.

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

Остается C#. ... если не будет серьезных требований по кроссплатформенности ... выбор для меня предрешен.
Тут полностью согласен, если добавить еще одно если:
если не будет требований к цене используемых ПО и технологий.

C# как язык, однозначно богаче Java. А учитывая возможности CLR: unmanaged участки кода, P/Invoke на уровне синтаксиса и обертки вокруг вызовов API ОСи для GUI - то и игрушки писать можно :) Драйвера, по прежнему нет, то есть C# уже тоже не универсальный ЯП.
Но волнует ли кого "универсальность", если для драйверов(или критичных по эффективности модулей) есть C/C++ ?

Не на форумах, а в практической жизни программиста.

eao197 комментирует...

ИМХО - эпоха универсальных языков прошла. Нет у айти отрасли уже потребности в них.

У меня на этот счет прямо противоположное мнение :)

На ЯП 1С не пытаются делать игры
На Java - тоже, и драйвера писать не думают.


На Java пишут много игр. Подавляющее большинство для мобильных платформ. Не уверен на счет PC и PlayStation.

Сделать для новых разработчиков Java хотя бы такой же привлекательной, как C# 3.0. Но ведь этого нет
Потому что нет спроса.


Много разговоров вокруг Scala как раз показывает, что Java многим не нравится. Но на JVM хочется остаться.

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

История с D особенная -- там сам автор не знает, чего хочет.

Java Community Process -- язык переходит в разряд коммитетстких языков ;)

Но волнует ли кого "универсальность", если для драйверов(или критичных по эффективности модулей) есть C/C++ ?

Не на форумах, а в практической жизни программиста.


Думаю, что волнует. Писать на нескольких языках сложнее, чем на одном. Поэтому многие будут стараться выбрать язык, на котором можно делать все. Имхо, конечно.

Skynin комментирует...

У меня на этот счет прямо противоположное мнение :)
Смотрим TIOBE, добавляем колонку - дата создания (или дата попадания в TIOBE, или "дата реальной известности"), сортируем, и смотрим где окажутся универсальные ЯП.

На Java пишут много игр. Подавляющее большинство для мобильных платформ.
Потому что там больше не чем писать :) Это не от качеств Java, а от ее - коммитетности, нокии с моторолами в JCP также учавствуют.

Много разговоров вокруг Scala как раз показывает, что Java многим не нравится.
Мы опять приходим к вопросу - в каких кругах? Насколько репрезентативны эти круги?

То что ЯП Java, в чистом виде отстает от ЯП C# в чистом виде - согласен. Причина - главным участникам развития языка - это не нужно. (ну и возраст, см мой тезис о замедлении)

язык переходит в разряд коммитетстких языков ;)
Он давно уже там. На на дату приведенного JSR 14 посмотрите. Для того и привел, чтобы указать - кто заказчики изменений в ЯП Java. Это - отнюдь не академические или студенческие круги.

Думаю, что волнует.
Большинству программистов мира универсальность ЯП не нужна, потому что универсалов которые пишут и драйвера и "склады" - практически нет. в 70ых - такой явной специализации считай и не было. Сейчас - поискать придется java программиста добротно знающего тройку серверов приложений.

Разделение на системных и прикладных программистов произошло еще в прошлом веке. Интересы первых, как понимаю, айти отрасль уже и не напрягается удовлетворять - "есть у вас С/С++ ну и пишите на них. Или создайте другое", но глядя на "поддержку" D - похоже и само сообщество системных программистов - пассивно.

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

eao197 комментирует...

2Skynin: ну прямо не знаю. Я все же верю, что многим программистам нужны универсальные языки. А если это и не так, то мне же лучше -- универсалы без работы не остануться :)

Так что претензии к Java снимаются -- все равно от меня ничего не зависит, а сама по себе Java мне не нужна.

Гвидо, все-таки, молодец. В отличии от Одерски и Брайта он действительно знает, чего хочет от своего языка. И предпринимает, имхо, правильные шаги для того, чтобы язык пользовался спросом.