Каким может быть программирование будущего. Новый взгляд
Людям всегда интересно будущее. Я человек, человек-программист, и мне интересно будущее программирования. На Хабре/Geektimes уже встречались подобные статьи, и в сети тоже можно было почерпнуть немало на эту тему. Сегодня я привожу свой список возможных нововведений в области программирования в ближайшие 10–20–50 лет. В посте вы найдете сравнительный анализ причин и необходимости появления нынешних языков программирования, и описание возможных причин появления новых языков и инструментов. Ключевое слово тут необходимость, так как причина рождает необходимость сама по себе.
Исторические предпосылки появления языков
В начале хочу привести таблицу предпосылок появления и популяризации нынешних языков программирования, самый общий список:
Язык | Причина/Необходимость |
Ассемблер | Появление первых компьютеров, необходимость очеловечивания машинных кодов |
C | Рост количества разновидностей компьютеров и их архитектур. Необходимость в универсальном ассемблере. |
C++ | Развитие пользовательских интерфейсов. Необходимость в очеловечивании и структурировании кода С-программ. |
Java | Упадок Sun, развитие веба. Необходимость интерактивного взаимодействия пользователя и браузера. |
C# | Популяризация Java, текущие проблемы разработки ПО под платформы Microsoft и веб. Необходимость корпорации Microsoft иметь свой технологический стек. |
JavaScript | Популяризация веб-браузера Netscape и веб-серфинга в частности. Необходимость в интерактивном взаимодействии веб-страницы и пользователя. |
Objective-C | Выход Apple-устройств в свет. Необходимость корпорации Apple в поддержании своего технологического стека. |
PHP/Ruby/Whatever | Распространение веба. Необходимость в удобной обработке веб-запросов. |
Your Language | ??? |
Возможные предпосылки появления новых языков и инструментов
Чего тут нет ниже, так это глубокого научного анализа приводимых концепций. Зато есть описание причин появления новых языков или инструментов, как в приводимой выше таблицы.
Квантовый компьютер
Первое что приходит на ум, это смена эры полупроводниковых компьютеров квантовыми. Мощности будут на порядок другие, задачи, которые позволит решать технология кванта, также изменит пределы фантазии программистов. Первые языки для квантового компьютера уже создаются, с уверенностью можно будет сказать, что по мере развития технологии, будут появляться новые языки, скорее основанные на нынешних.
ИИ
Рост использования ИИ в повседневных условиях повлияет и уже влияет на инструментарий разработчика и структуру ЯП. Давайте возьмем голосовых помошников в телефонах. Или например чат с искусственным интеллектом. Или, что если ИИ разовъется до уровня что сам будет писать программы? В последнем случае, кажется вероятным появление специального языка на котором ИИ с легкостью сможет разрабатывать программы на основе требований.
Новые устройства
Выход iPhone’ов ознаменовал популяризацию Objective-C. Вполне возможно, что уже разрабатывается то самое популярное устройство, от корпорации X, которое ознаменует популярность языка Y. Может это Tesla?
Глобальные катаклизмы
Может случится так, не дай Бог, что произойдет глобальный катаклизм или война, который в корне поменяет сами методы взаимодействия людей и машин. Можно предположить, что интернет, если таковой останется, также откатится к своим истокам и уже не будет таким повсеместным. В случае глобальной войны, будет необходимость милитаризировать машины. Где на первом месте будет не столько удобство пользования, сколько расчеты и надежность. От чего можно предположить, что ООП-подобные языки отойдут на второй план, отдав пальму первенства языкам вычислений вроде R, Fortran. Возможно это будет симбиоз, вроде какого нибудь R++ или Fortran++.
Открытия в физике
Наука не стоит на месте, ведутся исследования во всех сферах, и любая из них может стать доминирующей для людей. Что случиться если люди смогут манипулировать пространством и временем? Что будет если мы откроем пятое измерение? Машину времени? Очевидно будет, что софт для перемещения в пространстве нужно будет писать на чем-то новом, адаптированном к огромным объемам данных. Говоря огромные, я представляю себе объемы галактик и вселенных, это пока только в пределах воображения. Каким будет такой язык? Очевидно ориентированным на параллельные вычисления, сетевую инфраструктуру, обработку и визуализацию данных.
Новые способы взаимодействия с устройствами
Голосовое управление, управление жестами, устройство ввода основанное на жестах, управление компьютером мыслями. Это уже есть, осталось технологии стать популярной.
Инструментарий
Инструменты — это отдельный класс нужд программиста. Без них немыслим прогресс, также как и язык не может быть без инструмента.
Визуальное программирование
Давно не ново, попыток создания инструментов визуального программирования — не счесть. И часто, а если не сказать всегда, такие инструменты спотыкались о неспособность отобразить количество деталей нужных для решения задачи в визуальном виде. Автор сам пытался создать подобный инструмент, на что получал невежественное фи от коллег по цеху. Большинство сравнивало, сколько нужно времени для создания программы визуально, и сколько они тратят сейчас. На что второй метод всегда выигрывал. Но я до сих пор убежден, что упаковав часто встречающиеся решения в визуальных вид, и организовав централизированный репозиторий этих решений, можно обойти необходимость постоянно возвращаться к деталям, читай коду.
Генераторы интерфейсов
Существуют уже давно, но почему им не хватает гибкости? И каждую новую форму или верстку, все равно нужно делать вручную, прописывая каждый атрибут и тег? Возьмем например LightSwitch. Отличный инструмент, но годится для очень узкого круга задач. Интерфейс, который генерируется на основе данных всегда шаблонный. Как-то кастомизировать его довольно сложно, что и сводит его использование к вводу форм и CRUD’у данных. Автор давно мечтает о таких решениях:
- Генерация форм (WinForms, WPF, Swing, WinAPI) на основе данных
- Генерация нативных интерфейсов на основе PSD
Это уже существует? Или я плохо искал?
Сенсорное программирование (голос, жесты, касания)
Представьте себе программистов будущего, активно размахивающих руками и проговаривая вслух «заклинания»,
на новых языках. Признаюсь честно, мне как программисту, очень душит невозможность проявлять эмоции
во время написания кода. Ежедневно молча стуча по клаве, я становлюсь безэмоциональным роботом, в основе
мышления которого логика и расчет. Выходя в реальный мир после таких сеансов кодинга, я испытываю реальные
трудности в коммуникации с людьми и проявлении эмоций. Ребята, нам давно пора быть экспрессивней!
Генераторы программ
Фабрики разработки программного обеспечения, генераторы программ. Да все это есть, но широко не используется. Почему? Можем кинуть камень в огород флагманов, которые создают инструментарий разработки, а можем сказать, что игра не стоит свеч, а результат труда. Тем не менее, я не вижу программирование будущего без репозитория готовых решений и генератора программ на основе него.
Ставка
В заключение хотелось бы сделать ставку на будущее
да услышит меня Microsoft и Oracle
- Адаптирование и расширение существующих языков под новые условия
- Создание централизированного репозитория готовых решений
- Генерация интерфейсов и программ
- Сенсорно-визуальное программирование на основе жестов и голоса
- Ах да, вот еще что хотелось бы. Сравнительная документация языков и фреймворков, где ты знаешь как метод
реализован в языке X, а сервис бы показывал его реализацию в языке Y. По аналогии мы бы быстрее освоили все эти фреймворки.