Как программировать в 21 веке или Programs considered harmful

Очевидный ответ на этот вопрос: что тут думать, трясти надо. Другими словами: как программируем, так и будем программировать. Тем более, что заметная часть века уже позади.

На этой “светлой” ноте можно было бы закончить статью, но что-то не пускает.

Давайте подумаем о том, адекватны ли современные технологии/языки/инструменты программирования современному миру?

Я не буду говорить (в этот раз) про стоимость разработки, количество ошибок, надежность программ…

Посмотрим с другой стороны, со стороны мира и желания улучшить/упростить жизнь и, в конце концов, полететь к звездам…

Сначала простые и наивные use cases:

  1. Играю в игру, хочу заказать пиццу. Почему я не могу сделать это прямо из игры?
  2. Учу греческий язык. Почему когда я смотрю фильм на ноутбуке, планшете, телевизоре, мне не показывают греческие субтитры? Или греческую озвучку и субтитры на русском?
  3. Я еду по ночному городу, останавливаюсь на светофоре. Почему он горит красным, если я тут один? Почему я не могу управлять светофором, хотя бы когда нет конкуренции?
  4. Почему я не могу сделать документ, в котором, кроме страниц с текстами (Word) будут страницы с таблицами (Excel) и слайды презентации?

Замечу, что никаких проблем реализации любого из этих пунктов нет, если учитывать только “железо”. “Железное” цифровое пространство уже построено и постоянно расширяется, в виде IoT, умной бытовой техники, облачных серверов, инфраструктуры и т.д.

А вот при попытке программной реализации начнутся проблемы, о которых все мы знаем.

Почему? Я дам главный, на мой взгляд, ответ: потому что мы пытаемся построить цифровое пространство из обособленных программных частей. Если бы еще эти части были маленькие, вроде атомов. Но нет, мы делаем сначала большие ПРОГРАММЫ, а потом пытаемся как-то выстроить их взаимодействие.

Если над этим задуматься, то наши действия выглядят глупо. Зачем делать сначала монстров, и далее пытаться соединить их. Сделали сначала паровоз и отдельно железную дорогу. А потом пытаемся соединить — но ширина колеи, не совпадает с шириной колесной базы (ну как в анекдоте про Петра I), и еще множество нестыковок.

На мой взгляд, мы должны сказать себе: Хватить писать программы, или переводя в привычную программистам форму: Programs considered harmful.

Если не программы, то что?

Очевидный ответ — части цифрового пространства, которые изначально сделаны для взаимодействия. При этом каждая часть должна решать свою хорошо определенную задачу. В этом нет ничего нового, вспомним Unix Way. Мы можем назвать части сервисами или компонентами, но пока это слишком рано, привычные слова помешают нам идти дальше, поэтому пока: части цифрового пространства.

Нам также нужны надстройки (структуры), объединяющие взаимодействующие программные части — как инструменты решения задач. Мы можем привычно назвать их “программами”. Впрочем, пользователи могут не заметить переход от привычных программ к “надстройкам”, но, в устройстве и гибкости, отличия принципиальны:  Сегодня мне нужна такая программа, а завтра другая — почти та же самая, но я за рулем и мне нужно голосовое управление или я вышел из офиса, и надо добавить VPN, или пора обновить программу “Невеста 0.9” до “Жена 1.0” и так далее…

“Конфигурацию” программы могут делать профессиональные разработчики  или пользователи, что приближает нас к “бытовому” программированию.

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

Надо идти другим путем…

Продолжение следует.

PS: Кроме того, так как Карфаген уже разрушен, я думаю, что мы должны летать к звездам.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *