Budoucnost vývoje softwaru: Budoucnost počítačů P2

KREDIT OBRAZU: Quantumrun

Budoucnost vývoje softwaru: Budoucnost počítačů P2

    V roce 1969 se Neil Armstrong a Buzz Aldrin stali mezinárodními hrdiny poté, co jako první lidé vstoupili na Měsíc. Ale zatímco tito astronauti byli hrdiny před kamerou, existují tisíce neopěvovaných hrdinů, kteří bez jejich účasti by první přistání na Měsíci s lidskou posádkou nebylo nemožné. Několik z těchto hrdinů byli vývojáři softwaru, kteří let kódovali. Proč?

    Počítače, které tehdy existovaly, byly mnohem jednodušší než dnes. Ve skutečnosti je opotřebovaný smartphone průměrného člověka o několik řádů výkonnější než cokoli na palubě kosmické lodi Apollo 11 (a celé NASA 1960. let). Navíc byly počítače v té době kódovány specializovanými softwarovými vývojáři, kteří programovali software v nejzákladnějších strojových jazycích: AGC Assembly Code nebo jednoduše 1s a 0s.

    Pro kontext, jeden z těchto neopěvovaných hrdinů, ředitel divize softwarového inženýrství vesmírného programu Apollo, Margaret Hamiltonováa její tým musel napsat horu kódu (obrázek níže), který by s použitím dnešních programovacích jazyků mohl být napsán za zlomek úsilí.

    (Na obrázku nahoře stojí Margaret Hamiltonová vedle stohu papíru obsahujícího software Apollo 11.)

    A na rozdíl od dnešní doby, kdy vývojáři softwaru kódují asi 80–90 procent možných scénářů, pro mise Apollo musel jejich kód zohledňovat vše. Abych to uvedla na pravou míru, sama Margaret řekla:

    "Kvůli chybě v manuálu kontrolního seznamu byl radarový spínač setkání umístěn ve špatné poloze. To způsobilo, že vysílal chybné signály do počítače. Výsledkem bylo, že počítač byl požádán, aby provedl všechny své normální funkce pro přistání." při přijímání dodatečného zatížení falešných dat, která zabírala 15 % svého času. Počítač (nebo spíše software v něm) byl dostatečně chytrý na to, aby rozpoznal, že je po něm požadováno více úkolů, než by měl. Poté odeslal vyhlásím poplach, což pro astronauta znamenalo, že jsem přetížen více úkoly, než bych měl v tuto chvíli dělat, a nechám si jen ty důležitější úkoly, tedy ty potřebné k přistání... Vlastně , počítač byl naprogramován tak, aby dokázal víc než jen rozpoznávat chybové stavy. Do softwaru byla začleněna kompletní sada programů pro obnovu. Akce softwaru v tomto případě spočívala v odstranění úloh s nižší prioritou a obnovení těch důležitějších... Pokud by počítač nemělrozpoznal tento problém a podnikl kroky k obnově, pochybuji, že by Apollo 11 bylo tím úspěšným přistáním na Měsíci."

    — Margaret Hamilton, ředitelka Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Letter to Datamation, Březen 1, 1971

    Jak již bylo naznačeno dříve, vývoj softwaru se od těch raných dnů Apollo vyvinul. Nové programovací jazyky na vysoké úrovni nahradily zdlouhavý proces kódování s 1 a 0 na kódování se slovy a symboly. Funkce jako generování náhodného čísla, které dříve vyžadovalo dny kódování, jsou nyní nahrazeny psaním jediného příkazového řádku.

    Jinými slovy, softwarové kódování je s každým dalším desetiletím stále více automatizované, intuitivní a lidské. Tyto vlastnosti budou pokračovat pouze v budoucnu a budou řídit vývoj softwaru způsoby, které budou mít hluboký dopad na náš každodenní život. To je to, co tato kapitola Budoucnost počítačů série prozkoumáme.

    Vývoj softwaru pro masy

    Proces nahrazování potřeby kódovat 1s a 0s (strojový jazyk) slovy a symboly (lidský jazyk) se označuje jako proces přidávání vrstev abstrakcí. Tyto abstrakce přišly v podobě nových programovacích jazyků, které automatizují složité nebo běžné funkce pro obor, pro který byly navrženy. Ale během raného 2000s se objevily nové společnosti (jako Caspio, QuickBase a Mendi), které začaly nabízet to, čemu se říká bezkódové nebo nízkokódové platformy.

    Jedná se o uživatelsky přívětivé online dashboardy, které umožňují netechnickým profesionálům vytvářet vlastní aplikace přizpůsobené potřebám jejich podnikání pomocí spojování vizuálních bloků kódu (symboly/grafika). Jinými slovy, místo toho, abyste pokáceli strom a vytvořili z něj šatní skříň, postavíte jej z prefabrikovaných dílů z Ikea.

    I když používání této služby stále vyžaduje určitou úroveň počítačových znalostí, již nepotřebujete diplom z informatiky, používejte ji. Výsledkem je, že tato forma abstrakce umožňuje vzestup milionů nových „vývojářů softwaru“ v podnikovém světě a umožňuje mnoha dětem naučit se kódovat v nižším věku.

    Předefinování toho, co to znamená být vývojářem softwaru

    Bývaly doby, kdy se krajina nebo tvář člověka dala zachytit pouze na plátno. Malíř by musel roky studovat a cvičit jako učeň, učit se malířskému řemeslu – jak míchat barvy, jaké nástroje jsou nejlepší, správné techniky k provedení konkrétního vizuálu. Náklady na řemeslo a mnohaleté zkušenosti potřebné k jeho dobrému provedení také způsobily, že malířů bylo málo.

    Pak byl vynalezen fotoaparát. A kliknutím na tlačítko byly během vteřiny zachyceny krajiny a portréty, jejichž malování by jinak trvalo dny až týdny. A jak se fotoaparáty zdokonalovaly, zlevňovaly a staly se hojným až do bodu, kdy jsou nyní součástí i toho nejzákladnějšího smartphonu, stalo se zachycování světa kolem nás běžnou a příležitostnou činností, které se nyní účastní každý.

    Jak abstrakce postupují a nové softwarové jazyky automatizují stále rutinnější práci na vývoji softwaru, co to bude znamenat být vývojářem softwaru za 10 až 20 let? Abychom na tuto otázku odpověděli, pojďme si projít, jak budou budoucí vývojáři softwaru pravděpodobně postupovat při vytváření aplikací zítřka:

    *Za prvé, veškerá standardizovaná, opakující se kódovací práce zmizí. Na jeho místě bude rozsáhlá knihovna předdefinovaných chování komponent, uživatelského rozhraní a manipulace s datovým tokem (části Ikea).

    *Stejně jako dnes budou zaměstnavatelé nebo podnikatelé definovat konkrétní cíle a výstupy pro vývojáře softwaru, které budou realizovat prostřednictvím specializovaných softwarových aplikací nebo platforem.

    *Tito vývojáři poté zmapují svou strategii provádění a začnou prototypovat rané návrhy svého softwaru tím, že zpřístupní jejich knihovnu komponent a použijí vizuální rozhraní k jejich propojení – vizuální rozhraní přístupná prostřednictvím rozšířené reality (AR) nebo virtuální reality (VR).

    *Specializované systémy umělé inteligence (AI) navržené tak, aby porozuměly cílům a výstupům vyplývajícím z počátečních návrhů jejich vývojáře, poté zdokonalí návrh softwaru a zautomatizují veškeré testování zajištění kvality.

    *Na základě výsledků pak AI položí vývojáři množství otázek (pravděpodobně prostřednictvím verbální komunikace podobné Alexě), ve snaze lépe porozumět a definovat cíle a výstupy projektu a diskutovat o tom, jak by se měl software chovat v různých scénářích. a prostředí.

    *Na základě zpětné vazby od vývojáře se AI postupně naučí svůj záměr a vygeneruje kód tak, aby odrážel cíle projektu.

    *Tato spolupráce mezi člověkem a strojem bude opakovat verzi po verzi softwaru, dokud nebude hotová a prodejná verze připravena k interní implementaci nebo k prodeji veřejnosti.

    *Ve skutečnosti bude tato spolupráce pokračovat poté, co bude software vystaven použití v reálném světě. Jakmile jsou hlášeny jednoduché chyby, AI je automaticky opraví způsobem, který odráží původní požadované cíle nastíněné během procesu vývoje softwaru. Mezitím závažnější chyby budou vyžadovat spolupráci mezi člověkem a AI k vyřešení problému.

    Celkově se budoucí vývojáři softwaru zaměří méně na „jak“ a více na „co“ a „proč“. Budou méně řemeslníky a více architekty. Programování bude intelektuálním cvičením, které bude vyžadovat lidi, kteří dokážou metodicky sdělovat záměry a výsledky způsobem, kterému umělá inteligence rozumí, a poté automaticky kódovat hotovou digitální aplikaci nebo platformu.

    Vývoj softwaru řízený umělou inteligencí

    Vzhledem k výše uvedené části je jasné, že máme pocit, že umělá inteligence bude hrát stále důležitější roli v oblasti vývoje softwaru, ale její přijetí není čistě za účelem zefektivnění vývojářů softwaru, za tímto trendem jsou také obchodní síly.

    Konkurence mezi společnostmi zabývajícími se vývojem softwaru je s každým dalším rokem ostřejší. Některé společnosti si konkurují tím, že kupují své konkurenty. Ostatní soutěží v diferenciaci softwaru. Výzva této druhé strategie spočívá v tom, že není snadno obhajitelná. Jakoukoli softwarovou funkci nebo vylepšení, které jedna společnost nabízí svým klientům, mohou její konkurenti relativně snadno kopírovat.

    Z tohoto důvodu jsou pryč doby, kdy společnosti vydávají nový software každý jeden až tři roky. V dnešní době mají společnosti, které se zaměřují na diferenciaci, finanční motivaci vydávat stále pravidelněji nový software, softwarové opravy a softwarové funkce. Čím rychleji společnosti inovují, tím více podporují loajalitu klientů a zvyšují náklady na přechod ke konkurenci. Tento posun směrem k pravidelnému dodávání přírůstkových aktualizací softwaru je trend nazývaný „nepřetržité doručování“.

    Bohužel nepřetržité doručování není snadné. Sotva čtvrtina dnešních softwarových společností dokáže realizovat plán vydání požadovaný tímto trendem. A to je důvod, proč je takový zájem o použití AI k urychlení věcí.

    Jak již bylo nastíněno dříve, umělá inteligence bude nakonec hrát stále více spolupracující roli při navrhování a vývoji softwaru. Ale v krátkodobém horizontu jej společnosti využívají ke stále větší automatizaci procesů zajišťování kvality (testování) softwaru. A další společnosti experimentují s využitím umělé inteligence k automatizaci softwarové dokumentace – procesu sledování vydání nových funkcí a komponent a způsobu jejich výroby až na úroveň kódu.

    Celkově bude AI stále více hrát ústřední roli ve vývoji softwaru. Softwarové společnosti, které si jeho používání osvojí brzy, se nakonec budou těšit exponenciálnímu růstu oproti svým konkurentům. Aby však bylo možné realizovat tyto zisky AI, bude muset průmysl také vidět pokroky v hardwarové stránce věcí – další část bude tento bod rozvádět.

    Software jako služba

    Všechny druhy kreativních profesionálů používají software Adobe při vytváření digitálního umění nebo designu. Téměř tři desetiletí jste si zakoupili software Adobe jako CD a vlastnili jeho používání navěky a podle potřeby kupovali budoucí upgradované verze. V polovině roku 2010 však Adobe změnilo svou strategii.

    Namísto nákupu softwarových CD s otravně propracovanými vlastnickými klíči by nyní zákazníci Adobe museli platit měsíční předplatné za právo stahovat software Adobe do svých počítačových zařízení, software, který by fungoval pouze spolu s pravidelným a stálým připojením k internetu k serverům Adobe. .

    S touto změnou zákazníci již nevlastnili software Adobe; pronajímali podle potřeby. Na oplátku již zákazníci nemusí neustále kupovat upgradované verze softwaru Adobe; pokud si předplatí službu Adobe, budou mít vždy nejnovější aktualizace nahrány do svého zařízení ihned po vydání (často několikrát ročně).

    Toto je pouze jeden příklad jednoho z největších softwarových trendů, které jsme v posledních letech viděli: jak software přechází do služby namísto samostatného produktu. A nejen menší, specializovaný software, ale celé operační systémy, jak jsme viděli při vydání aktualizace Windows 10 od Microsoftu. Jinými slovy, software jako služba (SaaS).

    Samoučící se software (SLS)

    V návaznosti na posun odvětví směrem k SaaS se objevuje nový trend v softwarovém prostoru, který kombinuje SaaS i AI. Přední společnosti z Amazonu, Google, Microsoftu a IBM začaly nabízet svou infrastrukturu AI jako službu svým klientům.

    Jinými slovy, umělá inteligence a strojové učení již nejsou přístupné pouze softwarovým gigantům, nyní má každá společnost a vývojář přístup k online zdrojům umělé inteligence k vytváření softwaru pro samoučení (SLS).

    Potenciál umělé inteligence podrobně probereme v naší sérii Future of Artificial Intelligence, ale pro kontext této kapitoly řekneme, že současní a budoucí vývojáři softwaru vytvoří SLS, aby vytvořili nové systémy, které předvídají úkoly, které je třeba udělat a jednoduše je za vás automaticky doplňte.

    To znamená, že budoucí asistent umělé inteligence se naučí váš styl práce v kanceláři a začne za vás plnit základní úkoly, jako je formátování dokumentů tak, jak je máte rádi, navrhování e-mailů vaším tónem hlasu, správa pracovního kalendáře a další.

    Doma to může znamenat, že systém SLS bude spravovat váš budoucí chytrý dům, včetně úkolů, jako je předehřátí domu před příjezdem nebo sledování potravin, které potřebujete nakoupit.

    Do roku 2020 a do 2030. let XNUMX. století budou tyto systémy SLS hrát zásadní roli na korporátních, vládních, vojenských a spotřebitelských trzích a postupně jim pomohou zlepšit jejich produktivitu a snížit množství odpadu všeho druhu. Technologii SLS se budeme podrobněji věnovat později v této sérii.

    To vše má však háček.

    Jediným způsobem, jak modely SaaS a SLS fungují, je, že internet (nebo infrastruktura za ním) bude nadále růst a zdokonalovat se spolu s výpočetním a úložným hardwarem, který provozuje „cloud“, na kterém tyto systémy SaaS/SLS fungují. Naštěstí trendy, které sledujeme, vypadají slibně.

    Chcete-li se dozvědět, jak bude internet růst a vyvíjet se, přečtěte si naše Budoucnost internetu série. Chcete-li se dozvědět více o tom, jak se bude počítačový hardware vyvíjet, čtěte dále pomocí odkazů níže!

    Seriál Budoucnost počítačů

    Vznikající uživatelská rozhraní, která předefinují lidstvo: Budoucnost počítačů P1

    Revoluce digitálního úložiště: Budoucnost počítačů P3

    Slábnoucí Moorův zákon, který podnítí zásadní přehodnocení mikročipů: Budoucnost počítačů P4

    Cloud computing se stává decentralizovaným: Budoucnost počítačů P5

    Proč země soutěží o vybudování největších superpočítačů? Budoucnost počítačů P6

    Jak kvantové počítače změní svět: Budoucnost počítačů P7    

    Další plánovaná aktualizace této prognózy

    2023-02-08

    Předpověď reference

    Pro tuto prognózu byly uvedeny následující populární a institucionální odkazy:

    Pro tuto předpověď byly odkazovány následující odkazy Quantumrun: