Каким будет программирование через двадцать лет?

259
1
1
29 октября
02:42
Фотография: Royalty Free Stock Photo
январь
2016

Скорее всего, через двадцать лет программисты так же, как и сегодня, будут редактировать текстовые файлы, содержащие исходный код программ, — этот аспект профессии вряд ли исчезнет. Останутся и другие привычные участники процесса: компилятор или интерпретатор, с помощью которого программы делают всю ту магию, которую мы привыкли от них ожидать, текстовые редакторы, отладчики и системы контроля версий. Если смотреть с точки зрения процесса и инструментария, программирование точно не превратится в перетаскивание цветных квадратов мышью на экране.

Несмотря на то, что процесс разработки, скорее всего, останется прежним, то, как программисты выражают свои идеи в программах, сильно изменится. Программирование в этом смысле подобно литературе: писатели столетиями виртуозно приспосабливали возможности языка для выражения новых смыслов, не меняя по сути своего инструментария. «Новые смыслы», которые хотят уметь выражать программисты, — это способ разрешить те серьёзные инженерные трудности, с которыми сегодня сталкивается индустрия. Практикующие программисты могут легко назвать с десяток проблем, которые с удивительным постоянством возникают в их работе.

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

Вот конкретные примеры. Язык программирования Haskell последние несколько десятков лет использовался как тестовая площадка для новых идей контроля типов данных. Это адресует обе проблемы: более мощная система типов даёт возможность выражать более мощные абстракции, а полный контроль типов исключает возможность появления целого класса ошибок. Прогресс в технологиях сборки мусора, используемых в JVM, привёл к появлению систем с очень эффективным управлением огромными объемами памяти, которые также исключают определённый класс ошибок. В языке программирования Rust для аналогичных целей впервые было введено проверяемое владение определённым участком памяти. Примеры можно приводить и дальше — многие идеи, которые в прошлом веке существовали только в теории, теперь включены в популярные языки и системы программирования.

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

4
0
Если вы знаете ответ на этот вопрос и можете аргументированно его обосновать, не стесняйтесь высказаться
Ответить самому
Выбрать эксперта