Есть типичная позиция, которую можно встретить на Хабре и не только: «хотя железо с годами всё лучше, человечество свело эффект на нет тем, что пишет софт всё хуже».
Мол, ядер в процессорах стало больше, но тормозит всё пуще прежнего. Electron и Slack — порождения тьмы, пришедшие лишить нас счастья и памяти. Мобильные приложения стали прожорливее, чем старые операционные системы. А в самих операционных системах уже толком нет прогресса, но почему-то они продолжают разбухать в размерах. То ли дело было, когда люди умели уместить ОС на дискету!
Скажу прямо: когда я вижу подобные заявления, у меня бомбит. По-моему, в них упускают целый ряд важных факторов. А в итоге ситуация напоминает классическую речь Луи Си Кея «Everything's amazing and nobody's happy»: всё стало удивительно хорошо, а люди сидят и жалуются.
Поэтому решил описать эти упущенные факторы. Поскольку текст получился резким, хочу подчеркнуть, что мнение сугубо моё личное (хоть я и ссылаюсь на конференции компании, в которой работаю).
Избирательность памяти
Известно, что существует ностальгический эффект «раньше трава была зеленее, а музыка лучше». Но, по-моему, у многих этот эффект принимает пугающие масштабы, когда ощущения совсем уж драматически расходятся с реальностью.
Я говорю о заявлениях вроде такого: «Почти всё на компьютере ощущается медленнее, чем в 1983-м». Судя по тысячам лайков, это не единичное мнение, а массовое.
Первая моя реакция: «Ну и как в 1983-м ощущался стриминг 4K-видео?» То есть для начала давайте вспомним, что большинство сегодняшних применений компьютера раньше были невозможны, в том числе как раз из-за скорости. Когда-то фильм (даже не в 4K, а в 1080p) пришлось бы скачивать месяцами, а потом компьютер не смог бы его воспроизводить с 24 FPS. И как тогда сравнивать нынешнюю скорость с той, которая была бы такой запредельно низкой, что её вообще не было?
Вторая реакция: да, какие-то вещи, которые из командной строки переместились в GUI, могут там требовать больше времени. Готов поверить, что Word в 2020-м запускается медленнее, чем консольный редактор vi в 1983-м (лично сравнить не могу: впервые оказался за компьютером в 90-х). Но если для вас это настолько важно, можно ведь и в 2020-м для многих «задач из 80-х» использовать командную строку. Я прямо сейчас пишу этот текст в vim — прекрасный редактор, которому экосистема плагинов помогает не отставать от времени. Замечательно выглядит на современном ретиновом iMac: буковки стали очень чёткими, а отрабатывает по-прежнему моментально. В чём проблема-то?
Но самое главное даже не в двух названных вещах. Важнее следующее: по-моему, мы стали забывать, насколько компьютеры тормозили. Когда что-то начинает тормозить сильнее, мы это сразу замечаем — а вот когда что-то становится быстрее или проще, мы просто принимаем это как должное и забываем о прошлом.
Ко всем людям, пишущим «раньше всё было быстрее», у меня такой вопрос: вы вообще помните, например, вот это?
Признаюсь честно: я и сам об этом особо не вспоминаю. Когда сегодня выключаю компьютер, не задумываюсь о том, что двадцать лет назад сидел и ждал между нажатием кнопки в ОС и нажатием кнопки на системном блоке. Я просто принял как должное то, что теперь так не нужно, и забыл о том, что было иначе.
С временем запуска компьютера тоже произошли большие перемены. Сейчас я сажусь за аймак, нажимаю одну клавишу, и через секунду он готов к работе (спасибо SSD и спящему режиму). Когда в детстве я ждал загрузки Windows с HDD, вряд ли поверил бы, что доживу до такого.
«Когда в письме стопицот картинок, оно ужасно медленно открывается, иногда аж десять секунд!» Понимаю, что это может раздражать — но слушайте, в 2000-м для проверки почты я сначала минуту наслаждался трелями модема, потом ждал, пока неторопливо загрузится главная страница почты, а затем само письмо тоже подгружалось не моментально — и при этом в нём не было вообще никаких картинок, только текст. Сегодня такое открылось бы без промедления. Может быть, просто не надо забивать тысячей картинок средство коммуникации, которое было придумано для другого? И прежде чем заявлять «всё испортилось», давайте подумаем: сколько времени письмо с таким количеством картинок открывалось бы в 2000-м?
Или вот ещё одно воспоминание, затерявшееся во времени, как слёзы в дожде. В нулевых была популярна такая шутка: «Медленный компьютер — это когда знаешь по именам всех разработчиков Photoshop». Для тех, кому это ни о чём не говорит: тогда в России был очень популярен спираченный Photoshop, и при каждом его запуске россиянам приходилось подолгу смотреть на это:
Ой, понял сейчас, что знаю одного из этих людей — Шон Пэрент выступал у нас на С++ Russia
А теперь сравните. Сегодня шутят «когда-то понадобилось два килобайта памяти для запуска человека на Луну, а теперь нужно два гигабайта для запуска Slack». Звучит хлёстко, но вы замечаете разницу? Сколько бы оперативной памяти Slack ни потреблял, с ситуацией «на запуске программы можно идти пить чай» пользователи не сталкиваются. Всё стало лучше, а мы это не заметили.
Или вот показательный исторический артефакт: серия Масяни «Даунлоад» (2002). Герои страшно переживают из-за дисконнекта, при котором придётся скачивать файл заново.
Обратите внимание: файл, который они скачивают, весит 591 килобайт. Персонажи переживают из-за необходимости заново загрузить полмегабайта. Это реальное положение дел в 2002-м.
Для сравнения свежий пример из жизни. У меня на Mac возникла маленькая техническая проблема, на Stack Overflow нашёл совет «установить Xcode и принять её условия использования». Моя реакция: странно скачивать 8-гигабайтную IDE для нажатия одной кнопки, но если поможет, почему бы и нет.
То есть размеры программ с годами возросли (во времена Масяни от «8-гигабайтной IDE» у людей бы волосы зашевелились), но загрузить их стало куда проще, и наша жизнь стала куда лучше.
Ну и последний пример в этой части — про «разбухшие мобильные приложения». Про это временами пишут возмущённые посты вроде «App sizes are out of control»: «с каких это пор LinkedIn стал занимать на телефоне 275 мегабайт?!» В 2018-м можно было прочитать жалобу «у меня после установки приложений остался всего гигабайт для фотографий».
Не стану врать, эти 275 мегабайт LinkedIn у меня тоже вызывают вопросы. Но мне вспоминается, как в 2010-м на Хабре написали, что у Альфа-банка появилось мобильное приложение. Оно весило 30 мегабайт — сегодня такой размер не вызвал бы вообще никаких вопросов. А тогда в комментариях писали:
Знаете, почему? В те времена российский пользователь мог ходить, например, с HTC Hero. Заглянем в его характеристики: «storage — 512 MB, 165 for applications». 165 мегабайт суммарно на все установленные приложения! В таких условиях приходилось постоянно выбирать, какие из них важнее, а без каких можно прожить. И чтобы установить 30-мегабайтное, пришлось бы снести сразу несколько других. Это была боль.
И если бы мы могли вернуться в 2010-й, подойти к людям, испытывающим эту боль, и сказать им фразу из 2018-го «у меня после установки приложений остался всего гигабайт для фотографий», думаю, нас бы побили. Эти слова звучали бы не жалобой, а издевательством и хвастовством.
Причём даже с 2018-го, когда эта жалоба появилась, ситуация успела улучшиться: сейчас бюджетный Xiaomi Mi A3 в базовом варианте снабжён 64 гигабайтами, так что после установки приложений явно останется куда больше одного свободного.
Да, приложения за 10 лет выросли в разы. Но объём места за то же время вырос в СОТНИ раз. То есть жить стало в десятки раз лучше.
И вы вообще помните, что такое было использовать смартфон в 2010-м и сколько там было разных болей «всё тормозит»?
- Маленький объём оперативки означал, что приложения постоянно приходилось запускать «с нуля», а не моментально переключаться на уже запущенное.
- А маломощные процессоры очень неспешно запускали их с нуля.
- Про скорость мобильного интернета и вспоминать не хочется.
- Скидывать фотографии на компьютер и бэкапить телефон приходилось по проводу, и во времена USB 2.0 это было мучительно медленно.
Использование смартфона выглядело как постоянное ожидание: что бы ты ни хотел сделать, это включает периоды «стоишь и тупишь». Если ты на улице и тебе понадобилась карта — стоишь на месте и сначала ждёшь, пока приложение соизволит запуститься, а потом ждёшь, когда карта в нём соизволит подгрузиться. И ещё ощутимо платишь за потреблённый при этом трафик.
По сравнению с этим всем мы сейчас живём в райских условиях, но при этом активно жалуемся. Это выглядит «проблемами первого мира» — что-то вроде «хочу почитать твиттер лёжа, держа телефон над лицом, но ведь тогда можно его случайно уронить на себя». Ну, сочувствую, но говорить в такой ситуации «всё стало хуже» выглядит неуважением и к прошлому, и к настоящему.
Общий вывод: громкие тезисы «раньше всё работало быстрее и лучше» оказываются очевидной неправдой. Похоже, что память ностальгически подсовывает их авторам только приятные части прошлого, подавляя неприятные. Очень многое было гораздо медленнее и хуже.
Непонимание «внутренностей»
Есть другая типичная ситуация. Люди говорят «софт всё более раздутый и тормозной, хотя для пользователя там почти ничего к лучшему не меняется» — и при этом не вполне в курсе, а что там происходит-то на самом деле.
В качестве маленького наглядного примера. В 2018-м был нашумевший текст Никиты Прокопова об «испортившемся софте», и в числе прочего там были слова «Сервисы Google Play, которыми я не пользуюсь (я не покупаю там книги, музыку или видео) — 300 МБ, которые просто сидят здесь и которые нельзя удалить».
Читая такое, хочется преисполниться праведным гневом, да. Но есть нюанс: вообще-то Google Play Services — это не про «покупаю книги». Туда входит много самых разных API, и, как сообщает Википедия, «All major Android services are controlled by Google Play Services». То есть, по всей вероятности, Никита активно пользуется этим софтом, сам не зная об этом — просто в Google дали ему название, сбивающее с толку.
Моя цель здесь — не раскритиковать конкретный пост, а показать общий подход: мы часто заявляем «приложения разбухли/затормозили без веских причин», не до конца понимая эти причины. В приложение что-то добавили, у его разработчиков есть подробная информация, что именно и зачем, а у нас её нет — но мы почему-то считаем себя компетентнее их в этом вопросе.
А ведь внутри много того, что неочевидно снаружи. Возьмём для примера текстовые редакторы: казалось бы, люди делают их с незапамятных времён на слабейшем железе, с ними всё давно ясно и там нечему тормозить, «что может быть проще». Поэтому снаружи это выглядит так: если что-то отрабатывает не мгновенно, то это криворукие разработчики разучились тому, что человечество уже умело. Но если погрузиться в тему (мы как-то публиковали хабрапост об этом), резко обнаруживается много неочевидных нюансов — и слова «что может быть проще» перестают выглядеть убедительно.
Или вот ещё. Новости о мобильных ОС часто вызывают такую реакцию: «За последние лет восемь там ничего полезного не сделали. Каждый год с шумихой выкатывают новую версию, которая весит больше предыдущей, но из отличий я вижу только новые эмодзи. В гробу я эти эмодзи видал, верните старую версию, она была лучше».
Слушайте, ну вроде же все айтишники знают по опыту: можно потратить кучу сил на обоснованный рефакторинг бэкенда, и пользователь этого даже не заметит, а можно за полчаса поменять в интерфейсе пару иконок, и среди пользователей начнутся бурные обсуждения. То есть мы знаем, что «снаружи» заметны только некоторые изменения, причём зачастую не самые важные. Почему же тогда мы не осознаём, что если нам самим в новой версии ОС заметны только эмодзи, то это больше говорит про нас, чем про ОС?
Возьмём, например, Project Treble из Android 8.0. Известно, что в Android есть большая проблема: пока айфоны легко обновляются на новые версии ОС, андроидфоны обычно навсегда остаются с предустановленной версией, потому что их производители не хотят морочиться. И в Google затеяли масштабную переделку всей архитектуры, чтобы упростить производителям жизнь и стимулировать апдейты. И хотя Treble совершенно не решил проблему целиком, статистика показывает заметное улучшение. То есть для борьбы с наболевшей проблемой в Google вложили много труда (отрефакторить такую махину — это вам не верхом на форточке кататься), и ситуацию получилось частично улучшить. По-моему, компания как раз и должна разбираться с наболевшими проблемами, всё правильно сделали.
А теперь скажите: если вы не мобильный разработчик, вы вообще об этом слышали? Когда вы впервые взяли руки телефон с Android 8.0+, это как-то сказалось на вашем мнении о новой версии? Вряд ли, потому что в первые месяцы использования телефона это вообще никак не проявляется для пользователя. Заметить можно только спустя время, когда выйдет новая версия Android. И только если производитель телефона окажется в числе тех, кого Treble сподвиг обновлять устройства. И даже в этом случае пользователь может не осознать, что в обновлении есть заслуга Google, и по-прежнему говорить «ничего полезного за восемь лет не сделали».
И такая ситуация типична — «подводная часть айсберга» вообще большая. Когда в Android ввели Adaptive Battery («умное» определение, каким приложениям можно есть аккумулятор в фоне), замеряли ли вы, изменилось ли энергопотребление вашего телефона? Когда Google Play Protect в фоновом режиме заботится о вашей безопасности, вспоминаете ли вы, что раньше этого не было? Когда добавили поддержку видеокодека AV1, задумались ли вы, что с высокой вероятностью за этим кодеком будущее и такая поддержка полезна? Или вы просто берёте в руки телефон, и эмодзи бросаются в глаза, а поддержка AV1 не бросается?
А из этого следует, что когда мы ругаемся скопом на все «разбухшие и тормозящие приложения», во многих случаях для этого были объективные причины. Где-то люди в рабочее время вдумчиво взвешивали все плюсы и минусы, обсуждали их друг с другом, и пришли к выводу «плюсы перевешивают». А потом приходим мы, понятия не имеем, что там было на весах, тратить время на вдумчивое изучение не собираемся, видим только изменившийся размер — и делаем уверенное заключение «всё испортилось».
Общий вывод: часть заявлений о «бессмысленно раздутом софте» вызвана ошибками непонимания. И делать такие заявления без тщательного исследования причин — не самая разумная стратегия.
Внимание к производительности
Заявления об «испортившемся софте» звучат так, будто раньше разработчики экономили вычислительные мощности, а сейчас они все плевать хотели на оптимизацию. Мол, важно лишь, чтобы работало — а что требования к железу получились высокие, так закон Мура как-нибудь всё разрулит. Если код медленно выполняется, жрёт память как не в себя и занимает много места — и так сойдёт, никто не станет переживать об этом и улучшать что-то.
Слушайте, ну это попросту неправда. В качестве отдельного примера: Facebook Messenger недавно переписали, и сообщается, что производительность повысилась вдвое, а размер уменьшился вчетверо. А к словам выше о том, что приложение LinkedIn весит 275 мегабайт — я сейчас проверил и увидел в App Store надпись «195.4 MB», похоже, его тоже успели уменьшить в полтора раза. То есть в обеих компаниях явно и задумались о потреблении ресурсов, и выделили для их снижения немало трудозатрат, которые можно было бы потратить на «пилить фичи».
А поскольку я по работе связан с конференциями для разработчиков и пересекаюсь с многими из них (причём из разных стеков), я вижу, какие темы их заботят. О чём они слушают доклады, о чём общаются и пишут посты.
И производительность — точно одна из таких тем. По названиям докладов вроде «Оптимизация времени запуска iOS-приложений» видно: разработчики готовы тратить 60 минут, чтобы послушать о миллисекундах.
Говорят о производительности везде — хоть в JavaScript-мире («Производительность JavaScript через подзорную трубу»), хоть в мобильной разработке («Как уместить в айфоне миллион звёзд»). Но больше всего говорят в бэкенде. Думаю, это потому что смартфоны пользователи покупают себе сами, а вот в бэкенде за вычислительные мощности платит компания, так что есть мощная финансовая мотивация оптимизировать.
Недавно я проделал простой эксперимент: открыл программу нашей Java-конференции JPoint и посмотрел, в скольки описаниях докладов встретится что-то о производительности. Позже из-за коронавируса мы перенесли конференцию на июнь, так что в программе возможны изменения, но результаты в любом случае показательные. Они такие:
- «Этот доклад будет про тюнинг производительности Producer»
- «Рассмотрим методы оптимизации файлового I/O»
- «Может, для одного из модулей вы хотите получить большую производительность, чем вы когда-либо сможете выжать из Java?»
- «Какие связанные с safepoint оптимизации делает HotSpot JVM? О чём стоит помнить разработчикам, чтобы избежать нежелательных пауз?»
- «Проект Валхалла, инлайн-типы и всё вокруг них, от программной модели до производительности»
- «Optimize query performance, throughput and memory consumption»
- «Доклад посвящен детальному разбору того, как происходит процесс записи в базу данных Apache Cassandra с точки зрения производительности»
Слушайте, если бы этот эксперимент я проводил как drinking game, то к его окончанию был бы уже пьян. Невооружённым глазом видно: Java-разработчиков волнует, как им делать свой код не просто работающим, но и быстрым.
Более того: зачастую это их даже слишком волнует! От людей, плотно занимающихся перформансом, я неоднократно слышал, что тут легко перестараться. Например, ради незначительного роста производительности люди используют какие-то грязные хаки, которые в итоге создают больше проблем, чем решают. Ну, про это было в прекрасном кейноуте Алексея Шипилёва на JPoint 2017, мы для Хабра делали расшифровку.
Подытожим: пока в интернетах сокрушаются «разработчики обленились и совсем перестали думать о тормозах», в реальности многие разработчики думают о них больше, чем нужно.
Осмысленность и целесообразность
А теперь, по-моему, самый важный тезис.
Да, приложения со временем требуют всё больше ресурсов, порой на порядки. Да, мы стали затаскивать в свои проекты гораздо больше, даже когда там что-то не слишком нужное, вместо того, чтобы тратить время на вычленение «строго нужного». Это правда.
Но я считаю, что выросшие приложения не делают сегодняшних разработчиков неумелыми дураками. Более того, всё наоборот:
Разработчики были бы дураками, если бы приложения НЕ выросли.
Представим мир, в котором железо активно развивалось, а подход к разработке софта остался прежним. Программы по-прежнему умещались бы в объём дискеты, хотя сами дискеты уже никто не использовал бы. Во имя производительности примерно всё писали бы на С++. Все разработчики постоянно спускались бы на низкие уровни и знали каждое место, где можно выгадать пару байт. Никакого «сейчас для этой задачи установим пять библиотек», только тщательно выверенные под конкретный проект решения, в которых лишней строчки нет. В общем, праздник оптимизации и бережного подхода к ресурсам. Всё то, о чём жалеют сейчас как об «утраченном мастерстве».
Знаете, какое впечатление на меня производит эта картина? Большая семья вынужденно жила в одной маленькой комнате, поэтому научилась размещать вещи с точностью до миллиметра и овладела тайным искусством создания пятиярусных кроватей. А потом переехала в просторную многокомнатную квартиру — но по привычке заняла там только одну комнату, все остальные оставила пустыми. Люди по-прежнему сидят друг у друга на головах.
Вопрос: не кажется ли вам, что это безумие? Если появилась возможность дать каждому вдоволь пространства, то ради чего его экономить? Кому лучше от древнего мастерства пятиярусных кроватей, если при этом пригласить кого-то в гости некуда? Не пора ли овладевать новым мастерством выбора king size-кровати?
То же самое и в софте. Если в эпоху, когда даже у бюджетных смартфонов есть по 64 гигабайта, мы будем переживать «рантайм Kotlin увеличит наше приложение на мегабайт», то мы и превратимся в эту семью. Расслабьтесь, место для того и нужно, чтобы в нём что-то находилось. Если оно пропадает впустую, это никому не делает лучше. Если места стало много, и для чего-то понадобился рояль — значит, можно смело его ставить, не переживая о квадратных сантиметрах.
Slack — это и есть рояль. Окей, он ест много памяти, но слышали ли вы, чтобы не-айтишники жаловались на него, как когда-то жаловались на Photoshop? По моим ощущениям, у обычных пользователей уже достаточно пространства, чтобы этот «рояль» не мешал им «пройти по комнате». Да, можно заменить на пианино и сэкономить место. Но если живёшь во дворце, и с годами площадь дворца становится ещё больше, то зачем?
По-моему, из-за Slack переживают в основном айтишники, которым оперативка нужна для других тяжёлых задач. Но айтишники — это отдельная история: развивая квартирную метафору, это люди, у которых из квартиры сделана мастерская. Ну да, тут какой дворец ни предоставь, все комнаты окажутся заняты чем-то очень важным. И тогда рояль может мешать, можно ведь вместо него токарный станок поставить. Но большинство людей в мире живёт иначе, им дома не нужны токарные станки, и для их образа жизни ресурсов уже достаточно.
И в такой ситуации лихорадочно избегать всего, что занимает память, когда её уже стало много — это как с мобильными таск-менеджерами, где пользователи прибивают запущенные приложения, чтобы «расчистить оперативную память». Уже много раз создатели мобильных платформ говорили: «Остановитесь, безумцы. Система сама прибьёт приложения, если памяти станет не хватать, а до того-то их прибивать зачем? В чём смысл покупать смартфон с большим объёмом оперативной памяти, а потом держать её пустой и не пользоваться тем, за что заплатил?»
Выглядит оптимизированно. Хочется ли вам тут жить?
И ещё мне вспоминается история с «ошибкой 2000». Кто-то из айтишников середины XX века в старости вспоминал: «Мы были в числе породивших её. Мы тогда экономили каждый байт. И когда мы придумали, что можно год хранить двумя цифрами, а не четырьмя, ощущали себя очень умными. Мы сэкономили по два байта в куче мест! И только ближе к концу века стали ясны последствия».
Да, в то время записывать год двумя цифрами наверняка выглядело разумным решением. И оно прямо-таки воплощает в себе всё то, за что ратуют сторонники «бережного» подхода. Вот тут действительно дошли до предела в заботе о ресурсах.
Но потом, много лет спустя, другим людям пришлось потратить кучу ресурсов на то, чтобы разобраться с последствиями этого решения и предотвратить проблемы.
И теперь, когда сэкономленные два байта уже никому не помогут, а негативные последствия известны, было бы очень странным хранить год так.
Так вот: многое из того, что сегодня хочется воспевать как «разумное сберегание ресурсов», в будущем станет выглядеть такой же «экономией на спичках», которая потратила больше ресурсов, чем сэкономила. Например, потому что время разработчика — это тоже ценнейший ресурс, а его тут в расчёты часто не включают. Если вы упоролись по выравниванию данных, и ваше приложение стало чуть-чуть меньше и быстрее, но вы потратили на это неделю, которая могла бы уйти на полезную фичу, то вы сделали пользователю лучше или хуже?
Да, очень хочется ощущать «я умный и экономный, я умею сберечь ресурсы там, где другие ими разбрасываются». Это приятное ощущение.
И приятные ощущения — это важно. Если разработчика тошнит от проекта, в этом ничего хорошего, это будет бить по его мотивации и сделает хуже всем.
Но при этом надо уметь различать, где что-то полезное вообще для всех (напрямую делающее счастливее пользователей), а где приятные ощущения от почёсывания своего эго. И не выдавать одно за другое.
Примирительное заключение
Предвосхищаю возражения в комментариях: «а вот задача X стала у меня выполняться реально медленнее, чем 13 лет назад, верните мне мой 2007-й».
Поймите меня правильно: я не пытаюсь сказать, что таких задач не бывает. Бывают. И чрезмерное использование зависимостей бывает. И bloatware бывает. Когда я слышу, что в Photoshop есть редактирование видео, я испытываю такое же ощущение «ЗАЧЕМ», как и вы. Когда я читаю, что создание любого приложения с create-react-app сразу означает 4304 директории с 28678 файлами в них, у меня тоже возникает вопрос, не свернули ли мы куда-то не туда. Есть много реальных проблем, о которых стоит говорить.
Моя претензия лишь к тому, что в связи с этими проблемами возникает какая-то радикальная секта, верящая в скорый конец света из-за разрастания софта. В этой секте переписывают историю («раньше всё быстрее работало!»), недопонимают происходящее («а почему это Windows с годами так выросла, там же ничего особо и не поменялось»), говорят о разработчиках незаслуженные вещи («они не хотят ничего оптимизировать») и ударяются в крайность «давайте экономить каждый байт, даже когда это сделает пользователям хуже». Давайте не будем так делать.
Мои возражения радикальной позиции, конечно, тоже получились несколько радикальными (просто в противоположную сторону). К ним тоже можно придраться, и их тоже можно назвать сектой. Но цель этого поста не в том, чтобы каждое моё слово считали истиной в последней инстанции. Его цель в следующем: чтобы люди поменьше вовлекались в секты.
Главный вывод — скучный и банальный, но от того не менее правильный: всё зависит от конкретной ситуации. Оптимизации — это не абсолютное зло и не абсолютное добро. Они могут одновременно помогать и вредить. Есть ситуации, где оптимизации явно стоят того, и ситуации, где явно не стоят. И есть промежуточные ситуации, где разные люди по-разному расценят «стоит или нет», и никто из них не будет более прав, и это нормально.
А если кто-то, включая меня, скажет вам иначе — это сектант, гоните его в шею.
Shtucer
Меня вот с комикса бомбит, прям с первого кадра с этим муд… сра… уё… "по быстрее".
icCE
Да тут все прекрасно, человека бомбит по делу и без дела.
Можно взять обычный калькулятор и посмотреть его эволюцию в размерах и потреблении памяти. Как по мне самый удачный был в XP.
Я помню и у меня есть ретро машины, так что помню как вчера я запускал и вполне спокойно выключил win95.
Обычно причины были банальные, это мало памяти, открытие много всего и жутко дешевые тормозные диски. Кто-то делал на 80286 с 8 метрами памяти кеш диска в памяти? Да единицы были и да именно 80286 и именно 8 метров (есть платы и на 16)
Жду когда мы упремся в кремний в итоге и опять начнем оптимизировать soft.
tbl
Скорее всего упремся не в кремний (его может быть много в далеких облачных дц), а в то, что в какой-то момент нельзя будет относительно дешево (как эволюционно, так и революционно) увеличивать ширину канала связи по фундаментальным причинам.
AlxDr
Или Интернет продолжат дербанить в том же духе (тащмайорство, блокировки, поддержка копирайтов, закрытые стандарты, шатдауны — это вот всё не только в России ведь происходит) и в итоге окажется, что облака не такая уж надёжная штука, когда сеть фрагментирована и там периодически штормит.
DWZ
На ширпотребовских компьютерах ставили 8 Мб, начиная только с Пентиума. Говорю так потому, что тогда ставил себе в 2 раза больше памяти, чем «простые смертные».
icCE
Я скажу больше, что особого смысла больше чем 1 метр на 80286 нет для обычных людей и к концу жизни, это стало просто дешевая машина.
oYASo
Просто люди часто видят либо черное, либо белое. Но, а вокруг все, как правило, серое.
В статье бросается в глаза то, что автор рассуждает о том, что софт сейчас в целом пишут лучше, а примеры почему-то железные приводит: был модем, стал гигабитный изернет, было 16 метров памяти, стало 16 гигов и т.д. Но дело в том, что железки действительно стали на порядки мощнее железок 20 летней давности, утилизация этих железок пропорционально возросла, а вот качество, полезная функциональность и быстродействие софта на эти порядки, увы, не возросли.
Стали ли анимация, свистелки-перделки и общий вид приложений лучше – ну, скорее, стали. Стали ли эти приложения больше занимать памяти и места, жрать больше CPU – да, тоже стали. Можно ли сказать, что потребляемые ресурсы эквивалентны добавленным возможностям – увы, далеко не всегда.
Сейчас довольно популярна тема – ну жрет мой блокнот 1гб памяти, и пусть жрет, сейчас же на машинах их 16-32Гб. А по итогу получается, что открыл Firefox на 100 вкладок, 2-3 экземпляра IDE с большим проектом, какую-нибудь GUI для гита – опа, а у тебя уже -15Гб рамы, и в своп уже просится. Ну блин, как так, вроде топовый ноут был 2 года назад, вроде бы и ничего фундаментально не изменилось, а он уже – старые дрова, которые еле тащат разработку.
Разработчики современных фреймворков – они же тоже больше про «простоту вхождения», чем про оптимизации. Вот если фреймворк взлетел, тогда да, можно начать думать и про это.
Простота вхождения дает нам больше разработчиков, больше идей, больше продуктов, сервисов и фич – звучит хорошо. С другой стороны, низкая подготовка кадров может приносить много багов, глюков и прочего – это плохо. Но т.к. «пластмассовый мир победил», и бизнес научился впаривать продукты любого качества, то прибыль за количество новых внедренных фич перевешивает убытки от добавленных глюков, прожорвости и т.д., то бизнес будет и дальше идти по, пока еще, прибыльному пути.
Вообще, я бы сравнил «борцов за оптимизацию» с разумными экологами. Вторые говорят, что заводы – это все тоже важно, нужно и прогресс, но давайте все-таки при этом не уничтожать все в округе, иначе через сколько-то лет нам придется решать другие, более сложные задачи. Если сейчас совсем не смотреть на разбухающий софт, то рано или поздно 95% утилизации мощностей компов уйдет в поднятие локальных серверов на каждый калькулятор, и жить сильно лучше не станет.
oYASo
Ну а так, как пример из прошлого, помню, был у меня КПК (карманный персональный компьютер, дедушка современных смартфонов) — Dell x50v. Статья подсказывает, что это около 2004 года было. Конфигурация смешна по современным меркам — 1 ядро на 600Мгц, 64 ОЗУ.
Я на нем библиотеки книжек в FbReader читал, музыку слушал, инет серфал, в приличные игры играл, имел доступ к файловой системе, карты навигации стояли и т.д. DosBox у меня стоял с Maple 1987 года, в котором я считал всякие математические задачи.
Короче, все тоже самое, что и делаю сейчас. Да, навигация сейчас стала сильно лучше (а тормозит уже и на 8 ядрах и 6Гб), экраны приличнее, скорости быстрее, но не могу сказать, что я ощущаю какой-то прям качественный скачок в софте. Скорее, стало больше веба и сервисов, что сильно добавило функционала в оффлайн из онлайна (такси, доставки и т.д.), но основной набор софта на десктопе/мобиле у меня плюс-минус одинаковый десятилетиями.
icCE
AlxDr
По-моему, современный веб — это абсолютно та же головная боль, просто веб-приложения настолько распространены, что, вроде как, стали выделяться в отдельный сектор.
На самом же деле — всё те же подходы, те же тенденции. Проблема-то не в JS, а в том, что не видят проблемы сбрасывать пользователям монструозные конструкции, которые предсказуемо жрут ресурсы как бегемот веники, но «на среднем смартфоне достаточно мощные процессоры, зачем себя ограничивать».
DWZ
Иногда пользователю выкручивают руки. Вот у меня планшет Gataxy Tab 2.0, на нём Янекс-карта. Была. Потому что в один прекрасный момент карта говорит: «НЕ буду работать. Обнови браузер». Без проблем. Обновляю Хром. Он, в свою очередь, говорит: «Обнови Android». Опять без проблем, обновляю. А Android заявляет: «Для ВАшего устройства новой версии нету». С FireFox аналогично. И всё, приплыли. Нет ножек — нет мультиков.
EvilMonk
Кто эти люди, которые открывают 100 вкладок в браузере?
DMGarikk
(посчитал) у меня 30 вкладок открыто, а в чем проблема? я бы и больше открыл но памяти не особо много
VolCh
Я, например.
Grey83
у меня сейчас порядка 140 открыто
Skerrigan
Оке, вызов принят, 821 (да, спец.счетчик стоит).
Нет, я не упорот, просто широкий спектр решения задач.
И да, это только верхушка айсберга… по факту в Windows стоит ядро линуха (WSL2), а там уже докер со своим миром.
Добиваем кучей IDE, торренты, еще браузеры.
И да, мне бы памяти по больше, 64Гб как-то маловато (никакого свопа) — когда еще игрушку запускаю, то свободной остается совсем немного ;)
DWZ
> в поднятие локальных серверов на каждый калькулятор
Попадался ftp-сервер на телефоне :)
Grey83
иногда удобно
разве что не на постоянно основе
DWZ
Важен сам факт — сервер на телефоне.
adictive_max
И в чём важность этого факта? «Сервер» — это всего лишь название роли в межпрограммном взаимодействии. От того, что вы назовёте программу «сервером» он не приобретёт каких-то особых свойств по сравнению с не-сервером.
DWZ
Особая роль уже есть. Телефон хранит файлы и выдаёт их по требованию, как будто настоящий сервер из дата-центра.
adictive_max
А чем это принципиально отличается от любого другого способа передачи файлов? Например по bluetooth или WiFi?
По такой логике, стоит вам на своём форд-фокусе перевезти мешок цемента, так он сразу превратится в строительный самосвал.
Grey83
я такими фишками почти 10 лет назад на симбе пользовался
Iwanowsky
Софт раздувается прежде всего из-за сильно избыточного кода, что связанно с внедрением ООП, фреймворков, визуального программирования, программирования на близких к человеческим языках и пр. многоуровневых абстракций, которые, можно сказать, убивают саму суть программирования. Если раньше программировали на С/С++, Паскале и пр. ЯП, при этом стараясь максимально оптимизировать программный код (часто — с использованием многочисленных ассемблерных вставок), то сейчас, используя библиотеки готовых объектов (классов), накидав формы и объекты в визуальной среде программирования, легко и быстро написать программу любой сложности. И если раньше программный код иногда даже растягивали по строкам при оплате по количеству строк программы, то сейчас программы могут иметь миллионы и десятки миллионов строк кода: МС Виндовс 7 скомпилирован из примерно 40млн строк кода (Вин3.1 — 2,5млн), МС Офис 2013 — 45млн строк, Линукс 3.10 — 13млн, Андроид — 12млн, Файрфокс — 18млн, Гугл Хром — 7млн, новый Фотошоп — 10млн (Фотошоп 1.0 — всего 128тыс.!); а управляющее ПО самых современных автомобилей может иметь и 100млн строк кода (т.е. производители просто накидывают готовые программные блоки, не делая никакой оптимизации кода). Любая универсализация и унификация программирования (с целью его упрощения) в виде ООП, фреймворков, визуального программирования, а также программирования на языках, близких к человеческому (а к этому все и идет), подразумевает огромную избыточность кода. Ну и также в любых крупных проектах (как проприетарных, так и опенсорсных) с выходом все новых версий накапливаются большие объемы устаревшего и неиспользуемого кода, что негативно влияет на производительность и отзывчивость программ; и периодически программисты проводят чистку кода и АПИ и оптимизацию программ (рефакторинг), ускоряя работу приложений, что потом ставят в достоинства вышедшей новой версии ПО (а потом размер программ опять же будет расти).
То же самое с версткой сайтов и веб-программированием. Изначально все сайты выглядели минималистично и просто (наподобие еще более старого Гофер), а сейчас даже минималистичная версия сайта Яндекса (ya.ru) — это почти 50КБ кода; при том что печатная страница простого текста (если набивать текст без стилевого оформления в Блокноте) — примерно 2КБ.
Также сейчас также довольно много внимания уделяется защите данных (шифрование и хэши). Если раньше пароли передавались по сети простым текстом (чем в т.ч. пользовались первые хакеры), то сейчас такого почти не встретить. Много внимания также уделяется обнаружению и закрытию дыр в ПО, и при каждом обновлении ПО в «Что нового» объявляется о закрытии неск. десятков (а то и сотен) уязвимостей; а внедряемые в ПО проверки корректности данных тоже добавляют объема кода.
MaxVetrov
0xd34df00d
А как неиспользуемый код влияет на производительность, если не секрет?
VolCh
Как минимум, он может загружаться в память. Он может оказаться неработающим потому обрамлён ifом, условие которого никогда уже не выполняется, но само условие всё ещё вычисляется.
Wesha
… — насколько я помню, 95-е винды давали КАЖДОМУ приложению 10 секунд на закрытие,
а приложения тогда тоже писали люди с руками не из того места,так что чем больше фигни висело в трее (а народ любил коллекционировать там иконки), тем дольше оно выключалосьchapuza
Всю жизнь (с 1991 года) выключал и выключаю десктоп (если вдруг зачем-то надо) тумблером на корпусе. Это действие требует ровно 10?s.
alexdevyatov
Больной ублюдок.
DWZ
У новых всё равно штатная порцедура проходит, даже если его кнопкой выкличить. Правда, если зависнет, то только вилку из розетки дёргать. Ну, или выключателем сзади щёлкать, у кого он есть.
COKPOWEHEU
На корпусе не одна кнопка. И если нажать ту, что сзади, никакой штатной процедуры не будет.
А если серьезно — тоже почти всегда выключаю машину коротким нажатием кнопки включения
DWZ
> И если нажать ту, что сзади, никакой штатной процедуры не будет.
Вряд ли обычный юзер будет лезть на заднюю стенку. Хотя, да, бывали оригиналы, которые в ответ на «Press any key» нажимали «Reset». ;)
Grey83
дык, там же не уточнялось, что any должна быть именно на клаве =)
eshirshov
Ахтунг! Скайнет существует — и раздражен поведением белкового организма по отношению его прародителям)).
PS эдди мерфи давит тараканов youtu.be/yyGeCihP74Y?t=313 родственников Жука.
Iwanowsky
Вот раньше компьютеры были настоящими компьютерами — большими, солидными, занимающими огромные площади, серьезно выглядящими; а сейчас — мельчает техника! И дешевенький смартфон по производительности легко побивает суперкомпьютер прошлого века.
Помню, в прошлом веке у меня был дипломный проект, посвященный разработке библиотек для разработки обучающих программ. Программы с использованием становящихся в то время популярными библиотек Borland Turbo Vision уж очень сильно тормозили на ПК ЕС-1840/1841, а в нашем вузе было неск. классов с такими ПК. Вот и разрабатывалась мной новая ООП-библиотека на Turbo Pascal, реализующая полноценный оконный интерфейс с диалоговыми окнами, раскрывающимися горизонтальными и вертикальными меню и мн. всякого, в т.ч. объекты для разработки обучающих программ (лекционный материал с иллюстрациями, контрольные вопросы и экзамены с выставлением оценки, кроссворды и т.д.), и даже защиту дистрибутивов от нелегального копирования. На основе этой ООП-библиотеки подпрограмм я писал обучающие и экспертные программы по самой разной тематике (работали шустро в т.ч. на ПК ЕС-1840/1841 под MS-DOS): иностранные языки, русский язык, культурология, история, право, математика, лесное дело и др., мн. из кот. попали в ФАП и распространялись по образовательным учреждениям.
На работу я недавно принес свой первый ПК с ОЗУ 640КБ и диском 750МБ с Windows ME (изначально, понятное дело, работал под DOS, потом Windows 3.0, 3.1, 95, 98 по мере их появления, в т.ч. бета-версии ОС).
MTyrz
Iwanowsky
Да, виноват, 64МБ ОЗУ в нем. Для демонстрации коллегам подключил его к нашей локалке, к Интернет. Конечно, новые сайты в старых браузерах Netscape и MSIE отображаются криво, и мн. сайты выдают, что не могут работать в устаревшем браузере.