Будущее разработки программного обеспечения: Будущее компьютеров P2

ИЗОБРАЖЕНИЕ КРЕДИТ: Квантумран

Будущее разработки программного обеспечения: Будущее компьютеров P2

    В 1969 году Нил Армстронг и Базз Олдрин стали международными героями после того, как стали первыми людьми, ступившими на Луну. Но в то время как эти астронавты были героями на камеру, есть тысячи невоспетых героев, без их участия эта первая высадка человека на Луну была бы невозможна. Некоторые из этих героев были разработчиками программного обеспечения, которые кодировали полет. Почему?

    Что ж, компьютеры, существовавшие в то время, были намного проще, чем сегодня. Фактически, изношенный смартфон среднего человека на несколько порядков мощнее, чем что-либо на борту космического корабля «Аполлон-11» (и всего НАСА 1960-х годов, если уж на то пошло). Более того, компьютеры в то время кодировались специализированными разработчиками программного обеспечения, которые программировали программное обеспечение на самом основном из машинных языков: ассемблерный код AGC или просто 1 и 0.

    Для контекста, один из этих невоспетых героев, директор отдела разработки программного обеспечения космической программы «Аполлон», Маргарет Гамильтон, и ее команде пришлось написать гору кода (на фото ниже), который с использованием современных языков программирования можно было бы написать с меньшими усилиями.

    (На снимке выше Маргарет Гамильтон стоит рядом со стопкой бумаг, содержащей программное обеспечение «Аполлон-11».)

    И в отличие от сегодняшнего дня, когда разработчики программного обеспечения кодируют около 80–90 процентов возможных сценариев, для миссий «Аполлон» их код должен был учитывать все. Чтобы представить это в перспективе, сама Маргарет сказала:

    «Из-за ошибки в руководстве по контрольному списку переключатель радара сближения был помещен в неправильное положение. Это привело к тому, что он отправил ошибочные сигналы на компьютер. В результате компьютеру было предложено выполнить все свои обычные функции для посадки. при получении дополнительной загрузки ложных данных, которые использовали 15% своего времени.Компьютер (точнее, программное обеспечение в нем) был достаточно умен, чтобы распознать, что его просят выполнить больше задач, чем он должен выполнять.Затем он отправил по тревоге, а это означало для космонавта, что я перегружен большим количеством задач, чем должен делать в это время, и я оставлю себе только самые важные задачи, т. е. те, которые нужны для посадки... , компьютер был запрограммирован не только на распознавание условий ошибки. В программное обеспечение был включен полный набор программ восстановления. В этом случае действие программного обеспечения заключалось в том, чтобы исключить задачи с более низким приоритетом и восстановить более важные... Если бы компьютер непризнал эту проблему и принял меры по восстановлению, я сомневаюсь, что Аполлон-11 был бы успешной посадкой на Луну».

    - Маргарет Гамильтон, директор лаборатории полетного компьютерного программирования Apollo MIT Draper Laboratory, Кембридж, Массачусетс, «Компьютер загружен», письмо Датамация, Март 1, 1971

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

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

    Разработка программного обеспечения для масс

    Процесс замены необходимости кодирования единиц и нулей (машинный язык) словами и символами (человеческий язык) называется процессом добавления уровней абстракций. Эти абстракции пришли в виде новых языков программирования, которые автоматизируют сложные или общие функции в той области, для которой они были разработаны. Но в начале 1-х появились новые компании (такие как Caspio, QuickBase и Mendi), которые начали предлагать так называемые платформы без кода или с низким кодом.

    Это удобные для пользователя онлайн-панели, которые позволяют специалистам без технического образования создавать собственные приложения, адаптированные к потребностям их бизнеса, путем объединения визуальных блоков кода (символов/графики). Другими словами, вместо того, чтобы срубить дерево и превратить его в гардеробную, вы строите его, используя готовые детали от Ikea.

    Хотя использование этой услуги по-прежнему требует определенного уровня компьютерной грамотности, вам больше не нужна степень в области компьютерных наук, чтобы использовать ее. В результате эта форма абстракции способствует появлению миллионов новых «разработчиков программного обеспечения» в корпоративном мире и позволяет многим детям научиться программировать в более раннем возрасте.

    Переосмысление того, что значит быть разработчиком программного обеспечения

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

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

    По мере развития абстракций и новых языков программирования, автоматизирующих все более рутинную работу по разработке программного обеспечения, что будет означать быть разработчиком программного обеспечения через 10–20 лет? Чтобы ответить на этот вопрос, давайте рассмотрим, как будущие разработчики программного обеспечения, скорее всего, будут создавать приложения завтрашнего дня:

    *Во-первых, вся стандартизированная повторяющаяся работа по кодированию исчезнет. На его месте будет обширная библиотека предопределенных поведений компонентов, пользовательских интерфейсов и манипуляций с потоками данных (детали Ikea).

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

    * Эти разработчики затем наметят свою стратегию выполнения и начнут прототипировать ранние проекты своего программного обеспечения, получив доступ к своей библиотеке компонентов и используя визуальные интерфейсы, чтобы связать их вместе — визуальные интерфейсы, доступ к которым осуществляется через дополненную реальность (AR) или виртуальную реальность (VR).

    * Специализированные системы искусственного интеллекта (ИИ), разработанные для понимания целей и результатов, подразумеваемых первоначальными проектами их разработчиков, затем улучшат проект программного обеспечения и автоматизируют все проверки качества.

    * Основываясь на результатах, ИИ затем задаст множество вопросов разработчику (вероятно, посредством устного общения, похожего на Alexa), стремясь лучше понять и определить цели и результаты проекта, а также обсудить, как программное обеспечение должно действовать в различных сценариях. и среды.

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

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

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

    В целом будущие разработчики программного обеспечения будут меньше сосредотачиваться на том, «как», и больше на том, «что» и «почему». Они будут менее ремесленниками и более архитекторами. Программирование будет интеллектуальным упражнением, для которого потребуются люди, способные методично сообщать о намерениях и результатах таким образом, чтобы ИИ мог их понять, а затем автоматически кодировать готовое цифровое приложение или платформу.

    Разработка программного обеспечения на базе искусственного интеллекта

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

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

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

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

    Как указывалось ранее, ИИ в конечном итоге будет играть все более совместную роль в проектировании и разработке программного обеспечения. Но в краткосрочной перспективе компании используют его для все большей автоматизации процессов обеспечения качества (тестирования) программного обеспечения. А другие компании экспериментируют с использованием ИИ для автоматизации документации программного обеспечения — процесса отслеживания выпуска новых функций и компонентов и того, как они были созданы, вплоть до уровня кода.

    В целом ИИ будет все больше играть центральную роль в разработке программного обеспечения. Те компании-разработчики программного обеспечения, которые рано освоят его использование, в конечном итоге получат экспоненциальный рост по сравнению со своими конкурентами. Но чтобы реализовать эти преимущества ИИ, индустрия также должна увидеть улучшения в аппаратной части — в следующем разделе мы рассмотрим этот момент.

    Программное обеспечение как сервис

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

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

    С этим изменением клиенты больше не владеют программным обеспечением Adobe; они арендовали его по мере необходимости. В свою очередь, клиентам больше не нужно постоянно покупать обновленные версии программного обеспечения Adobe; пока они подписаны на службу Adobe, они всегда будут загружать последние обновления на свое устройство сразу после выпуска (часто несколько раз в год).

    Это только один пример одной из самых больших тенденций в области программного обеспечения, которые мы наблюдали в последние годы: как программное обеспечение превращается в услугу, а не в отдельный продукт. И не только небольшое специализированное программное обеспечение, но и целые операционные системы, как мы видели с выпуском обновления Windows 10 от Microsoft. Другими словами, программное обеспечение как услуга (SaaS).

    Самообучающееся программное обеспечение (SLS)

    Основываясь на сдвиге отрасли в сторону SaaS, появляется новая тенденция в области программного обеспечения, которая сочетает в себе как SaaS, так и AI. Ведущие компании из Amazon, Google, Microsoft и IBM начали предлагать клиентам свою инфраструктуру ИИ в качестве услуги.

    Другими словами, ИИ и машинное обучение больше не доступны только для софтверных гигантов, теперь любая компания и разработчик могут получить доступ к онлайн-ресурсам ИИ для создания самообучающегося программного обеспечения (SLS).

    Мы подробно обсудим потенциал ИИ в нашей серии «Будущее искусственного интеллекта», но в контексте этой главы мы скажем, что нынешние и будущие разработчики программного обеспечения будут создавать SLS для создания новых систем, которые предвосхищают задачи, которые необходимо выполнить и решить. просто автоматически заполните их для вас.

    Это означает, что будущий помощник с искусственным интеллектом изучит ваш стиль работы в офисе и начнет выполнять за вас основные задачи, такие как форматирование документов в соответствии с вашими предпочтениями, составление электронных писем вашим тоном, управление рабочим календарем и многое другое.

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

    К 2020-м и 2030-м годам эти системы SLS будут играть жизненно важную роль на корпоративном, государственном, военном и потребительском рынках, постепенно помогая каждому повышать свою производительность и сокращать отходы всех видов. Мы рассмотрим технологию SLS более подробно позже в этой серии.

    Однако во всем этом есть подвох.

    Модели SaaS и SLS работают только в том случае, если Интернет (или инфраструктура, стоящая за ним) продолжает расти и совершенствоваться вместе с вычислительным оборудованием и оборудованием для хранения данных, на котором работает «облако», на котором работают эти системы SaaS/SLS. К счастью, тенденции, которые мы отслеживаем, выглядят многообещающе.

    Чтобы узнать о том, как Интернет будет расти и развиваться, прочитайте нашу Будущее Интернета серии. Чтобы узнать больше о том, как будет развиваться компьютерное оборудование, читайте дальше по ссылкам ниже!

    Серия «Будущее компьютеров»

    Новые пользовательские интерфейсы для переосмысления человечества: будущее компьютеров P1

    Революция в сфере цифровых хранилищ: Будущее компьютеров P3

    Исчезающий закон Мура вызовет фундаментальное переосмысление микрочипов: Future of Computers P4

    Облачные вычисления становятся децентрализованными: будущее компьютеров P5

    Почему страны соревнуются в создании самых больших суперкомпьютеров? Будущее компьютеров P6

    Как квантовые компьютеры изменят мир: будущее компьютеров P7    

    Следующее запланированное обновление для этого прогноза

    2023-02-08

    Ссылки на прогнозы

    Для этого прогноза использовались следующие популярные и институциональные ссылки:

    Для этого прогноза использовались следующие ссылки Quantumrun: