Десять лет спустя: каким видели будущее программирования в 2012 году
Пользователи Hacker News сравнили предсказания программистов девятилетней давности с текущим положением дел.
Серверы для кроссплатформенных приложений
В 2012-м пользователь dmbarbour предположил, что работа с серверами приложений станет нормой для создания кроссплатформенного ПО. По его мнению, программисты будут использовать предметно-ориентированные языки программирования DSL, состоящие из апплетов или формлетов. Последние два компонента через клиентский API смогут компилироваться в веб-страницы, приложения для Android, браузера Chrome и программы для ПК.
В 2021-м некоторые посчитали эту идею слишком наивной. Но автор hardwaregeek отметил, что JavaScript-библиотека React в роли DSL-пользовательского интерфейса вместе с кроссплатформенным фреймворком React Native и Electron позволяет схожим методом создавать приложения для разных систем.
Пользователь Micoloth написал, что индустрия медленно движется в направлении, предсказанном dmbarbour, и задался вопросом, почему люди не могут создать надёжную среду программирования и продолжают работать с множеством языков и фреймворков. По его мнению, таким образом разработчики просто тратят лишнее время.
В ответ автор dgb23 указал на растущее количество языков, которые используют не программисты: скрипты в Excel, средства для работы с веб-дизайном и прочие. По его мнению, в будущем разнообразие средств разработки будет только расти. Другой пользователь предположил, что языки программирования расколются на продвинутые и более простые.
«Умные» помощники в разработке
Автор Marc DeRosa предположил, что к 2020 году в интегрированных средах разработки (IDE) появятся «умные» помощники, которые смогут обучаться на проектах из открытых репозиториев в интернете. Такая надстройка сможет выводить примеры фрагментов кода и подсказывать разработчикам, что можно использовать. Он считал, что компьютер и человек будут программировать совместно.
Пользователь junon на Hacker News отметил, что Marc DeRosa предсказал появление инструмента для автозаполнения кода GitHub Copilot для Visual Studio Code. В ответ на его комментарий несколько людей назвали прогноз случайностью или идеей о думающем в категориях математики ИИ, хотя в реальности такие алгоритмы просто повторяют действия «как попугаи».
Некоторые из комментаторов задались вопросом, насколько GutHub Copilot экономит время и облегчает работу программистов. Пользователь byteface написал, что использует его каждый день и благодаря ему тратит на работу в пять раз меньше времени. Он также сравнил использование инструмента с навыками быстрого поиска в Google.
Пользователь moogly отметил, что аналогичные надстройки существовали и ранее. В качестве примера он привёл IntelliCode от Microsoft, Codota и Tabnine.
Новый язык для программирования
Автор Kostas Pramatias в 2012-м назвал английский язык плохим выбором для программистов из-за его негибкости, неточности и многословия, присущих естественному языку. Например, если случайным образом перемешать десять слов в предложении, оно с большой вероятностью потеряет смысл.
В качестве решения проблемы он предложил использовать греческий язык или санскрит, потому что их можно интегрировать с лямбда-исчислением. Но по его мнению, люди вряд ли будут готовы изменить основу языков программирования и начать говорить на неестественном для них языке раньше 2030 года.
Объектно-ориентированное и функциональное программирование
Участники дискуссии на Lambda the Ultimate задались вопросом о дальнейшей судьбе объектно-ориентированного программирования: по мнению Sean McDirmid, оно должно было бы остаться популярным и продолжить развиваться в будущем. Он указал на отсутствие серьёзных преимуществ у функционального программирования и отметил, что инструменты для работы с кодом не точны так же, как и любой естественный язык.
В то же время пользователь Jon Purdy предположил, что функциональное программирование будет набирать популярность, но Haskell, Scala или Clojure не будут используемыми языками программирования. Вместо них появятся аналоги с мощным инструментарием и библиотеками, доступной системой типов и детерминированным поведением памяти.
Посетитель форума Hacker News Shoetp написал, что Joh Purdy в 2012 году предсказал развитие языка программирования Rust, совмещающего парадигмы функционального и процедурного программирования с объектной системой. С его мнением не согласился brabel и привёл в качестве более подходящего примера TypeScript.
Общие выводы
Mike Summers в 2012 году написал, что будет удивлён, если программирование изменится к 2020 году, так как, по его мнению, индустрия не меняется уже 30 лет. В пример он привёл написание кода на старых языках PL/1, JCL и ассемблера в XEdit, которое «не сильно отличается от работы Java или Ruby в Eclipse».
Участник обсуждения fogus написал, что основным рынком для разработчиков в ближайшие 20 лет станут мобильные платформы. Сами программисты будут бороться за использование «своих любимых» браузерных интегрированных средств разработки, а разговоры о семействе текстовых редакторов Emacs останутся лишь «сумасшедшим в интернете».