После года разработки представлен значительный выпуск языка программирования Python 3.10. Новая ветка будет поддерживаться в течение полутора лет, после чего ещё три с половиной года для неё будут формироваться исправления с устранением уязвимостей...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=55907
> Реализованы операторы "match" и "case"Не прошло и 30 лет) уря
Странно что у них не было такой базовой возможности.
А кто решил, что эта возможность - базовая? Без неё вполне обходились.
Обходиться можно и одним while.
While? Зачем, когда есть if и goto?
jmpz хватит всем.
Goto как раз в нем нет
Или так
matching = {<value>: <response>, ... }
return matching.get(value, 'Something else')
у них был elif
Python отличается от низкоуровневых языков.В Python акцент сделан на поддержке сложных тыпов данных и операций над ними.
Оператор выбора в Python не нужен и очень вреден.
Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.
Так там по-моему словарь вместе с матчем переписали на новую эффективную реализацию. В итоге матч эффективней ифов, не говоря уж о том что полезнее. Что такоего вредного? Более чистый код, более быстрый? Надо чтобы плохо было?
Но и сам питон становится более жирным, неоднородным, его становится тяжелее понимать (надо знать и элсифы и кейсы и через словари) и учить и сам интерпретатор питона теперь написать (и поддерживать) сложнее.
Про дзен питона на который давно забыли, если вообще когда-то помнили, ("должен существовать один и, желательно, только один очевидный способ сделать это") я и вовсе молчу.
Есть тут сермяжная правда. Даже простое elif окажется по количеству букв и строк короче swith/case/break в с. Код при этом остаётся вполне читаемым. Ну и реализация с помощью словаря имеет некоторый смысл в особо сложных случаях, когда условий выбора много и они требуют дополнительных проверок.
> Python отличается от низкоуровневых языков.
> В Python акцент сделан на поддержке сложных тыпов данных и операций над ними.Это самовосхвалительная туфта. Адепты примерно каждого языка такое о своём языке говорят.
> Оператор выбора в Python не нужен и очень вреден.
А это сектантсоке повторение объяснений гуру почему "всё хорошо", без какой-либо попытки критического анализа.
> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.
А это костыль. В этот словарь предполанается лямбды помещать что ли? Таки они даже несколько выражений не поддерживают. Или описывать отдельные функции и вызывать их через словарь? Очевидное переусложнение. Но гуру рассказал, что замена хорошая и правильная. А сектанты верят.
ко-ко-ко-ко... вы про перл или питон сейчас?
Пятоно-свитчу (до 3.10) посвящаетсяdef pyatono_switch(human):
aka_switch = {
1: "Men",
2: "Women",
3: "Urod"
}
print aka_switch.get(human, "Hren ego znaet...")
> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь". Оператор выбора заменен действием по выбору значения из словаря.Упоролся? Вот как словарь заменяет-то? Лямбды в него добавлять, которые тоже вроде ну такие были как минимум до последней пары версий (и это даже, возможно, и фича)
> Вот как словарь заменяет-то? Лямбды в него добавлять....Пятоно-свитчу (до 3.10) посвящается
def pyatono_switch(human):
aka_switch = {
1: "Men",
2: "Women",
3: "Urod"
}
print aka_switch.get(human, "Hren ego znaet...")
>> Вот как словарь заменяет-то? Лямбды в него добавлять....
> Пятоно-свитчу (до 3.10) посвящается
> def pyatono_switch(human):
> aka_switch = {
> 1: "Men",
> 2: "Women",
> 3: "Urod"
> }
> print aka_switch.get(human, "Hren ego znaet...")Так а если нам действие сделать нужно? Различающееся в разных ветках.
>>> Вот как словарь заменяет-то? Лямбды в него добавлять....
>> Пятоно-свитчу (до 3.10) посвящается
>> def pyatono_switch(human):
>> aka_switch = {
>> 1: "Men",
>> 2: "Women",
>> 3: "Urod"
>> }
>> print aka_switch.get(human, "Hren ego znaet...")
> Так а если нам действие сделать нужно? Различающееся в разных ветках.result = getattr(some_module, aka_switch.get(human, "undefined"))()
some_module: должен иметь методы: Men,Women,Urod,undefined
Переусложнённый нечитабельный отстой же получается. Модуль ещё отдельный городить, вместо того чтоб здесь и сейчас написать.А если ещё и переменные из локального скоупа надо использовать, да при каждом выборе разные? Совокупность всех нужных переменных в каждую функцию передавать, даже если большая часть переменных в какой-то функции не нужны? Ещё и варнинги посыпятся.
>[оверквотинг удален]
>>> def pyatono_switch(human):
>>> aka_switch = {
>>> 1: "Men",
>>> 2: "Women",
>>> 3: "Urod"
>>> }
>>> print aka_switch.get(human, "Hren ego znaet...")
>> Так а если нам действие сделать нужно? Различающееся в разных ветках.
> result = getattr(some_module, aka_switch.get(human, "undefined"))()
> some_module: должен иметь методы: Men,Women,Urod,undefinedИмхо, выглядит кривее лесенки `if elif else`.
> Имхо, выглядит кривее лесенки `if elif else`.100% согласен, а со switch-ем еще нагляднее, даже в шеллах и то есть...
> Оператор выбора в Python не нужен и очень вреден.Потрудитесь обосновать.
> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь".
В чём её развитость?
> Оператор выбора заменен действием по выбору значения из словаря.
Кем и когда заменён?
Словарь может заменить оператор выбора лишь в очень маленьком подмножестве кейсов. В общем случае конечно же это не так - например, со стоварём не будет ни диапазонов, ни биндинга, ни частичных матчей, ни мутабельных типов.
словарь не заменит match, потому что match позволяет структурное сравнение:match alist:
case [_, 'word2', *rest]: ...
case ['word1', _, *rest]: ...Через словарь такого не сделаешь.
Да, это иногда выглядит прямо по Борхесу https://ru.wikipedia.org/wiki/%D0%9A%D0%...) но иногда это надо.
Это называется НАМ (нормальный алгорифм Маркова). Третий вариант формализации после Машины Тьюринга и Стрелки Чёрча. Т.е. одного такого match достаточно для реализации алгоритмов, в отличие от словаря.
> Стрелки Чёрчастреклу Пирса знаю, Чёрча - нет.
>> Стрелки Чёрча
> стреклу Пирса знаю, Чёрча - нет.Да, спасибо. Правильно было бы написать Лямбда Чёрча. "Стрелка" это жаргон из-за распространённого синтаксиса:
"
Теперь посмотрим на константную функцию:(λx.(λy.x))
Константная функция является функцией двух аргументов, поэтому наш терм принимает переменную x и возвращает другой терм функцию (λy.x) . Эта функция принимает y , а возвращает x. В Haskell мы бы написали это так:
\x -> (\y -> x)
Точка сменилась на стрелку, а лямбда потеряла одну ножку.
"
https://anton-k.github.io/ru-haskell-book/book/14.html"
В: с каких пор js - чисто функциональный язык? )
О: С тех пор как ввели => Это стрелка чёрча со всеми вытекающими следствиями
"
https://telegrammy.net/group/nodejs_ru/page1104.htm#110357
Стрелками так же обозначается марковская подстановка. https://gsom.spbu.ru/images/cms/data/teoriya_algoritmov.pdf
поскольку писал о НАМ, получилось что получилось.
Возможность нужная и полезная, но никак не базовая. В большинстве популярных языков её до сих пор нет, в некоторые, например Java, постепенно, очень уж медленно, добавляют, в Kotlin когда-то обсуждали и решили, что "слишком сложно", так и не добавили.Это я про pattern matching with deconstruction, если что, не про простой switch-case.
Но то, что в Python простого switch-case не было - это фейл, да.
Кстати, я надеюсь, этот новый match-case хоть значение возвращает, как в других языках?
Через какую дырку он их будет возвращать?
Через такую же, как и в других языках. Например так:result = match point:
case Point(x, y) if x == y:
f"Y=X at {x}"
case Point(x, y):
f"Not on the diagonal"Вот как в Scala делается (второй пример посмотрите):
https://docs.scala-lang.org/overviews/scala-book/match-expre...
Как в нормальных языках это делается, я знаю. Только по-нормальному - это не питонично.
Ну...да.
Учитывая развитие языка как языка proof of и прототипирования first
Это большое зло для Python. Лично не буду использовать Python-3.10 и вам не советую.
Если вы думаете, что структурный pattern matching это оператор switch из сишечки, то вы вообще не понимаете о чём идёт речь. А вот те, кто хотя бы трогал функциональные языки типа Haskell и Clojure просекли фишку и сейчас радостно потирают руки.
А после версии 3.11 будут версии NT и 95?
3.12Ибо разделяться на ветки:
-> родненький интерпретатор для домохозяек с хендлерами и бсодами
-> уворованный у IBM интерпретатор Perl/2 но с питоновым синтаксисом и поведением в первом приближении
не собираются
А, ну тогда после 3.12 - 4.0. NetWare вспомнилось :)
Прятно видеть человека сидевшего под маздаевским ДОСом.
Почему по маздаевским? Был чУдный DR DOS
Когда уже питонисты начнут пилить поддержку мобилок и нормального гуя из коробки? Весь потанцевал профукали
> и нормального гуя из коробкиа чем tkinter плох?
Всем
Тем, что устроен, как мысли шизофреника.
Никогда. Потому как цели другие совершенно. И по тому куда и как всё идёт скоро не будет вообще никаких локальных приложений кроме системных. Все будут как сервисы.
Этим влажным мечтам что всё будет в вебе уже столько лет, что даже не смешно. Есть много локальных задач для которых нужны именно локальные приложения, а вебня только вредит и позволяет всё централизованно испортить. Как давеча достали свистеть смузилюбы что их инстамордокниги сдохли
Охлади своё траханье
углепластик.
PyQt хватит всем. Pyside не знаю зачем, но они вроде взаимозаменяетмые или около того. Ты предлагаешь им изобретать ещё одни кути? А других фреймворков как известно не существует. На телефонах питону не хватает производительности как по мне, там чем больше нейтива тем лучше.
У этих сбоку прикручиваемых фреймворков с лицензиями вопросики, плюс ты явно не пытался ничего собрать на мобилки на актуальных версиях, особенно PySide, которые прям так у себя в чатике и сказали что раз питон официально не поддерживает мобилки, то и мы не будем
Других всё равно нет.
> собрать на мобилкиПисать на питоне под мобилки - это примерно как циклевать полы лезвием 110-й забивки.
Только потому что нормальной поддержки не завезли.
В остальном он воообще ни разу не хуже статыщ жабоскриптоподелок
Это у тебя в Свидетельстве о рождении вопросики с лицензией. А у Qt - GPLv2/GPLv3/LGPLv3.
Читай
> потанцевалПитонисты тоже люди, да и полезно программистам при их сидячей работе.
Может быть когда появятся нормальные мобилки(пуризм?) и нормальный гуй?
Ну и сам факт наличия таких либ как tkinter в стандартной либе (какая же она тогда стандартная) (офк можно не собирать его при сборке из исходников но все же) вызывает недоумение.
Весь гуй, какой только возможен, в питоне есть - биндинги у qt, gtk, wx, не считая всякую маргинальщину. Мобилки не нужны, но есть kivy.
Если Вы не питонист, то, собственно, какое Вам дело? =)
А если питонист, то почему в третьем лице? Этот вопрос как раз Вам и должен быть адресован ;-)
> Предоставлена возможность использования круглых скобок в операторе with для разнесения на несколько строкГосподь Всемогущий, неужели скобки нужны и добавляют читабельности?! Так можно и до инфаркта довести питонбоев, которые 30 лет доказывали обратное.
тут скобки нужны именно для переноса строк кода без использования обратного слэша, насколько я понимаю
Именно, как человек страдающий от семиэтажных ифов и слэшей в строках я всецело поддерживаю данное нововведение (в ифах скобки тоже используются кстати).
А если немного формализовать, то скобки тут нужны для выделения блока кода. Для этого же нужны и фигурные скобки в нормальных языках. Я не знаю чем питонистам скобки помешали, мне с ними гораздо проще ориентироваться: они явно показывают где блок начинается и где заканчивается. В питоне же блоки кода висят в воздухе, никогда не знаешь закончился он уже или там еще продолжение.
Ну, как бы это сделано нарочно, чтобы уйти от лесенки из {begin-end|{-}|.code-} и чтобы молодежь сразу писала не слабочитаемые но формально валидныеif(zul()){foreach(z in zul().result){if(z<foo()+1){baz++;for(int k;k<baz;k++){snafu.DoThisFuckingWork(arg);}}else{bar+=(int)z.takeThisFuckingObjectStaff(baz);}}}else{baz--;}
а более читаемое
if(zul())
foreach(z in zul().result)
if(z<foo()+1)
baz++;
for(int k;k<baz;k++)
snafu.DoThisFuckingWork(arg);
else
bar+=(int)z.takeThisFuckingObjectStaff(baz);
else
baz--;
Для этого еще 20 лет назад в мс бейсике было автоформатирование кода при вводе.
Все равно нечитабельно, даже с автоформатомbegin
begin
begin
end
end
begin
begin
begin
begin
begin ... end
end
end
end
end
end
Ты забыл поставить ; и .По мне так вполне читаемо гораздо лучше. Притом не надо думать поставил ты 3 пробела или TAB
Очень субьективно, если ты придерживаешься pep8 и какого-нибудь we make python style guide, то это будет в разы лучше читаться чем тонны строк с бесполезными для человека скобками. Не зря yaml сечас вытесняет json-like конфиги.
Тебе итак и итак нужно делать пробелы (и думать что ты поставил табы или пробелы) если хочешь писать читаемый код, зачем тебе еще {} или begin\end непонятно.
Это и писать дольше и места занимает гораздо больше, на экран помещается гораздо меньше.
Так еще и питон гарантирует (в некоторых пределах) что форматирование соответствует смыслу, языки с {} этого не гарантируют и запросто может быть такое
if(a==1){
smb;} else {delete(all);}if(a==2){delete(world);
}
else {
build(all)
}
Ну и бонусом не нужно думать где оставлять скобки.
Легче читать человеку, легче писать парсер, быстрее парсить машине, меньше весят исходники, код становится однороднее. Из недостатков только вот такая сабжевая ситуация когда хочется разбить выражение на несколько строк, для этого () и добавили, теперь идеально.А про табы и пробелы в нормальных редакторах давно не нужно думать, но лично я считаю что табы не нужны в принципе.
> ...и запросто может быть такое...Давным-давно, в бородатые времена, когда программисты были еще молодыми и даже умели программировать - они исповедовали философию "Инструмент должен делать то, для чего предназначен."
Это значит, что молотком надо забивать гвозди. Кофеваркой варить кофе. Компилятором компилировать код. А форматировщиком его форматировать.
И до сих пор существует такой инструмент, под названием clang-format, который как раз предназначен для того, чтобы неотформатированный (или не так отформатированный) текст(!) программы приводить к нужному отформатированному виду. Потому что текст(!) программы пишется для программиста. А программа для компилятора.
Этой программой, например, давным давно безальтернативно пользуется гугл (она подвязана к коммитам как хук и все приводит к принятому в данном конкретном проекте виду).
А не молоток с не отключаемой функцией кофеварки, в смысле комилятор с не отключаемой функцией форматтера.
--
Хорошая штука опеннет, правда? Тут можно наладить связь поколений и отрыть такие новые, неизведанные для себя вещи?
> И до сих пор существует такой инструмент, под названием clang-format, который как
> раз предназначен для того, чтобы неотформатированный (или не так отформатированный) текст(!)
> программы приводить к нужному отформатированному виду. Потому что текст(!) программы пишется
> для программиста. А программа для компилятора.Это так в сказке. В реале я попробовал объяснить одному разработчику исходных текстов, что отсутствие символа перевода строки в конце исходника не является ошибкой (фатальной для трансляции), поскольку при распечатке на бумаге человек это дело не увидит. Не смог.
Это не в сказке, это так в реальном мире взрослых нормальных программистов работает. То, что вы не смогли обезьяне что-то объяснить, этого никак не отменяет.Объясняю как надо было делать правильно: несешь менеджеру файл ".clang-format", менеджер прописывает этот стиль как обязательный, на все коммиты вешается хук (например, такой, как здесь https://habr.com/ru/post/433832/) и аналогичное вешается на стороне CI. Все - автоформатирование работает без усилий разработчика.
А если он упертая обезьяна и хочет форматировать по своему, то коммиты банально не принимаются гитом. Автоотлуп и обезьяна может сколько угодно материть проклятые несгибаемые серверы или увольняться.
--
Ну а если же у вас просто свое и никто из вас не главный в общем хелловорлде, то оба готовите по файлику и выбираете подбрасыванием монетки. Кому повезло, тот молодец. Дальше все как выше.
--
В гугле, как мы знаем, работает огромное количество народа. И среди них множество обезьян.
Так вот, clang-format прекрасно решает все проблемы форматирования и однообразности кода. Гибко и без того, чтобы намертво прибивать это к языку.Для проверки просто находите файл .clang-format в репах гугла, как это сделано здесь: https://github.com/googleapis/google-cloud-cpp
И еще раз - оно работает! Реально работает в огромнейших коллективах разношерстных программеров.--
p.s. Я до сих пор поражаюсь уровню идиотизма, который заставил гвидо выделять логические блоки программы отступами. Более идиотского решения, наверное, с тех пор ни в одном языке не принимали. Даже в хрусте. Даже в джаваскрипте со всеми его wat.
> Я до сих пор поражаюсь уровню идиотизма, который заставил гвидо выделять логические блоки программы отступамиА что не так с ними? В чём конкретно проблема? Copy-paste не работает? Это всё?
ИМХО - хорошо читаемый код - разве это не прекрасно? Причём из коробки работает форматирование. Без всяких дополнительных танцев с бубном (типа хуков, хаков, х.яков и прочей лабуды), без увольнений хоть и упрямых, но, возможно, суперзвёзд программирования.
Во-первых, это плохо а не хорошо читаемый код.В этой же теме есть пример с поехавшим форматированием просто потому, что шрифт не моноширинный. И этот код читается только благодаря скобкам и запятым.
Текст программы пишут для людей. Текст программы должен быть читаем любым человеком в любых условиях, а не конкретным шрифтом в конкретном редакторе при конкретных настройках.
Более того, если эта программа так отпечатана - то не существует способа понять ее правильно без полного реверса алгоритма. Потому как мышкой пробелы выделить на бумаге не получится.
Во-вторых, программа зависит от разного количества разных невидимых символов. Просто вдумайтесь в эту фразу! Даже эзотерические языки программирования, где значение оператора зависит от его позиции в строке выглядит менее бредовым.
Более того - на самом деле невидимые символы смешивать можно, но строго определенным образом.Так что в результате мы имеем дизайн языка программирования в стиле "можно писать, нельзя читать".
> Без всяких дополнительных танцев с бубном
Запуск одной консольной утилиты - это танцы с бубном? А запуск целой конкретной IDE для написания и чтения кода - не танцы? Пытаетесь натянуть сову на глобус в попытках оправдать глупость любимого языка?
Выделю ключевой момент в твоих претензиях.> Текст программы пишут для людей. Текст программы должен быть читаем любым человеком
> в любых условияхИ даже без предварительной обработки форматером? ИМХО, ты лукавишь. Попробуй в любой программе на C, C++ поубирать "лишние" пробелы. Посмотрим, как легко у тебя получится прочитать код или поводить карандашиком на бумажке.
> Во-вторых, программа зависит от разного количества разных невидимых символов.
В других языках такие символы видимы, но без соблюдения отступов их наличие читаемости практически не добавляет. К этому моменту у тебя почему-то нет вопросов. Почему? И ведь совершенно не секрет, что очень частая ошибка программиста - пропуск этих самых скобок. Понятно, что IDE подскажет, но ведь ты не сторонник запускать IDE, судя по твоим высказываниям ниже.
>> Без всяких дополнительных танцев с бубном
> Запуск одной консольной утилиты - это танцы с бубном? А запуск целой
> конкретной IDE для написания и чтения кода - не танцы?IDE используется не только для написания кода. Так что не надо передёргивать. Некрасиво это. Ты в любом случае её будешь запускать для написания сколь-либо сложной программы. Я вот свои микропрограммки вообще в текстовом редакторе ваяю. И ничего, живу как-то с этим, уже лет пять от начала знакомства с Питоном.
> Пытаетесь натянуть сову на глобус в попытках оправдать глупость любимого языка?
Кто тебе сказал, что он мой любимый? Я им пользуюсь, да. Считаю его для своих задач более удобным, чем остальные. Но не скажу, что вот прямо люблю его. У него есть свои недостатки. Но основной - никак не в синтаксисе, это точно (ИМХО, само собой).
Эти методы не подходят (да и ума не прибавляют). Он сам себе менеджер в хелловорде. Конкретно в том случае разношёрстный нахамил неопределённому кругу линукс-разработчиков, что позволило перегреть ему место, коим он думает. Но когда такие гуры набирают паству, которая начинает друг на друга авторитетно ссылаться, что со всем этим делать? Вот в данной теме - удалось кому объяснить?
> Он сам себе менеджер в хелловорде.Тогда о чем вообще беспокоится? ССЗБ и давай досвидания.
Чей не любовница же, чтобы отношения лелеять?> Вот в данной теме - удалось кому объяснить?
Как минимум некий круг лиц узнал о clang-format. Попробуют, втянутся. Путь к знаниям бывает вполне извилист.
Кто ныне переименовывает master в slave? Вот такие буратины. Набралась критическая масса и пошло-поехало.
Раз уж ты заговорил про инструменты и про их целевое назначение, так и быть, открою для тебя новую неизведанную вещь: Питон и делает то, для чего предназначен.Куча инструментов для быстрой наброски прототипа (молотки, кофеварки, компиляторы)? Ты серьёзно, что ли? Готовый комбайн для таких целей куда лучше всего этого склада.
> Готовый комбайн для таких целей куда лучше всего этого склада.Ты, надеюсь, пишешь это с монокристалла, на котором распаяна память, питание, графика, контроллер клавиатуры и мыши. И с операционной системы, которая является монолитным блобом, единоразово загружаемым в память без поддержки вот этих вот всяких динамических связываний?
А если нет, то о чем вообще можно говорить?
Ты, надеюсь, когда ешь вилкой (или ложкой) еду, не думаешь, что она (вилка) состоит из кучи модульков, библиотечек и утилиток? И действительно, о чём ещё говорить?
Будем считать, что от утверждения "Готовый комбайн куда лучше всего этого склада" таким вот простым "вопрос на вопрос" образом ты отказался?
> Будем считать, что от утверждения "Готовый комбайн куда лучше всего этого склада"
> таким вот простым "вопрос на вопрос" образом ты отказался?Будем считать твой вопрос про то, на чём я всё это пишу - совсем некорректным. Каждому инструменту своё место. Где-то лучше модульки. В других случаях - комбайны. На это я и пытался всё время намекнуть. Теперь вот говорю прямым текстом.
>[оверквотинг удален]
> код. А форматировщиком его форматировать.
> И до сих пор существует такой инструмент, под названием clang-format, который как
> раз предназначен для того, чтобы неотформатированный (или не так отформатированный) текст(!)
> программы приводить к нужному отформатированному виду. Потому что текст(!) программы пишется
> для программиста. А программа для компилятора.
> Этой программой, например, давным давно безальтернативно пользуется гугл (она подвязана
> к коммитам как хук и все приводит к принятому в данном
> конкретном проекте виду).
> А не молоток с не отключаемой функцией кофеварки, в смысле комилятор с
> не отключаемой функцией форматтера.Переведу ваше предложение: чтобы вывести яйцо мы сначала измажем одежду бензином, потом уберем бензин, потом выведем яйцо. Т.е. сначала мы потратим умственные усилия и время на расставление и скобочек и пробелов, потом компилятор уберет и то и другое и оставит информацию только одних (для C скобочек). Возникает собственно вопрос а зачем нам нужны скобочки? Те же бородатые программисты исповедовали и KISS, а вы почему-то наоборот все усложняете.
> Хорошая штука опеннет, правда? Тут можно наладить связь поколений и отрыть такие
> новые, неизведанные для себя вещи?Хорошая, но я не студент-хипстер и могу рассказать как писали программы на basic в тетради потому что компьютер был только в вузе и время выделяется только чтобы внести программу и запустить (и то не долго).
Тяжело, наверное, живется с межушным ганглием? Вы в магазине цены тоже неправильно читаете?
> Тяжело, наверное, живется с межушным ганглием? Вы в магазине цены тоже неправильно
> читаете?Вижу что аргументы у вас закончились, остались только оскорбления. Рад что ответил на все ваши вопросы, всего доброго, не опоздайте к психологу.
> Вижу что аргументы у вас закончилисьАргументы я привел в посте, на который вы невероятно глупо ответили. Причем это были железобетонные аргументы из реального мира - такие как "солнце светит", "вода мокрая", "острым ножом можно порезаться".
Ну а дальше я просто вам посочувствовал, так как ввиду вашего комментария сразу стало понятно кто мне ответил. Вас оскорбила констатация факта, что у вас межушный ганглий? Ну так это ваше полное и неотъемлемое право - оскорбляться на правду или нет.
>> Вижу что аргументы у вас закончились
> Аргументы я привел в посте, на который вы невероятно глупо ответили. Причем
> это были железобетонные аргументы из реального мира - такие как "солнце
> светит", "вода мокрая", "острым ножом можно порезаться".
> Ну а дальше я просто вам посочувствовал, так как ввиду вашего комментария
> сразу стало понятно кто мне ответил. Вас оскорбила констатация факта, что
> у вас межушный ганглий? Ну так это ваше полное и неотъемлемое
> право - оскорбляться на правду или нет.Еще раз - зачем нужны фигурные скобки, если их функцию итак выполняют пробелы (которые в любом случае везде используются)?
Это просто лишние символы которые надо обрабатывать в парсере, которые мешают читаемости, которые занимают по 2 байта на блок в конце концов.
Вы спутали бейсик с паскалем? Ого.
> Вы спутали бейсик с паскалем? Ого.Ничего не спутал, тогда в вузе преподавали бейсик. До сих пор на антресоли тетрадь лежит.
Хорошая штука опеннет, правда? Тут можно наладить связь поколений и отрыть такие новые, неизведанные для себя вещи?
>> Вы спутали бейсик с паскалем? Ого.
> Ничего не спутал
>> Для этого еще 20 лет назад в мс бейсике было автоформатирование кода при вводе.
> Все равно нечитабельно, даже с автоформатом
> begin
> begin
> begin
> end
> end
> Хорошая штука опеннет, правда? Тут можно...... публично обгадиться и две недели спустя обгадиться второй раз.
Ну чо, поздравляю.
>[оверквотинг удален]
>>> Для этого еще 20 лет назад в мс бейсике было автоформатирование кода при вводе.
>> Все равно нечитабельно, даже с автоформатом
>> begin
>> begin
>> begin
>> end
>> end
>> Хорошая штука опеннет, правда? Тут можно...
> ... публично обгадиться и две недели спустя обгадиться второй раз.
> Ну чо, поздравляю.Вас не смущает что вы смешали комментарии разных людей (к которым я не имею никакого отношения) и выдаете за мою оплошность (видимо подразумевая что я называл псевдокод выше бейсиком, но я такого не писал)?
Ты хочешь от говнокода читаемости? Сделай нормально методами класса.
Только исходник со скобками можно отформатировать в любой стандарт, а исходник на Питоне, если запорол, да он чужой, то... как всё изящно... и как элегантен поиск мест ошибок...
Все эти питоняшки, отстаивающие "такой суперсинтаксис питона" пишут одноразовые программы. Написал, запустил и в мусорку.А вы им про "чужой код" и поиск ошибок. Какой поиск? Если не работает - вытер файл и пиши по новой.
> Все эти питоняшки, отстаивающие "такой суперсинтаксис питона" пишут одноразовые программы.
> Написал, запустил и в мусорку.
> А вы им про "чужой код" и поиск ошибок. Какой поиск? Если
> не работает - вытер файл и пиши по новой.Просто ваш возраст похоже не позволил вам видеть perl.
>никогда не знаешь закончился он уже или там еще продолжениеОчевидно же, если следующая строка начинается левее, то закончился.
PS А то на ini-файлы Сыстемды как-то не жалуетесь: закончилась ли текущая секция?
> Очевидно же, если следующая строка начинается левее, то закончился.У меня шрифт не моноширинный. Так что там про "левее"? Или язык программирования не должен существовать без единственно верного, прибитого к нему гвоздями редактора?
Не вникайте, у бота просто сработал триггер, на Пистоне оно и строчки не написало.
Заодно можно ввесть фигурные скобки { вместо говночетырехпробелов и говнотабов.
Покая я заметил, что 90% тех кто хочет где-то там в другом языке менять синтаксис никогда не писали на нем :)
"Я не толстая, они мне просто завидуют" (с) любой питонист на любое "у питона синтаксис объективно говняный".
А я и не питонист :p
Go + Java, просто смотришь на умников тут и понимаешь, что чем больше сейчас народу в IT входит тем хуже сообщество становится относительно знаний, опыта и... общения.
А, ну это да. Тут ты 100% прав, не смею спорить.
Ну-ка, ну-ка, как ты докажешь, интересно, ОБЪЕКТИВНОСТЬ говняности синтаксиса Питона. Мне вот для моих целей вполне нормально.
> Ну-ка, ну-ка, как ты докажешь, интересно, ОБЪЕКТИВНОСТЬ говняности синтаксиса Питона.
> Мне вот для моих целей вполне нормально.Для соответствующих целей и соответствующий синтаксис нормально подходит.
Правда, при этом у раста и джаваскрипта все намного хуже. Так что я не так сильно не люблю питон, как может показаться. Убрать отступы, идиотские if __name__ == "__main__": do и вполне можно жить.
Не нужно. Мне и двух пробелов хватает.
А как ты без скобок будешь ограничевать пространство выражения?
Они хотят больше отступов всевышнему отступов.
Можно сделать дробные отступы, например. Везде 4, а для круглых скобок - 3. Много есть способов сделать всё через Ж, если откровенно говорить.
> Можно сделать дробные отступы, например. Везде 4, а для круглых скобок -
> 3. Много есть способов сделать всё через Ж, если откровенно говорить.Можно добавить юникодные пробелы разной ширины. Тут есть хорошая табличка: https://jkorpela.fi/chars/spaces.html
>Реализованы операторы "match" и "case" для сопоставления с образцомВреднейшее изменение. Единственно верный способ - через ассоциативный контейнер. A if else if else if else if - это говнокод, а match - сахар для него.
Которые да, правда, нужно делать
а) из общего класса "ассоциативный контейнер Х" класс "иммутабельный ассоциативный контейнер Х"
б) каким-то образом оптимизировать по памяти и времени инициализации.
в) у еще будет вопрос с областями видимости контейнера.В то же время простые константные типы сами по себе неизменяемы сразу и без вопросов, не требуют затрат на создание и кучи меты для хранения и при это явно следуют правилам видимости переменных языка: к примеру, константа заданная в match видна только там и это на деле хорошо.
Вот эти проблемы и надо было решать, а не несуществующие проблемы.
>>Реализованы операторы "match" и "case" для сопоставления с образцом
> Вреднейшее изменение. Единственно верный способ - через ассоциативный контейнер.Если сопоставление с образцом возможно реализовать через это -- оно неполноценное сопоставление.
> A if else if else if else if - это [Вырезано Цензурой],
> а match - сахар для него.Сопоставление с образцом первично и позволяет обходиться без этих ваших утрирований.
Ну-ка реализуй пример про Point через ассоциативный контейнер.
Ты тот ламерок что уже выше написал? Продублирую:> Оператор выбора в Python не нужен и очень вреден.
Потрудитесь обосновать.
> Вместо оператора выбора в Python есть очень развитая поддержка типа "словарь".
В чём её развитость?
> Оператор выбора заменен действием по выбору значения из словаря.
Кем и когда заменён?
Словарь может заменить оператор выбора лишь в очень маленьком подмножестве кейсов. В общем случае конечно же это не так - например, со стоварём не будет ни диапазонов, ни биндинга, ни частичных матчей, ни мутабельных типов.
> Единственно верный способ - через ассоциативный контейнер
Ну сделай на нём все примеры испоьзования матча из новости, вместе посмеёмся.
If else не проверяет полноту, как и контейнер. Да и типами и статическим анализом засада
>Предоставлена возможность использования круглых скобок в операторе with для разнесения на несколько строк определения коллекции контекстных менеджеров. В том числе разрешено оставлять запятую после финального контекстного менеджера в группеКонечно, круто, но на python 3.4 этого не завезли и не завезут. Ибо они дропнули ХРюшу вместе с 3.4.
>Дропнули двадцатилетнее дырявое говно мамонта.Пишаль-бидэ.
> они дропнули ХРюшу вместе с 3.4.Как что-то плохое. Учитывая, что последующие три ОС (виста, семень, восемь-без-единицы) уже в состояниях abadoned и out-of-extended-support соответственно, а восемь-один близко к завершению lifecycle.
И тут вы... Я когда узнал что поддержка 3.4 нужна для этих хрюшефилов ужаснулся и специально её дропнул в своём приложении. Ещё не хватало вам, паразитам, комфортные условия создавать.
>В модуль typing, предоставляющий средства для задания аннотаций типов, добавлен новый оператор, позволяющий использовать синтаксис "X | Y" для выбора одного из типов (тип X или тип Y).Бэкпортируемо на 3.4
>Удалён старый парсер, на смену которому в прошлой ветке пришёл парсер PEG (Parsing Expression Grammar).
>Мы не осилили LL(*)- ситуация называется.
> Потому что гладиолус!Ясно.
В прошлой новости о новой версии Python писали, почему это было сделано. Ну и вообще зачем и почему делается та или иная фича у Python собрано тут https://www.python.org/dev/peps/pep-0617/
Живее всех живых
Python шляпа
Боярского?
Пока питон будет работать в 25 раз медленнее, чем С++, а не в 1,5-3 хотя бы, применений ему мало. Я уже не говорю о том, что очень нужные в разработке библиотеки (например для многопоточности и async await) написаны нубами.
Что ты собрался делать с такой скорость, ор.
Даже обычные десктопные приложения юзающие Qt тормозят, что уж говорить про все остальное.
Которые на C++? 8-) УМВР.
У меня тоже не тормозят. Какой-то миф таскают по форумам уже несколько лет.
Ну и куда тебе тогда спешить?
Вот так и палятся админы локалхоста, которым начальство никогда не задавало вопрос "А почему на нашем неплохом и недешёвом железе всё так адски тормозит даже при небольшой нагрузке?".
Весь ИИ на Питоне и чё? Никто не помер.
Жава, фортран, си да плюсы. Где-то может еще лисп\пролог остался, ну если не сеточки а логическое программирование.
От питона там тока обёртки(типичный кстати "пайтон вэй" - спереть чото, обернуть в пайтон и орать как же быстр(!) и хорош их язык и как же на нем много всего "сделано").
А по сути он язык-прокладка.
Васян, и кто же из нормальных дата сатанистов втыкает в Java или C++ да и зачем им это? А на Python любой школьник и даже Васян могут через недельку начать выдавать нейронки.
Весь ИИ на С++, деточка. А на питоне только внешняя обвязка для макак, чтобы могли этот С++ вызывать.
А нафига ему быть на питоне?
Это не ко мне вопрос, а к анониму 61 выше.
Предположу, что вот те учёные, которых ты макаками обозвал, куда более интеллектуально развитее подавляющего большинства программистов на C++.
А с чего ты взял, что я про ученых, а не опеннетных "программистов" на питоне, которые даже не знают что под капотом у пайторча, нумпи и иже с ними?
Учёные тоже используют Питон. И далеко не всегда они готовы вникать в нюансы разработки на C++. Прочитай своё же высказывание и убедись, что его можно толковать двояко.
Прочитал. Можно.
Но мы же на опеннете, ресурсе для программеров и иже с ними. Почему надо уточнять, что разговор идет не о швеях, прачках и ученых?
Может быть потому, что учёные здесь тоже могут присутствовать?
Отлично, Андрея назвал нубом за глаза, а чеж не в лицо на конфе какой-нибудь?
Просто нужно использовать его не на Pentium 133 Mhz.
Он объективнее быстрее и гораздо, ГОРАЗДО менее жирный чем Node.JS и JS на котором сейчас пишут поголовно все и по ним же меряют все остальное. (Если ты про Async await - лучше пользовать Go, а не Cpp)Он всегда будет медленее чем компилируемые Go, Rust, C, Cpp. Даже его чисто питоновская интерпритация PyPy а не сишная.
При этом для ускорения некоторые модули пишут на Си и пользуют биндингом (смотри NumPy, Pandas и иже с ними), однако если сравнивать по удобству, сколько времени тебе потребуется написать программу которая условно говоря прочитает гигабайт сырых данных из CSV, БД, и сделает по ним Pivot table с небольшой математикой и обратно все это Сохранит в CSV или в формате SQL INSERT.
На Python написание этой логики может занять минут 20 если уже сталкивался с такой задачей или сталкиваешься с ней постоянно. А даже если ты C++ магистр и уже делал это у тебя на все это дело даже с применением готовых для этого библиотек может уйти час и более.
На Python ты напишешь быстрее, получишь результаты всего этого за несколько минут вычислений(в данном случае упираемся в скорость чтения и записи данных, а не на саму обработку), на C++ ты напишешь спецефичное решение этой задачи которое будет быстрее, но опять же все упрется в скорость IO системы. Вычисления будут несомненно быстрее. Программа по объему небольшая но займет некоторое время на компиляцию\дебаг\нахождение багов. Объективно до конечного базнесного видения = "увидел результат" Python раз в 5 быстрее чем C++ и говори что угодно но это факт (зависит от задачи).Никто не просит писать Операционную систему на Python - это не то для чего он создавался, Си создавался для написания Unix вот тут он до сих пор и властвует. Python\Ruby - это just in place ЯП'ы - по быстрому написал скриптики (POC), быстренько отдебажил и применяешь. Если что то прямо очень медленно на Python то хотя бы есть то с чего срисовывать в более быстрый язык (Rust \ Go \ C) ибо рабочая логика откуда списывать она уже есть и она уже работает.
(btw python может обрабатывать 50 тысяч строк из БД (sqlite3), производить над ними нужные операции(NumPy, Pandas), и рожать из этих данных Excel файл (с помощью Pandas) менее чем за 10-15 секунд, и логику того что именно обсчитывать всегда легко доработать по желанию. Конечно если потребуется обрабатывать 500к строк или 5 миллионов то Python это уже "медленный" язык, но тем ни менее даже здесь если заняться оптимизацией самых долгих и сложных кусков то Python еще может быть в бою.)
Согласен с мыслями в посте, но вот эти обратные слэши вместо прямых> компиляцию\дебаг\нахождение багов
> Python\Ruby
> Rust \ Go \ Cвыглядят так по уродски, аж рвотный рефлекс появляется. Что это? Escaping? Поклонение винде? Брр
Открою секрет - он работает в 100-300 раз медленнее, и от этого его применимость ну вообще никак не страдает, и компилируемые языки он вытеснял и продолжает вытеснять. Ассимилировать, точнее, ибо место им - для написания быстрых питоновских модулей.
Приходи через год :) Обещали ускорить в два раза.
Единственный нормальный язык программирования.
> Единственный язык программирования, который я освоил.Пофиксил.
Если у человека программирование не цель жизни, а просто рабочий инструмент, то и нормально. Я к тому, что прежде, чем выливать накопившийся ядок и презрение - хорошо бы иной раз голову напрягать (при условии, что она имеется, конечно).
нормальные люди не троллят "единственный нормальный".
Я так понимаю, чел своё субъективное мнение высказывал, не претендуя на объективность. В его мире Питон действительно единственный нормальный язык программирования. Ну и что тут такого? Зачем тут же троллить?
Ожидал увидеть дежурной шутки, что опять придется всё с нуля переписывать, но нет. Наблюдая за раздутием питона теперь и не скажешь, что он легче всего осваивается. Раньше может так и было, но сейчас уже нет.
А ничего не изменилось. Подмножество языка которое "раньше" "легко осваивалось" вообще никак не поменялось - если у вас в голово сверх него ничего не способно поместиться, освойте его и живите счастливо. При этом для остальных появилась возможность по мере надобности освоить и более эффективные "новые" конструкции.
Вот такая же фигня с С++. В новых версиях появляются новые конструкции, упрощающие синтаксис, а тупаки, которые на С++ то и не пишут, орут про усложнение.
Отличия приплюснутого, что это было монстром с рождения. И следы пьяного буйства папеники языка никто удалять и не почешется - ибо совместимость. А в питоне есть стандартные механизмы удаления ненужного, неудобного и кривого: см. removed & deprecated секции What’s New.
Ага, попытка перевсти тему обсуждения с новых синтаксических фич на "ах какой плохой этот С++". Про монстров - это субъективное мнение хейтера-неосилятора, можешь других неосиляторов пугать. В С++ просто много фич, недоступных во многих других языках. В Java тоже есть и генерики с <> и доступ к методам класса через ::, однако почему-то не слышно такого же воя про Java-монстра.К изначальному тезису про то, что новые синтаксические фичи упрощают разработку, а не усложняют её, возражений нет, как я понимаю?
> "ах какой плохой этот С++" ... неосиляторов пугатьПлохой в том смысле, что это некрасивый, переусложненный язык.
> К изначальному тезису про то, что новые синтаксические фичи упрощают разработку, а
> не усложняют её, возражений нет, как я понимаю?Зависит. С чего вдруг дизайнеры языка стали вдруг лучшими друзьями человечества и перестали совершать ошибки? Нет, ответ "просто не пользуйтесь" - катит только для уровня хелворлда. Потому что коллеге Васе вы запретить не можете, а вы будете ковыряться в его коде (ради рецензирования, поддержки, добавление нового функционала).
Ну то есть конкретно да или нет ответить не можешь? Каких-то абстрактных друзей человечества приплёл... Серьёзно, это уровень твоей аргументации? "Друзья человечества"?
> Каких-то абстрактных друзей человечества приплёл...Почему абстрактных. Вполне конкретных, например разработчики питона.
Поздравляю питоняшек!
Язык взрослеет. Авось и вы со смуззей на благородные напитки перейдете. А там, глядишь и код подтянется!
Это джаваскриптизеры заполонили.
Дооо, нода уже не та!
Благородные напитки - это коньяк по утрам и пиво с водкой на ужин?
Пока GIL не выпилят - ненужно.
Многопоточность по сути отсутствует. Ну кроме варианта когда ввод\вывод, тогда GIL не карает потоки.
Вот это нужно.
Еще возможность задать тип данных(ну чтоб "сюда класть тока инт"), оно и быстрее без проверок, и будет сразу видно где и почему упало.
И будет уже вполне кошерный язык погромирования.
Сто раз уже сказали - выпилить GIL нельзя, то что получит ся, будет уже не pythonом.
GIL не нужно выпилиывать. На самом деле, гарантированная однопоточность, как ни парадоксально, - это лучшее что может быть в языке на котором предполагается писать многопоточные приложения, потому что сразу заставляет делать эффективную и безопасную синхронизацию (ака передача сообщений), а не дырявую лапшу с кучей контеншона на мутексах и критических секциях.
Клуб любителей посчитать пробелы и половить ошибки в рантайм. Хорошо что от этого непотребства потихоньку отказываются в пользу новых современных языков.
Это каких, например?
Ты хоть раз на TIOBE ходил, тенденцию популярности языков смотрел? Ох уж эти мне газификаторы луж...
А в чем собственно противоречие-с? Пайтон - язык для школьников и еще не окрепших умом студентов, плюс куча научного легаси, который потихоньку переписывается на Джулию.
> А в чем собственно противоречие-с? Пайтон - язык для школьников и еще
> не окрепших умом студентов, плюс куча научного легаси, который потихоньку переписывается
> на Джулию.Ещё раз спрошу, на Тиобе сходил, график увидел? Если да, где ты там усмотрел "потихоньку отказываются"? Если линия вверх идёт - это обозначает, что популярность языка растёт. Вдруг ты не умеешь графики интерпретировать.
По поводу студентов, не окрепших умом, и "научного легаси". У тебя и статистика есть? Или продолжаем заниматься любимым занятием - газифицировать лужи?
Ну и наконец. Вот я окреп умом и очень давно уже не школьник. Но Питон использую в своей рутине, для моих нынешних задач - самое оно. Хотя при этом знаю и другие языки, так или иначе использовал/использую их в своей работе.
Питон стал слишком фичастый и потерял былую простоту, к сожалению.
Вообще питон уходит от своего первостепенного направления, как самый читаемый ЯП.
Так как они добавили всякие пайпы.Это язык, который изначально, чтобы не вводить символы сделал операторы and и or.
А теперь всё больше и больше становится похож на мутанта с нагромождением всего.
Лично меня это немного печалит, мне нравилось, что у языка почти всё можно было описать словами.
> мне нравилось, что у языка почти всё можно было описать словамиЭто вам сразу в паскакаль тогда, бэгинэндами обмазываться. В реальном мире т.н. естественные языки сейчас мало применимы даже для своей основной задачи, поэтом и заменяются всяческими эмодзями. Для формальных вещей типа программирования эти избыточные, визуально неотличимые буковки не нужны абсолютно точно.
https://www.python.org/dev/peps/pep-0635/#or-patterns> There was some discussion on whether to use the bar symbol | or the or keyword to separate alternatives. The OR pattern does not fully fit the existing semantics and usage of either of these two symbols. However, | is the symbol of choice in all programming languages with support of the OR pattern and is used in that capacity for regular expressions in Python as well. It is also the traditional separator between alternatives in formal grammars (including Python's). Moreover, | is not only used for bitwise OR, but also for set unions and dict merging (PEP 584).
Еще | в описании типов можно использовать как видно из новости.
C && и || проблема в том, что легко ошибиться и написать один & или |, что в булевом контексте приведет сложноуловимой ошибке. Поэтому and и or.
Но к python проблема C && и || не относится. Зачем вы это написали?
> Но к python проблема C && и || не относится. Зачем вы
> это написали?В ответ на
> Это язык, который изначально, чтобы не вводить символы сделал операторы and и or.
Отлично. Некоторые фичи спорны, но в целом есть и полезные улучшения.
Пользуясь случаем напомню известный финт про словарь вместо кейса.
Мне кажется вполне наглядно.
Лямбды совсем не обязательны.
def get_temp_description(temp):
return {
temp < -20: 'Холодно',
-20 <= temp < 0: 'Прохладно',
0 <= temp < 15: 'Зябко',
15 <= temp < 25: 'Тепло',
25 <= temp: 'Жарко'
}[True]
Интересный вопрос. На каких яп ещё можно такие финты запуливать? На ruby, видимо, можно...
Можно, ну нужно ли? Как по мне, это наоборот минус
А минус в чём именно? Для скриптов как раз очень выразительно, код читается легко. В чём именно тут минус?
> А минус в чём именно? Для скриптов как раз очень выразительно, код
> читается легко. В чём именно тут минус?В данном случае в том, что из-за немоноширинного шрифта эта программа выглядит кошмарно и в принципе неподдерживаема.
А словари да, мощная и очень выразительная вещь. Одна из киллер фич языка, которая вопреки идиотскому дизайну таки смогла сделать его популярным.
Могу предположить, что в том, что просчитываются все выражения, а не до первого True. Плюс, дополнительные аллокации каждой строки-результата и самого словаря в целом.
Хотя тут ещё другая проблема есть.В решении со словарём приоритет выполнения идёт с конца, потому что новые элементы заменяют предыдущие. Это сильно отличается от if-elseif-else, где приоритет выполнения идёт с начала.
Здесь эта проблема решена тем, что все остальные условия выдают False, но если это не обеспечить, то это может выстрелить в ногу.
"Аллокация" тут будет совсем на такая как в С. Строки инициализируются один раз, словарь также. Избыточный цикл по словарю присутствует.
Ответ на вопрос нужно ли такой код оптимизировать совсем не очевиден.
> Интересный вопрос. На каких яп ещё можно такие финты запуливать? На ruby, видимо, можно...Такие финты это какие?
Создать словарь с bool ключём, нааллоцировать элементы, таблицу, в которой будет заполнено не более двух элементов? Везде.
Сконструировать кучу элементов, зааллоцировать строк, чтобы сразу больше половиных из них выкинуть? Везде.
Вместо того чтобы посчитать только условия до первого срабатывания как в if/elif/else, посчитать их все условия? Везде.
Все языки позволяют делать неэффективно, глупо и нечитаемо.
> значительный выпуск языка программирования Python 3.10. Новая ветка будет поддерживаться в течение полутора лет
> язык программрования
> будет поддерживаться в течение полутора летИ, судя по новшествам, изначально язык был сляпан кое-как, а затем к нему изолентой прикручивались (часто с потерей совместимости) средства, давно используемые в нормальных языках.
Потеря совместимости произошла по крупному при переходе от версии 2 к версии 3.
А какие яп проектируются заранее один раз и в последствии не изменяются никогда и ни при каких обстоятельствах и обеспечивают при этом совместимость, переносимость на разные платформы. Такого я что-то не припомню...
> Такого я что-то не припомню...Ansi C тридцатилетней давности (это там, где типы аргументов перечисляются в теле функции после объявления) спокойно компилируется современными компиляторами. С++ двадцатилетней давности. Фортран. Лиспы оба. Ада. Паскаль.
Да почти все из популярных и бывших оными.
Вера в Деда Мороза присуща и взрослым. Спецификация ANSI X3.159-1989 и современный компилятор совсем не тождественны. В рамках одного семейства ОС Unix/Linux и одного компилятора(!) оно и существует.
С фортранами несколько получше(коих несколько лежит в дедушкином сундуке!),ну а Паскаль в стандартизированном виде практически не наблюдался никогда.
В этом смысле python недостижим. Диалекты и сторонние реализации практически редки. Все используют единственную(!) реализацию python2 или python3 вместе с батарейками.Документация описывает не некий стандарт, а реализацию. Тысячи людей переносят свои программы между разными версиями и разными ОС простым копированием файлов. Такой невиданный ранее бедлам, ранее практически не встречался.
>> Ansi C тридцатилетней давности (это там, где типы аргументов перечисляются в теле функции после объявления) спокойно компилируется современными компиляторами.
> Спецификация ANSI X3.159-1989 и современный компилятор совсем не тождественны.В огороде бузина, а в городе дядька. Типичный опеннетчик не способен осилить одно предложение, а туда же - комментировать.
> В этом смысле python недостижим.
О да. Программы пятилетней давности не работают вообще, все (если, конечно, не вытащшить компилятор той же пятилетней давности). В этом питон выигрывает даже у хруста. Действительно, недостижим.
> Все используют единственную(!) реализацию python2 или python3 вместе с батарейками.
Единственную реализацию "реализация 1" или "реализация 2". У-ха-ха-ха-ха-ха. Ну я даже не знаю что тут можно сказать. У меня есть единственный стул - один зеленый и один красный. Пххххххххх.
> Документация описывает не некий стандарт, а реализацию.
И это п-ц полнейший. Именно, что П-Ц!
> Тысячи людей переносят свои программы
> между разными версиями и разными ОС простым копированием файлов.
> Вера в Деда Мороза присуща и взрослым.Даже добавить нечего.
> Такой невиданный ранее бедлам, ранее практически не встречался.
Да, не встречался. Раньше программисты понимали что такое технический долг и думали, прежде чем делать.
Пять лет назад вышел python 3.6. Можете сказать какая программа написанная для 3.6 не будет работать на 3.10?
> Пять лет назад вышел python 3.6. Можете сказать какая программа написанная для
> 3.6 не будет работать на 3.10?Он, наверное, имел ввиду версию 2.*. Программы, написанные в ней, действительно не будут работать в 3.*. Вряд ли такой подход можно считать хорошим (с точки зрения разработчиков языка), когда рушится совместимость.
Вот только не надо про
> никогда и ни при каких обстоятельствахПонятно, что развитие идёт.
Питон делался с оглядкой на С, какие особые обстоятельства помешали сделать аналог сишного switch?
И эти метания от скобок к табам и обратно к скобкам. Какие чудесные преимущества принёс отказ от сишных скобок?
Речь о том, что он изначально не был продуман.
Python делался с оглядкой на ABC programming language. C там и близко не было.
C-шные скобки плохо читаются в большом коде без корректного форматирования. Выше обсуждение было.
Испытал влияние Алгол-68, АВС, Модула-3, Си, С++, Perl, Java, Лисп, Haskell, APL, Клу, Dylan, Icon и SML.
(https://ru.wikipedia.org/wiki/Python)
Табы роднят его с АВС, это верно. Но и в АВС есть select.
Ты мне лучше покажи хоть какое-то сходство с C в Питоне. "Испытал влияние" - очень размытая фраза.
Питон - мультипарадигменный. С - процедурный. Питон - со строгой типизацией. С - со слабой. Питон - с динамической типизацией. C - со статической типизацией. Питон без указателей со сборщиком мусора. С - указатели и вот это вот всё. Питон - нет макросов. С - есть. Питон - довольствуется отступами. С - скобочками. Питон - интерпретатор. С - компилятор. Питон - язык высокого уровня для прикладных задач. C - язык среднего уровня для системных задач. И т.д. и т.п.Где в этом можно было усмотреть схожесть, остаётся только догадываться.
Хорошо, согласен
> Python делался с оглядкой на ABCно ведь
> в АВС есть оператор select.И Гвидо о нём наверняка знал :) (Если разрабатывал АВС)
Что ж он не взял его в питон сразу?
Дальше
> Питон - мультипарадигменный.Это тоже из АВС?
Я привёл ссылку, из каких языков Гвидо брал идеи для питона.
Это сборная солянка. В состоянии приготовления и перемешивания.
Попробовали - получилось не очень - выплеснули (pgen2), замешали по новой. Но "народу нравится!"
Может быть в АВС кто-то сдерживал энтузиазм Гвидо? Зато с питоном он оторвался по полной :)
> в АВС есть оператор select.
> И Гвидо о нём наверняка знал :) (Если разрабатывал АВС)
> Что ж он не взял его в питон сразу?Посчитал лишней конструкцией из-за принципа "всё должно делаться только одним способом". if else с этим справлялся более-менее. Теперь Гвидо ушёл, набежали другие архитекторы. И пошло-поехало.
> Питон - мультипарадигменный.
> Это тоже из АВС?
> Я привёл ссылку, из каких языков Гвидо брал идеи для питона.Ты говорил, что он делался с оглядкой на C. К этому высказыванию была моя претензия.
> "народу нравится!"Народу должно нравиться, если разработчик хочет, чтобы его продукт пользовался популярностью. Заметь, Питон достиг своей популярности без всяких паттерн-матчингов и select-ов. Значит, его достоинства перевешивали его недостатки. Ну и всё!
Ждём ускорения через год. Интересно, что из этого выйдет.
Обещали завести простой (не оптимизирующий) jit компилятор. Ждем.
Посоны, сервер матрикса опять лег. Вот прямо сейчас. Не пилите такие проекты на питонах. Получается плохо.
Ты не сможешь сделать произведение искусства из глины, но это не означает, что из глины нельзя сделать произведения искусства.
Сегодня опять и сообщения и звонки не проходили. Когда на го перепишут глину правильную подвезут?
Автор явно льстит питону в своей отсылке к f#. Даже рядом по удобству паттерн матчинг питона не стоит. А вообще, год разработки явно зря не прошёл. Может ещё 10 лет и i++ завезут.
в f# i++ уже завезли?
Мне больше было интересно match: case: наконец то без костылей... Но жалко что не буду пробовать - я на windows7 сижу ведь я не люблю и не особо уважаю windows10. мне любопытно будет компиляторный python. Ведь мне приходится переписывать некоторые проекты на java и похоже скоро и на С++.(проблемы с постепеным удалением JRE со многих ПК) Потому что exe-шники много весят. 30мб за игру Пинг-понг это не тема(у меня медленный интернет и это мне важно). я слышал про Cython но там же модули ".so"