Viitorul dezvoltării software: Viitorul computerelor P2

CREDIT DE IMAGINE: Quantumrun

Viitorul dezvoltării software: Viitorul computerelor P2

    În 1969, Neil Armstrong și Buzz Aldrin au devenit eroi internaționali după ce au fost primii oameni care au pășit pe Lună. Dar, în timp ce acești astronauți au fost eroii în fața camerei, există mii de eroi necunoscuți care, fără implicarea lor, prima aterizare pe Lună cu echipaj nu ar fi fost imposibilă. Câțiva dintre acești eroi au fost dezvoltatorii de software care au codificat zborul. De ce?

    Ei bine, computerele care existau la acea vreme erau mult mai simple decât sunt astăzi. De fapt, smartphone-ul uzat al unei persoane obișnuite este cu câteva ordine de mărime mai puternic decât orice la bordul navei spațiale Apollo 11 (și toată NASA din anii 1960 de altfel). Mai mult decât atât, computerele la acea vreme erau codificate de dezvoltatori de software specializați care programau software în cel mai elementar dintre limbaje de mașină: AGC Assembly Code sau pur și simplu, 1s și 0s.

    Pentru context, unul dintre acești eroi necunoscuți, directorul diviziei de inginerie software al programului spațial Apollo, Margaret Hamilton, iar echipa ei a trebuit să scrie un munte de cod (imaginea de mai jos) care, folosind limbajele de programare de astăzi, ar fi putut fi scris folosind o fracțiune din efort.

    (În imaginea de mai sus este Margaret Hamilton stând lângă un teanc de hârtie care conține software-ul Apollo 11.)

    Și, spre deosebire de zilele noastre, în care dezvoltatorii de software codifică pentru aproximativ 80-90 la sută din scenariile posibile, pentru misiunile Apollo, codul lor trebuia să țină cont de tot. Pentru a pune acest lucru în perspectivă, însăși Margaret a spus:

    „Din cauza unei erori în manualul listei de verificare, comutatorul radarului de întâlnire a fost plasat într-o poziție greșită. Acest lucru a făcut ca acesta să trimită semnale eronate către computer. Rezultatul a fost că computerului i s-a cerut să îndeplinească toate funcțiile sale normale pentru aterizare. în timp ce a primit o încărcătură suplimentară de date false care a consumat 15% din timp. Computerul (sau mai degrabă software-ul din el) a fost suficient de inteligent pentru a recunoaște că i se cere să efectueze mai multe sarcini decât ar trebui să efectueze. Apoi a trimis declanșează o alarmă, ceea ce a însemnat pentru astronaut că sunt supraîncărcat cu mai multe sarcini decât ar trebui să fac în acest moment și voi păstra doar sarcinile mai importante, adică cele necesare pentru aterizare... , computerul a fost programat să facă mai mult decât să recunoască condițiile de eroare. Un set complet de programe de recuperare a fost încorporat în software. Acțiunea software-ului, în acest caz, a fost de a elimina sarcinile cu prioritate mai mică și de a restabili pe cele mai importante... Dacă computerul nu ar fi făcut-oam recunoscut această problemă și am luat măsuri de recuperare, mă îndoiesc că Apollo 11 ar fi fost aterizarea cu succes pe Lună.”

    — Margaret Hamilton, director al Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, „Computer Got Loaded”, Scrisoare către Datamation, Martie 1, 1971

    După cum am sugerat mai devreme, dezvoltarea software-ului a evoluat încă de la primele zile ale lui Apollo. Noile limbaje de programare de nivel înalt au înlocuit procesul obositor de codare cu 1 și 0 la codificare cu cuvinte și simboluri. Funcții precum generarea unui număr aleatoriu care înainte necesita zile de codare sunt acum înlocuite prin scrierea unei singure linie de comandă.

    Cu alte cuvinte, codarea software-ului a devenit din ce în ce mai automatizată, intuitivă și umană cu fiecare deceniu care trece. Aceste calități vor continua doar în viitor, ghidând evoluția dezvoltării software în moduri care vor avea un impact profund asupra vieții noastre de zi cu zi. Acesta este acest capitol al Viitorul Calculatoarelor seria va explora.

    Dezvoltare de software pentru mase

    Procesul de înlocuire a necesității de a codifica 1-urile și 0-urile (limbajul mașinii) cu cuvinte și simboluri (limbajul uman) este denumit procesul de adăugare a straturilor de abstracție. Aceste abstracții au venit sub forma unor noi limbaje de programare care automatizează funcții complexe sau comune pentru domeniul pentru care au fost concepute. Dar la începutul anilor 2000, au apărut noi companii (cum ar fi Caspio, QuickBase și Mendi) care au început să ofere ceea ce se numesc platforme fără cod sau low-code.

    Acestea sunt tablouri de bord online, ușor de utilizat, care permit profesioniștilor non-tehnici să creeze aplicații personalizate, adaptate nevoilor afacerii lor, prin combinarea blocurilor vizuale de cod (simboluri/grafice). Cu alte cuvinte, în loc să tăiați un copac și să-l modelați într-un dulap de toaletă, îl construiți folosind piese prefabricate de la Ikea.

    Deși folosirea acestui serviciu necesită încă un anumit nivel de cunoștințe de calculator, nu mai aveți nevoie de o diplomă de informatică, dacă îl utilizați. Drept urmare, această formă de abstractizare permite creșterea a milioane de noi „dezvoltatori de software” în lumea corporativă și le permite multor copii să învețe cum să codeze la o vârstă mai fragedă.

    Redefinirea a ceea ce înseamnă a fi dezvoltator de software

    A fost o vreme când un peisaj sau chipul unei persoane nu putea fi surprins decât pe o pânză. Un pictor ar trebui să studieze și să exerseze ani de zile ca ucenic, învățând meșteșugul picturii - cum să îmbine culorile, ce instrumente sunt cele mai bune, tehnicile corecte pentru a executa o anumită imagine. Costul comerțului și mulți ani de experiență necesari pentru a o desfășura bine au însemnat, de asemenea, că pictorii erau puțini și departe.

    Apoi a fost inventat camera. Și cu un clic pe un buton, peisajele și portretele au fost surprinse într-o secundă, care altfel ar dura câteva zile până la săptămâni pentru a picta. Și pe măsură ce camerele s-au îmbunătățit, au devenit mai ieftine și au devenit abundente până la un punct în care acum sunt incluse chiar și în cel mai elementar smartphone, capturarea lumii din jurul nostru a devenit o activitate obișnuită și obișnuită la care participă acum toată lumea.

    Pe măsură ce abstracțiile progresează și noile limbaje software automatizează munca de rutină de dezvoltare a software-ului, ce va însemna să fii dezvoltator de software în 10 până la 20 de ani? Pentru a răspunde la această întrebare, să vedem cum vor dezvolta viitorii dezvoltatori de software probabil să construiască aplicațiile de mâine:

    *În primul rând, toate lucrările de codare standardizate și repetitive vor dispărea. În locul său va fi o bibliotecă vastă de comportamente ale componentelor predefinite, interfețe de utilizare și manipulări ale fluxului de date (piese Ikea).

    *Ca și astăzi, angajatorii sau antreprenorii vor defini obiective și livrabile specifice pentru ca dezvoltatorii de software să le execute prin aplicații sau platforme software specializate.

    *Acești dezvoltatori își vor mapa apoi strategia de execuție și vor începe să prototipeze primele schițe ale software-ului lor, accesând biblioteca lor de componente și folosind interfețe vizuale pentru a le lega împreună - interfețe vizuale accesate prin realitate augmentată (AR) sau realitate virtuală (VR).

    *Sistemele specializate de inteligență artificială (AI) concepute pentru a înțelege obiectivele și rezultatele implicate de proiectele inițiale ale dezvoltatorului lor, vor perfecționa apoi proiectarea software-ului și vor automatiza toate testele de asigurare a calității.

    *Pe baza rezultatelor, AI va adresa apoi dezvoltatorului o multitudine de întrebări (probabil prin comunicare verbală, asemănătoare Alexa), încercând să înțeleagă și să definească mai bine obiectivele și livrabilele proiectului și să discute cum ar trebui să acționeze software-ul în diferite scenarii. și medii.

    *Pe baza feedback-ului dezvoltatorului, IA își va învăța treptat intenția și va genera codul pentru a reflecta obiectivele proiectului.

    *Această colaborare între om și mașină va repeta versiunea după versiune a software-ului până când o versiune finalizată și comercializabilă este gata pentru implementare internă sau pentru vânzarea publicului.

    *De fapt, această colaborare va continua după ce software-ul va fi expus utilizării în lumea reală. Pe măsură ce sunt raportate erori simple, AI le va remedia automat într-o manieră care să reflecte obiectivele originale, dorite, prezentate în timpul procesului de dezvoltare a software-ului. Între timp, erori mai grave vor necesita o colaborare om-AI pentru a rezolva problema.

    În general, viitorii dezvoltatori de software se vor concentra mai puțin pe „cum” și mai mult pe „ce” și „de ce”. Vor fi mai puțin artizani și mai arhitecți. Programarea va fi un exercițiu intelectual care va necesita oameni care să comunice metodic intenția și rezultatele într-o manieră pe care o inteligență artificială poate înțelege și apoi codifica automat o aplicație sau o platformă digitală finalizată.

    Dezvoltare software bazată pe inteligența artificială

    Având în vedere secțiunea de mai sus, este clar că simțim că AI va juca un rol din ce în ce mai central în domeniul dezvoltării software, dar adoptarea sa nu are doar scopul de a face dezvoltatorii de software mai eficienți, există și forțe de afaceri în spatele acestei tendințe.

    Concurența dintre companiile de dezvoltare de software devine din ce în ce mai acerbă cu fiecare an care trece. Unele companii concurează prin cumpărarea concurenților lor. Alții concurează pe diferențierea software-ului. Provocarea cu cea din urmă strategie este că nu este ușor de apărat. Orice caracteristică software sau îmbunătățire pe care o oferă o companie clienților săi, concurenții săi o pot copia cu relativă ușurință.

    Din acest motiv, au dispărut vremurile în care companiile lansează software nou la fiecare unul până la trei ani. În zilele noastre, companiile care se concentrează pe diferențiere au un stimulent financiar să lanseze noi software, remedieri software și funcții software într-o bază din ce în ce mai regulată. Cu cât companiile inovează mai repede, cu atât stimulează mai mult loialitatea clienților și cresc costul trecerii la concurenți. Această trecere către livrarea regulată a actualizărilor software incrementale este o tendință numită „livrare continuă”.

    Din păcate, livrarea continuă nu este ușoară. Abia un sfert dintre companiile de software de astăzi pot executa programul de lansare cerut de această tendință. Și acesta este motivul pentru care există atât de mult interes în utilizarea AI pentru a accelera lucrurile.

    După cum sa subliniat mai devreme, AI va juca în cele din urmă un rol din ce în ce mai colaborativ în elaborarea și dezvoltarea de software. Dar, pe termen scurt, companiile îl folosesc pentru a automatiza tot mai mult procesele de asigurare a calității (testare) pentru software. Și alte companii experimentează utilizarea inteligenței artificiale pentru a automatiza documentația software - procesul de urmărire a lansării de noi funcții și componente și modul în care acestea au fost produse până la nivel de cod.

    În general, AI va juca din ce în ce mai mult un rol central în dezvoltarea software-ului. Acele companii de software care stăpânesc devreme utilizarea acestuia se vor bucura în cele din urmă de o creștere exponențială față de concurenții lor. Dar pentru a realiza aceste câștiguri AI, industria va trebui să vadă și progrese în partea hardware a lucrurilor - secțiunea următoare va detalia acest punct.

    Sistem de operare ca serviciu

    Tot felul de profesioniști în creație utilizează software-ul Adobe atunci când creează lucrări de artă digitală sau de design. Timp de aproape trei decenii, ați achiziționat software-ul Adobe sub formă de CD și ați deținut utilizarea acestuia în permanență, cumpărând viitoare versiuni actualizate după cum era necesar. Dar la mijlocul anilor 2010, Adobe și-a schimbat strategia.

    În loc să cumpere CD-uri cu software cu chei de proprietate enervant de elaborate, clienții Adobe ar trebui acum să plătească un abonament lunar pentru dreptul de a descărca software-ul Adobe pe dispozitivele lor de calcul, software care ar funcționa doar împreună cu o conexiune la Internet obișnuită până la constantă la serverele Adobe. .

    Odată cu această schimbare, clienții nu mai dețineau software-ul Adobe; l-au închiriat la nevoie. În schimb, clienții nu mai trebuie să cumpere în mod constant versiuni actualizate de software Adobe; atâta timp cât s-au abonat la serviciul Adobe, vor avea întotdeauna cele mai recente actualizări încărcate pe dispozitivul lor imediat după lansare (deseori de mai multe ori pe an).

    Acesta este doar un exemplu al uneia dintre cele mai mari tendințe de software pe care le-am văzut în ultimii ani: modul în care software-ul trece la serviciu în loc de un produs independent. Și nu numai software mai mic, specializat, ci și sisteme de operare întregi, așa cum am văzut cu lansarea actualizării Microsoft Windows 10. Cu alte cuvinte, software ca serviciu (SaaS).

    Software de auto-învățare (SLS)

    Pe baza trecerii industriei către SaaS, apare o nouă tendință în spațiul software care combină atât SaaS, cât și AI. Companiile de vârf din Amazon, Google, Microsoft și IBM au început să ofere infrastructura lor AI ca serviciu clienților lor.

    Cu alte cuvinte, AI și învățarea automată nu mai sunt accesibile doar giganților software, acum orice companie și dezvoltator poate accesa resurse online AI pentru a construi software de auto-învățare (SLS).

    Vom discuta în detaliu potențialul AI în seria noastră „Viitorul inteligenței artificiale”, dar, în contextul acestui capitol, vom spune că dezvoltatorii de software actuali și viitori vor crea SLS pentru a crea noi sisteme care anticipează sarcinile care trebuie îndeplinite și pur și simplu completează-le automat pentru tine.

    Aceasta înseamnă că un viitor asistent AI vă va învăța stilul de lucru la birou și va începe să vă îndeplinească sarcini de bază, cum ar fi formatarea documentelor așa cum vă place, redactarea e-mailurilor pe tonul vocii, gestionarea calendarului de lucru și multe altele.

    Acasă, acest lucru ar putea însemna ca un sistem SLS să vă gestioneze viitoarea casă inteligentă, inclusiv sarcini precum preîncălzirea casei înainte de a ajunge sau urmărirea alimentelor pe care trebuie să le cumpărați.

    Până în anii 2020 și în anii 2030, aceste sisteme SLS vor juca un rol vital pe piețele corporative, guvernamentale, militare și de consum, ajutând treptat fiecare să-și îmbunătățească productivitatea și să reducă deșeurile de orice fel. Vom acoperi mai detaliat tehnologia SLS mai târziu în această serie.

    Cu toate acestea, există o captură în toate acestea.

    Singurul mod în care funcționează modelele SaaS și SLS este dacă Internetul (sau infrastructura din spatele acestuia) continuă să crească și să se îmbunătățească, alături de hardware-ul de calcul și de stocare care rulează „clodul” pe care operează aceste sisteme SaaS/SLS. Din fericire, tendințele pe care le urmărim par promițătoare.

    Pentru a afla cum va crește și va evolua internetul, citiți-ne Viitorul Internetului serie. Pentru a afla mai multe despre cum va avansa hardware-ul computerului, citiți mai departe folosind linkurile de mai jos!

    Seria Viitorul Calculatoarelor

    Interfețe de utilizator emergente pentru a redefini umanitatea: Viitorul computerelor P1

    Revoluția stocării digitale: viitorul computerelor P3

    O lege Moore care se estompează pentru a declanșa o regândire fundamentală a microcipurilor: Viitorul computerelor P4

    Cloud computing devine descentralizat: viitorul computerelor P5

    De ce concurează țările pentru a construi cele mai mari supercalculatoare? Viitorul computerelor P6

    Cum vor schimba computerele cuantice lumea: Viitorul computerelor P7    

    Următoarea actualizare programată pentru această prognoză

    2023-02-08

    Referințe de prognoză

    Următoarele linkuri populare și instituționale au fost menționate pentru această prognoză:

    ProPublica

    Următoarele linkuri Quantumrun au fost menționate pentru această prognoză: