Что общего между Чернобылем и Питоном?

Apr 14, 2021 12:45

Только что при вызове gc.collect пресмыкающееся отожрало дополнительно тридцать гигабайт памяти и упало по OutOfMemory.

Все эти языки для программистов ускоренного выпуска, Питон в особенности -- это чистое издевательство над программистами ускоренного выпуска. Беднягам подкладывают грабли и расставляют стены для расшибания лбов. Мысленная модель происходящего примерно такая: "ах, у тебя нет пяти минут, чтобы разобраться в типизации и автоматических переменных? Так убейся же, ничтожество".

Ну и, соответственно, конструируется "упрощенный" язык, который всем своим существом провоцирует на нелепые ошибки, ни в каком "языке для взрослых" вообще не возможные. Например, переменная, объявленная как временная где-нибудь в бесконечном сплошном матраце юпитер-ноутбука (для которого и вменяемых средств отладки-то нет), затирает глобальную переменную пятнадцатью экранами выше или начинает по ошибке повторно использоваться без инициализации пятнадцатью экранами ниже. В результате "все работает". Кому от такой "работы" радость -- совершеннейшая загадка.

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

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

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

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

В случае Питона в особенности стоило бы прекратить демагогию об "облегченных языках" и сказать прямо, что его специфика объясняется вовсе не заботой о людях (если не считать этими людьми его авторов непосредственно). Он явно возник как универсальная служебная среда для сшивки вызовов процедур из разнородных библиотек, написанных на языках высокого уровня, и примитивен ровно настолько, чтобы худо-бедно справляться с этой задачей -- не больше и не меньше. Как самостоятельный язык он, можно сказать, не существует.

В общем, hate speech о Питоне произносить еще легче, чем о C#.

любовь к пресмыкающимся, программизмы, вокруг и около компьютера

Previous post Next post
Up