Будущее программирования

Приоткрывая тайну нужд программирования следующего десятилетия

Программирование меняется. Эра ПК подходит к концу, а разработчики ПО на данный момент работают с огромным количеством приборов, рабочих функций и проблем, требующих решений, отличных от тех, которые может предложить "одностаночная" эра. В нашу эпоху постоянно увеличивающегося количества информации наличие каких-либо навыков программирования ценится в любой профессии, а само программирование стало характерно не только для технических специальностей.

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


Распределённая обработка данных

"Нормальная" среда, в которой сейчас происходит кодирование, немного отличается от той, которая была десять лет назад. С такими заявленными конечными продуктами, как веб-приложения, мобильные данные и данные больших объёмов, понятие того, что программа затрагивает только один компьютер, исчезло. Для программиста это значит, что нам приходится сталкиваться с такими проблемами, как параллелизм, блокировка, асинхронность, сетевая коммуникация и протоколы. Даже самые основы веб-программирования потребуют от вас знания такого понятия, как кэширование.

Мы рассматриваем явления на разных уровнях множества технологий. На самом верху облачное программирование стремится облегчить трудности управления большим количеством машин и их сетью, на уровне разработки приложений фрэймворки пытаются объединить знакомые текстуры и устранить излишние детали, а на языковом уровне особенности таких языков, как Go или Scala, упростили параллелизм и сетевые вычисления.


Компьютеризация устройств

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

Даже в пределах более традиционного программирования, рост значимости массива GPU как усовершенствованного сопроцессора обработки данных требует нетрадиционных способов программирования. Для разных формфакторов нужны разные методы программирования. Как любители, так и опытные разработчики возвращают к жизни оборудование с помощью Arduino и Processing,

Языки и программисты должны реагировать на проблемы, которые раньше находились в компетенции специалистов, а именно: низкая скорость работы памяти и ЦПУ, энергопотребление, радиосвязь, текущие требования к аппаратным и программным средствам.


Обработка данных

Наиболее распространённая сегодня форма программирования, объектно-ориентированная, в большинстве случаев непригодна для работы с данными. Фокусируясь на поведении, она скрывает данные в методах доступа, причём совокупности данных скрываются ещё более тщательно. В математике данные есть данные, у них нет никакого поведения, хотя строгость таких языков, как С++ или Java, требует от разработчиков знания их оценки.

По мере роста значимости данных и их анализа, соответственно растёт и использование и популярность языков, в которых данные находятся на первом плане. Очевидно, что статистические языки, к примеру, R, в связи с этим получают распространение, однако в области программирования для общих целей уклон больше идёт в сторону таких языков, как Python или Clojure, которые облегчают работу с данными.


Демократизированное программирование

На данный момент программированием занимается больше людей, чем когда-либо. Эти умные, многочисленные, случайные разработчики творят волшебство в макросах Excel, создают JavaScript и объединяют всё вместе с помощью таких веб-сервисов, как IFTTT или Zapier. Вполне логично, что они мало чего знают о разработке ПО и даже в этом не заинтересованы.

Как бы то ни было, многим из этих невольных программистов будет нетрудно попасть в неприятности, в то время как они просто хотят закончить своё дело. В лучшем случае, это вызовет раздражение, в худшем - за это придётся отвечать работодателям. Более того, это не является виной программиста.

Каким образом поставщики комплексов программных средств могут принести больше пользы таким "случайным разработчикам"? Нужны ли нам новые языки, улучшенные фреймфорки в существующих языках? Должны ли этим заниматься учебные заведения? И является ли это вообще проблемой, или же просто такова жизнь?

В работе Брета Виктора, а также таких проектах, как Scratch и Light Table, содержатся несколько подсказок по поводу иного будущего.


Опасное программирование

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

Когда предметная область становится слишком большой, нашей реакцией является написание фреймфорка, который снова её уменьшает. Таким образом мы получаем операционные системы, работающие на основе ЦПУ. Библиотеки и пользовательские интерфейсы, которые работают на основе операционных систем. Инфраструктуры приложений, которые функционируют на основе этих библиотек. Веб-браузеры, работающие на основе инфраструктур. JavaScript, исполняемый на основе браузеров. Библиотеки JavaScript, основанные на JavaScript. И мы знаем, что на этом дело не заканчивается.

Мы как инициативные официанты, ставящие одну чашку из-под чая на другую. На данный момент, всё выглядит нестабильно. Мы создаём более быстрые и мощные ЦПУ, однако получаем такую же субъективную производительность приложений, что и десять лет назад. В системе защиты фреймворков возникают лазейки, что ставит под угрозу безопасность огромного количества систем.

Почему мы должны использовать компьютеры таким образом, одновременно строя карточный домик и ограничивая вычислительные мощности до такой степени, чтобы программисты смогли уместить их в свою голову? Есть ли способ изменить данный взгляд на ПО?

Edd DUMBILL,
radar.oreilly.com

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Dmitry

А кто переводил?..