Бъдещето на разработката на софтуер: Бъдещето на компютрите P2

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

Бъдещето на разработката на софтуер: Бъдещето на компютрите P2

    През 1969 г. Нийл Армстронг и Бъз Олдрин стават международни герои, след като са първите хора, стъпили на Луната. Но докато тези астронавти бяха героите на камерата, има хиляди невъзпяти герои, които без тяхното участие, първото пилотирано кацане на Луната не би било невъзможно. Някои от тези герои бяха разработчиците на софтуер, които кодираха полета. Защо?

    Е, компютрите, които съществуваха по това време, бяха много по-прости от сегашните. Всъщност износеният смартфон на обикновения човек е с няколко порядъка по-мощен от всичко на борда на космическия кораб Аполо 11 (и цялата НАСА от 1960 г. по този въпрос). Нещо повече, компютрите по това време са били кодирани от специализирани разработчици на софтуер, които са програмирали софтуер на най-основните машинни езици: AGC асемблиращ код или просто 1s и 0s.

    За контекст, един от тези невъзпяти герои, директорът на отдела за софтуерно инженерство на космическата програма Аполо, Маргарет Хамилтън, и нейният екип трябваше да напише планина от код (на снимката по-долу), който с помощта на днешните езици за програмиране можеше да бъде написан с малка част от усилията.

    (На снимката по-горе е Маргарет Хамилтън, стояща до купчина хартия, съдържаща софтуера на Аполо 11.)

    И за разлика от днешното време, когато разработчиците на софтуер кодират около 80-90 процента от възможните сценарии, за мисиите на Аполо техният код трябваше да отчита всичко. За да постави това в перспектива, самата Маргарет каза:

    „Поради грешка в ръководството на контролния списък, превключвателят на радара за среща беше поставен в грешна позиция. Това го накара да изпрати грешни сигнали към компютъра. Резултатът беше, че компютърът беше помолен да изпълни всичките си нормални функции за кацане докато получаваше допълнителен товар от фалшиви данни, които изразходваха 15% от времето му. Компютърът (или по-скоро софтуерът в него) беше достатъчно интелигентен, за да разпознае, че от него се иска да изпълнява повече задачи, отколкото трябва да изпълнява. След това изпрати пуснах аларма, което означаваше за астронавта, че съм претоварен с повече задачи, отколкото трябва да върша в момента, и ще запазя само по-важните задачи; т.е. тези, необходими за кацане ... Всъщност , компютърът беше програмиран да прави нещо повече от това да разпознава състоянията на грешка.В софтуера беше включен пълен набор от програми за възстановяване.Действието на софтуера в този случай беше да елиминира задачите с по-нисък приоритет и да възстанови по-важните... Ако компютърът не бешеразпозна този проблем и предприе действия за възстановяване, съмнявам се, че Аполо 11 щеше да бъде успешното кацане на Луната, каквото беше."

    — Маргарет Хамилтън, директор на Apollo Flight Computer Programming MIT Draper Laboratory, Кеймбридж, Масачузетс, „Computer Got Loaded“, писмо до Datamation, Март 1, 1971

    Както беше намекнато по-рано, разработката на софтуер се разви от онези ранни дни на Apollo. Нови езици за програмиране на високо ниво замениха досадния процес на кодиране с 1s и 0s с кодиране с думи и символи. Функции като генериране на произволно число, които изискваха дни кодиране, сега са заменени от писане на един команден ред.

    С други думи, софтуерното кодиране става все по-автоматизирано, интуитивно и човешко с всяко изминало десетилетие. Тези качества ще продължат само в бъдещето, насочвайки еволюцията на разработката на софтуер по начини, които ще имат дълбоко въздействие върху ежедневния ни живот. Това е, което тази глава на Бъдещето на компютрите серия ще изследва.

    Разработка на софтуер за масите

    Процесът на замяна на необходимостта от кодиране на 1s и 0s (машинен език) с думи и символи (човешки език) се нарича процес на добавяне на слоеве от абстракции. Тези абстракции са дошли под формата на нови езици за програмиране, които автоматизират сложни или общи функции за областта, за която са проектирани. Но в началото на 2000-те се появиха нови компании (като Caspio, QuickBase и Mendi), които започнаха да предлагат така наречените платформи без код или с нисък код.

    Това са удобни за потребителя, онлайн табла за управление, които позволяват на нетехнически професионалисти да създават персонализирани приложения, съобразени с нуждите на техния бизнес, чрез свързване на визуални блокове от код (символи/графики). С други думи, вместо да отсечете едно дърво и да го оформите в шкаф за дрехи, вие го изграждате, като използвате предварително изработени части от Ikea.

    Докато използването на тази услуга все още изисква определено ниво на компютърни познания, вече не се нуждаете от степен по компютърни науки, използвайте я. В резултат на това тази форма на абстракция дава възможност за възхода на милиони нови „разработчици на софтуер“ в корпоративния свят и позволява на много деца да се научат как да кодират на по-ранна възраст.

    Предефиниране на това какво означава да бъдеш софтуерен разработчик

    Имаше време, когато пейзаж или лице на човек можеха да бъдат заснети само върху платно. Художникът би трябвало да учи и практикува години наред като чирак, изучавайки занаята на рисуването - как да смесва цветовете, кои инструменти са най-добри, правилните техники за изпълнение на конкретна визуализация. Цената на занаята и дългогодишният опит, необходим за доброто му изпълнение, също означават, че художниците са малко и рядко се срещат.

    Тогава е изобретен фотоапаратът. И с едно натискане на бутон, пейзажи и портрети бяха заснети за секунда, чието рисуване иначе би отнело дни до седмици. И тъй като фотоапаратите се подобриха, станаха по-евтини и станаха изобилни до степен, в която вече са включени дори в най-обикновения смартфон, заснемането на света около нас се превърна в обичайна и непринудена дейност, в която всеки участва.

    Тъй като абстракциите напредват и новите софтуерни езици автоматизират все по-рутинната работа по разработка на софтуер, какво ще означава да си софтуерен разработчик след 10 до 20 години? За да отговорим на този въпрос, нека разгледаме как бъдещите разработчици на софтуер вероятно ще се заемат със създаването на утрешни приложения:

    *Първо, цялата стандартизирана, повтаряща се работа по кодиране ще изчезне. На негово място ще има огромна библиотека от предварително дефинирани поведения на компоненти, потребителски интерфейси и манипулации на потока от данни (части на Ikea).

    *Както днес, работодателите или предприемачите ще определят конкретни цели и резултати, които разработчиците на софтуер да изпълнят чрез специализирани софтуерни приложения или платформи.

    * След това тези разработчици ще начертаят своята стратегия за изпълнение и ще започнат да създават прототипи на ранни чернови на техния софтуер чрез достъп до тяхната библиотека с компоненти и използване на визуални интерфейси, за да ги свържат заедно – визуални интерфейси, достъпни чрез разширена реалност (AR) или виртуална реалност (VR).

    * Специализирани системи с изкуствен интелект (AI), проектирани да разберат целите и резултатите, подразбиращи се от първоначалните чернови на техния разработчик, след това ще прецизират изготвения софтуерен дизайн и ще автоматизират всички тестове за осигуряване на качество.

    * Въз основа на резултатите, AI след това ще зададе множество въпроси на разработчика (вероятно чрез вербална комуникация, подобна на Alexa), като се стреми да разбере по-добре и дефинира целите и резултатите на проекта и да обсъди как софтуерът трябва да действа в различни сценарии и среди.

    * Въз основа на обратната връзка от разработчика, AI постепенно ще научи неговото или нейното намерение и ще генерира кода, който да отразява целите на проекта.

    *Това сътрудничество между човек и машина ще итерира версия след версия на софтуера, докато завършена и търгуема версия е готова за вътрешно внедряване или за продажба на обществеността.

    *Всъщност това сътрудничество ще продължи, след като софтуерът бъде изложен на употреба в реалния свят. Когато се докладват прости грешки, AI ще ги коригира автоматично по начин, който отразява първоначалните, желани цели, очертани по време на процеса на разработка на софтуера. Междувременно по-сериозни грешки ще изискват сътрудничество между човек и AI за разрешаване на проблема.

    Като цяло бъдещите разработчици на софтуер ще се фокусират по-малко върху „как“ и повече върху „какво“ и „защо“. Те ще бъдат по-малко занаятчии и повече архитекти. Програмирането ще бъде интелектуално упражнение, което ще изисква хора, които могат методично да комуникират намерение и резултати по начин, който AI може да разбере и след това да кодират автоматично готово цифрово приложение или платформа.

    Разработка на софтуер, управлявана от изкуствен интелект

    Като се има предвид горният раздел, ясно е, че смятаме, че AI ще играе все по-централна роля в областта на разработката на софтуер, но приемането му не е само с цел да направи разработчиците на софтуер по-ефективни, зад тази тенденция също стоят бизнес сили.

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

    Поради тази причина отминаха дните, когато компаниите пускаха нов софтуер на всеки една до три години. В наши дни компаниите, които се фокусират върху диференциацията, имат финансов стимул да пускат нов софтуер, софтуерни поправки и софтуерни функции все по-редовно. Колкото по-бързо компаниите правят иновации, толкова повече стимулират лоялността на клиентите и увеличават разходите за преминаване към конкуренти. Тази промяна към редовна доставка на постепенни софтуерни актуализации е тенденция, наречена „непрекъсната доставка“.

    За съжаление непрекъснатата доставка не е лесна. Едва една четвърт от днешните софтуерни компании могат да изпълнят графика за пускане, изискван от тази тенденция. Ето защо има толкова голям интерес към използването на AI за ускоряване на нещата.

    Както беше посочено по-рано, AI в крайна сметка ще играе все по-голяма съвместна роля в изготвянето и разработването на софтуер. Но в краткосрочен план компаниите го използват, за да автоматизират все повече процесите за осигуряване на качеството (тестване) на софтуера. И други компании експериментират с използването на AI за автоматизиране на софтуерната документация - процеса на проследяване на пускането на нови функции и компоненти и как са произведени до ниво код.

    Като цяло AI все повече ще играе централна роля в разработката на софтуер. Тези софтуерни компании, които овладеят използването му рано, в крайна сметка ще се радват на експоненциален растеж спрямо своите конкуренти. Но за да реализира тези печалби от AI, индустрията също ще трябва да види напредък в хардуерната страна на нещата – следващият раздел ще разработи подробно тази точка.

    Софтуерът като услуга

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

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

    С тази промяна клиентите вече не притежават софтуер на Adobe; те го наеха според нуждите. В замяна клиентите вече не трябва постоянно да купуват надградени версии на софтуера на Adobe; стига да се абонират за услугата на Adobe, те винаги ще имат най-новите актуализации, качени на устройството си веднага след пускането им (често няколко пъти в годината).

    Това е само един пример за една от най-големите софтуерни тенденции, които сме виждали през последните години: как софтуерът се превръща в услуга вместо в самостоятелен продукт. И не само по-малък, специализиран софтуер, но цели операционни системи, както видяхме с пускането на актуализацията на Windows 10 на Microsoft. С други думи, софтуер като услуга (SaaS).

    Самообучаващ се софтуер (SLS)

    Въз основа на преминаването на индустрията към SaaS, се появява нова тенденция в софтуерното пространство, която съчетава както SaaS, така и AI. Водещи компании от Amazon, Google, Microsoft и IBM започнаха да предлагат своята AI инфраструктура като услуга на своите клиенти.

    С други думи, AI и машинното обучение вече не са достъпни само за софтуерни гиганти, сега всяка компания и разработчик има достъп до онлайн ресурси за AI, за да изгради самообучаващ се софтуер (SLS).

    Ще обсъдим подробно потенциала на ИИ в нашата поредица „Бъдещето на изкуствения интелект“, но за контекста на тази глава ще кажем, че настоящите и бъдещите разработчици на софтуер ще създадат SLS, за да създадат нови системи, които предвиждат задачи, които трябва да бъдат изпълнени и просто ги попълнете автоматично вместо вас.

    Това означава, че един бъдещ AI асистент ще научи стила ви на работа в офиса и ще започне да изпълнява основни задачи вместо вас, като форматиране на документи точно както ги харесвате, изготвяне на имейли с вашия тон на гласа, управление на работния ви календар и други.

    У дома това може да означава SLS система да управлява вашия бъдещ интелигентен дом, включително задачи като предварително затопляне на дома ви, преди да пристигнете, или проследяване на хранителните стоки, които трябва да купите.

    До 2020-те и до 2030-те тези SLS системи ще играят жизненоважна роля в корпоративните, правителствените, военните и потребителските пазари, като постепенно помагат на всеки да подобри своята производителност и да намали отпадъците от всякакъв вид. Ще разгледаме SLS технологията по-подробно по-късно в тази серия.

    Във всичко това обаче има една уловка.

    Единственият начин, по който работят моделите SaaS и SLS, е, ако интернет (или инфраструктурата зад него) продължава да расте и да се подобрява, заедно с изчислителния хардуер и хардуера за съхранение, който управлява „облака“, върху който работят тези SaaS/SLS системи. За щастие, тенденциите, които проследяваме, изглеждат обещаващи.

    За да научите как интернет ще расте и ще се развива, прочетете нашия Бъдещето на Интернет серия. За да научите повече за това как компютърният хардуер ще напредне, прочетете, като използвате връзките по-долу!

    Серия Бъдещето на компютрите

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

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

    Избледняващ закон на Мур, който предизвиква фундаментално преосмисляне на микрочиповете: Бъдещето на компютрите P4

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

    Защо държавите се състезават да създадат най-големите суперкомпютри? Бъдещето на компютрите P6

    Как квантовите компютри ще променят света: Бъдещето на компютрите P7    

    Следваща планирана актуализация за тази прогноза

    2023-02-08

    Справки за прогнози

    Следните популярни и институционални връзки бяха посочени за тази прогноза:

    Следните връзки на Quantumrun бяха посочени за тази прогноза: