Я увидел этот вопрос на Quora и начал писать ответ. Но ответ получился слишком большим, так что я превратил его в эту статью.
Вот часть изменений в случайном порядке, которые я заметил в программировании за последние 20 лет:
- Многие концепции, которые были лишь теоретическими 20 лет назад, сегодня широко применяются на практике. Например, такие функциональные парадигмы как неизменяемость объектов, хвостовая рекурсия, ленивые коллекции, сопоставление с шаблоном, функции первого класса и взгляд свысока на тех, кто всё это не использует.
- «Десктопным приложением» многие неиронично называют упакованный браузер со страницей по умолчанию и без адресной строки.
- Объектно-ориентированное программирование (ООП) сдало позиции, хотя всё ещё гораздо популярнее любой из альтернатив. Молодые языки типа Go, Rust и Swift всё активнее используют типажи. Композицию повсеместно предпочитают наследованию.
- Из-за распространённости многоядерных процессоров поддержку параллельного программирования в языках сегодня встретить легче, чем поддержку примитивных обращений к операционной системе 20 лет назад. Таким образом, в обиход прочно вошли асинхронные примитивы (типа async/await), параллельные сопрограммы вроде «горутин» в Go или каналов в D, семантика композиционности («composability semantics») вроде механизма «observables» при реактивном программировании.
- Пиксель перестал быть подходящей единицей измерения.
- Сборка мусора стала обычным способом безопасного программирования, но ей на пятки наступают более молодые альтернативы типа семантики для указания времени жизни объектов в Rust и язвительных шуток на код-ревью.
- 3 миллиарда девайсов используют Java. Правда, это число не менялось уже лет десять.
- Система управления зависимостями стала жизненно важной частью любого языка. Никто не хочет вручную скачивать или устанавливать что-либо. 20 лет назад, скачав zip архив, распаковав его в папку проекта, мы обновляли файл конфигурации и молились, чтобы ничего не сломалось.
- Быть командой разработчиков теперь означает необходимость выполнять таинственный ритуал: всем вместе 15 минут с утра рисовать .
- Набор инструментов при работе с языком гораздо шире. Раньше был только компилятор и, если повезёт, отладчик. Сегодня они обычно идут в комплекте с линтером, средством форматирования кода, шаблонизатором, возможностью самообновления и списком доводов для использования в холиварах против конкурирующих языков.
- Даже языки программирования приняли участие в дебатах «табы или пробелы».
- Adobe Flash, который был единственным рабочим способом реализовать нормальный интерфейс в вебе, к счастью, ныне почил. Правда, на смену единому стандарту пришли три разных фреймворка с абсолютно разными моделями.
- IDE и языки программирования удаляются друг от друга. 20 лет назад был язык и IDE, специально разработанная для него, вроде Eclipse для Java, Visual Basic, Delphi и т.п. Теперь же у нас есть универсальные редакторы типа VS Code, способные поддерживать множество разных языков и возможностей.
- Код принято выполнять за тремя слоями виртуализации. Это как минимум. Код, который выполняется на голом железе? Не, это было бы излишне производительно.
- Кросс-платформенная разработка — стандарт из-за кучи архитектур, мобильных девайсов, облачных серверов, встроенных IoT систем. 20 лет назад разработка велась почти эксклюзивно для ПК.
- Код стали запускать локально гораздо реже.
- Документация теперь только в онлайне и называется Гугл. Оффлайновой документации почти нет. А когда она есть, никто не знает, где она находится.
- Многие не считают туториалы полезными, если только это не видеоролик. Даже если его просмотр займёт больше времени, чем прочтение текста.
- Говорят, что до изобретения StackOverflow приходилось задавать вопросы живым людям.
- Люди занимаются разработкой на Mac OS.
- Подключение к интернету — правило, а оффлайн — исключение. Раньше было ровно наоборот.
- Защита от взлома — то, о чём сейчас приходится думать при создании программы.
- Мобильные девайсы способны отображать обычные страницы, так что нужда в WAP страницах для мобильных версий сайтов на поддоменах отпала. Вместо этого мы создаём обычные страницы для мобильных версий сайтов на поддоменах.
- Мы с радостью выкладываем наш код в Open Source. Конечно, кроме кода, за который нам стыдно.
- В индустрии гораздо больше талантливых женщин, людей не европейской внешности, и представителей ЛГБТ сообщества — спасибо всем, кто боролся против дискриминации. Не думаю, что полное равноправие уже достигнуто, но ситуация гораздо лучше, чем она была 20 лет назад. (не забывайте, что это перевод — прим. перев.)
- Утечка данных пользователей — типовое событие. В таких случаях в корпоративный блог пишется пост с рекомендацией срочно поменять пароль. Прощения обычно не просят.
- Работать программистом удалённо теперь легче, чем когда-либо. За это спасибо технологиям видео-конференций, повсеместному доступу в интернет и домашним кофе-машинам.
- Мы больше не используем IRC для связи. Мы выбрали гораздо более раздутую альтернативу под названием Slack, лишь бы не пришлось вбивать адрес сервера вручную.
- Мы выполняем программы на видеокартах.
- Ваш продукт не стоит и копейки, если не полагается на блокчейн и AI. Да, даже если централизованная и управляемая алгоритмами версия проще, эффективнее и быстрее.
- Один гигабайт — недостаточный объём.
- Из-за атак по сторонним каналам мы не можем доверять даже физическим процессорам.
- Значительная часть программирования сейчас происходит во время игры в настольный футбол.
- Так как у нас появились более быстрые ЦПУ, сложные вычисления мы стали делать на Python, не на Fortran. Так что вычисления занимают примерно то же время, что занимали 20 лет назад.
- Создание новых языков программирования или даже создание новых девайсов — обычное, нормальное хобби.
- Модульное тестирование, как и любая другая полезная вещь, которую постиг хайп, стало использоваться даже там, где не нужно, и в конечном итоге превратилось в религию.
- Коллеги хмурятся, когда узнают, что вы храните пароли пользователей в открытом виде. Но ничего не говорят: они сами так делают.