All streams
Search
Write a publication
Pull to refresh
-27
@UncleJonathanread⁠-⁠only

User

Send message

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

Зато намного проще не отрываясь от компа именно, что почитать или посмотреть мусор, коего становится всё больше. Никаких усилий делать не надо, и, вроде бы, позволяешь себе "то, что хочется". Однако лучше от этого вообще не становится, порой наоборот. И от грязи и горы немытой посуды в квартире, тоже лучше не становится, увы.

Логика в том, что вы не осилили дочитать внимательно даже один небольшой комментарий.

Мой комментарий состоит из двух частей, где я описываю своё отношение к языкам C и С++, и описываю различные претензии к обоим.

Мне не нравятся оба языка, мне они оба кажутся отставшими от времени. Точнее, C++ пытается догнать время, но при этом от не отбрасывает всё 30-40 летнее legacy (да и не сможет никогда), и из-за этого код на нём превращается в нечитаемый набор инкантаций, который способны понять очень немногие (они-то, наверное, довольны таким положением и job security).

Проблема всех этих проектов, что они - сторонние. Их авторы не всегда успевают или хотят синхронизироваться с версиями DRF, или иногда вообще забрасывают свои творения на полдороге (как было с drf-yasg, или чем-то похожим, копаться и вспоминать сейчас некогда).

Честно говоря, сам ещё не определился. В конкретных ручках, где важны сотни и десятки миллисекунд, делаю по самому простому brute force варианту: заменяю всю машинерию DRF на закат солнца вручную: ручная десериализация и сериализация.

Если можно легкой кровью вынести часть ручек в отдельный микросервис, выносится в микросервис на FastAPI или Go.

Но повторюсь: большинство с этим не столкнётся. Однако, если вдруг сталкиваешься, то положение плачевное. DRF - всё-таки наверное одна из самых тяжёлых реализаций REST. Хотя бенчмарки не проводил, но по результатам профилирования возникали мысли, что оно всё переусложнено на порядок, а то и два.

Если кто-то планирует задействовать DRF для долгоживущего и очень highload проекта (десятки тысяч rps), то я бы обязательно упомянул два основных недостатка, на мой взгляд.

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

Второй недостаток. Когда всё начинает тормозить (понимаю, что 99% проектов с этим не столкнётся), и начинаешь исследовать тормоза в профайлере и дебаггере, то там творится какая-то дичь. Данные десятки, если не сотни, раз преобразовываются из одного типа в другой, json'ы сериализуются, десереализуются, и сериализуются снова, всё это передается через лабиринт вызовов вверх и вниз по стеку. Когда начинает играть роль каждая микросекунда, выясняется, что этот монстр жуёт жвачку из данных, как корова, очень долго, и ускорить этот процесс без переписывания без DRF, никак нельзя.

Очень хорошая статья! Интуитивно чувствую то же самое, но внятно выразить никогда не пытался. Иногда думаю о том, что золотым веком фантастики было время где-то с начала 20-го века по 70-е годы. Иногда перечитываю любимые книги того периода.

У современной фантастики есть ещё один бич, из-за которой читать её невозможно: очень навязчивое пропихивание повестки. Как только в СМИ и соц. сетях раздувается очередной виток борьбы против какого-нибудь "языка ненависти", "плохой партии плохих людей с плохим лидером во главе", и т.д. и т.п., это сразу же перекочевывает в книги, где совершенно не к месту, и вызывает лишь изжогу. Все эти повесточки сиюминутные и мимолетные, 30 лет назад была одна: было положено любить одних и ненавидеть других. 20 лет назад повестка менялась на другую. 10 лет назад - на третью. В фантастике же делается совершенно фантастическое предположение, что, например, необходимость лобызать пятки какого-нибудь очередного ущемленного меньшинства, сохранится и через 100 и 200 лет. И всё это вставляется настолько натужно и неуклюже, как во многих книгах советского периода (далеко не всех!) обязательно вставлялись пассажи про коммунизм, КПСС, решения съездов.

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

Около года назад столкнулся с ошибкой в одной Open Source библиотеке на C. У меня было свободное время, хотелось освежить навыки низкоуровнего программирования (в основном, много лет пишу на Python, хотя начинал с C/C++), поэтому склонировал код с GitHub и полез в исходники.

Меня хватило где-то на час попыток понять, где выделяется и освобождается память. Я увидел, что несмотря на какие-то редкие попытки освобождать память в случае выхода из функций по ошибке, в процентах 70% случаев память не освобождается (в начале стоит malloc, в конце free, и при выходе по некоторым ошибкам тоже free, но не по всем).

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

Что касается лично моего отношения к C++: по-моему, давно пора закопать стюардессу. Все эти наслоения стандартов приводят к тому, что открыв наугад почти любой исходник на C++, я не пойму в нём ничего. Хотя немного знаю и даже периодически пописываю на нём.

С любым другим языком, даже который не знаю, скорее всего смогу понять общий смысл. Но не с C++ - он превратился в какой-то набор эзотерических заклинаний, понять который может только человек, пишущий на нём непрерывно лет 10, и внимательно вычитывающий все эти неперевариваемые талмуды стандартов.

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

Information

Rating
Does not participate
Registered
Activity