Последние четверть века развития в программировании нет

68d52118b74ffc38c46f38e7001bf38f.gif

В множестве статей можно встретить тезис, что программирование — это такое место, где всё постоянно развивается, и, стоит только отвлечься на полгодика, как ты перестаёшь быть специалистом и прям ну просто никуда уже на работу не устроиться. Дескать, работа программиста — это постоянная учёба. Учёба всю жизнь. Постоянный бег за всё ускоряющимся поездом.

Давайте разберёмся с этим. Может быть, это не поезд, а беличье колесо?

Какие супертехнологии захлестнули мир программирования в последний десяток-два лет?

Асинхронное программирование

Ну, конечно, повсеместно появилась разного рода асинхронщина. Python, JS (и многие другие) внедрили аляповатовые методы async/await (непонятно, почему нормально не сделать, ну да ладно, это тема отдельной статьи). Асинхронщина представляется как панацея от всего, позволяющая утилизировать CPU почти на 100%. Крутая технология! Но вот новая ли она?

Нет, она старая, как мир (IT)! Ещё в 2004-м году увидел мир вебсервер nginx, построенный на этой технологии (и почти одновременно с ним множество других, чуть менее известных). Copyright на заголовочные файлы для epoll в линуксе говорит о 2001-м годе. Но и epoll — это просто развитие и до этого существовавшей технологии. А select был ещё в первых Unix’ах.

Может быть, сопрограммы (корутины) — новая технология? Иной, так сказать, взгляд на асинхронное программирование? Нет, это тоже крайне старая технология:

Википедия: появление понятия сопрограммы относят к конструкции, применённой Мелвином Конвеем в 1958 году в практике программирования на языке ассемблера, в 1960-е — 1970-е годы сопрограммы практиковались в некоторых высокоуровневых языках (Клу, Симула, Модула-2), но заметное распространение получили лишь в 2000-е годы…

Если смотреть на популярность асинхронного программирования, то наблюдается следующая хронология:

  • мир увеличивает количество пользователей в сети

  • возникает потребность строить сервера, обслуживающие всё больше запросов пользователей

  • в ответ на эту потребность извлекается технология более чем полувековой давности и применяется

Является ли это прорывом? Нет. Новой технологией? Нет.

Это просто экстенсивное развитие.

Новые языки программирования

Мир IT постоянно рождает новые языки программирования. Только вот что нового приносят или привносят в этот мир эти языки?

Безусловной новинкой является язык Go. Включивший в свой синтаксис средства коммуникации между потоками/процессами и берущий на себя часть функций по управлению ими. Go — пожалуй, самый отличающийся от других из новых языков. Но на чём он базируется? Снова на технологиях 50–60 летней давности. Что-то новое привнёс? Нет.

Языки со строгой типизацией набирают популярность. Как приятно работать компилятору, если программист за него сделал кучу работы! Но несёт ли эта технология что-то новое? Можно ли сравнить её, скажем, с внедрением ООП в мир программирования? Конечно же, нет.

А само объектно-ориентированное программирование — тоже старая, как мир (IT), технология.

Википедия: первым языком программирования, в котором были предложены основные понятия, впоследствии сложившиеся в парадигму, была Симула, но термин «объектная ориентированность» не употреблялся в контексте использования этого языка. В момент его появления в 1967 году в нём были предложены революционные идеи: объекты, классы, виртуальные методы и др., однако, это всё не было воспринято современниками как нечто грандиозное. Фактически, Симула была «Алголом с классами», упрощающим выражение в процедурном программировании многих сложных концепций. Понятие класса в Симуле может быть полностью определено через композицию конструкций Алгола (то есть, класс в Симуле — это нечто сложное, описываемое посредством примитивов).

Знаете ли вы о новых языках (появившихся в последние 20 лет), принесших миру новую парадигму программирования?

Как итог: новые языки — это просто вкусовщина, и снова — экстенсивное развитие.

Нейронные сети

Может быть, нейронные сети, проникающие повсюду, — это технологический прорыв последнего времени?

И снова нет. Если смотреть на историю развития нейросетей, то, согласно википедии, она начинается с 1943-го года, а уже в 1958-м — первый перцептрон:

Википедия: в 1958 Ф. Розенблатт изобретает однослойный перцептрон и демонстрирует его способность решать задачи классификации. Перцептрон обрёл популярность — его используют для распознавания образов, прогнозирования погоды и т. д.; в то время казалось, что уже не за горами создание полноценного искусственного интеллекта. К моменту изобретения перцептрона завершилось расхождение теоретических работ Маккалока с т.н. «кибернетикой» Винера; Маккалок и его последователи вышли из состава «Кибернетического клуба».

Экстенсивное развитие интернета привело к тому, что накоплены большие базы данных в разных областях. Стало возможным использовать накопленные классифицированные данные не только в прямом назначении, но и для обучения нейросетей. Чем и занялись.

Прорыв? Количественно — да (тот самый переход количества в качество), но качественно это снова экстенсивное развитие и использование технологий полувековой давности.

Интерфейсы с человеком

Может быть, здесь изобретено что-то радикально новое? Может быть, интерфейс Windows 10, MacOS радикально повышает производительность труда программиста (и не только его, а любого пользователя) по сравнению с временами, скажем, 95-го года?

Есть ли радикальные отличия Windows 95 от современной MacOS? Не так уж и много.

Может быть, труд программиста радикально поменялся? Нет, всё так же в редакторе текст редактирует, в командной строке или IDE запускает компилятор.

Да, появились всякие календарики, встроенные в операционную систему «из коробки», виджеты с музыкой и погодой. И всё.

Деплой

С экстенсивным ростом количества серверов, конечно же, автоматизирован и деплой. Появились всякие докеры, кубернетисы. Так же, как автоматизируется, например, бухгалтерия, автоматизируется и эта отрасль труда. Прорыв? Нет, просто очередной набор утилит, и только.

Выводы

Сталкиваясь часто с тезисами «Программирование — это отрасль, в которой надо постоянно учиться», «Отставание на полгода примерно то же, что и выпадение из отрасли навсегда», всегда хочется смеяться. Программирование — это отрасль, в которой происходит много движа, но почти не происходит никакого движения.

Можно смело выключиться из мира IT на десяток лет, затем, вернувшись, потратить пару месяцев на выяснение «какой язык сегодня модный?» и его мелких особенностей, и снова быть полезным отрасли. Изменятся в мире только количественные распределения: чего-то (вроде асинхронщины) станет больше, чего-то — меньше.

А «учиться всю жизнь» придётся в любой профессии. Хоть бухгалтерию считать, хоть программировать, хоть канавы копать. Везде будут тонкости, мелочи, которые будут «открываться» спустя десяток-другой лет работы в профессии.

Программирование — самая слаборазвивающаяся отрасль из всех. В последние четверть века — это уж точно!

А Вы как думаете?

© Habrahabr.ru