Kinabukasan ng software development: Kinabukasan ng mga computer P2

CREDIT NG LARAWAN: Quantumrun

Kinabukasan ng software development: Kinabukasan ng mga computer P2

    Noong 1969, naging internasyonal na bayani sina Neil Armstrong at Buzz Aldrin matapos silang maging unang tao na tumuntong sa Buwan. Ngunit habang ang mga astronaut na ito ay ang mga bayani sa camera, mayroong libu-libong mga unsung hero na kung wala ang kanilang pakikilahok, ang unang manned Moon landing ay hindi magiging imposible. Ang ilan sa mga bayaning ito ay ang mga developer ng software na nag-code ng flight. Bakit?

    Well, ang mga computer na umiral noong panahong iyon ay mas simple kaysa sa ngayon. Sa katunayan, ang pagod na smartphone ng karaniwang tao ay ilang mga order ng magnitude na mas malakas kaysa sa anumang bagay na nakasakay sa Apollo 11 spacecraft (at lahat ng 1960s NASA para sa bagay na iyon). Bukod dito, ang mga computer noong panahong iyon ay na-code ng mga dalubhasang software developer na nag-program ng software sa pinakapangunahing mga wika ng makina: AGC Assembly Code o simple, 1s at 0s.

    Para sa konteksto, isa sa mga hindi sinasadyang bayaning ito, ang Direktor ng Software Engineering Division ng Apollo space program, Margaret Hamilton, at ang kanyang koponan ay kailangang magsulat ng isang bundok ng code (nakalarawan sa ibaba) na ang paggamit ng mga programming language ngayon ay maaaring naisulat gamit ang isang bahagi ng pagsisikap.

    (Ang nakalarawan sa itaas ay si Margaret Hamilton na nakatayo sa tabi ng isang stack ng papel na naglalaman ng Apollo 11 software.)

    At hindi tulad sa kasalukuyan kung saan ang mga developer ng software ay nag-code para sa humigit-kumulang 80-90 porsiyento ng mga posibleng sitwasyon, para sa mga misyon ng Apollo, ang kanilang code ay kailangang isaalang-alang ang lahat. Upang ilagay ito sa pananaw, si Margaret mismo ang nagsabi:

    "Dahil sa isang error sa checklist manual, ang rendezvous radar switch ay inilagay sa maling posisyon. Nagdulot ito ng pagpapadala ng mga maling signal sa computer. Ang resulta ay ang computer ay hinihiling na gawin ang lahat ng mga normal na function nito para sa landing habang tumatanggap ng dagdag na load ng pekeng data na gumamit ng 15% ng oras nito. Ang computer (o sa halip ay ang software dito) ay sapat na matalino upang makilala na ito ay hinihiling na magsagawa ng higit pang mga gawain kaysa sa dapat itong gawin. Pagkatapos ay ipinadala isang alarma, na para sa astronaut, nasobrahan ako ng mas maraming gawain kaysa sa dapat kong gawin sa oras na ito, at pananatilihin ko lang ang mga mas mahahalagang gawain, ibig sabihin, ang mga kailangan para sa landing ... , ang computer ay na-program upang makagawa ng higit pa kaysa sa pagkilala sa mga kundisyon ng error. Isang kumpletong hanay ng mga programa sa pagbawi ang isinama sa software. Ang pagkilos ng software, sa kasong ito, ay alisin ang mas mababang priyoridad na mga gawain at muling itatag ang mga mas mahalaga ... Kung wala ang computernakilala ang problemang ito at gumawa ng aksyon sa pagbawi, nagdududa ako kung ang Apollo 11 ang naging matagumpay na paglapag sa buwan noon."

    — Margaret Hamilton, Direktor ng Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Liham kay Datamation, Marso 1, 1971

    Tulad ng ipinahiwatig sa mas maaga, ang pagbuo ng software ay umunlad mula noong mga unang araw ng Apollo. Pinalitan ng mga bagong high-level na programming language ang nakakapagod na proseso ng coding na may 1s at 0s sa coding gamit ang mga salita at simbolo. Ang mga function tulad ng pagbuo ng random na numero na dati ay nangangailangan ng mga araw ng coding ay pinapalitan na ngayon sa pamamagitan ng pagsusulat ng isang command line.

    Sa madaling salita, ang software coding ay naging automated, intuitive, at human sa bawat lumilipas na dekada. Ang mga katangiang ito ay magpapatuloy lamang sa hinaharap, na gagabay sa ebolusyon ng software development sa mga paraan na magkakaroon ng malalim na epekto sa ating pang-araw-araw na buhay. Ganito ang kabanatang ito ng Kinabukasan ng mga Computer galugarin ang serye.

    Pag-unlad ng software para sa masa

    Ang proseso ng pagpapalit ng pangangailangang mag-code ng 1s at 0s (wika ng makina) ng mga salita at simbolo (wika ng tao) ay tinutukoy bilang proseso ng pagdaragdag ng mga layer ng abstraction. Ang mga abstraction na ito ay dumating sa anyo ng mga bagong programming language na nag-automate ng kumplikado o karaniwang mga function para sa larangan kung saan sila idinisenyo. Ngunit noong unang bahagi ng 2000s, lumitaw ang mga bagong kumpanya (tulad ng Caspio, QuickBase, at Mendi) na nagsimulang mag-alok ng tinatawag na no-code o low-code na mga platform.

    Ang mga ito ay user-friendly, online na mga dashboard na nagbibigay-daan sa mga hindi teknikal na propesyonal na lumikha ng mga custom na app na iniayon sa mga pangangailangan ng kanilang negosyo sa pamamagitan ng paraan ng pag-snap ng mga visual block ng code (mga simbolo/graphics). Sa madaling salita, sa halip na putulin ang isang puno at gawing dressing cabinet, itatayo mo ito gamit ang mga pre-fashioned na bahagi mula sa Ikea.

    Habang ang paggamit ng serbisyong ito ay nangangailangan pa rin ng isang tiyak na antas ng computer savvy, hindi mo na kailangan ng isang computer science degree na gamitin ito. Bilang resulta, ang form na ito ng abstraction ay nagbibigay-daan sa pag-usbong ng milyun-milyong bagong "software developer" sa corporate world, at ito ay nagbibigay-daan sa maraming bata na matuto kung paano mag-code sa mas maagang edad.

    Muling pagtukoy kung ano ang ibig sabihin ng pagiging isang software developer

    May panahon na ang isang tanawin o mukha ng isang tao ay maaari lamang makuha sa isang canvas. Ang isang pintor ay kailangang mag-aral at magsanay sa loob ng maraming taon bilang isang apprentice, pag-aaral ng craft ng pagpipinta—kung paano maghalo ng mga kulay, kung anong mga tool ang pinakamainam, ang mga tamang diskarte upang maisagawa ang isang partikular na visual. Ang halaga ng kalakalan at ang maraming taon ng karanasan na kailangan upang maisagawa ito nang maayos ay nangangahulugan din na ang mga pintor ay kakaunti at malayo sa pagitan.

    Pagkatapos ay naimbento ang camera. At sa pag-click ng isang pindutan, ang mga landscape at portrait ay nakunan sa isang segundo na kung hindi man ay aabutin ng mga araw hanggang linggo upang maipinta. At nang umunlad ang mga camera, naging mas mura, at naging sagana hanggang sa punto kung saan kasama na ang mga ito sa kahit na ang pinakapangunahing smartphone, ang pagkuha sa mundo sa paligid natin ay naging pangkaraniwan at kaswal na aktibidad na sinasalihan ngayon ng lahat.

    Habang umuunlad ang mga abstraction at ginagawang awtomatiko ng mga bagong wika ng software ang mas nakagawiang gawain sa pagbuo ng software, ano ang ibig sabihin ng maging isang software developer sa loob ng 10 hanggang 20 taon? Upang masagot ang tanong na ito, talakayin natin kung paano malamang na gagawin ng mga developer ng software sa hinaharap ang pagbuo ng mga application bukas:

    *Una, lahat ng standardized, paulit-ulit na coding work ay mawawala. Ang kapalit nito ay isang malawak na library ng mga paunang natukoy na pag-uugali ng bahagi, UI, at mga manipulasyon sa daloy ng data (mga bahagi ng Ikea).

    *Tulad ngayon, tutukuyin ng mga tagapag-empleyo o negosyante ang mga partikular na layunin at maihahatid para sa mga developer ng software na maisagawa sa pamamagitan ng mga espesyal na application o platform ng software.

    *Pagkatapos, imamapa ng mga developer na ito ang kanilang diskarte sa pagpapatupad at magsisimulang mag-prototyping ng mga maagang draft ng kanilang software sa pamamagitan ng pag-access sa kanilang component library at paggamit ng mga visual na interface upang maiugnay ang mga ito—mga visual na interface na na-access sa pamamagitan ng augmented reality (AR) o virtual reality (VR).

    *Ang mga espesyal na sistema ng artificial intelligence (AI) na idinisenyo upang maunawaan ang mga layunin at maihahatid na ipinahiwatig ng mga paunang draft ng kanilang developer, ay pagkatapos ay pinuhin ang na-draft na disenyo ng software at i-automate ang lahat ng pagsubok sa kalidad ng kasiguruhan.

    *Batay sa mga resulta, ang AI ay magtatanong ng maraming tanong sa developer (malamang sa pamamagitan ng verbal, mala-Alexa na komunikasyon), na naglalayong mas maunawaan at tukuyin ang mga layunin at maihahatid ng proyekto at talakayin kung paano dapat kumilos ang software sa iba't ibang mga sitwasyon at mga kapaligiran.

    *Batay sa feedback ng developer, unti-unting matututunan ng AI ang kanyang layunin at bubuo ng code upang ipakita ang mga layunin ng proyekto.

    *Itong pabalik-balik, pakikipagtulungan ng tao-machine ay mag-uulit ng bersyon pagkatapos ng bersyon ng software hanggang ang isang tapos at nabibiling bersyon ay handa na para sa panloob na pagpapatupad o para ibenta sa publiko.

    *Sa katunayan, magpapatuloy ang pakikipagtulungang ito pagkatapos malantad ang software sa paggamit sa totoong mundo. Habang iniuulat ang mga simpleng bug, awtomatikong aayusin ng AI ang mga ito sa paraang nagpapakita ng orihinal, ninanais na mga layunin na nakabalangkas sa proseso ng pagbuo ng software. Samantala, ang mas malubhang mga bug ay tatawag para sa isang pakikipagtulungan ng tao-AI upang malutas ang isyu.

    Sa pangkalahatan, ang mga developer ng software sa hinaharap ay hindi magtutuon ng pansin sa 'paano' at higit pa sa 'ano' at 'bakit.' Sila ay magiging mas kaunting craftsperson at mas arkitekto. Ang programming ay magiging isang intelektwal na ehersisyo na mangangailangan ng mga taong may pamamaraang makapagsasabi ng layunin at mga resulta sa paraang mauunawaan ng AI at pagkatapos ay i-auto-code ang isang tapos na digital application o platform.

    Ang pagbuo ng software na hinimok ng artipisyal na katalinuhan

    Dahil sa seksyon sa itaas, malinaw na sa palagay namin ay gaganap ang AI ng higit na pangunahing papel sa larangan ng pagbuo ng software, ngunit ang pag-aampon nito ay hindi lamang para sa layuning gawing mas epektibo ang mga developer ng software, may mga puwersa ng negosyo sa likod ng trend na ito.

    Ang kumpetisyon sa pagitan ng mga kumpanya ng software development ay nagiging mas matindi sa bawat pagdaan ng taon. Ang ilang mga kumpanya ay nakikipagkumpitensya sa pamamagitan ng pagbili ng kanilang mga kakumpitensya. Ang iba ay nakikipagkumpitensya sa pagkakaiba-iba ng software. Ang hamon sa huling diskarte ay hindi ito madaling ipagtanggol. Anumang software feature o improvement na inaalok ng isang kumpanya sa mga kliyente nito, maaaring kopyahin ng mga kakumpitensya nito nang madali.

    Para sa kadahilanang ito, wala na ang mga araw kung kailan naglalabas ang mga kumpanya ng bagong software bawat isa hanggang tatlong taon. Sa mga araw na ito, ang mga kumpanyang tumutuon sa pagkakaiba-iba ay may pinansiyal na insentibo upang maglabas ng bagong software, pag-aayos ng software, at mga feature ng software sa mas regular na batayan. Ang mas mabilis na pagbabago ng mga kumpanya, mas hinihimok nila ang katapatan ng kliyente at pinatataas ang gastos ng paglipat sa mga kakumpitensya. Ang pagbabagong ito patungo sa regular na paghahatid ng mga incremental na pag-update ng software ay isang trend na tinatawag na "continuous delivery."

    Sa kasamaang palad, ang tuluy-tuloy na paghahatid ay hindi madali. Halos isang-kapat ng mga kumpanya ng software ngayon ang makakagawa ng iskedyul ng pagpapalabas na hinihingi ng trend na ito. At ito ang dahilan kung bakit napakaraming interes sa paggamit ng AI upang mapabilis ang mga bagay-bagay.

    Gaya ng nakabalangkas kanina, ang AI sa kalaunan ay gaganap ng lalong nagiging collaborative na papel sa software drafting at development. Ngunit sa maikling panahon, ginagamit ito ng mga kumpanya upang lalong i-automate ang mga proseso ng pagtiyak ng kalidad (pagsubok) para sa software. At ang iba pang mga kumpanya ay nag-eeksperimento sa paggamit ng AI upang i-automate ang dokumentasyon ng software—ang proseso ng pagsubaybay sa pagpapalabas ng mga bagong feature at bahagi at kung paano ginawa ang mga ito hanggang sa antas ng code.

    Sa pangkalahatan, ang AI ay lalong gaganap ng isang pangunahing papel sa pagbuo ng software. Ang mga kumpanyang software na iyon na maagang nakakabisa sa paggamit nito ay sa huli ay masisiyahan sa exponential growth sa kanilang mga kakumpitensya. Ngunit upang mapagtanto ang mga natamo ng AI na ito, kakailanganin din ng industriya na makakita ng mga pagsulong sa bahagi ng hardware ng mga bagay-ang susunod na seksyon ay magdedetalye sa puntong ito.

    Software bilang isang serbisyo

    Ang lahat ng paraan ng mga malikhaing propesyonal ay gumagamit ng Adobe software kapag lumilikha ng digital art o disenyo ng trabaho. Sa loob ng halos tatlong dekada, binili mo ang software ng Adobe bilang isang CD at pagmamay-ari mo ang paggamit nito nang walang hanggan, bumibili ng mga na-upgrade na bersyon sa hinaharap kung kinakailangan. Ngunit noong kalagitnaan ng 2010s, binago ng Adobe ang diskarte nito.

    Sa halip na bumili ng mga software CD na may nakakainis na detalyadong mga susi sa pagmamay-ari, ang mga customer ng Adobe ay kailangan na ngayong magbayad ng buwanang subscription para sa karapatang mag-download ng Adobe software sa kanilang mga computing device, software na gagana lamang sa tabi ng regular-to-constant na koneksyon sa Internet sa mga server ng Adobe. .

    Sa pagbabagong ito, hindi na pagmamay-ari ng mga customer ang Adobe software; inupahan nila ito kung kinakailangan. Bilang kapalit, ang mga customer ay hindi na kailangang patuloy na bumili ng mga na-upgrade na bersyon ng Adobe software; hangga't naka-subscribe sila sa serbisyo ng Adobe, palagi nilang naa-upload ang mga pinakabagong update sa kanilang device kaagad pagka-release (madalas ilang beses sa isang taon).

    Isa lamang itong halimbawa ng isa sa mga pinakamalaking trend ng software na nakita namin sa mga nakaraang taon: kung paano lumilipat ang software sa serbisyo sa halip na isang standalone na produkto. At hindi lamang mas maliit, espesyal na software, ngunit buong operating system, tulad ng nakita natin sa paglabas ng Windows 10 update ng Microsoft. Sa madaling salita, software bilang isang serbisyo (SaaS).

    Self-learning software (SLS)

    Ang pagbuo sa paglipat ng industriya patungo sa SaaS, isang bagong trend sa espasyo ng software ay umuusbong na pinagsasama ang parehong SaaS at AI. Ang mga nangungunang kumpanya mula sa Amazon, Google, Microsoft, at IBM ay nagsimulang mag-alok ng kanilang AI infrastructure bilang isang serbisyo sa kanilang mga kliyente.

    Sa madaling salita, hindi na naa-access ang AI at machine learning sa mga higanteng software lamang, ngayon ay maaaring ma-access ng anumang kumpanya at developer ang mga online na mapagkukunan ng AI upang bumuo ng self-learning software (SLS).

    Tatalakayin namin ang potensyal ng AI nang detalyado sa aming serye ng Future of Artificial Intelligence, ngunit para sa konteksto ng kabanatang ito, sasabihin namin na ang kasalukuyan at hinaharap na mga developer ng software ay gagawa ng SLS upang lumikha ng mga bagong system na umaasa sa mga gawain na kailangang gawin at awtomatikong kumpletuhin ang mga ito para sa iyo.

    Nangangahulugan ito na matututunan ng isang hinaharap na AI assistant ang iyong istilo sa trabaho sa opisina at magsisimulang kumpletuhin ang mga pangunahing gawain para sa iyo, tulad ng pag-format ng mga dokumento ayon sa gusto mo, pag-draft ng iyong mga email sa tono ng boses mo, pamamahala sa iyong kalendaryo sa trabaho at higit pa.

    Sa bahay, maaaring mangahulugan ito ng pagkakaroon ng SLS system na pamahalaan ang iyong hinaharap na smart home, kabilang ang mga gawain tulad ng pag-pre-heating ng iyong tahanan bago ka dumating o pagsubaybay sa mga groceries na kailangan mong bilhin.

    Sa pagsapit ng 2020s at hanggang sa 2030s, ang mga SLS system na ito ay gaganap ng mahalagang papel sa corporate, government, military, at consumer markets, unti-unting tinutulungan ang bawat isa na mapabuti ang kanilang produktibidad at mabawasan ang lahat ng uri ng basura. Tatalakayin namin ang SLS tech nang mas detalyado sa susunod na seryeng ito.

    Gayunpaman, mayroong isang catch sa lahat ng ito.

    Ang tanging paraan na gumagana ang mga modelo ng SaaS at SLS ay kung ang Internet (o ang imprastraktura sa likod nito) ay patuloy na lumalago at bumubuti, kasama ang computing at storage hardware na nagpapatakbo ng 'cloud' na pinapatakbo ng mga SaaS/SLS system na ito. Sa kabutihang palad, ang mga trend na sinusubaybayan namin ay mukhang may pag-asa.

    Upang malaman kung paano lalago at uunlad ang Internet, basahin ang aming Kinabukasan ng Internet serye. Upang matuto nang higit pa tungkol sa kung paano uusad ang hardware ng computer, pagkatapos ay basahin ang gamit ang mga link sa ibaba!

    Hinaharap ng serye ng Computers

    Mga umuusbong na user interface para muling tukuyin ang sangkatauhan: Hinaharap ng mga computer P1

    Ang digital storage revolution: Future of Computers P3

    Isang kumukupas na Batas ni Moore upang mapukaw ang pangunahing pag-iisip na muli ng mga microchip: Hinaharap ng Mga Kompyuter P4

    Nagiging desentralisado ang cloud computing: Future of Computers P5

    Bakit nakikipagkumpitensya ang mga bansa sa pagbuo ng pinakamalaking supercomputer? Kinabukasan ng mga Kompyuter P6

    Paano mababago ng mga Quantum computer ang mundo: Future of Computers P7    

    Susunod na naka-iskedyul na update para sa hulang ito

    2023-02-08

    Mga sanggunian sa pagtataya

    Ang mga sumusunod na sikat at institusyonal na link ay isinangguni para sa hulang ito:

    Ang mga sumusunod na link ng Quantumrun ay isinangguni para sa hulang ito: