Майбутнє розробки програмного забезпечення: Майбутнє комп'ютерів P2

КРЕДИТ ЗОБРАЖЕННЯ: Quantumrun

Майбутнє розробки програмного забезпечення: Майбутнє комп'ютерів P2

    У 1969 році Ніл Армстронг і Базз Олдрін стали міжнародними героями після того, як перші люди ступили на Місяць. Але хоча ці астронавти були героями на камері, є тисячі неоспіваних героїв, без їхньої участі перша пілотована посадка на Місяць була б неможливою. Деякі з цих героїв були розробниками програмного забезпечення, які закодували політ. чому

    Що ж, комп’ютери, які існували в той час, були набагато простіші, ніж сьогодні. Фактично, зношений смартфон середньої людини на кілька порядків потужніший за будь-що на борту космічного корабля «Аполлон-11» (і всього NASA 1960-х років). Крім того, комп’ютери того часу кодувалися спеціалізованими розробниками програмного забезпечення, які програмували програмне забезпечення на найпростіших машинних мовах: AGC Assembly Code або просто 1s і 0s.

    Для контексту, один із цих неоспіваних героїв, директор відділу розробки програмного забезпечення космічної програми «Аполлон», Маргарет Хемілтон, і її команді довелося написати гору коду (на фото нижче), який, використовуючи сучасні мови програмування, можна було б написати за невелику частку зусиль.

    (На зображенні вище Маргарет Гамільтон, яка стоїть біля стосу паперу з програмним забезпеченням Apollo 11.)

    І на відміну від сьогодення, коли розробники програмного забезпечення кодують приблизно 80-90 відсотків можливих сценаріїв, для місій «Аполлон» їхній код мав враховувати все. Щоб подати це в перспективу, сама Маргарет сказала:

    "Через помилку в інструкції з контрольного списку перемикач радара рандеву було встановлено в неправильне положення. Це призвело до того, що він надсилав комп'ютеру помилкові сигнали. У результаті комп'ютеру було запропоновано виконати всі його звичайні функції для приземлення. приймаючи додаткове завантаження помилкових даних, які витрачали 15% часу. Комп’ютер (точніше, програмне забезпечення в ньому) був достатньо розумним, щоб розпізнати, що від нього вимагається виконати більше завдань, ніж він повинен виконувати. Потім він надіслав пролунав сигнал тривоги, що означало для астронавта, що я перевантажений більшою кількістю завдань, ніж я мав би виконувати в цей час, і я збираюся залишити лише більш важливі завдання; тобто ті, які потрібні для приземлення ... Насправді , комп’ютер був запрограмований на більше, ніж розпізнавати умови помилки. Повний набір програм для відновлення був включений у програмне забезпечення. Дія програмного забезпечення, у цьому випадку, полягала в тому, щоб усунути завдання з нижчим пріоритетом і заново встановити більш важливі... Якби комп’ютер цього не зробиввизнав цю проблему та вжив заходів для відновлення, я сумніваюся, що «Аполлон-11» був би успішною посадкою на Місяць».

    — Маргарет Гамільтон, директор лабораторії MIT Draper з програмування польотів Apollo, Кембридж, Массачусетс, «Комп’ютер завантажено», лист до Формування даних, Березень 1, 1971

    Як згадувалося раніше, розробка програмного забезпечення еволюціонувала з тих перших днів Apollo. Нові мови програмування високого рівня замінили стомлюючий процес кодування з одиницями та нулями на кодування за допомогою слів і символів. Такі функції, як генерація випадкового числа, які раніше вимагали днів кодування, тепер замінено написанням одного командного рядка.

    Іншими словами, кодування програмного забезпечення з кожним десятиліттям стає все більш автоматизованим, інтуїтивно зрозумілим і людським. Ці якості збережуться лише в майбутньому, керуючи еволюцією розробки програмного забезпечення таким чином, що матиме глибокий вплив на наше повсякденне життя. Ось що цей розділ Майбутнє комп'ютерів серія буде досліджувати.

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

    Процес заміни необхідності кодувати одиниці та 1 (машинна мова) словами та символами (людська мова) називається процесом додавання рівнів абстракцій. Ці абстракції з’явилися у формі нових мов програмування, які автоматизують складні або загальні функції для сфери, для якої вони розроблені. Але на початку 0-х з’явилися нові компанії (наприклад, 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

    Зникнення закону Мура, що спонукає до фундаментального перегляду мікрочіпів: майбутнє комп’ютерів P4

    Хмарні обчислення стають децентралізованими: майбутнє комп’ютерів P5

    Чому країни змагаються за створення найбільших суперкомп’ютерів? Майбутнє комп'ютерів P6

    Як квантові комп’ютери змінять світ: майбутнє комп’ютерів P7    

    Наступне заплановане оновлення для цього прогнозу

    2023-02-08

    Прогнозні довідки

    Для цього прогнозу використовувалися такі популярні та інституційні посилання:

    Для цього прогнозу були використані такі посилання Quantumrun: