Я увидел этот вопрос на 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 лет назад.
- Создание новых языков программирования или даже создание новых девайсов — обычное, нормальное хобби.
- Модульное тестирование, как и любая другая полезная вещь, которую постиг хайп, стало использоваться даже там, где не нужно, и в конечном итоге превратилось в религию.
- Коллеги хмурятся, когда узнают, что вы храните пароли пользователей в открытом виде. Но ничего не говорят: они сами так делают.
n0isy
Добрый день. Можно эту тему раскрыть более детально? (по поводу трёх фреймворков):
Houston
Позволю себе погадать: React, Angular и Vue?
germn Автор
В точку. Вообще, в оригинале написано так: «Now we have to develop on three different platforms». Я предположил, что речь именно о React, Angular и Vue. Какие ещё могут быть три платформы в контексте веба и Adobe Flash?
urtow
Chrome, Firefox, Safari?
samhuawey
iOS, Android, Desktop типа электрон.
germn Автор
Разные браузеры и в эпоху Flash существовали. Речь о том, что пришло ему на смену.
lehkap
Рантайм был flash и не зависел от браузера
1nd1go
Вам правильно выше написали — платформа ios, платформа android, только я бы поправил — web. Ваш перевод неверн точно, потому что platforms — это не «фреймоврки с моделями»
uvelichitel
canvas, svg, webgl?
stantum
Blazor, WPF, Xamarin?
3263927
флеш пока ничто не заменило.
всё что есть вместо него это убогие костыли, которые не решают самую главную задачу которую решал флеш — красивая графика, которой можно управлять как раскадровкой так и кодом. на флеше я мог делать офигенно красивые интерактивные анимации, которые весили по 10 кб, мгновенно грузились и которые было очень легко дорабатывать. художник мог настроить какие-то анимации вручную через раскадровку, или даже интерполяцию кадров для анимации форм. и весило это всё копейки. сейчас это дикие танцы с бубном с SVG, какими-то подключаемыми фреймворками в которых чтобы разобраться надо потратить неделю и понять что флеш был лучше. ребята из adobe изза своей твердолобости убили самую крутую технологию десятилетия, которая сделала интернет по-настоящему красивым. досихпор нет инструментов даже относительно приближенным к удобству флеша.
незаменим флеш для обучения — у меня ученики, дети с которымия я иногда занимаюсь по скайпу, на первом уроке делают свою интерактивную игру. на какой ещё среде это возможно сделать?
вот этот образовательный проект мы делали с детьми от 7 до 11 лет, они сами писали код, делали управляемых персонажей, собирали проект, и всё это сделали мы за неделю. это интерактивный фильм с элементами игры
http://3263927.ru/edu/kolobok/index.htm
если кто-нибудь подскажет мне подходящий инструмент, на котором я могу сделать то же самое сейчас, буду благодарен
флеш решает самую главную задачу — он не заставляет программировать то, что проще просто нарисовать
NLO
НЛО прилетело и опубликовало эту надпись здесь
3263927
к сожалению scratch это игрушка для совсем маленьких. на флеше можно делать полноценные проекты с библиотеками, рециркулируемыми клипами, кодовой базой, наследованием, и всякими профессиональными вещами. и самое главное, почему программистам не всегда понятно зачем он нужен — он для тех, кто умеет и рисовать и программировать, потому что там потрясающее управление графикой.
я когда в конкурсе стартапов в Microsoft участвовал там был такой челлендж — надо было своё приложение нарисовать на специальных бумажках, сделать прототип интерфейса. я благорадя тому что знаю флеш быстрее сделал рабочий интерактивный прототип, чем некоторые нарисовали то что хотели. потому что во флеше идеальный баланс между рисованием руками и автоматизацией. там программирование действительно используется по назначению — всё можно автоматизировать, но ты не обязан это делать. то что проще нарисовать руками рисуешь сам, то для чего нужны алгоритмы без проблем автоматизируется. можно на ходу за пару строчек кода конвертировать клипы в битмэпы и работать с ними как с картинками, размывая точки, делать красивые визуальные эффекты очень дёшево с точки зрения усилий и времени.
мне очень не хватает этого удобства в современной разработке
Arris
То, что можно эксплойтить — будут эксплойтить.
То, что можно будет применять во вред окружающим — будут применять во вред окружающим.
Такая судьба и постигла flash.
P.S. Вспоминаю «Магазинчик Бо» на флэше…
3263927
а мне нравился dead rat )))
если бы adobe сделала его открытым то это бы изменило всё, они бы и заработали на этом хорошо (на редакторе) и в то же время сообщество приняли бы эту технологию… согласен с вами
khim
Adobe до самого последнего момента билась за то, чтобы никто ничего не увидел, не дай бог.
Я общался с человеком, который для Chrome Flash пилил — так вот там у них был air gap, сдача телефонов на входе и прочее. Только при таких условиях Adobe соглашался дать Google доступ к коду.
Не знаю уж что там за дикие секреты были — но делать открытый player они не хотели категорически… ну а потом уже Джобс решил его убить… что и проделал «с особенным цинизмом».
3263927
мне всегда было интересно, зачем они явно бьют курицу по золотым яйцам? у них был огромный рынок, было время когда вобще всё было на флеше, они могли свою экосистему построить… я с людьми из Microsoft разговаривал, мне по секрету сказали что они не смогли конкурировать с флешем… это что саботаж какой-то или просто скудоумие и отвага? ну тоесть сейчас есть огромная потребность и нет предложения — рыночная ниша свободна. и у адоба есть реальный инструмент, который надо лишь немного допилить… может я чего-то не понимаю
JustDont
Флеш умер гораздо раньше заявлений Джобса, если чё.
А причина одна: говнокод и отсутствие какого-либо вменяемого плана поддержки (из-за чего старый говнокод так и продолжал спокойно жить, даже когда появлялся новый немного получше).
Проблемы с безопасностью и закрытостью флеш всего лишь добили.