The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом, opennews (??), 28-Июн-20, (0) [смотреть все]

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


23. "Гвидо ван Россум предложил включить в Python операторы для с..."  +12 +/
Сообщение от Ordu (ok), 28-Июн-20, 11:41 
> Сначала героически отвергли, потом героически ввели...

Они героически отвергли C-style свитч. А героически ввели Scala-style match.

> Ну и кто они после этого?!

Стратеги. Если бы они приняли C-style свитч тогда, а сейчас добавили бы match, то ортогональность фичей языка пошла бы лесом. И окультурить этот лес селективными вырубками не удалось бы из-за backward compatibility.

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

31. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от uchiya (ok), 28-Июн-20, 12:17 
Ну да, а две конструкции по итогу иметь - бог не позволяет.
Ответить | Правка | Наверх | Cообщить модератору

37. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Ordu (ok), 28-Июн-20, 13:12 
> Ну да, а две конструкции по итогу иметь - бог не позволяет.

Ну да, примерно так и есть.

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

51. "Гвидо ван Россум предложил включить в Python операторы для с..."  +3 +/
Сообщение от Анон102010210 (?), 28-Июн-20, 14:21 
1) А зачем засорять язык, если можно не засорять?
2) Бритва оккама
3) Вообще-то у белкового мозга есть лимит возможностей в том, сколько правил можно одновременно соблюдать и эффективно добиваться поставленных целей
Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

149. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от Gogi (??), 29-Июн-20, 15:41 
Категорически неверно. "Засорять" - это когда маловажные перделки и "сахарок" добавляются тоннами - как в C# 9.0; А отдельный свич и матч были бы неплохим разделением: когда прогер использует свич, он чётко знает - это БЫСТРО и используем сплошные константы - компилятор легче генерирует оптимальный код. Если это матч - компилер уже знает, надо долго и нудно сопоставлять. И это хорошо.
Ответить | Правка | Наверх | Cообщить модератору

79. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Z (??), 28-Июн-20, 17:35 
Python этим то и хорош, что не тащить всякий мусор в виде дублирующих операторов!
Посмотрите что с С++ сотворили, чужие исходники читать трудновато.
Меньше операторов это главное что отличает современные языки вроде Go, Rust в результате читаемость чужих исходников резко повышается!
Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

92. "Гвидо ван Россум предложил включить в Python операторы для с..."  –3 +/
Сообщение от rshadow (ok), 28-Июн-20, 22:22 
> дублирующих операторов

На вскидку: elif, for/while

> Меньше операторов

Нет. Не операторов меньше. В go например есть и if и switch.
Уменьшают базовую бибилиотеку: никто не тащит в стандарт например парсинг cvs и т.д. Не потому что не могут, а потому что и сторонние разработчики хорошо справляются. Лучше сделать хороший пакетный менеджер, чем поддерживать зоопарк фичей.

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

93. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от rshadow (ok), 28-Июн-20, 22:25 
Нафига две-то? Скриптовый язык, по определению, имеет "умные" операторы. А не "тупо" транслирует в машинный код.
Сделали бы сразу switch, а потом наворачивали на него поддержку таплов, регэкспы и прочее и прочее
Ответить | Правка | К родителю #31 | Наверх | Cообщить модератору

34. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от Аноним (19), 28-Июн-20, 13:10 
> ортогональность фичей языка пошла бы лесом

она и так пошла лесом, то, что делалось ифом, сейчас ещё и мачем.

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

38. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Ordu (ok), 28-Июн-20, 13:22 
>> ортогональность фичей языка пошла бы лесом
> она и так пошла лесом, то, что делалось ифом, сейчас ещё и
> мачем.

Да. Но match удобнее на некоторых случаях. Это во-первых сокращение записи (попробуй вон тот пример с Point переписать на if/elif), во-вторых, match -- это специфический синтаксис, который легко детектируется глазом, после чего ты понимаешь что происходит дальше. Цепочка if/elif может развиваться как угодно, match x -- это как цепочка if/elif по значению x.

Если мы сравниваем switch и if/elif, то это сравнение будет выглядеть примерно так же, как сравнение match и if/elif. Точнее, на качественном уровне так же, а количественно выйдет иначе несколько: меньшее количество юзкейсов для switch, меньше экономия в размере сорца. То есть, switch может быть и имело смысл принять, при отсутствии match'а. Тут вопрос в той количественной планке полезности для новой фичи, которую для себя установили разработчики.

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

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

50. "Гвидо ван Россум предложил включить в Python операторы для с..."  +7 +/
Сообщение от Аноним (50), 28-Июн-20, 14:18 
> не удалось бы из-за backward compatibility.

Не забываем что разговор о питоне.

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

102. "Гвидо ван Россум предложил включить в Python операторы для с..."  –4 +/
Сообщение от Аноньимъ (?), 29-Июн-20, 00:22 
Насмешили!
Многоходовочка от Гвидо! Всех переиграл!

Питон это помойка некогерентного синтаксиса с семантикой бейсика.

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

105. "Гвидо ван Россум предложил включить в Python операторы для с..."  +1 +/
Сообщение от Ordu (ok), 29-Июн-20, 00:46 
> Насмешили!

Я рад.

> Многоходовочка от Гвидо! Всех переиграл!

Нет. Многоходовочка -- это когда план был составлен априорно. Здесь же, ситуация иная, switch был отвергнут из общих соображений, а не потому, что кто-то планировал впоследствии добавить match.

> Питон это помойка некогерентного синтаксиса с семантикой бейсика.

Совершенно нерелевантный обсуждению кусок информации. Твоё отношение к python'у никому не интересно.

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

106. "Гвидо ван Россум предложил включить в Python операторы для с..."  –2 +/
Сообщение от Аноньимъ (?), 29-Июн-20, 01:07 
Секреты интриги расследования. Тонкое стратегическое мышление в развитии скриптов для домохозяек.

Мои бока.

Не знал что у Питона есть секта фанатиков в рунете которые на полном серьезе интересуются "полезной" "политинформацией" о тонкостях решений закулисами так сказать.

Еще и инфантильное тыканье, вы студент? Или Школьник может? Не примите за оскорбление, а то многие на школьника обижаются почему-то. Это нормально ведь, в школе учиться. Только питон там зря преподают. Раньше паскалю учили.

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

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

109. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Ordu (ok), 29-Июн-20, 01:39 
> Не знал что у Питона есть секта фанатиков в рунете которые на полном серьезе интересуются "полезной" "политинформацией" о тонкостях решений закулисами так сказать.
> Еще и инфантильное тыканье, вы студент? Или Школьник может? Не примите за оскорбление, а то многие на школьника обижаются почему-то. Это нормально ведь, в школе учиться. Только питон там зря преподают. Раньше паскалю учили.

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

Можно я раскрою тебе глаза? Я до сегодняшнего дня не знал о том, что в python кто-то когда-то пытался протолкнуть switch. И о попытках протолкнуть match не слышал. И, если честно, если бы меня спросил кто вчера, есть ли в python'е switch или match я бы затруднился ответить, потому как python'ом я пользуюсь весьма эпизодически и поэтому не помню деталей. Но мнение по обсуждаемому вопросу я, тем не менее, имею: я его составил по результатам прочтения данной новости и диагонального листания некоторых ссылок из новости и комментов. Тут есть ссылки на обсуждение предложения внести switch -- и если ты глянешь туда, там нет никакой "политинформации", там чисто техническое обсуждение. Обсуждение match'а тоже не содержит в себе "политинформации". То есть "политинформация" является чистым и незамутнённым продуктом твоей фантазии, от которого ты бодро перепрыгиваешь к выводу о существовании несуществующей группы людей. Даже не замечая того, что вся эта твоя психическая деятельность протекает в выдуманной тобою Вселенной, существующей только в твоей голове.

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

Ой, ну это же легко. Ты перечитай тред. О чём он? Тред о принятии match и о предшествующем непринятии switch. И тут ты такой красивый пришёл трясти своим личным мнением о python'е.

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

127. "Гвидо ван Россум предложил включить в Python операторы для с..."  –3 +/
Сообщение от Аноньимъ (?), 29-Июн-20, 09:38 
Эк вас прёт.
Извините, нет абсолютно времени в подобной мути разбираться.
А отсутсвие чувства юмора и самокритики конечно беда страшная.
Ответить | Правка | Наверх | Cообщить модератору

133. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Ordu (ok), 29-Июн-20, 10:00 
> Эк вас прёт.
> Извините, нет абсолютно времени в подобной мути разбираться.
> А отсутсвие чувства юмора и самокритики конечно беда страшная.

Ну да, давай, демонстрируй нам свою способность уходить в кристаллизованный ad hominem, когда других аргументов придумать не удаётся. Попробуй научиться сливаться в cpaчах без ad hominem: очень полезное умение, особенно для студента.

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

186. "Гвидо ван Россум предложил включить в Python операторы для с..."  +/
Сообщение от Аноньимъ (?), 30-Июн-20, 02:17 
Говорить о себе в третьем лице это клиника.
Ответить | Правка | Наверх | Cообщить модератору

118. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Atterratio (ok), 29-Июн-20, 07:48 
А можно для идиотов объяснить в чём принципиальное отличие? Я по коду особой разницы не вижу.
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

123. "Гвидо ван Россум предложил включить в Python операторы для с..."  –3 +/
Сообщение от Аноним (19), 29-Июн-20, 08:46 
Они сами не могут объёснить, как 30 лет жили без мачи, а теперь вдруг ввели её себе в голову.
Ответить | Правка | Наверх | Cообщить модератору

132. "Гвидо ван Россум предложил включить в Python операторы для с..."  +2 +/
Сообщение от Ordu (ok), 29-Июн-20, 09:57 
> А можно для идиотов объяснить в чём принципиальное отличие? Я по коду
> особой разницы не вижу.

   def whereis(point):
       match point:
           case Point(0, 0):
               print("Origin")
           case Point(0, y):
               print(f"Y={y}")
           case Point(x, 0):
               print(f"X={x}")
           case Point():
               print("Somewhere else")
           case _:
               print("Not a point")

C-style switch позволяет использовать в качестве переключателей лишь константы примитивных типов. Здесь же используются не константы и не примитивных типов. Здесь используются паттерны. Например, case Point(0,y), под этот паттерн подпадёт любой Point у которого x==0. Но мало того, match создаёт лексический биндинг: он связывает переменную y со значением point.y.

Каждый паттерн здесь (за исключением _), проверяет что point имеет тип Point, плюс какие-то дополнительные условия на значения x и y накладывает. switch так не умеет. if/else/elif позволяет такое сделать, но там получится мешанина вложенных if'ов.

затем:

   match point:
       case Point(x, y) if x == y:
           print(f"Y=X at {x}")
       case Point(x, y):
           print(f"Not on the diagonal")

демонстрируешь ещё одну фишку, доп. условия. Первый case сработает если point имеет тип Point и point.x == point.y. Обрати внимание, тут тоже происходит создание локальных переменных x и y, и они доступны в if'е.

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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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