Людям всегда интересно будущее. Я человек, человек-программист, и мне интересно будущее программирования. На Хабре/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
Это уже существует? Или я плохо искал?
Сенсорное программирование (голос, жесты, касания)
Представьте себе программистов будущего, активно размахивающих руками и проговаривая вслух «заклинания»,
на новых языках. Признаюсь честно, мне как программисту, очень душит невозможность проявлять эмоции
во время написания кода. Ежедневно молча стуча по клаве, я становлюсь безэмоциональным роботом, в основе
мышления которого логика и расчет. Выходя в реальный мир после таких сеансов кодинга, я испытываю реальные
трудности в коммуникации с людьми и проявлении эмоций. Ребята, нам давно пора быть экспрессивней!
Генераторы программ
Фабрики разработки программного обеспечения, генераторы программ. Да все это есть, но широко не используется. Почему? Можем кинуть камень в огород флагманов, которые создают инструментарий разработки, а можем сказать, что игра не стоит свеч, а результат труда. Тем не менее, я не вижу программирование будущего без репозитория готовых решений и генератора программ на основе него.
Прогноз
В заключение хотелось бы сделать прогноз на будущее:
- Адаптирование и расширение существующих языков под новые условия
- Создание централизированного репозитория готовых решений
- Генерация интерфейсов и программ
- Сенсорно-визуальное программирование на основе жестов и голоса
- Ах да, вот еще что хотелось бы. Сравнительная документация языков и фреймворков, где ты знаешь как метод
реализован в языке X, а сервис бы показывал его реализацию в языке Y. По аналогии мы бы быстрее освоили все эти фреймворки.
Комментарии (12)
KaleevAS
31.08.2015 11:56Мало того, что нас программистов сейчас считают колдунами, давайте еще жестовое программирование — и нас совсем за людей считать не будут.
«Программист Сергей Семенов отмахиваясь онталаром от хулиганов написал 4 скрипта.» не спрашивайте что такое «онталар», я только что придумал это слово. Пусть так называют палку для жестового программирования.
А добавьте сюда 3d проекцию кода в воздухе… и понеслось.
norlin
31.08.2015 15:00+2Интереснее поразмышлять не над языками/способами программирования, а над открывающимися возможностями, областями применения.
Допустим, нанотехнологии. Настоящие, из фантастики. Полностью кастомизируемая в реальном времени домашняя утварь/мебель/помещение, включая изменение стен, окон, дверных проёмов и т.д. Всё это надо программировать, так или иначе, пусть даже в формате выдачи указаний домашнему ИИ.
Для девушек и прочих желающих – датчик эмоций + нанокомплект кастомизации цвета волос и ногтей.
А в случае создания, например, целого города из нано-роботов (целиком, включая все здания, дороги и т.д.)… Я уж не говорю, если по всей атмосфере будут распылены универсальные нанороботы. Тут уже реальная техномагия – запрограммированный жест и вот перед вами сформировался нужный объект. Или возможность полёта без всяких видимых устройств.
Или постепенное замещение всех клеток/молекул тела управляемыми нанороботами. Тут уже бессмертие, метаморфы и вообще всё что угодно.
В общем, на что фантазии хватит.
Только вот тут с рекурсией надо поосторожнее – «серая слизь» и всё такое.
wormball
01.09.2015 03:00Обычно авторам таких статей советуют познакомиться с лиспом, но я не буду этого делать, ибо сам с ним знаком в недостаточной степени. :( Могу разве что посоветовать ознакомиться с фортом.
> Создание централизированного репозитория готовых решений
www.gorod.tomsk.ru/index-1284111213.php
Тут надобно пояснить несведущему читателю обстоятельства дела. Когда-то в самом начале компьютерной эры в чью-то начальницкую голову пришла здравая (на первый взгляд) идея: а чего это, товарищи, одну и ту же задачу должны решать в нескольких организациях? У нас, чай, не капиталистические джунгли, конкуренции быть не может, экономика передовая – плановая. Ну так и воспользуемся ее преимуществами, т.е. пусть кто первый сделал какую программу, сейчас же сдаст ее в центральный фонд; другие же народные деньги попусту не тратят, не дублируют работу, а используют готовую. Ну, усовершенствуют там, если надо. Как не захотят отдавать в фонд? А сознательность? Ах, все равно не хотят! Так это мы быстро – издадим постановление, что покуда нет справки из ЦПС о приемке в фонд проектной документации, покуда тамошний клерк вам эту бумажку не подмахнул, сдача вашего проекта заказчику даже начаться не может; ни о каком выполнении плана, ни о какой премии и разговора нет. Система получилась: ius primae noctis – своего рода право первой ночи применительно к программированию. Что оно большой радости не доставляло, это можно пьесу Бомарше вспомнить. Только там (в пьесе) Альмавива не утратил еще величия и влиятельности; Фигаро привычно еще ему кланяется; сам комизм ситуации говорит о возможности полюбовного покамест ее разрешения. У нас же какой там смех, грех один. Ладно бы провинциалы (вроде моей конторы) на поклон туда ездили, так ведь столичные надменные фигары, институты, возглавляемые академиками и членами ЦК, тоже – куда денешься – отправляли ходоков на поклон к убогому тверскому альмавиве за заветной справкой. Кафкианский абсурд бессмысленного ритуала в том был, что никто ни разу этим фондом не воспользовался, захотел бы – не смог…
kwolfy
На мой взгляд, идея с визуальным программированием интересна, взять например веб и можно заметить, что это уже существует в том или ином виде(движки). Но хотел бы заметить, это будет не новый язык программирование и он будет не для программистов, а именно для тех людей, кто собирает сайты и называет себя «joomla-программистами».
Но как говорил Эйнштейн — «Если в первый момент идея не кажется абсурдной, она безнадёжна»
BelBES
Единственная, по моему, удачная попытка внедрения элементов визуального программирования — это компоненты в Delphi… все остальные попытки, типа того-же hiasm, на выходе давали среду, которой могли пользоваться только её разработчики.