Проблемы алгоритмического подхода

Теория алгоритмов была создана Аланом Тьюрингом в рамках усилий союзников во время Второй мировой войны по взлому нацистского кода Enigma с помощью так называемых компьютеров. Компьютеры могут понимать только точные наборы инструкций, объясняющих, как решить задачу. Такие наборы инструкций называются алгоритмами компьютерных программ.

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

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

  1. Задать проблему таким образом, чтобы исключить неопределенность. Такие спецификации должны иметь жесткую и логическую форму.
  2. Поручить ее программистам.
  3. В конечном итоге после нескольких технологических этапов (таких как архитектура, ОО проектирование и т.д.) программисты преобразуют спецификацию в программу, написанную на одном из языков программирования.
  4. Теперь такая программа может быть переведена в машинный код и выполнена на компьютере.

Что->Разработчик->Как

Это означает, что каждый раз, когда нам нужно заставить компьютеры что-то делать, мы должны иметь компьютерную программу, которая может быть создана только разработчиками программного обеспечения ручно. Ручная работа, как всем известно, подразумевает человеческие ошибки. Поэтому №1 проблема - это качество программ, написанных людьми. Программные жучки могут убить любое хорошее намерение.

Чем больше программ нам нужно, тем больше разработчиков программного обеспечения будет задействовано. Чем больше компьютеров будет использоваться человечеством, тем больше программ нам понадобится, и тем больше разработчиков потребуется. Внедрение мобильных телефонов, IoT и Edge Computing в повседневную жизнь создает все больший спрос на программистов. Не забывайте, что каждый мобильный телефон - это компьютер. И мы хотим установить компьютерные чипы в такие вещи, как чайники и холодильники.

Сегодня на планете больше компьютеров, чем людей. Подумайте об этом. Где мы возьмем достаточно разработчиков программного обеспечения в ситуации, когда количество компьютеризированного оборудования растет гораздо быстрее, чем количество разработчиков. Это проблема №2 - у нас не хватает программистов.

А проблема №3 - в том, что мобильные коммуникации, роботы, edge computing и Iot повторяют проблему качества: наша цивилизация становится все более и более зависимой от качества компьютерных программ.