The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Доступен язык программирования Python 3.3"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Доступен язык программирования Python 3.3"  +1 +/
Сообщение от opennews (??) on 30-Сен-12, 00:31 
После 19 месяцев разработки представлен (http://www.python.org/getit/releases/3.3.0/) релиз  языка программирования Python 3.3 (http://www.python.org).  Python 3.3 является первой стабильной веткой, выпущенной после истечения моратория (https://www.opennet.ru/opennews/art.shtml?num=24234) на изменение синтаксиса языка, введённого вскоре после релиза Python 3.1 с целью предоставления возможности создателям альтернативных реализаций языка Python обеспечить в своих продуктах полную совместимость с классическим CPython 3.

Среди добавленных в Python 3.3 новшеств (http://docs.python.org/py3k/whatsnew/3.3.html):


-  Поддержка (http://www.python.org/dev/peps/pep-0405) виртуальных окружений, позволяющих использовать отдельные изолированные представления инсталляций Python, вынесенные в отдельные директории. Каждое виртуальное окружение содержит свой бинарный файл с интерпретатором Python (можно использовать разные версии Python) и свой набор пакетов. При этом все виртуальные окружения используют один общий набор стандартных библиотек Python. Для создания виртуальных окружений следует использовать модуль venv (http://docs.python.org/py3k/library/venv.html#module-venv);

-  Поддержка (http://www.python.org/dev/peps/pep-0380/) синтаксиса "yield from выражение" для делегирования части операций одного генератора другому генератору. Указанное нововведение позволяет вынести из генератора часть кода, содержащую 'yield', и поместить её к другому генератору. Значения, возвращаемые сформированными подобным способом субгенераторами, становятся доступны делегирующему генератору;
-  Новые модули: "faulthandler" для диагностики крахов,  "ipaddress" для манипулирования IP-адресами и "lzma" для сжатия данных методом LZMA/XZ;
-  Переработанная (http://www.python.org/dev/peps/pep-3151) иерархия исключений для системных вызовов (os) и ввода/вывода (io);
-  Улучшение поддержки Unicode. Адаптивное представление (http://www.python.org/dev/peps/pep-0393) Unicode-строк, позволяющее забыть о различиях между  "wide" и "narrow". В объекты str добавлена поддержка универсального синтаксиса "u'" для явного указания unicode строк. Обеспечено более компактное хранение unicode-строк;

- Переписанный на языке Си модуль "decimal" позволил до 80 раз увеличить производительность целочисленных операций;
-  Использование по умолчанию  importlib в качестве системы импорта (__import__);
-  Поддержка (http://www.python.org/dev/peps/pep-0420/) отдельных пространств имён (Namespace) в пакетах, позволяющих разнести один Python пакет по нескольким директориям;
-  Поддержка (http://www.python.org/dev/peps/pep-3155/) атрибута __qualname__ для явной идентификации родительских классов и функций;
-  Возможность (http://www.python.org/dev/peps/pep-0409/) скрытия контекста исключений;
-  Реализация (http://www.python.org/dev/peps/pep-0418) расширенных и независимых от платформы часов в модуле  "time";
-  Обеспечение (http://www.python.org/dev/peps/pep-0412) возможности совместного использования словарями идентичных ключей для хранения атрибутов объектов, что позволило существенно снизить потребление памяти для объектно-ориентированного кода;
-  Добавлен класс "collections.ChainMap (http://docs.python.org/py3k/library/collections.html#collect...)" для связывания словарей в единое представление;
-  В модулях "os" и "signal" добавлены обвязки для дополнительных POSIX-функций, таких как "sendfile()";
-  По умолчанию включен режим рандомизации хэшей, нацеленный на решение проблемы с предсказуемыми коллизиями в реализации алгоритма хэширования для типов dict и set.

URL: http://www.python.org/getit/releases/3.3.0/
Новость: https://www.opennet.ru/opennews/art.shtml?num=34971

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от Аноним (??) on 30-Сен-12, 00:31 
>является первой стабильной веткой, выпущенной после истечения моратория на изменение синтаксиса языка,

Хм, только я здесь вижу взаимоисключающие параграфы?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от Аноним (??) on 30-Сен-12, 00:53 
Ну так правильно с 3.1 по 3.3 синтаксис не меняли, а в 3.3 вон сколько изменений, сейчас начнётся новый цикл, мораторий на эти изменения, только баг-фиксы.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

19. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от Аноним (??) on 30-Сен-12, 11:48 
Нет, тут логическая ошибка
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

20. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 30-Сен-12, 11:50 
Нет, пожалуй всё правильно
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

44. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 30-Сен-12, 21:59 
да
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "Доступен язык программирования Python 3.3"  +/
Сообщение от Онаним on 30-Сен-12, 02:14 
У меня 2 вопроса:

1. Таки как там с Unicode: лучше или хуже, чем в Java.
2. Как там с параллелизацией: потоки, актёры и т.п...

Слышал я, что вообще в Питоне с этими вещами было паршиво. Может в этой версии уже нет?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Доступен язык программирования Python 3.3"  –6 +/
Сообщение от Аноним5 on 30-Сен-12, 03:19 
Вам надо посмотреть Go.

1. В Go всё Unicode -- полностью. Даже синтаксис. Серьезно! Вы можете называть переменные, названия функций и т.д. на кириллице. Создатели Go, Роб Пайк и Кен Томпсон -- авторы UTF-8.

2. Неотъемлемая часть языка. Посмотрите на goroutines.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Доступен язык программирования Python 3.3"  +8 +/
Сообщение от bugmenot (ok) on 30-Сен-12, 03:54 
> Вы можете называть переменные, названия функций и т.д. на кириллице.

Зачем?
/me стонет

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Доступен язык программирования Python 3.3"  +13 +/
Сообщение от ааноним on 30-Сен-12, 05:57 
Как зачем? Думаю кодеры из 1С например будут только рады)))
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

13. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от Anonymous1 on 30-Сен-12, 09:09 
> Как зачем? Думаю кодеры из 1С например будут только рады)))

Подозреваю, что "кодеры из 1С" являются, в массе своей, однопрограммными или одноязычными, и никакие другие языки, кроме с трудом осиленного и изначально созданного для бухгалтеров диалекта 1С, их ничуть не интересуют. За примерами далеко ходить не нужно: подсистема обмена почтовыми сообзениями в 1С, FTP подсистема в 1С, ...
Какая уж тут радость - скорее огорчение.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Доступен язык программирования Python 3.3"  –2 +/
Сообщение от Аноним (??) on 30-Сен-12, 10:29 
> Подозреваю, что "кодеры из 1С" являются, в массе своей,

однопрограммными или одноязычными
Вы ошибаетесь.
Что касается русскоязычных переменных, то это действительно на удивление очень удобно (для русскоязычных разработчиков). По сути текст программы - это просто текст на родном языке.
конструкцию
ЕстьПрава = Ложь;
...
Если ЕстьПрава Тогда
  СделайТоТо();
КонецЕсли;
поймёт даже человек, который про язык 1с даже не слышал.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

17. "Доступен язык программирования Python 3.3"  –5 +/
Сообщение от Аноним (??) on 30-Сен-12, 10:38 
> прочитать сможет даже человек, который про язык 1с даже не слышал.

Пофиксил.

Нормальный программист™ сразу же закроет окно с исходным кодом, а автора будет считать идиотом. А человек с улицы, не разбирающийся в программировании, 100% ничего не поймет, хоть и прочитать сможет.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

31. "Доступен язык программирования Python 3.3"  +4 +/
Сообщение от uuser email(ok) on 30-Сен-12, 15:13 
Интересно, на каком языке пишет англоязычный "Нормальный программист"™ (ну, или, во всяком случае, именует переменные)? Может быть, на русском? Представляю себе фейспалм "Нормального программиста"™ Роба Пайка, там, или Ричи, когда они открывают исходник на C и видят, к примеру, следующий быдлокод:

цел главный(цел аргк, сим **аргв) {
///...
  вернуть ВЫХОД_УСПЕШНЫЙ;
}

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

32. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от Аноним (??) on 30-Сен-12, 16:38 
В английском слова почти не склоняются/не спрягаются, так что программы на латинице выглядят не настолько бредово, как на кириллице. И еще английские слова короче при том же объеме информации - меньше писанины. Но к этому можно привыкнуть, это чисто субъективный недостаток на уровне "нравится - не нравится", как бы некоторым ни не хотелось этого признавать
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

22. "Доступен язык программирования Python 3.3"  +4 +/
Сообщение от mine (ok) on 30-Сен-12, 12:13 
Сразу видно человека, всю жизнь работающего в местечковой конторе и ничего кроме своего кода не видевшего.
Потому что хватает один раз увидеть код на несколько сотен метров, снабжённый комментариями на хрен знает скольки языках, дабы отучиться от подобных мыслей.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

24. "Доступен язык программирования Python 3.3"  +/
Сообщение от YetAnotherOnanym on 30-Сен-12, 13:27 
Фу как неполиткорректно! А как же мультикультурализм?
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

26. "Доступен язык программирования Python 3.3"  +9 +/
Сообщение от Аноноим on 30-Сен-12, 14:10 
> Фу как неполиткорректно! А как же мультикультурализм?

У вас политкорректность головного мозга.

«Цветным не нравится книга «Маленький чёрный Самбо». Сжечь её. Белым неприятна «Хижина дяди Тома». Сжечь и её тоже. Кто-то написал книгу о том, что курение предрасполагает к раку лёгких. Табачные фабриканты в панике. Сжечь эту книгу. Нужна безмятежность, Монтэг, спокойствие. Прочь всё, что рождает тревогу. В печку!! Похороны нагоняют уныние — это языческий обряд. Упразднить похороны.» — «451 градус по Фаренгейту», Рэй Брэдбери, 1953 год

Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

49. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 30-Сен-12, 23:47 
Что общего у политкорректности и сжигания книг?
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

51. "Доступен язык программирования Python 3.3"  +5 +/
Сообщение от Аноним (??) on 01-Окт-12, 00:11 
Сначала все начинается с политкорректности, а заканчивается сжиганием книг.
Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

96. "Доступен язык программирования Python 3.3"  +/
Сообщение от Aquarius (ok) on 03-Окт-12, 09:10 
многие проявления политкорректности неполиткорректны
Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

102. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 04-Окт-12, 21:07 
только чувства мусульман неприкосновенны, все неверные должны уважать аллаха. - так какой-то чурка в новостях говорил. я смеялся
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

105. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от PereresusNeVlezaetBuggy (ok) on 06-Окт-12, 01:32 
Английский - профессиональный язык айтишников, как латынь - врачей. Смиритесь с этим. Ну или изобретите уже что-нибудь покруче Интернета.
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

71. "Доступен язык программирования Python 3.3"  +/
Сообщение от demo (??) on 01-Окт-12, 11:39 
Красота какая!

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

Ад программиста скоро будет выглядеть так -
Имя функции и большинство идентификаторов - китайскими иероглифами, а потом смесь деванагари и кириллицы.

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

72. "Доступен язык программирования Python 3.3"  +/
Сообщение от YetAnotherOnanym on 01-Окт-12, 11:48 
Мне как-то довелось копаться в PHP-коде где всё было на итальянском (HotelDruid, есличо). Ничего, продрался, хотя в словарь нырять каждую минуту, конечно же напрягает.
Я это к тому, что возможность писать только латиницей сильно сужает число языков, но не сводит его к одному английскому. Надо ещё чтобы авторы понимали, что их код будет читать кто-то, говорящий на другом языке.
Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

103. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 04-Окт-12, 21:09 
> возможность писать только латиницей сильно сужает

nikto, tem bolee, ne otmenyal translit

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

104. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 04-Окт-12, 23:44 
>> возможность писать только латиницей сильно сужает
> nikto, tem bolee, ne otmenyal translit

за транслит в названиях надо убивать, предварительно медленно оторвав калёными щипцами тестикулы.

Ответить | Правка | ^ к родителю #103 | Наверх | Cообщить модератору

87. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от gegMOPO4 (ok) on 02-Окт-12, 00:58 
Появится профессия программист-переводчик.
Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

11. "Доступен язык программирования Python 3.3"  +/
Сообщение от grayich (ok) on 30-Сен-12, 08:07 
а почему бы и нет ? :)
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

35. "Доступен язык программирования Python 3.3"  +/
Сообщение от жабабыдлокодер (ok) on 30-Сен-12, 18:01 
>> Вы можете называть переменные, названия функций и т.д. на кириллице.
>
>Зачем?
>/me стонет

Мне приходилось иметь дело со XSD схемой, написанной русскими буквами. JAXB быстренько преобразовал их в классы Java (в жабе можно использовать в именах UTF-символы, включая кириллицу), после чего я не стонал, а ругался: все время переключать раскладки очень неудобно. Только автозаполнение в NetBeans немного выручало.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

97. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от Тарелькин on 03-Окт-12, 17:02 
>Зачем?

Я тоже так думал, пока кто-то не привел мне пример. Правда, не с кириллицей, а с математическими формулами с греческими буквами. В научной программе, вполне вероятно, будет понятнее, если написать φ = ∏(p[i] ^ (α[i] - 1) * (p[i] - 1)), чем phi = product(pow(p[i], a[i] - 1) * (p[i] - 1)). Особенно если это код в середине научной статьи, где употребляются те же самые буквы.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

98. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 03-Окт-12, 22:33 
кто мешает сделать транслятор из такой записи в то, что понимает компилятор и не тащить вредные фичи в сам компилятор?
Ответить | Правка | ^ к родителю #97 | Наверх | Cообщить модератору

99. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от Тарелькин on 04-Окт-12, 06:01 
>кто мешает сделать транслятор из такой записи в то, что понимает компилятор и не тащить вредные фичи в сам компилятор?

Ну он уже есть, только встроен в компилятор, и не надо каждому писать свой велосипед.

В большинстве случаев не надо - большинство не пользуется. А кто очень хочет воспользоваться не к месту, тот и латинскими буквами напишет "void narisovatIzobrazhenie()".

Потом, популярные языки программирования (C++, Javascript, в какой-то мере Java) содержат колоссальное количество фич, позволяющих выстрелить себе в ногу (в C++ можно это сделать при сочинении Hello World). Почему бы не выкинуть "goto" из C и C++, если он нужен только очень редко?

Ответить | Правка | ^ к родителю #98 | Наверх | Cообщить модератору

100. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 04-Окт-12, 06:22 
> Ну он уже есть, только встроен в компилятор, и не надо каждому
> писать свой велосипед.

зачем «каждому»? один написал и выложил.

> Почему бы не выкинуть «goto» из C и C++, если он нужен только очень редко?

потому что «выкинуть» — не то же самое, что «добавить». хотя из цпп гото выкинуть вполне нужно бы.

Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

106. "Доступен язык программирования Python 3.3"  +/
Сообщение от PereresusNeVlezaetBuggy (ok) on 06-Окт-12, 01:35 
>> Ну он уже есть, только встроен в компилятор, и не надо каждому
>> писать свой велосипед.
> зачем «каждому»? один написал и выложил.
>> Почему бы не выкинуть «goto» из C и C++, если он нужен только очень редко?
> потому что «выкинуть» — не то же самое, что «добавить». хотя
> из цпп гото выкинуть вполне нужно бы.

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

C++ изначально мультипарадигменный, у него задача такая - давать возможность подстроиться. Иногда (и не так уж редко) goto удобен.

Ответить | Правка | ^ к родителю #100 | Наверх | Cообщить модератору

112. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 06-Окт-12, 21:55 
> Иногда (и не так уж редко) goto удобен.

и когда же? в си — да, там нет finally. а зачем goto в c++? пользуйся механизмом исключений, он для того и запилен.

а, кстати: какие там у c++ «парадигмы»? обычный c, только сильно испорченый неудачной попыткой затащить туда ООП. удачная — это в ObjC.

Ответить | Правка | ^ к родителю #106 | Наверх | Cообщить модератору

114. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от PereresusNeVlezaetBuggy email(ok) on 07-Окт-12, 15:05 
>> Иногда (и не так уж редко) goto удобен.
> и когда же? в си — да, там нет finally. а зачем
> goto в c++? пользуйся механизмом исключений, он для того и запилен.

Во-первых, исключения совсем для другого (хотя иногда области применения и могут перекрываться). Во-вторых, метки не порождают множества уровней вложенности - наоборот, они делают код "плоским". Иногда это плохо. Даже очень. А иногда - наоборот, упрощает и делает более удобочитаемым (sic!) код. Это не говоря о том, что добавление поддержки исключений утяжеляет программу чисто из-за добавления соответствующего кода компилятором, что для мелких утилит (Unix-way, всё такое) весьма заметно.

> а, кстати: какие там у c++ «парадигмы»? обычный c, только сильно испорченый
> неудачной попыткой затащить туда ООП. удачная — это в ObjC.

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

Objective C - приятный язык. Просто другой.

Ответить | Правка | ^ к родителю #112 | Наверх | Cообщить модератору

116. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 07-Окт-12, 21:20 
> Во-первых, исключения совсем для другого (хотя иногда области применения и могут перекрываться).

вот с этого места поподробней. а то начинает закрадываться подозрение, в котором фигуриует слово «говнокод».

> Во-вторых, метки не порождают множества уровней вложенности — наоборот, они делают
> код «плоским».

долой циклы! и вообще блоки. только метки, только плоский код! (пардон, не удержался)

goto в c++ всё равно приходится увязывать с объявлениями более-менее сложных объектов. в итоге получается каша. которую чаще проще и красивей можно решить при помощи декомпозиции, грамотного применения return и да — исключений.

> что добавление поддержки исключений утяжеляет программу чисто из-за добавления соответствующего
> кода компилятором, что для мелких утилит (Unix-way, всё такое) весьма заметно.

зачем писать мелкие утилиты на цпп? если используются фичи библиотек цпп, то утилита и так распухнет. а если нет — то чего было выпендриваться?

> C++ — это швейцарский нож.

скорее голландский сыр.

> Попытки использовать C++, скажем, чисто для ООП, с избеганием даже тени процедурного подхода, выглядят грустно.

потому что нормального ООП там нет. дурацкий симула-подход, который растиражировали остальные — костыль-пародия.

> Objective C — приятный язык. Просто другой.

ага. наглядно показывающий, что такое ООП и как надо его добавлять, оставаясь полностью совместимым с C. я, правда, на ObjC2 не смотрел: кажется, начали портить.

Ответить | Правка | ^ к родителю #114 | Наверх | Cообщить модератору

117. "Доступен язык программирования Python 3.3"  +/
Сообщение от PereresusNeVlezaetBuggy email(ok) on 09-Окт-12, 01:55 
>> Во-первых, исключения совсем для другого (хотя иногда области применения и могут перекрываться).
> вот с этого места поподробней. а то начинает закрадываться подозрение, в котором
> фигуриует слово «говнокод».

Что именно "поподробней"? Страуструпа пересказывать как-то не хочется. Исключения, если уж сравнивать с переходами по меткам, то тем, которые setjmp()/longjmp() и иже с ними. Их задача - не добавляя множества явных путей, передать управление в случае нестандартной ситуации в нужное место через произвольное количество уровней на стеке. При использовании "умных" указателей и finally { ... } их можно использовать для подчистки, да. Но, во-первых, вы когда-нибудь видели в не очень-то и сложном методе пять уровней вложенности finally? Это адЪ, особенно при наличии вложенных циклов и всяких там if'ов в промежутке. А во-вторых, goto бывает полезен в неочевидных ситуациях. Верить заставлять не собираюсь. Если будет конкретное доказательство абсолютной бесполезности (даже не вреда) goto в C++ - можно будет говорить предметно.

>> Во-вторых, метки не порождают множества уровней вложенности — наоборот, они делают
>> код «плоским».
> долой циклы! и вообще блоки. только метки, только плоский код! (пардон, не
> удержался)

:-P Пардон пардоном, а из контекста вырывать нехорошо.

> goto в c++ всё равно приходится увязывать с объявлениями более-менее сложных объектов.
> в итоге получается каша. которую чаще проще и красивей можно решить
> при помощи декомпозиции, грамотного применения return и да — исключений.

Такая каша возникает обычно из-за смешивания уровней логики. Частая проблема - неумение, а порой и практическая невозможность, произвести декомпозицию функции/метода приводит к гипертрофированию оного. В этом случае goto действительно становятся бОльшим злом, нежели умные обёртки и многоступенчатые try { ... }.

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

Утяжеление не только за счёт размера кода, но ещё и за счёт дополнительно работающего кода (снижение производительности, все дела). Хотя заранее соглашусь, потери сравнительно небольшие, если не запускать процессы тысячу раз в секунду. :)

>> C++ — это швейцарский нож.
> скорее голландский сыр

... а кому и свиной хрящик. Дело вкуса.

>> Попытки использовать C++, скажем, чисто для ООП, с избеганием даже тени процедурного подхода, выглядят грустно.
> потому что нормального ООП там нет. дурацкий симула-подход, который растиражировали остальные
> — костыль-пародия.

Ну нет. И что? Программы на C++ почему-то продолжают исправно работать несмотря на свою не-ООПность. Хуже того - такой языковой кошмар для любителей элегантности, как Perl, тоже продолжает существовать вместе с тоннами написанного на нём кода - и далеко не всегда такого уж плохого.

Я готов согласиться с тем, что C++ - это мегакостыль. Возможно, самый большой костыль за всю историю программирования. Но пока ничего глобально лучшего нет - только нишевые решения. Так что увы.

Ответить | Правка | ^ к родителю #116 | Наверх | Cообщить модератору

118. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 09-Окт-12, 03:17 
> Что именно «поподробней»?

зачем нужны goto, окромя как:
а) эмулировать finally, и
б) выбираться из очень глубоких циклов (что в большинстве случаев, пардон, означает говнокод, который надо переписать нормально — возможно, изменив логику).

> вы когда-нибудь видели в не очень-то и сложном методе пять уровней вложенности
> finally?

но зачем? это или человек не знает про автоматические объекты, или у него руки не в ту точку примонтированы.

> А во-вторых, goto бывает полезен в неочевидных ситуациях.

вот про это я и просил «поподробней».

> Верить заставлять не собираюсь. Если будет конкретное доказательство абсолютной бесполезности
> (даже не вреда) goto в C++ — можно будет говорить предметно.

вообще-то намного проще доказать нужность — для этого достаточно одного примера, который без goto или не делается никак, или делается настолько криво, что «ужас-ужас-ужас», и переписать нормально который не выходит.

а для доказательства «ненужности» надо рассмотреть *все возможные применения* goto. это нереально.

> :-P Пардон пардоном, а из контекста вырывать нехорошо.

ну я же говорю: не удержался. %-)

> Утяжеление не только за счёт размера кода, но ещё и за счёт
> дополнительно работающего кода (снижение производительности, все дела).

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

> Ну нет. И что? Программы на C++ почему-то продолжают исправно работать несмотря
> на свою не-ООПность.

а это вообще к теме беседы не относится.

> Но пока ничего глобально лучшего нет — только нишевые решения.

пардон, даже D лучше. не надо путать «есть куча людей, которые кое-как умеют писать на C++, да куча кода написана — потому это лучшее решение» с «архитектурно ничего лучшего не придумали». «куча кода и людей» не обозначает «хорошо» — достаточно взглянуть на PHP.

Ответить | Правка | ^ к родителю #117 | Наверх | Cообщить модератору

101. "Доступен язык программирования Python 3.3"  +/
Сообщение от Тарелькин on 04-Окт-12, 06:24 
Да и потом, смотри, как можно увеличить наглядность названий во многих программах:

Microsoft®InternetExplorer®DownloadURL := "http://windows.microsoft.com/ru-RU/internet-explorer/product...

Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

111. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 06-Окт-12, 19:11 
>>кто мешает сделать транслятор из такой записи в то, что понимает компилятор и не тащить вредные фичи в сам компилятор?
> Ну он уже есть, только встроен в компилятор, и не надо каждому
> писать свой велосипед.
> В большинстве случаев не надо - большинство не пользуется. А кто очень
> хочет воспользоваться не к месту, тот и латинскими буквами напишет "void
> narisovatIzobrazhenie()".
> Потом, популярные языки программирования (C++, Javascript, в какой-то мере Java) содержат
> колоссальное количество фич, позволяющих выстрелить себе в ногу (в C++ можно
> это сделать при сочинении Hello World). Почему бы не выкинуть "goto"
> из C и C++, если он нужен только очень редко?

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

Ответить | Правка | ^ к родителю #99 | Наверх | Cообщить модератору

46. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от pro100master (ok) on 30-Сен-12, 22:19 
> Вам надо посмотреть Go.

а напаркуа? В Go есть тысячи хороших библиотек? Может быть хотя бы 10 фреймворков? Голый язык с понтами и кучкой приближенных сектантов. До Python еще пилить и пилить, а до JM, как до Солнца улиткой.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

12. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от bav (ok) on 30-Сен-12, 08:15 
> Слышал я, что вообще в Питоне с этими вещами было паршиво.

Рабинович напел?


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

14. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от anonymous (??) on 30-Сен-12, 09:10 
> У меня 2 вопроса:
> 1. Таки как там с Unicode: лучше или хуже, чем в Java.
> 2. Как там с параллелизацией: потоки, актёры и т.п...
> Слышал я, что вообще в Питоне с этими вещами было паршиво. Может
> в этой версии уже нет?

В Tcl с unicode все отлично, например. Потоки, мьютексы, пулы потоков, до версии 8.5 расширением, в 8.6 есть поддержка кооперативной многопоточности в ядре языка.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

18. "Доступен язык программирования Python 3.3"  +5 +/
Сообщение от Ещё тот Аноним on 30-Сен-12, 11:00 
Зато в Tcl с синтаксисом очень паршиво.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

25. "Доступен язык программирования Python 3.3"  +/
Сообщение от YetAnotherOnanym on 30-Сен-12, 13:34 
> Зато в Tcl с синтаксисом очень паршиво.

На Паскаль не похож?

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

39. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 30-Сен-12, 19:37 
Забавные у вас представления о паршивости синтаксиса.
Нет, в случае с Tcl проблемы гораздо глубже.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

47. "Доступен язык программирования Python 3.3"  +/
Сообщение от anonymous (??) on 30-Сен-12, 22:41 
> Забавные у вас представления о паршивости синтаксиса.
> Нет, в случае с Tcl проблемы гораздо глубже.

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

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

56. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 01-Окт-12, 08:11 
> Хотел бы немного подискутировать на тему проблем, если Вы не против.

ОноНеПохожеНаСи!!111111

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

73. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от YetAnotherOnanym on 01-Окт-12, 11:55 
Мне однажды пришлось писать на tcl, правда, совсем немного - нужен был скрипт на Expect, способный делать более сложные штуки, чем "дождаться login, послать логин, дождаться password, послать пароль", на всё ушло около часа, при том, что раньше с tcl не соприкасался. Никаких таких ужасных особенностей в синтаксисе tcl я тогда не усмотрел.

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

29. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от gegMOPO4 (ok) on 30-Сен-12, 14:19 
Tcl поддерживает Unicode ограниченно — только Basic Multilingual Plane.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

57. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от arisu (ok) on 01-Окт-12, 08:12 
> Tcl поддерживает Unicode ограниченно — только Basic Multilingual Plane.

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

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

61. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от gegMOPO4 (ok) on 01-Окт-12, 10:20 
Зачем вам уникод? ASCII хватит для всех.
Ответить | Правка | ^ к родителю #57 | Наверх | Cообщить модератору

62. "Доступен язык программирования Python 3.3"  –4 +/
Сообщение от arisu (ok) on 01-Окт-12, 10:25 
> Зачем вам уникод? ASCII хватит для всех.

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

Ответить | Правка | ^ к родителю #61 | Наверх | Cообщить модератору

65. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от gegMOPO4 (ok) on 01-Окт-12, 10:47 
Правильно. Зачем в кириллице буквы, дублирующие латинские, — А, В, Е, К, М, Н, О, Р, С, Т, У, Х? Зачем Г, если есть G? Зачем переворачивать нормальные буквы — И, Я, Ь?
Ответить | Правка | ^ к родителю #62 | Наверх | Cообщить модератору

67. "Доступен язык программирования Python 3.3"  –4 +/
Сообщение от arisu (ok) on 01-Окт-12, 10:52 
не тупи.
Ответить | Правка | ^ к родителю #65 | Наверх | Cообщить модератору

21. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от Аноним (??) on 30-Сен-12, 11:58 
> 2. Как там с параллелизацией: потоки, актёры и т.п...

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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

40. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от Аноним (??) on 30-Сен-12, 19:38 
> А где сейчас с параллелизацией хорошо? Неужели в джаве? А я всегда
> думал что джава и параллельные вычисления это взаимно исключающие параграфы. Что-то
> получше должно быть в ерланге и хаскелле, но опять же программировать
> на них почти невозможно. Резолюция проста и неутешительна: параллельные вычисления это
> миф

А в это время суровые сишники продолжали писать распараллеленные числодробильные приложения.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

54. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от Аноним (??) on 01-Окт-12, 02:16 
Господа! Смертельный номер господа!

Обычному домашнему хомячку подсунули каплю никотина:
>Что-то получше должно быть в ерланге и хаскелле,

Охщи ...
>но опять же программировать на них почти невозможно. Резолюция проста и неутешительна: параллельные вычисления это миф

Господа - приносим извинения за ошмётки несчастного смелого хомячка долетевшие да первых рядов ...

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

58. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от arisu (ok) on 01-Окт-12, 08:13 
> в ерланге и хаскелле, но опять же программировать на них почти невозможно

что, не похоже на похапэ? бывает.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от Ашибка on 30-Сен-12, 12:28 
>У меня 2 вопроса:
>1. Таки как там с Unicode: лучше или хуже, чем в Java.

В 3 ветке лучше, во 2-ой хуже.

>2. Как там с параллелизацией: потоки, актёры и т.п...

Все хорошо.

>Слышал я, что вообще в Питоне с этими вещами было паршиво. Может в этой версии уже нет?

Вы не понимаете http://xkcd.ru/353/

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

38. "Бред"  –1 +/
Сообщение от Sauron (??) on 30-Сен-12, 19:34 
На самом деле с параллелизацией там всё ужасно из за GIL, который банально не дает нескольким тредам одновременно исполняться.
http://habrahabr.ru/post/84629/

То есть для многопоточного программирования Питон по просту непригоден!

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

42. "Бред"  +/
Сообщение от Аноним (??) on 30-Сен-12, 19:41 
> На самом деле с параллелизацией там всё ужасно из за GIL, который
> банально не дает нескольким тредам одновременно исполняться.
> То есть для многопоточного программирования Питон по просту непригоден!

И тем не менее с многопоточным программированием парсинг сайтов намного ускоряется. Для вычислений нужно использовать многопроцессорное программирование.

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

43. "Бред"  +/
Сообщение от Глаз Саурона on 30-Сен-12, 20:01 
>На самом деле с параллелизацией там всё ужасно из за GIL, который банально не дает нескольким тредам одновременно исполняться.

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

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

74. "Бред"  +/
Сообщение от demo (??) on 01-Окт-12, 11:56 
> То есть для многопоточного программирования Питон по просту непригоден!

Немного не так.
GIL блокирует не потоки, а возможность параллельного исполнения кода в виртуальной машине python-а. Различие в том, что когда выполняется "тяжёлый" код в модуле написанном на C (ввод-вывод, базы данных, манипуляции матрицами и т.п.) GIL обычно снимается и потоки получают возможность исполняться параллельно.

Программисты на java стараются всё затащить в java. Программисты на python время от времени находят ёмкие по времени куски и переписывают их на C.

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

79. "Бред"  +/
Сообщение от Бред on 01-Окт-12, 16:48 
>GIL блокирует не потоки, а возможность параллельного исполнения кода в виртуальной машине python-а.

Гениально! Масло не масленое, а масленое.

> Различие в том, что когда выполняется "тяжёлый" код в модуле написанном на C (ввод-вывод, базы данных, манипуляции матрицами и т.п.) GIL обычно снимается и потоки получают возможность исполняться параллельно.

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


> Программисты на python время от времени находят ёмкие по времени куски и переписывают их на C.

Раньше переписывали, сейчас есть Cython.

Ответить | Правка | ^ к родителю #74 | Наверх | Cообщить модератору

81. "Бред"  +1 +/
Сообщение от demo (??) on 01-Окт-12, 18:13 
> Гениально! Масло не масленое, а масленое.

Конечно, гениально. Если у Вас есть 100 потоков, выполняющих код типа x = x + 1,
то из-за GIL реально выполняться будет только один. А если эти 100 потоков заняты чем-то более интересным (читают/пишут файлы, пересылают данные по сети, тормошат sqlite, потрошат виндовый реестр - далее сами ищите использование макроса Py_BEGIN_ALLOW_THREADS в исходных текстах python) то GIL снимается и эффективность работы повышается.

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

Да, и Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS встречается в ней 300 раз.
Если выйти за пределы стандартной боблиотеки, то тоже можно найти примеры.
Например, в PyQt тоже применяется этот приём (и кажется даже доходит до злоупотребления)

> Раньше переписывали, сейчас есть Cython.

По разному бывает. Так как Вы пишете - наверное тоже можно.

В новости вот пишут - "Переписанный на языке Си модуль "decimal" позволил до 80 раз увеличить производительность целочисленных операций". Я посмотрел код - что-то на применение Cython не похоже. В моём "мире", завязанном на Qt представляется логичным переписывать куски на С++ и создавать обвязки с помощью sip.

Ответить | Правка | ^ к родителю #79 | Наверх | Cообщить модератору

27. "Доступен язык программирования Python 3.3"  +8 +/
Сообщение от gegMOPO4 (ok) on 30-Сен-12, 14:13 
1. Unicode появился в Python 2.0, 12 лет назад. Поддержка его была местами лучше, местами хуже, чем в Java. С Python 3.0 стала очевидно не хуже (на Linux — лучше). С Python 3.3 — везде лучше. Прозрачно поддерживается Unicode 6.2, а Java даже Unicode 2.0 поддерживает со скрипом (и большинство разработчиков о том, как это делать, не знают).

2. С параллелизацией всё хорошо, если применять подходящие инструменты для определённых задач, не хуже, чем в аналогичных языках общего назначения. Пакет multiprocessing появился в Python 2.6.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

52. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от Xasd (ok) on 01-Окт-12, 00:23 
> Слышал я, что вообще в Питоне с этими вещами было паршиво. Может в этой версии уже нет?

так говорили те люди которые (в ветке Пайтона версии 2.X) -- не могли отличить байтовую последовательность от юникодной строки.. [и таких людей судя по блогам -- очень много!! к сожелению.. не разобравшись, они начинали вопить в свои блоги]

в Python-2.X многие стандартные функции возвращали байтовые последовательности вместо юникодных строк.. и поэтому в Python-2.X [перед тем как использовать результат стандартных функций] требовалось обязательно сначало вручную сделать нечто вроде:


# при работе например с аргументами командной строки
u_my_result = my_result.decode(locale.getdefaultlocale()[1] or 'utf8')


# при работе с именами файлов файловой системы
u_my_result = my_result.decode(sys.getfilesystemencoding() or 'utf8')


# при работе с данными от файловых дескрипторов, например стандартный вход stdin
u_my_result = my_result.decode(getattr(my_fd, 'encoding', None) or 'utf-8')


# при получении/передаче данных по сети, и работе непосредственно с информацией (например загрузка содержимого файлов)
u_my_result = my_result.decode('utf-8') # мы же не хотим кракозябров на другом компе с другой локалью :)

# ...
#
# вобщем в зависимости от того что конкретно у нас такое есть -- my_result

# а кто этого не делает, и работает с байтовыми последовательнастями напрямую,
# тот в конечном итоге где-нибудь получит нежданный геморой.
# как уж после этого не отписаться на форумах-то и в блогах, о том какой якобы плохой Пайтон :-D :-D

это было исправлено в Python-3.X -- в Python-3.X уже сразу на выходе многих стандартных функций теперь возвращается Юникодный результат (а не байтовая последовательность).

ды и вобще в Python-3.X более чётко разграничили между собой -- байтовую последовательность и юникодную строку, и теперь их стало НЕ так просто спутать между собой в отличии от того как это было в Python-2.X.. :-)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

33. "Доступен язык программирования Python 3.3"  +7 +/
Сообщение от СлабыйЗаходНаХоливар on 30-Сен-12, 16:58 
>Переписанный на языке Си модуль "decimal" позволил до 80 раз увеличить производительность целочисленных операций;

А нельзя вот так вот весь Питон переписать на Си?  

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

34. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 30-Сен-12, 17:35 
Нет.
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

70. "Доступен язык программирования Python 3.3"  +/
Сообщение от dq0s4y71 (??) on 01-Окт-12, 11:25 
Дык он на Си и написан (по крайней мере у Гвидо), толку-то...
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

80. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от Бред on 01-Окт-12, 16:54 
> А нельзя вот так вот весь Питон переписать на Си?

уже сделали 1991 году, с тех пор он на Си и написан.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

36. "Доступен язык программирования Python 3.3"  –4 +/
Сообщение от Аноним (??) on 30-Сен-12, 18:08 
А зачем они в 3 питоне, для print обязали ставить скобки? Новоратами 3 питона я не пользуюсь, поэтому print со скобками в питоне это бред.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Доступен язык программирования Python 3.3"  +/
Сообщение от Kamiram on 30-Сен-12, 18:43 
Для единобразия. всетаки print это функция(да. в 3 ветке совсем функцйия)
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

53. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аниме on 01-Окт-12, 00:27 
Причём здесь единообразие? принт для отладки, зачем скобки там где их может небыть? Ну есть же операторы. Я всегда думал что print в питоне это оператор. Вот третий питон мне всё испортил. Мне нравится питон за лаконичность, а эти все новшества только удлинняют код. Питон итак довольно мощный и совершенный, зачем его портить?
Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

60. "Доступен язык программирования Python 3.3"  +/
Сообщение от marks on 01-Окт-12, 09:30 
Наркоман чтоль? В 3+ print() - функцииияяяя. А ВСЕ функции пишутся со скобочкааамиии...
Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

107. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 06-Окт-12, 18:57 
Странно что не метод, вообще странный дизайн языка получается.
Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

59. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от arisu (ok) on 01-Окт-12, 08:23 
> Для единобразия.

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

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

63. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от gegMOPO4 (ok) on 01-Окт-12, 10:35 
> какая неоднозначность возникает от парзинга вызова функции с одним
> аргументом без скобок?

  f-3

Вызов функции f с аргументом -3 или результат отнимания 3 от f?

  f*a

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

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

Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

66. "Доступен язык программирования Python 3.3"  –3 +/
Сообщение от arisu (ok) on 01-Окт-12, 10:50 
ок, уточню, mea culpa. с вызовом функции, аргумент которой — литерал: строка, массив, что там ещё можно однозначно отличить? конструкция:

print "abc"

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

опять же, никто не мешает сделать какой-нибудь флаг strict, который отрубает подобный сахар.

в конце-концов, на гвидобейсике пишут в том числе и не особо сложные скрипты, где подобное упрощение синтаксиса более чем оправдано.

Ответить | Правка | ^ к родителю #63 | Наверх | Cообщить модератору

68. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от gegMOPO4 (ok) on 01-Окт-12, 11:00 
Это всё называется не «упростить синтаксис», а значительно усложнить. Для такого языка, как Питон, на котором и простые скрипты пишутся, который и неспециалисты используют, — неприемлемо.
Ответить | Правка | ^ к родителю #66 | Наверх | Cообщить модератору

69. "Доступен язык программирования Python 3.3"  –1 +/
Сообщение от arisu (ok) on 01-Окт-12, 11:14 
с точки зрения парзера — усложнить. с точки зрения человека — упростить. как раз для неспециалистов.
Ответить | Правка | ^ к родителю #68 | Наверх | Cообщить модератору

86. "Доступен язык программирования Python 3.3"  +/
Сообщение от gegMOPO4 (ok) on 02-Окт-12, 00:43 
С точки зрения пользователя — усложнить. Больше частных правил и особых случаев. Попробуйте-ка объяснить новичку, почему print 5 и print "-5" работают, а print -5 — нет. Это будет *очень* недружественный и антигуманный язык.
Ответить | Правка | ^ к родителю #69 | Наверх | Cообщить модератору

89. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 02-Окт-12, 02:08 
(вздыхает) потому что. если запомнить *опциональное* правило «вызов функции, где первый аргумент — литерал, являющийся строкой или массивом, может писаться без скобок» — офигенно сложное правило. требует IQ>200 и эйдетической памяти.
Ответить | Правка | ^ к родителю #86 | Наверх | Cообщить модератору

90. "Доступен язык программирования Python 3.3"  +/
Сообщение от gegMOPO4 (ok) on 02-Окт-12, 13:30 
Массивы отпадают. f[2] — легальная конструкция, элемент с индексом 2 списка/кортежа f. Что остаётся?
Ответить | Правка | ^ к родителю #89 | Наверх | Cообщить модератору

92. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 02-Окт-12, 20:29 
> Массивы отпадают. f[2] — легальная конструкция, элемент с индексом 2 списка/кортежа
> f. Что остаётся?

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

интересно было бы посмотреть на всё это, если бы гнидаванроссум ВНИЗАПНА! решил бы чуть сменить синтаксис и сделать бесскобочные вызовы. питонисты тогда бы бегали и кричали: «хорошо, хорошо-то как! питон стал ещё проще и удобней!» а пока в питоне чего-то нет — оно завсегда плохое, сложное и не нужно.

Ответить | Правка | ^ к родителю #90 | Наверх | Cообщить модератору

93. "Доступен язык программирования Python 3.3"  +/
Сообщение от gegMOPO4 (ok) on 02-Окт-12, 22:55 
Никакой инконсистентности сейчас нет.

Но вы можете форкнуть Питон (или написать с нуля) и добавить туда чего ваша душа пожелает. Хотя, конечно, ничего не делать и завистливо хаять сделанное (и хорошо сделанное!) другими некоторым нравиться больше.

Ответить | Правка | ^ к родителю #92 | Наверх | Cообщить модератору

94. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 02-Окт-12, 22:58 
(пожимает плечами) я и так пользуюсь несколькими самодельными языками, зачем мне форкать неудачную недореплику whitespace?

p.s. и да, в некоторых из них есть «бесскобочный» синтаксис. после введения юзеры систем были довольны: скрипты писать стало проще.

Ответить | Правка | ^ к родителю #93 | Наверх | Cообщить модератору

108. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 06-Окт-12, 19:01 
упс а вруби все логично и print -1 => -1 и print 5-1 => 4
Ответить | Правка | ^ к родителю #86 | Наверх | Cообщить модератору

113. "Доступен язык программирования Python 3.3"  +/
Сообщение от gegMOPO4 (ok) on 07-Окт-12, 01:24 
Руби — другой язык, у него другой синтаксис и другая логика (странные с точки многих других языков). Например, там можно сделать:

  print = 42
  print print -1

Но нельзя (что было бы естественно в Питоне):

  p = print
  p -1

Вот поэтому в Питоне не так, как в Руби.

Ответить | Правка | ^ к родителю #108 | Наверх | Cообщить модератору

115. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 07-Окт-12, 17:05 
Ну круто но логичным я бы это не назвал. Делать ссылку оператором = на функцию.

alias :p :print
p -1

разве так не лаконичней, а у вас в питоне непонятно толи print переменная толи функция

Ответить | Правка | ^ к родителю #113 | Наверх | Cообщить модератору

75. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от demo (??) on 01-Окт-12, 14:20 
Ох,
что-то мне кажется, что Вы предлагаете ядовитый сахар. Кроме простого правила нужно будет помнить ещё правила применения правила, правила отмены правила и варианты исключения из правил.

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

Мне вот не нравится ликвидация оператора print. Да, у него было своеобразно реализовано "перенаправление" вывода в произвольный поток. Да, запрет перевода строки после вывода выглядел "вызывающе хакерски". Кроме того поддержка оператора print требовала четырёх инструкций вирт. машины (PRINT_ITEM, PRINT_ITEM_TO, PRINT_NEWLINE и PRINT_NEWLINE_TO). Возможно, что была причина избавиться от всего этого. А так при наличии sys.stdout.write() и функция print не очень-то нужна.

Ответить | Правка | ^ к родителю #66 | Наверх | Cообщить модератору

76. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 01-Окт-12, 14:33 
> что-то мне кажется, что Вы предлагаете ядовитый сахар. Кроме простого правила нужно
> будет помнить ещё правила применения правила, правила отмены правила и варианты
> исключения из правил.

зачем? я же не предлагаю скобки аннигилировать. лень помнить — можно просто ставить скобки и не заморачиваться, дел-то.

Ответить | Правка | ^ к родителю #75 | Наверх | Cообщить модератору

77. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от demo (??) on 01-Окт-12, 14:35 
> ...какая неоднозначность возникает от парзинга вызова функции с одним
> аргументом без скобок?

вот "sin x" - это хорошо и понятно.
а вот "sin 2*x" (тоже функция с одним аргументом без скобок) уже не хорошо и не понятно - это "(sin 2)*x" или "sin(2*x)"?

Кроме того в случае python есть ещё одно усложнение - это мы знаем, что традиционный sin это всегда функция с одним аргументом. А компилятор python-а, бедняжечка, этого не знает.

Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

78. "Доступен язык программирования Python 3.3"  –2 +/
Сообщение от arisu (ok) on 01-Окт-12, 15:57 
я же уточнил, какие литералы допускать.

> Кроме того в случае python есть ещё одно усложнение — это мы
> знаем, что традиционный sin это всегда функция с одним аргументом. А
> компилятор python-а, бедняжечка, этого не знает.

а какая парзеру разница? есть запятая на месте терма? следующий параметр. нет запятой? конец оператора.

Ответить | Правка | ^ к родителю #77 | Наверх | Cообщить модератору

83. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 01-Окт-12, 19:08 
>> ...какая неоднозначность возникает от парзинга вызова функции с одним
>> аргументом без скобок?
> вот "sin x" - это хорошо и понятно.
> а вот "sin 2*x" (тоже функция с одним аргументом без скобок) уже
> не хорошо и не понятно - это "(sin 2)*x" или "sin(2*x)"?

Если скобки строго заменять на пробелы, то "sin 2*x" эквивалентно "sin (2*x)", а вот "sin 2 *x" уже "(sin(2)*x)".
Опять же, у Руби такое используется - и ничего, компилятор-бедняжечка не путается


Ответить | Правка | ^ к родителю #77 | Наверх | Cообщить модератору

88. "Доступен язык программирования Python 3.3"  +/
Сообщение от arisu (ok) on 02-Окт-12, 01:31 
> Если скобки строго заменять на пробелы, то «sin 2*x» эквивалентно «sin (2*x)»,
> а вот «sin 2 *x» уже «(sin(2)*x)».

в принципе, фраза «sin 2*x» человеком понимается достаточно однозначно, по-моему. а к тому, что пробелы — не просто разделители, а чуть ли не токены, питонистам не привыкать.

Ответить | Правка | ^ к родителю #83 | Наверх | Cообщить модератору

95. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от angra (ok) on 03-Окт-12, 00:08 
Свободно опускаемые скобки и куча других прелестей для опытных программистов - это perl. Питон он для другой ЦА, гибкость противоречит его философии, там шкурку с кошки можно снять строго одним образом.
Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

109. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 06-Окт-12, 19:05 
> Свободно опускаемые скобки и куча других прелестей для опытных программистов - это
> perl. Питон он для другой ЦА, гибкость противоречит его философии, там
> шкурку с кошки можно снять строго одним образом.

Ну у этого есть один плюс. Поддерживать код проще. И один минус. Не всем это по душе.

Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

45. "Доступен язык программирования Python 3.3"  –2 +/
Сообщение от anonymous (??) on 30-Сен-12, 22:09 
>Поддержка виртуальных окружений

Да здравствует version hell.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

50. "Доступен язык программирования Python 3.3"  +3 +/
Сообщение от bav (ok) on 30-Сен-12, 23:49 
> Да здравствует version hell

Вы о чем, сударь? venv это хорошо и прекрасно.

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

55. "Доступен язык программирования Python 3.3"  +2 +/
Сообщение от Аноним (??) on 01-Окт-12, 02:27 
>> Да здравствует version hell
> Вы о чем, сударь? venv это хорошо и прекрасно.

оно не втыкнуло о чём этот самый venv эбаут :)

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

110. "Доступен язык программирования Python 3.3"  +/
Сообщение от Аноним (??) on 06-Окт-12, 19:08 
>> Да здравствует version hell
> Вы о чем, сударь? venv это хорошо и прекрасно.

ага придумали Bundler из мира ruby. И да это прекрасно, можно искренне поздравить питонистов, теперь и им будет удобно.

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

82. "Доступен язык программирования Python 3.3"  +/
Сообщение от Xasd (ok) on 01-Окт-12, 18:15 
>> Поддержка виртуальных окружений
> Да здравствует version hell.

наверно Вы имели ввиду -- virtual-hell ! :-D

но правда мне сложно представить что это может быть такое

# p.s.: по крайней мере -- version-hell и virtual-env -- вещи вообще взаимоисключающие :)

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

48. "Доступен язык программирования Python 3.3"  +1 +/
Сообщение от GoTLiuM email(ok) on 30-Сен-12, 23:44 
Изменения радуют:)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру