Что не так с кодом в 2022 году? Перевод

Adre Adre 28 Декабря 2022

Я пользуюсь одним сервисом время от времени: мне нужно залить туда какие-то файлы (название сервиса не имеет значения, потому что, честно говоря, они все одинаковые). По сути, я просто указываю на папку на своем жестком диске, после чего ее содержимое копируется на удаленный сервер, который, вероятно, делает что-то, связанное с базами данных — этим файлам присваиваются имена, и производится проверка, кто их скачивает.

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

…а по сути речь идет о том, что нужно зарегистрировать несколько файлов, прочитать их, загрузить, а потом закрыть соединение и написать в лог-файл, все ли прошло успешно. А если нет, то что именно произошло. В этом нет ничего сложного, и я написал аналогичный код с нуля, используя Wininet API и PHP на сервере, подключенном к моей базе данных MySQL. Возможно, моя система была не такой надежной, как системы корпоративного уровня, но она поддерживала сотни тысяч загружаемых файлов, их проверку, загрузку и протоколирование. Это работа для одного программиста на две-три недели, не так ли?

Специальный инструмент загрузки файлов, который я использую сегодня, имеет в общей сложности 230 МБ клиентских файлов и использует 2700 файлов для управления этим процессом.

Можно подумать, что это опечатка, но ошибки нет: две тысячи семьсот файлов и 237 МБ исполняемых и вспомогательных файлов для копирования нескольких файлов с клиента на сервер. Это уже не раздутое ПО или чрезмерная инженерия, а абсолютное, очевидное, визуальное безумие.

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

Я видел, как это делают кодеры. Я знаю, как это происходит. Это происходит не только потому, что кодеры не пишут низкоуровневый эффективный код для достижения своей цели: они просто никогда не видели низкоуровневого эффективного, хорошо написанного кода. Как мы можем ожидать от них создания чего-то лучшего, если они даже не осознают, что это возможно?

Вы можете написать программу, которая безопасно, быстро и безопасно загружает файлы на сервер, и это займет двенадцатую часть этого объема кода. Это может быть всего один файл, один маленький .exe. Ему не нужны сотни DLL. Это не только возможно, но и просто, надежнее, эффективнее, удобнее в отладке и действительно работает.

Вы можете подумать, что старые программисты за пятьдесят (например, мой отец) жалуются на раздутый код, потому что он устарел и ворчлив. И я это понимаю. Но устаревшие и ворчливые жалуются на код, который на 50% медленнее, чем должен быть, или на код, который на 50% больше, чем должен быть. Однако ситуация зашла далеко за рамки этого. Мы достигли точки, когда я искренне верю, что 99,9% кода в файлах на наших ПК совершенно бесполезны и никогда не выполняются. Код находится в пакете из 65 DLL просто потому, что кодер хотел сделать что-то тривиальное, например, сохранить растровое изображение, и понятия не имел, насколько это может быть просто, поэтому он импортировал целую кучу вредоносных программ, чтобы решить проблему.

Как я уже сказал, я действительно не должен злиться на молодых программистов за это. Так их учили. Они понятия не имеют, что такое высокая производительность или разработка с ограничениями. Может показаться странным, что об этом говорит девушка 25 лет, но у меня было достаточно мудрых наставников, чтобы показать мне действительно красивый код. Отец рассказывал мне, что в первой Elite 1984 года была огромная галактика, трехмерные космические бои, система карьерного роста, торговля и тысячи планет для исследования, и при этом игра весила 64 КБ. Современные программисты могут слышать это, но они не осознают пропасти между этим и тем, что мы имеем сегодня.

Почему это важно для меня?

Меня это беспокоит по многим причинам, не в последнюю очередь потому, что если вам нужно в две тысячи раз больше кода для выполнения задачи, то, по крайней мере, он должен работать. Но что еще более важно, я понимаю, что 99,9% процессорного времени на моем огромном, мощном ПК совершенно бесполезны. Сегодня компьютеры настолько быстры, что 10 лет назад они считались бы абсолютным волшебством. Все, что вы можете себе представить, должно произойти за 1/60 секунды. Однако, когда я нажимаю значок громкости ноутбука Microsoft Surface, я вижу задержку: машина постепенно создает новый элемент пользовательского интерфейса, выясняет, какие значки рисовать, а затем они появляются и становятся интерактивными. Это требует времени. Кажется, что это около половины секунды, что близко к миллиарду лет по шкале времени процессора.

Если прямо сейчас (по консервативным оценкам) 99% ресурсов нашего ПК тратятся впустую, мы тратим впустую 99% энергии компьютера. Это абсолютно преступно. И на что эти расходы? Если вы посмотрите в диспетчер задач, вы заметите раздутую программную ерунду, которая делает бог знает что. Я просто печатаю этот пост в блоге. В Windows запущено 102 фоновых процесса. Моя видеокарта NVIDIA в настоящее время владеет шестью из них, и у некоторых из них есть подзадачи. Сделать что? я не играю в игру; Я использую почти тот же набор функций драйвера видеокарты, что и мой отец двадцать лет назад, но почему-то требуется шесть процессов.

Веб-представление Microsoft Edge также требует 6 процессов, как и сам Microsoft Edge. И я даже не использую Microsoft Edge. Кажется, вчера я открывал файл SVG, и вот — 12 бесполезных кусков кода тратят память и, вероятно, также опрашивают процессор.

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

Лично я думаю, что ситуация будет только ухудшаться, потому что крупные технологические компании, такие как Facebook, Twitter, Reddit и т. д., являются наихудшими примерами этой тенденции. Вскоре каждый из тысяч «программистов», работающих в этих компаниях, будет использовать машинное обучение для копирования и вставки раздутого, глючного, расползающегося контента Github в свой код. Чтобы сложить два числа, им потребуется 32 библиотеки DLL, 16 служб Windows и миллиард строк кода.

В Твиттере 2000 разработчиков. Точнее, так было до тех пор, пока не появился Илон Маск. Tweetdeck иногда отказывается загружать пользовательский столбец. Это продолжается уже 4 года. Я уверен, что никто из кодеров понятия не имеет, почему это происходит. А код по своей сути, как говорит мой папа, это просто куча раздутых, скопипастенных ****.

При предложении названия темы по ссылке Reddit не может обрабатывать символы амперсанда, точки с запятой и фунта стерлингов. На дворе 2022 год. В компании, наверное, тоже 2000 разработчиков. Очевидно, что ни один из них не способен заставить парсер текста работать корректно. Что делают все эти люди?

Когда-то был «золотой век» программирования, когда были ограничения на память и ЦП. Сегодня мы живем в крайне расточительной яме неэффективности. Это очень печально.

https://dev.to/mariamarsh/whats-wrong-with-code-in-2022−3nbd

3 Ответа

  1. Yori Yori 28 Декабря 2022 (ред.)

    когда я запускал «hello world» в React пару лет назад, он извлекал четверть гигабайта файлов.

    Мы получили худший путь развития, который можно было только придумать.

  1. Evg Evg 28 Декабря 2022 (ред.)

    Вы как раз разместили ссылку на статью «Кризис ожирения на веб-сайтах», там всё сказано про это, на примере сайтов. Плохо дело.

  1. German German 9 Января 2023 (ред.)

    На Хабре была статья про это. Образование, которое мы потеряли.