Przyszłość rozwoju oprogramowania: Przyszłość komputerów P2

KREDYT WZROKU: Quantumrun

Przyszłość rozwoju oprogramowania: Przyszłość komputerów P2

    W 1969 Neil Armstrong i Buzz Aldrin zostali międzynarodowymi bohaterami po tym, jak jako pierwsi ludzie postawili stopę na Księżycu. Ale podczas gdy ci astronauci byli bohaterami przed kamerą, są tysiące niedocenionych bohaterów, którzy bez ich udziału, pierwsze załogowe lądowanie na Księżycu nie byłoby niemożliwe. Kilku z tych bohaterów było programistami, którzy zakodowali lot. Czemu?

    Cóż, komputery, które istniały w tamtych czasach, były znacznie prostsze niż są dzisiaj. W rzeczywistości zużyty smartfon przeciętnego człowieka jest o kilka rzędów wielkości potężniejszy niż cokolwiek na pokładzie statku kosmicznego Apollo 11 (a także całej NASA z lat 1960. XX wieku). Co więcej, komputery w tamtym czasie były kodowane przez wyspecjalizowanych programistów, którzy programowali oprogramowanie w najbardziej podstawowych językach maszynowych: AGC Assembly Code lub po prostu jedynkach i zerach.

    Dla kontekstu, jeden z tych niedocenianych bohaterów, dyrektor programu kosmicznego Apollo w wydziale inżynierii oprogramowania, Małgorzata Hamilton, a jej zespół musiał napisać górę kodu (na zdjęciu poniżej), który przy użyciu dzisiejszych języków programowania można było napisać przy ułamku wysiłku.

    (Na zdjęciu powyżej Margaret Hamilton stojąca obok stosu papieru zawierającego oprogramowanie Apollo 11.)

    I w przeciwieństwie do dzisiejszych czasów, w których programiści kodują około 80-90% możliwych scenariuszy, w przypadku misji Apollo ich kod musiał uwzględniać wszystko. Aby spojrzeć na to z innej perspektywy, sama Margaret powiedziała:

    „Z powodu błędu w instrukcji listy kontrolnej, przełącznik radaru spotkania został umieszczony w złym położeniu. To spowodowało, że wysyłał błędne sygnały do ​​komputera. W rezultacie komputer został poproszony o wykonanie wszystkich swoich normalnych funkcji do lądowania podczas otrzymywania dodatkowego ładunku fałszywych danych, które zużyły 15% jego czasu. Komputer (a raczej oprogramowanie w nim zawarte) był wystarczająco inteligentny, aby rozpoznać, że został poproszony o wykonanie większej liczby zadań, niż powinien. alarm, który był przeznaczony dla astronauty, jestem przeciążony większą liczbą zadań, niż powinienem w tej chwili wykonywać, i zamierzam zachować tylko te ważniejsze, tj. te potrzebne do lądowania ... Właściwie , komputer został zaprogramowany tak, aby robił coś więcej niż tylko rozpoznawanie stanów błędów. Do oprogramowania włączono kompletny zestaw programów naprawczych. Działanie oprogramowania w tym przypadku polegało na wyeliminowaniu zadań o niższym priorytecie i ponownym przywróceniu ważniejszych ... Gdyby komputer nierozpoznając ten problem i podejmując działania naprawcze, wątpię, czy Apollo 11 byłby tak udanym lądowaniem na Księżycu, jakim było.”

    — Margaret Hamilton, dyrektor Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, „Computer Got Loaded”, List do Datamatyzacja, Marzec 1, 1971

    Jak wspomniano wcześniej, rozwój oprogramowania ewoluował od tych wczesnych dni Apollo. Nowe języki programowania wysokiego poziomu zastąpiły żmudny proces kodowania jedynkami i zerami na rzecz kodowania za pomocą słów i symboli. Funkcje takie jak generowanie losowej liczby, która wymagała wielu dni kodowania, są teraz zastępowane przez napisanie pojedynczego wiersza poleceń.

    Innymi słowy, z każdą mijającą dekadą kodowanie oprogramowania staje się coraz bardziej zautomatyzowane, intuicyjne i ludzkie. Te cechy będą kontynuowane tylko w przyszłości, kierując ewolucją rozwoju oprogramowania w sposób, który będzie miał głęboki wpływ na nasze codzienne życie. Oto, co ten rozdział Przyszłość komputerów seria będzie eksplorować.

    Rozwój oprogramowania dla mas

    Proces zastępowania konieczności kodowania jedynek i zer (język maszynowy) słowami i symbolami (język ludzki) nazywany jest procesem dodawania warstw abstrakcji. Te abstrakcje pojawiły się w postaci nowych języków programowania, które automatyzują złożone lub wspólne funkcje dla dziedziny, dla której zostały zaprojektowane. Ale na początku XXI wieku pojawiły się nowe firmy (takie jak Caspio, QuickBase i Mendi), które zaczęły oferować tak zwane platformy bez kodu lub z niskim kodem.

    Są to przyjazne dla użytkownika pulpity nawigacyjne online, które umożliwiają profesjonalistom nietechnicznym tworzenie niestandardowych aplikacji dostosowanych do potrzeb ich firmy poprzez łączenie wizualnych bloków kodu (symboli/grafiki). Innymi słowy, zamiast ścinać drzewo i przerabiać je na toaletkę, budujesz je z gotowych części z Ikei.

    Chociaż korzystanie z tej usługi nadal wymaga pewnego poziomu znajomości komputera, nie potrzebujesz już dyplomu z informatyki, aby z niego korzystać. W rezultacie ta forma abstrakcji umożliwia powstanie milionów nowych „programistów” w świecie korporacji, a wielu dzieciom umożliwia naukę kodowania w młodszym wieku.

    Przedefiniowanie, co to znaczy być programistą

    Był czas, kiedy pejzaż lub twarz człowieka można było uchwycić tylko na płótnie. Malarz musiałby uczyć się i ćwiczyć latami jako praktykant, ucząc się rzemiosła malowania – jak mieszać kolory, jakie narzędzia są najlepsze, właściwe techniki wykonania określonego obrazu. Koszt handlu i wieloletnie doświadczenie potrzebne do jego dobrego wykonywania sprawiły, że malarzy było niewielu.

    Wtedy wynaleziono aparat. A za jednym kliknięciem pejzaże i portrety zostały uchwycone w ciągu sekundy, której malowanie zajęłoby dni lub tygodnie. W miarę jak aparaty się poprawiały, stawały się tańsze i stały się tak liczne, że są teraz częścią nawet najbardziej podstawowego smartfona, uchwycenie otaczającego nas świata stało się powszechną i swobodną czynnością, w której wszyscy teraz biorą udział.

    Ponieważ postęp abstrakcji i nowe języki oprogramowania automatyzują coraz bardziej rutynowe prace nad oprogramowaniem, co będzie oznaczać bycie programistą za 10 do 20 lat? Aby odpowiedzieć na to pytanie, przyjrzyjmy się, w jaki sposób przyszli programiści prawdopodobnie będą tworzyć przyszłe aplikacje:

    *Po pierwsze, wszystkie ustandaryzowane, powtarzalne prace związane z kodowaniem znikną. W jego miejsce pojawi się obszerna biblioteka predefiniowanych zachowań komponentów, interfejsów użytkownika i manipulacji przepływem danych (części Ikea).

    *Podobnie jak dzisiaj, pracodawcy lub przedsiębiorcy będą określać konkretne cele i produkty, które programiści mają realizować za pomocą specjalistycznych aplikacji lub platform.

    * Deweloperzy ci następnie zaplanują swoją strategię wykonania i rozpoczną prototypowanie wczesnych wersji roboczych swojego oprogramowania, uzyskując dostęp do biblioteki komponentów i wykorzystując interfejsy wizualne do łączenia ich ze sobą — interfejsy wizualne dostępne za pośrednictwem rzeczywistości rozszerzonej (AR) lub rzeczywistości wirtualnej (VR).

    *Wyspecjalizowane systemy sztucznej inteligencji (AI) zaprojektowane w celu zrozumienia celów i rezultatów wynikających z początkowych wersji roboczych ich programistów, następnie udoskonalą projekt oprogramowania i zautomatyzują wszystkie testy zapewnienia jakości.

    *Na podstawie wyników sztuczna inteligencja zada programiście wiele pytań (prawdopodobnie poprzez komunikację werbalną, podobną do Alexa), starając się lepiej zrozumieć i zdefiniować cele i produkty projektu oraz omówić, jak oprogramowanie powinno działać w różnych scenariuszach i środowiska.

    *Na podstawie opinii programisty sztuczna inteligencja stopniowo pozna jego zamiary i wygeneruje kod, aby odzwierciedlić cele projektu.

    * Ta tam i z powrotem, współpraca człowiek-maszyna, będzie iterować kolejne wersje oprogramowania, aż gotowa i dostępna na rynku wersja będzie gotowa do wewnętrznego wdrożenia lub publicznej sprzedaży.

    *W rzeczywistości ta współpraca będzie kontynuowana po udostępnieniu oprogramowania do użytku w świecie rzeczywistym. W miarę zgłaszania prostych błędów sztuczna inteligencja automatycznie je naprawi w sposób, który odzwierciedla oryginalne, pożądane cele nakreślone podczas procesu tworzenia oprogramowania. Tymczasem poważniejsze błędy będą wymagały współpracy człowieka i sztucznej inteligencji w celu rozwiązania problemu.

    Ogólnie rzecz biorąc, przyszli twórcy oprogramowania będą mniej koncentrować się na tym, „jak”, a bardziej na „co” i „dlaczego”. Będą mniej rzemieślnikami, a bardziej architektami. Programowanie będzie ćwiczeniem intelektualnym, które będzie wymagało ludzi, którzy potrafią metodycznie komunikować intencje i wyniki w sposób, który sztuczna inteligencja może zrozumieć, a następnie automatycznie zakodować gotową aplikację cyfrową lub platformę.

    Tworzenie oprogramowania opartego na sztucznej inteligencji

    Biorąc pod uwagę powyższą sekcję, jasne jest, że uważamy, że sztuczna inteligencja będzie odgrywać coraz bardziej centralną rolę w dziedzinie tworzenia oprogramowania, ale jej przyjęcie nie jest wyłącznie w celu zwiększenia efektywności programistów, za tym trendem stoją również siły biznesowe.

    Konkurencja między firmami tworzącymi oprogramowanie staje się z roku na rok coraz bardziej zacięta. Niektóre firmy konkurują, wykupując swoich konkurentów. Inni konkurują o zróżnicowanie oprogramowania. Wyzwanie związane z tą drugą strategią polega na tym, że nie da się jej łatwo obronić. Każda funkcja oprogramowania lub ulepszenie, które jedna firma oferuje swoim klientom, konkurenci mogą ze względną łatwością kopiować.

    Z tego powodu minęły czasy, kiedy firmy wypuszczają nowe oprogramowanie co rok do trzech lat. W dzisiejszych czasach firmy, które koncentrują się na zróżnicowaniu, mają motywację finansową do coraz bardziej regularnego wydawania nowego oprogramowania, poprawek oprogramowania i funkcji oprogramowania. Im szybciej firmy wprowadzają innowacje, tym bardziej zwiększają lojalność klientów i zwiększają koszty przejścia na konkurencję. Ta zmiana w kierunku regularnego dostarczania przyrostowych aktualizacji oprogramowania to trend zwany „ciągłym dostarczaniem”.

    Niestety ciągła dostawa nie jest łatwa. Zaledwie jedna czwarta dzisiejszych producentów oprogramowania jest w stanie zrealizować harmonogram wydań wymagany przez ten trend. I dlatego jest tak duże zainteresowanie wykorzystaniem sztucznej inteligencji do przyspieszenia rzeczy.

    Jak wspomniano wcześniej, sztuczna inteligencja w końcu będzie odgrywać coraz większą rolę w zakresie współpracy w opracowywaniu i opracowywaniu oprogramowania. Jednak w krótkim okresie firmy używają go do coraz większej automatyzacji procesów zapewniania jakości (testowania) oprogramowania. Inne firmy eksperymentują z wykorzystaniem sztucznej inteligencji do automatyzacji dokumentacji oprogramowania — procesu śledzenia wydawania nowych funkcji i komponentów oraz sposobu ich wytwarzania aż do poziomu kodu.

    Ogólnie rzecz biorąc, sztuczna inteligencja będzie odgrywać coraz większą rolę w tworzeniu oprogramowania. Te firmy programistyczne, które wcześnie opanują jego użycie, ostatecznie będą cieszyć się wykładniczym wzrostem w stosunku do swoich konkurentów. Ale aby zrealizować te korzyści AI, branża będzie musiała również zobaczyć postępy po stronie sprzętowej – w następnej sekcji omówimy ten punkt.

    Oprogramowanie jako usługa

    Wszelkiego rodzaju profesjonaliści kreatywni korzystają z oprogramowania Adobe podczas tworzenia dzieł sztuki cyfrowej lub prac projektowych. Przez prawie trzy dekady kupowałeś oprogramowanie Adobe na płycie CD i korzystałeś z niego na zawsze, kupując przyszłe uaktualnione wersje w razie potrzeby. Ale w połowie 2010 roku firma Adobe zmieniła swoją strategię.

    Zamiast kupować płyty CD z oprogramowaniem z irytująco skomplikowanymi kluczami własności, klienci Adobe musieliby teraz płacić miesięczną subskrypcję za prawo do pobierania oprogramowania Adobe na swoje urządzenia komputerowe, oprogramowania, które działałoby tylko wraz ze stałym połączeniem internetowym z serwerami Adobe. .

    Dzięki tej zmianie klienci nie są już właścicielami oprogramowania Adobe; wynajęli go w razie potrzeby. W zamian klienci nie muszą już stale kupować uaktualnionych wersji oprogramowania Adobe; o ile subskrybują usługę Adobe, zawsze będą mieli najnowsze aktualizacje przesyłane na swoje urządzenie natychmiast po wydaniu (często kilka razy w roku).

    To tylko jeden przykład jednego z największych trendów w oprogramowaniu, jaki zaobserwowaliśmy w ostatnich latach: jak oprogramowanie przechodzi do użytku zamiast jako samodzielny produkt. I nie tylko mniejsze, wyspecjalizowane oprogramowanie, ale całe systemy operacyjne, jak widzieliśmy w aktualizacji Windows 10 Microsoftu. Innymi słowy, oprogramowanie jako usługa (SaaS).

    Oprogramowanie samouczące (SLS)

    Opierając się na przejściu branży w kierunku SaaS, pojawia się nowy trend w przestrzeni oprogramowania, który łączy zarówno SaaS, jak i sztuczną inteligencję. Czołowe firmy Amazon, Google, Microsoft i IBM zaczęły oferować swoim klientom infrastrukturę AI jako usługę.

    Innymi słowy, sztuczna inteligencja i uczenie maszynowe nie są już dostępne tylko dla gigantów oprogramowania, teraz każda firma i programista może uzyskać dostęp do zasobów sztucznej inteligencji online w celu stworzenia oprogramowania do samodzielnego uczenia się (SLS).

    Omówimy szczegółowo potencjał sztucznej inteligencji w naszej serii Przyszłość sztucznej inteligencji, ale w kontekście tego rozdziału powiemy, że obecni i przyszli programiści będą tworzyć SLS, aby tworzyć nowe systemy, które przewidują zadania, które wymagają wykonania i po prostu wypełnij je automatycznie.

    Oznacza to, że przyszły asystent AI nauczy się Twojego stylu pracy w biurze i zacznie wykonywać dla Ciebie podstawowe zadania, takie jak formatowanie dokumentów tak, jak lubisz, pisanie wiadomości e-mail tonem głosu, zarządzanie kalendarzem pracy i nie tylko.

    W domu może to oznaczać posiadanie systemu SLS do zarządzania przyszłym inteligentnym domem, w tym zadań takich jak wstępne ogrzewanie domu przed przyjazdem lub śledzenie artykułów spożywczych, które musisz kupić.

    Do lat 2020. i 2030. XX wieku systemy SLS będą odgrywać istotną rolę na rynkach korporacyjnych, rządowych, wojskowych i konsumenckich, stopniowo pomagając każdemu z nich w poprawie wydajności i ograniczeniu wszelkiego rodzaju odpadów. W dalszej części tej serii omówimy bardziej szczegółowo technologię SLS.

    Jednak jest w tym wszystkim haczyk.

    Jedynym sposobem, w jaki działają modele SaaS i SLS, jest ciągły rozwój i ulepszanie Internetu (lub infrastruktury za nim) wraz ze sprzętem obliczeniowym i pamięcią masową obsługującym „chmurę”, na której działają te systemy SaaS/SLS. Na szczęście trendy, które śledzimy, wyglądają obiecująco.

    Aby dowiedzieć się, jak Internet będzie się rozwijał i ewoluował, przeczytaj nasze Przyszłość Internetu seria. Aby dowiedzieć się więcej o rozwoju sprzętu komputerowego, czytaj dalej, korzystając z poniższych łączy!

    Seria Future of Computers

    Pojawiające się interfejsy użytkownika, aby na nowo zdefiniować ludzkość: Przyszłość komputerów P1

    Rewolucja cyfrowej pamięci masowej: przyszłość komputerów P3

    Zanikające prawo Moore'a, które zapoczątkowało fundamentalne przemyślenie mikrochipów: Przyszłość komputerów P4

    Przetwarzanie w chmurze staje się zdecentralizowane: przyszłość komputerów P5

    Dlaczego kraje konkurują o budowę największych superkomputerów? Przyszłość komputerów P6

    Jak komputery Quantum zmienią świat: Przyszłość komputerów P7    

    Następna zaplanowana aktualizacja tej prognozy

    2023-02-08

    Odniesienia do prognoz

    W tej prognozie odniesiono się do następujących powiązań popularnych i instytucjonalnych:

    W tej prognozie odniesiono się do następujących linków Quantumrun: