Python 3.10
Oct. 10th, 2021 10:26 amВышел новый питон. А в нем добавили pattern matching в стиле ML-ей, эрланга и Rust-а. Интересно, будет ли оно пользоваться популярностью, и если да - как скоро.
До сих пор как-то по-моему python развивался в противоположном направлении и высокоумные теоретические конструкции вроде lambda в нем норовили объявить deprecated. А тут вот полноценный pattern matching.
В остальном как-то ничего особо принципиально нового там не видно. Эх, избавиться бы поскорее от дистрибутивов с 3.2 и 3.4, чтобы можно было писать без огляднки на то что "вот это поддерижвается только с 3.5, а это - только с 3.8".
Кстати, у меня вот тут вчера на сервере опять запрос сертификтов с let's encrypt сломался. Потому что это было первое обновление сертификатов после апгрейда на bullseye. И acme_tiny вдруг внезапно обнаружила что просто "python" в системе больше нет. А догататься поискать python2 или python3 (оно вообще-то и с тем и с тем умеет) - шебанги у нас не настолько умны. Там тоже паттерн-матчинг нужен чтобы перебирать несколько вариантов интерпретатора (это я на днях наблюдал как jenkins java ищет на слейве. Не нашел что характерно, пришлось туда руками лезть и ставить).
Пришлось поставить на сервер специальный пакет python-is-python3. С ним сертифкаты обновились.
no subject
Date: 2021-10-10 08:05 am (UTC)Это просто жутко удобный синтаксический сахар, заменяющий в компактном и читабельном виде нагромождение if'ов и switch'ей.
Ну и компилятору с ним проще справляться.
Кстати как и АТД из того же ML
Упорство с которым эти конструкции игнорируют меня всегда удивляло
no subject
Date: 2021-10-10 09:08 am (UTC)no subject
Date: 2021-10-10 09:32 am (UTC)Ну это, -Werror спасет отца русской демократии. Уже с незапамятных времен система предупреждений компиляторов в GCC умеет это ловить. По-моему в 4.x уже было, а более древние я уже забыл как страшный сон.
no subject
Date: 2021-10-10 09:45 am (UTC)no subject
Date: 2021-10-10 02:22 pm (UTC)В C нет паттерн-матчинга. Паттерн-матчинг — это, во-первых, не только для целых чисел, во-вторых, включает в том числе проверку типов, и в-третьих, при совпадении формы значения с образцом делает доступным его содержимое в виде локальных переменных:
no subject
Date: 2021-10-10 06:23 pm (UTC)Но идеология ровно та же, на мой вкус.
no subject
Date: 2021-10-10 06:45 pm (UTC)Оператор приведения чего к int? И как это поможет с деструктурированием, да и с собственно матчингом?
Не говоря уже о том, что произвольную структуру с размером данных более int’а невозможно привести к int’у без потери информации.
no subject
Date: 2021-10-10 07:19 pm (UTC)no subject
Date: 2021-10-10 09:30 am (UTC)Там не просто нагромождение if-ов и свитчей. Там еще и разбор довольно сложных структур данных и присваивание нужных кусков из них переменным.
И вот эта функциональнсоть обычно востребована как раз в языках с однократным присваиванием.
Вот интересно, кстати, появится в питоне до версии 3.14 однократное присваивание или нет? В С/С++ оно в рудиментарной форме кстати уже есть в виде модификатора const при объявлении переменной с инициализацией.
no subject
Date: 2021-10-10 09:40 am (UTC)А вот систему типов в питоне надо изучить повнимательнее. Она там опциональная, но развивается довольно активно. А я до сих пор утятиной пробавляюсь.
подозрительность к питону
Date: 2021-10-10 11:31 am (UTC)Преимущество – потому, что его можно впаривать дитЯм в качестве первого языка, а недостаток в том, что потом эти же самые детки, обучившись Питону, но не научившись самодисциплине, публикуют некачествееный (не сказать ещё хужЕй) код вроде certbot или offlineimap которы сначала вроде работает, а потом внезапно нет.
Или вообще неработающий facedetect, который, что характерно, публикуется в Debian.
no subject
Date: 2021-10-10 11:55 am (UTC)Я вообще в конце концов притормозил мой сайт, потому что да, python2, letsencrypt... времени жалко стало на эту хрень. Или денег.
no subject
Date: 2021-10-10 01:06 pm (UTC)Хвастаемся старьём
Date: 2021-10-10 02:13 pm (UTC)ncpfs(NetWare Core Protocol FileSystem) который не работает с ядрами 4.18+. Соотв., удалось обновиться до Debian 9 и перекомпилировать ядро; и на этом всё, дальнейший апгрейд невозможен. :-DОдну из программ я дописывал и компилировал в 2012 году, запустив BorlandPascal в DOSBox в Линуксе.
Re: Хвастаемся старьём
Date: 2021-10-10 03:38 pm (UTC)Re: Хвастаемся старьём
Date: 2021-10-10 06:40 pm (UTC)Re: Хвастаемся старьём
Date: 2021-10-10 07:40 pm (UTC)программы в ДОСе, а LANMANAGER больше памяти жрёт, чем новеловский стек с пакетным драйвером.лапкиRe: Хвастаемся старьём
Date: 2021-10-10 08:03 pm (UTC)(резво прячицо)
Re: Хвастаемся старьём
Date: 2021-10-17 06:21 pm (UTC)Про Борланд Паскаль можно особенно не рассказывать. Ну паскаль и паскаль, что тут такого? На TIOBE вон тихо и незаметно поднялся обратно на 20 место (пока все радуются, что питон занял первое). В общем, бытовуха. Я тут на днях перечитывал доки на фри паскаль (хотя, конечно, не для дос). Потому что.
... Он тоже однажды уничтожил Стального Генерала ...
Re: Хвастаемся старьём
Date: 2021-10-17 08:04 pm (UTC)Нет, Turbo/Borland весьма необычные Паскали — объектно-ориентированные. Таких больше не было, а может, и сейчас нет; Delphi и FreePascal — это дети и клоны.
Re: Хвастаемся старьём
Date: 2021-10-18 06:12 am (UTC)Сейчас скорее других нет. Остались тлько дети и клоны, а на остальных никто не пишет.
Но между прочим турбо-паскалей было минимум три разных.
Были 3.x и ниже которые не имели модульной системы вообще, компилировали только в паммять и записывали com-файлы.
Были 4.0 и 5.0 где уже были юниты, но не было встроенного ассемблера и объектов. Во с них я начал, а 3.x для меня сразу были преданием старины глубокой из книхек. Хотя, насколько я понимаю
kouzdra свой Паскаль-Москаль именно с 3.x драл. Так что в какой-то момент, когда у меня уже был дома комп, но в нем единственной энергонезависиой памятью был кассетный магнитофон, я даже немножко поиспользовал такой.
Были 6.0 и выше, где уже была Turbo Vision, и, в частности крайни полезный модуль objects.
И был 5.5 - где объекты уже были, а встроенного ассемблера и Turbo Vision еще нет. Помнится я даже туда как-то портировал модуль objects из 6-го. Ради того же МС-1502. У 5.5 интегрированная среда была старая. от 4.0-5.0, которая умела работать без своппинга на диск, что на машине где (уже) были флопы, но не было жесткого диска было крайне критично.