Эд Нерский @ednersky
Зрящий в суть, указующий путь.
Information
- Rating
- 1,747-th
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Fullstack Developer
Lead
From 1,000,000 ₽
Python
Perl
PostgreSQL
Tarantool
Linux
Lua
C
JavaScript
HTML
Rust
когда Python помрёт точно не знаю. Например в 2015 году ещё было трудно предсказать, что Perl помрёт к 2020, а он возьми и помри.
Смерть языков - понятие связанное с модой и поветриями, а не объективными параметрами.
а вот что и через 5 и через 10 лет не будет устранён GIL - на это я готов поспорить.
Но если бы знали как в общем виде отвечать на эти вопросы, то в python делали бы не GIL, а вот это вот "(по)объектное блокирование"
а просто эти труизмы, очевидно, останутся именно труизмами. Вы просто этого ещё не осознали, а я уже да :)
Как говорится, "Запомните этот твит": GIL убрать не смогут - раньше Python просто своей смертью помрёт (выйдет из широкого употребления в пользу чего-то другого).
А я помню чем закончился спам от Центра Американского Английского
Его основателю ударили тяжёлым предметом по голове. Насмерть.
И спам сразу же прекратился.
Следствие, правда, не увязывало случившееся со спамом, однако интернет очень даже увязывал.
так он же первый. квест-то этот - первый (в смысле первый, если выйти из убежища, то есть первый после обучения)!
и это, этот гвоздемёт был ЕМНИП в рекламе Fallout3
а объектные блокировки будут чрезвычайно сложны
какие объекты нужно блокировать? Очевидно, a, b, c.
помимо длинной арифметики, нужно ведь и понятия "строки" поддерживать. Помимо строк есть ещё объекты
Вот здесь сколько объектов требуется заблокировать?
Как только берём более одной блокировки, то в этот момент возникает вопрос дедлоков. Да, если количество блокируемых объектов определено статически, то с дедлоками проблема решается, но ведь это не всегда так
Здесь очевидно, что объект self блокируется в момент начала цикла. А
bla
можно заблокировать познее. Вроде бы. Однако что еслиbla
заблокировал другой процесс, которому ПОТОМ понадобитсяself
?список на атомиках не делается: двое перезаписывают хвост и кто-нибудь да выиграет
и работа с переменными питон тоже на атомиках не получится: переменная — это структура данных
ну да, it мало отличается от, например, строительства
новых технологий нет, развитие экстенсивное (увеличивается только количество)
соответственно непонятно почему в IT должно быть иначе, чем, например, в строительстве
https://habr.com/ru/articles/560010/
как правило DDoS'ом называют собственную некомпетентность:
накосячили что-то с архитектурой, она не смогла держать штатную нагрузку, сваливаясь в положительную обратную связь. Ну а логов нормальных нет, мониторинга нормального нет - понять ничего нельзя, а потому объявляем "нас DDoS'ят!"
как-то так
эм, очень часто разработчики что-то делают, ПОНИМАЯ, что так делать нельзя. Ну вот вы и процитировали пример.
как можно отменить GIL? Только отменив треды как таковые.
это будет очень правильное решение, но на это, увы, никто не пойдёт.
слушайте, вот есть физика
две функции и переменная
этот же вопрос любому понятен: если функции вызываются из разных процессов (=потоков), то без мютексов такой код будет работать только если переменная
x
может меняться атомарно. То есть наC
с атомарными переменными подобный код писать можно, да.Но в ЛЮБОМ скриптовом языке переменная - это структура. Её атомарно не заменить. Соответственно присвоение нового значения = присвоение нескольких полей структуры = изначально неатомарное действие.
А потому язык, допускающий подобный синтаксис будет или иметь GIL на борту или приводить к UB.
В общем случае гарантировать отсутствие крешей при UB очень сложно, а потому GIL из питона не уйдёт. НИКОГДА.
то есть записываем: GIL в питоне ВСЕГДА будет мешать тредам.
Теперь вопрос: а как же тогда масштабироваться по процессам?
Правильный ответ: POSIX::fork и POSIX::IPC
Возможный правильный ответ: запрет на уровне языка шарить переменные между тредами - но сюда разработчики Python не пошли
Соответственно, применение тредов в Python - полумера, признак слабой компетентности.
Как-то так
ну ХЗ
вот в супермаркете же находился гвоздемёт, вот убервафля была (всего-то 1.5x урон по отношению к среднему, но выстрелы реееееедкие) - стреляет тихо и даже тяжёлые противники - трупы с одного попадания
в ВАТС вам нужна была большая дистанция или тихое оружие.
и стрельба украдкой. всё.
всё как в F1,F2 :)
то что Вы говорите относится к F3+DLC
в чистом F3 он именно убивал (конечно надо было вложиться в развитие перса).
прямо ровно один выстрел - один труп было.
и это прямо ощущалось от одной из первых миссий (квестов) - в супермаркете.
вот когда я вынес (правда с четвёртой попытки) рейдеров супермаркета - всех издалека, всех в ватс, всех по тихому, я понял, что F3 - есть продолжение F2
ватс был хорош для стелс-снайпера
выстрел из укрытия = труп
враги где-то бесятся бегают, а ты ныкаешься
а вот на первом же DLC F3 баланс поломали — появились звери, полуголые люди, которых не убить и десятью выстрелами из стелса, ну и ватс перестал роялить
особенно жутко было в Ф4, там временами казалось, что оружие в этой игре вообще без смысла
эм, винтовка в руках выглядела также, ватс так же ставил на паузу...
хз, не помню разницы между 3 и 4
система прокачки несколько поменялась, это да
а мне тройка понравилась больше всех серий 3+
в тройке с ДЛЦ и далее уже сломали баланс: стреляешь из хорошего ружья в дикаря с голым торсом или собаку и нужно 20-40 выстрелов, что ее, наконец, укокошить. в Ф3 такой фигни не было
а ещё в тройке было атмосферное (в русской озвучке) радио
прям как сейчас помню — остановился и так заслушался радио китайской пропаганды, аж меня кентавры сожрали
и ведь тексты были такие, что и сейчас их снова можно на радио транслировать: "шайка жирных котов с Уолл-стрит"... лепота
играл и в 3 и в 4 и не помню, чтоб в стрельбе там были какие-то отличия
почему-то вспомнился интернет эпохи первых блогов.
уже тогда было понятно, что далеко не всё стоит того, чтобы появляться в новостных лентах, но блин, время идёт, а ничего не меняется.
Слушайте, ну вот зачем тащить в скриптовый язык треды? Ведь это изврат!
Ладно бы в приложениях это делали, но постоянно на это натыкаешься в библиотеках. Вроде бы на чистом asyncio что-то написал, потом однажды заглянешь в
ps
а там... и начинаешь раскопки: кто?, когда?, где?, зачем?и конечно же эти треды оказываются в самом ненужном месте - каком-нибудь парсере.
Блин.
я указываю, что есть две дороги
с количеством страданий Х
с количеством страданий Х/10
компилятор или интерпретатор может оформить все функции как с промисами