Оригиналът е на cliffski
От време на време използвам една обикновена онлайн услуга: трябва да кача няколко файла в избрано от мен място (името на услугата няма значение понеже, честно казано, те всички са еднакви). На практика аз просто указвам към една от папките на моя диск, след което нейното съдържание се копира на отдалечен сървър, в който най-вероятно се използва нещо като база данни, защото на тези файлове се присвояват имена и се извършва проверка кой ги тегли.
Притежател на тази онлайн услуга е една голяма компания и навярно затова всичките ѝ процеси са така мащабни и може би често се опитват да я хакнат и трябва да се използва някаква защита, както и проверка, че файловете от никого не са модифицирани за периода между тяхното качване от моя компютър на сървъра. Много добре разбирам всичко това.
Но така или иначе става дума за това, че е необходимо да бъдат регистрирани няколко файла, после това те трябва да бъдат прочетени и изтеглени, след това връзката да бъде прекъсната и накрая всичко да бъде записано в лог файл. В това няма нищо сложно – аз самият съм писал подобен код от нулата с помощта на Wininet API и PHP на сървър с MySQL база данни. Може моята система да не е била толкова надеждна, като една система от бизнес ниво, но тя поддържаше работата с хиляди изтеглени файлове, справяше се с тяхната верификация, изтегляне и логиране. Това е работа за кодер от средно ниво, който може да я свърши за две-три седмици.
Специалният софтуерен инструмент, който използвам към днешен ден за качване на моите файлове на сървър, има общо 230 MB клиентски файлове и се обръща към 2700 файла, а да може да управлява този процес.
Може да си помислите, че това е печатна грешка, но грешка няма: две хиляди и седемстотин файла и 237 MB изпълними и поддържащи файлове за копирането на няколко файла от клиент към сървър, Това вече не е bloatware и не е овъринженерство, а абсолютно, съвършено, очевидно и нагледно безумие.
Проблемът е в това, че тази програма за качване на файлове по нищо не се различава от който и да било съвременен софтуер създаден от някоя друга голяма компания. А, да, да добавя между другото, че тези услуга започна да дава съобщения за грешки и в момента не работи.
Познавам кодери, които се занимават с подобни неща. Зная как става това. Това става не само защото кодерите не пишат ефективен код от ниско ниво за постигането на подобна цел: те просто никога не са виждали добре написан ефективен код от ниско ниво. Как може да се очаква от тях създаването на нещо по-качествено, след като те дори не разбират и не се и досещат, че нещо подобно е възможно?
Не е трудно да се напише програма, която качва файловете на сървър по един надежден, бърз и безопасен начин с големина една дванадесета от това количество код. Това може да бъде само един единствен малък .exe файл, който няма нужда от стотици и стотици DLL библиотеки. Това не само е възможно, но е и лесно за правене, като това решение ще бъде по-надеждно, ефективно и много по-удобно за настройка и освен това (да подчертая), то ще наистина ще работи и при това бързо.
Можем да си помислим, че от раздуването на кода се оплакват старите програмисти на възраст над 50 години (като мен), защото са стари и са станали заядливи. Осъзнавам това. Но старите и заядливите се оплакват от код, който работи 50% по-бавно, отколкото е допустимо, или от код, който е с 50% по-голям от необходимото. Сегашната ситуация стигна много по-далече. Ние достигнахме чертата, след която според мен, 99,9% код във файловете на нашите персонални компютри са абсолютно безполезни и даже дявол да го вземе, никога дори и не се стартират. Кодът просто си стои в пакет от 65 DLL библиотеки просто защото кодерът е пожелал да направи нещо съвсем тривиално, като например да запише бит по бит някое изображение и „представа си нямах колко е лесно това“, просто е импортирал огромен куп bloatware, за да реши тази тривиална задача.
Както вече казах, не трябва да се сърдим на младите кодери. Така са ги учили и научили. Те си нямат понятие какво е висока производителност или писане на код, който е съобразен с редица ограничения. Ако им кажеш, че в първата Elite имаше огромна галактика ,космически боеве в 3D космическо пространство, система за изграждане на кариера, търговия и хиляди неизследвани планети, като при всичко това играта се събираше само в едни 64 KB, то те ще ви чуят, но няма да осъзнаят пропастта между тогава и това, което виждаме днес.
Защо считам това за важно?
Това ме безпокои по редица причини и не на последно място за това, че ако за изпълнението на дадена задача е необходим две хиляди пъти повече код, то той поне трябва да работи. По-важното е, че 99,9% от времето на моя огромен и свръхмощен персонален компютър са съвсем безполезни. Той извършва милиарди операции в секунда, само докато стои и нищо не върши. Би трябвало в момента той да е в режим на свръхниска консумация и неговите вентилатори да мълчат, понеже всичко, което в момента правя е проверка на правописа при въвеждането на текст във WordPress.
Ха-ха. WordPress.
Към днешен ден компютрите са толкова бързи, че ние би трябвало да ги възприемаме като абсолютна магия. Всичко, което можем да си представим, трябва да успява да се случва за 1/60 от секундата. Само че въпреки това, след като кликна върху иконката за регулиране силата на звука в моя лаптоп Microsoft Surface, съвсем ясно виждам твърде неприятно забавяне. Компютърът постепенно създава новия елемент на потребителския интерфейс, ориентира се какви иконки трябва да покаже, а след това те се появяват и стават интерактивни. За всичко това е необходимо време. Струва ми се около половин секунда, което в мащабите на процесора са милиарди години.
Ако днес (по най-консервативни оценки) 99% от ресурсите на нашите персонални компютри се изразходват напразно, то това означава, че и напрано се харчат и 99,9% от консумираната от компютъра енергия. Това е направо престъпно. И за какво се правят тези разходи? Няма си и понятие, но като погледнем в Task Manager можем да видим тонове раздута програмна глупост, за който никой не може да каже с какво се занимава. В ОС Windows са стартирани 102 фонови процеса. На моята графична карта от Nvidia са стартирани 6 от тях, а някои от тези процеси имат подзадачи. За да вършат какво? Нямам стартирана игра и ползвам на практика същите функции от драйвера на видеокартата, каквито ползвах преди двадесет години, но сега незнайно защо на нея са ѝ необходими 6 процеса.
На Web View Microsoft Edge също са необходими 6 процеса, както и на самия Microsoft Edge. Само че аз не ползвам Microsoft Edge. Струва ми се, че вчера отворих един SVG файл и ето на сега имам 12 безполезни блока памет, които напразно заемат немалко памет и навярно редовно се обръщат към процесора.
Това е едно съвършено и цялостно безумие. Именно затова нищо не работи както трябва, всичко е много бавно, с всяка една изминала година е необходимо купуването на нов смартфон и на нов телевизор, които да могат да изтеглят тези раздути приложения, в които е скрит толкова много лош код.
Лично аз съм на мнение, че по-нататък ще става още по-лошо, понеже големите тъпи и безполезни технологични компании като Facebook, Twitter, Reddit и т.н, са най-лошите примери на тази тенденция. Съвсем скоро всеки един от хилядите работещи в тези компании „програмисти“, по-скоро кодери, ще започнат да използват машинно обучение за копиране и поставяне на раздут, бъгав и лош код. Навярно само за да се извърши събиране на две числа ще са необходими 32 DLL библиотеки, 16 процеса в ОС Windows и милиарди редове код.
Преди време имахме златен век на програмирането, при това, когато имахме сериозни ограничение по отношения на паметта и процесорния ресурс. Сега живеем в една дълбока яма от неефективност и огромни загуби на ресурси. Това е твърде печално.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!
