Mis on arvutiprogrammeerimine? Tarkvaraarenduse määratlemine.

Mu viieaastane poeg Ramy pöördus minu poole ühel päeval, kui ma kodus töötasin, ja küsis: "Mida sa teed, ema?"

"Ma töötan," vastasin.

Ta vaatas mu sülearvuti ekraani ja uuris uuesti: "Aga mida sa teed ?"

Peatusin ja hakkasin sellele mõtlema. Olen veebiarendaja ja programmeerin JavaScripti. Kuidas ma seda viieaastasele seletan?

"Kirjutan arvutile juhised ja arvuti teeb seda, mida ma käskin. Seda nimetatakse programmeerimiseks, ”selgitasin. Ramy näis hämmingus.

Jätkasin: "Näiteks võin anda arvutile juhised kahe numbri lisamiseks ja see annab mulle vastuse." Kirjutasin funktsiooni, mis lisas 2 + 2 ja näitas talle vastust minu ekraanil. Ta silmad särasid.

Sellest hetkest alates hakkasin mõtlema, mis on programmeerimine ? Mis tegelikult kapoti all toimub? Kui hakkasin 2017. aastal freeCodeCampis kodeerimist õppima, kasutasin veebisaidil sisseehitatud koodiredaktorit ja näeksin tulemusi. Ma ei saanud aga tegelikult aru sellest maagiast, mis kulisside taga toimus.

Hakkasin uurima ja need olid mõned terminid, mida otsisin: „Mis on arvutiprogrammeerimine? Mis on tarkvara? " Google'is on üle 600 miljoni otsingu „Mis on arvutiprogrammeerimine?” Otsingutulemid See on natuke nagu jäneseaugust alla laskumine - see võib olla keeruline ja ülekaalukas.

Tahtsin kokku panna põhjaliku sissejuhatuse, mis on algajatele mõeldud arvutiprogrammeerimine ja tarkvaraarendus. Alustan arvutiprogrammeerimisega ja käsitlen siis arvutiprogrammeerimiskeeli. Siis räägin tarkvarast ja tarkvaraarendusest. Lõpuks lähen nüüd arvutiprogrammeerimise praegustele suundumustele ja tulevikule.

Kui mõtlete programmeerimismaailmale üleminekule või olete lihtsalt huvitatud kodeerimise õppimisest, annab see teile üldise ülevaate ilma (liiga palju!) Tehnilise žargoonita.

Ainult üks asi, mida tuleb märkida: võite kasutada sõnu "Arendaja" ja "Programmeerija" koodi kirjutava isiku tähistamiseks.

Mis on arvutiprogrammeerimine?

Vikipeedias on mõiste "arvutiprogrammeerimine" määratlus järgmine:

"Arvutiprogrammeerimine on käivitatava arvutiprogrammi kavandamine ja loomine konkreetse arvutustulemuse saavutamiseks."

Aga mida see tähendab?

Arvuti ise pole tark. Jah, nad on võimsad ja suudavad ülesandeid täita palju kiiremini kui inimene. Kuid arvutid vajavad inimest, kes kirjutaks juhised ja ütleks neile, mida teha.

Seetõttu on programmeerimine nende juhiste kirjutamise protsess. Selleks kasutame programmeerimiskeelt. Need juhised tõlgitakse loetavasse vormingusse, millest arvuti saab aru. Seejärel täidab arvuti juhiseid.

Teetassi valmistamise programmeerimine

Võtame näiteks tassikese tee valmistamise. Kui annaksite tassikese tee valmistamise juhised, näeks see välja järgmine:

  1. Keeda veidi vett
  2. Vala teepakiga tassi kuum vesi
  3. Las tee keeb
  4. Eemaldage teepakk
  5. Lisa piim ja / või suhkur (soovi korral)

Lihtne, eks?

Me peame iseenesestmõistetavaks, et suhtlus inimesega on teistsugune kui arvutiga suhtlemine. Inimesel on eelteadmised ja elukogemus - nad võivad teada, kust teed leida. Oletame, et nad teavad, et piima hoitakse külmkapis.

Inimestel on ka intuitsioon. Kui te ei leia tassi, võite selle asemel kapid otsida. Samuti saab lugeda inimeste mitteverbaalseid vihjeid nagu kehakeel.

Programmeerimise osas peate olema väga konkreetne. Jätkates tassi tee valmistamist, võite kirjutada pseudokoodiga juhised järgmiselt:

  1. Mine kööki
  2. Leidke veekeetja
  3. Avage veekeetja kaas
  4. Täitke veekeetja veega
  5. Lülitage veekeetja sisse
  6. Oodake, kuni see keeb 100 kraadini
  7. Leidke tass

Ja nii edasi.

Mis siis, kui ülaltoodud juhistest ei piisa? Kõigi stsenaariumide arvestamiseks peate võib-olla lisama loogika . Näiteks: 2) Leidke veekeetja. Noh, kas see on veekeetja või on see pliidiplaadile pandud veekeetja? Peate lisama tingimuse, et kui see on veekeetja, siis tehke xyz. Vastasel juhul tehke pliidile asetatud veekeetja jaoks xyz.

Isegi kui arvate, et olete arvestanud kõigi võimalike tingimustega ja andnud väga konkreetseid juhiseid, on asju, mida te ei näe ette. Hakkate oma tassi teed tegema ja midagi läheb valesti. Oh ei! Teie veekeetja lakkab töötamast pärast selle keetmise alustamist.

Mis juhtus? Teie koodis on viga! Viga on teie koodi viga või viga, mis võib viia ootamatute tulemusteni. Koodi parandamiseks läbite silumisprotsessi, kust leiate oma koodis olevad probleemid ja lahendate need.

Sellisel juhul ei sisaldanud teie juhised veekeetja täitmist 0,8 liitrini kütteelemendi katmiseks. Nii lülitub veekeetja turvameetmena välja.

Vigade vältimiseks pärast teie programmi käivitamist viivad arendajad oma programmide testimisse ja üksuste testimisse. Ühikutestimine on see, kus kirjutate testi oma koodi osadele. Testid kas ebaõnnestuvad või läbivad.

Näiteks kirjutate funktsiooni, mis lisab kaks numbrit: 1 + 1. Seejärel kirjutate ühikutesti, kus oodatav väljund on 2. Kõik vastused ebaõnnestuvad, kui see pole 2.

Teil on oma kood läbi, kuni kõik töötab ilma ootamatute probleemideta. Programmeerimine on seetõttu üksikasjalikult suunatud ja korduv protsess, kus te täiustate pidevalt varem kirjutatut.

Kuidas teie arvuti teie koodist aru saab?

See, mida enamik programmeerijaid kirjutab koodina, on kõrgetasemeline programmeerimiskeel. Kujunduse järgi on see abstraktne. Abstraktsioon tähendab selles kontekstis seda, et me läheme masinkoodist kaugemale ja programmeerimiskeeled on kõnekeeltele lähemal.

Kuid arvuti ei saa tekstipõhisest koodist aru. See tuleb kompileerida (tõlkida) masinakoodiks. Masinkood on juhiste kogum, millest arvuti keskprotsessor (CPU) saab aru. Mõelge protsessorist kui arvuti ajust. Masinkood koosneb ühest ja nullist. Seda nimetatakse binaarseks.

Näiteks kirjutaksite kahendkoodi “Tere maailm”:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Nagu näete, pole binaarne tekst inimeste jaoks hõlpsasti loetav, seetõttu kipume masinkoodis programmeerimist vältima!

Mis on programmeerimiskeel?

Programmeerimiskeeled kuuluvad nii madalate keelte, näiteks assamblee, kui ka kõrgetasemeliste programmeerimiskeelte, nagu JavaScript, spektrisse.

Aga mis on programmeerimiskeel täpselt? Parim analoogia, mis mulle pähe tuleb, on tänapäeval kasutatavad kõnekeeled. Kõik keeled väljendavad sama ideed, kuid teisele inimesele erineval viisil:

Inglise keel: Tere

Prantsuse: Bonjour

Hispaania: Hola

Programmeerimiskeeled on erinevad viisid sama idee väljendamiseks, kuid selle asemel arvutiga. Järgmine prindib “Tere” välja kolmes erinevas programmeerimiskeeles:

JavaScript: alert(“Hello”);

Python: print(“Hello”)

Perl: print "Hello";

Igal programmeerimiskeelel on oma süntaks. Inglise keeles on meil grammatika. Sama kehtib ka programmeerimiskeelte kohta - mõlemal on oma reeglistik.

Kuidas teada saada, kas programmeerimiskeel on programmeerimiskeel?

See võib tunduda kummaline küsimus. Kas kogu kood on kirjutatud programmeerimiskeeles? Tehniliselt ei. Näiteks eksitakse, et HTML (HyperText Markup Language) on programmeerimiskeel. Tegelikult on see „deklaratiivne” keel, mis Vikipeedia andmetel on:

"... arvutiprogrammide struktuuri ja elementide ülesehitamise stiil, mis väljendab arvutusloogikat ilma selle juhtimisvoogu kirjeldamata."

Teisisõnu, HTML pakub küll veebilehe struktuuri, kuid ei kontrolli, kuidas veebisait käitub või toimib.

Kas keel on programmeerimiskeel, saate kindlaks teha selle järgi, kas see on „Turing valmis“. Turingi masin on hüpoteetiline masin, mille kirjeldas Alan Turing 1936. aastal. Turingi programmeerimiskeele täielikuks täitmiseks on vaja:

  1. Tingimuslik hargnemine (mida uurin allpool).
  2. Võimalus lugeda ja kirjutada lõpmatule paberilindile. See tähendab sisuliselt andmete mällu salvestamise võimalust.

Ma ei hakka seda teemat põhjalikult uurima, kuid huvi korral on see video kasulik sissejuhatus.

Mis on programmeerimiskeele põhialused?

On mõned põhielemendid, mida tavaliselt esile tõstetakse. See hõlmab muutujaid, tsükleid, tingimuslauseid, andmestruktuure ja algoritme. Need on enamiku programmeerimiskeelte ehituskivid.

Mis on „silmuseks”?

Sest tsüklid on kasulikud, kui peate käskude komplekti korduvalt täitma. Näiteks on teil pärastlõunane tee ja peate oma külalistele tegema viis tassi teed. Ühe tassi tee valmistamiseks peate järgima juhiseid, nagu minu varasem näide.

Viis korda juhiste kirjutamise asemel võite öelda, et arvuti viie korra samu juhiseid läbi vaataks. See võimaldab teil skaleerida.

Allpool on toodud näide forpõhitsüklist:

for (let i = 0; i < 5; i++) { console.log("Make Tea!"); } //expected output: "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" 

Mis on tingimuslik lause?

JavaScriptis on meil if...elsetingimuslaused. Neid kasutatakse juhul, kui soovite tingimuse alusel teha erinevaid toiminguid.

Tulles tagasi minu varasema näite juurde, küsige kasutajalt, kas ta tahab oma teesse piima. Kui nad tahavad piima, siis lisage piima teele, muidu ärge tehke midagi.

Siin on näide if...elseJavaScripti avaldusest:

if(milk == true) { // add milk } else { // don't add milk } 

Mis on andmestruktuurid?

"Andmestruktuur on viis andmete korraldamiseks nii, et neid saaks tõhusalt kasutada ... Need on olulised koostisosad kiirete ja võimsate algoritmide loomisel."

(Andmekonstruktsioonide kursus on hõlpsasti arenenud, William Fiset)

Levinud andmestruktuurid, mida leiate paljudest programmeerimiskeeltest, on massiivid, objektid, rühmad ja liidud. Võtan näiteks massiivid.

JavaScripti abil saab massiiv salvestada mitmesuguseid andmeid, näiteks numbreid ja stringe (tekst). Ma armastan küpsiseid koos oma teega, nii et ma kavatsen neid oma massiivi salvestada:

biscuits = [“shortbread”, “digestive”, “ginger nut”]; 

Need küpsised salvestatakse arvuti mällu ja teie kui arendaja pääsete konkreetsele küpsisele juurde, viidates selle indeksile. Indeksit hakkate lugema alates 0. Indeks on nagu biskviidi asend biskviidivormis. Viidate sellele nurksulgudes.

biscuits[0]; // “shortbread” biscuits[1]; // “digestive” biscuits[2]; // “ginger nut” 

Kui soovite saada seedimise küpsised, pääsete oma indeks seisukoht: biscuits[1]. Leian selle hõlpsasti üles, sest tean, kuhu see on salvestatud.

Pidage meeles, et massiivi esimene element on indeks 0. Seega, kui viidate indeksile 1, on see tegelikult massiivi teine ​​üksus.

Seetõttu on andmestruktuurid viis andmete haldamiseks. See hõlmab andmete salvestamist ja hankimist. Algoritmide käivitamine on tõhusam, kui andmed on korraldatud andmestruktuuris.

Mis on algoritm?

Algoritm on spetsiifiline käskude kogum, mis lahendab probleemi. See on abstraktne kontseptsioon. Siin on link TED-i lühivideole teemal "Mis on algoritm?".

Kas mäletate, kui me kirjutasime juhiseid, kuidas varem tassi teed teha? See on sisuliselt algoritm: järjestikuste käskude kogum.

Kui ma oma esimese funktsiooni JavaScripti kirjutasin, lõin tegelikult oma esimese algoritmi, teadmata, et see on algoritm! Funktsioon on algoritmi rakendamine.

Nii nagu reaalses elus, on kodeerimisprobleemile sageli mitu lahendust. Näiteks oletame, et plaanite minna kohvikusse, kus te pole kunagi varem käinud. Sihtkohta jõudmiseks on mitu võimalust. Mõni marsruut võtab kauem aega kui teine, kuid lõppkokkuvõttes viivad need kõik samasse kohta. Ideaalis soovite valida kiireima, tõhusaima ja lihtsama marsruudi.

Sama põhimõtet saab rakendada ka programmeerimisel. Kodeerimisprobleemi lahendamiseks on tavaliselt mõned võimalused ja programmeerijad püüavad leida kõige elegantsema ja tõhusama lahenduse.

Arendajad ei saa seda kohe esimesel katsel õigesti! Nii nagu kirjutaksin artikli jaoks esimese mustandi, on see sama ka kodeerimise puhul. Koostaksin mitu korda artikli ümber, kus saaksin struktuuri muuta, redigeerida, sektsioone ümber kirjutada ja tarbetuid lauseid välja lõigata. Programmeerimisel läbime sarnase protsessi ja nimetame seda oma koodi refaktsiooniks.

Mis on tänapäeval peamised programmeerimiskeeled? Kui palju neid on?

Tundub, et Internetis on mõningaid arutelusid programmeerimiskeelte koguarvu üle. Mõnes veebisaidis, näiteks Vikipeedias, on loetletud umbes 700 praeguse ja ajaloolise programmeerimiskeelt. Muud saidid, näiteks Tiobe, jälgivad ja jälgivad 250 kõige populaarsemat keelt.

Githubis oli 2019. aasta kõige populaarsem programmeerimiskeel JavaScript:

Miks on nii palju programmeerimiskeeli? Kuidas on programmeerimiskeeled arenenud?

Erinevate vajaduste rahuldamiseks töötatakse välja erinevad programmeerimiskeeled. Seda demonstreeritakse kogu programmeerimiskeelte ajaloo vältel. Palun vaadake seda O'Reilly skeemi, mis kaardistab programmeerimiskeelte ajaloo 1950. – 2004.

1950. aastate keskel loodi keerukate matemaatiliste, statistiliste ja teaduslike probleemide lahendamiseks FORTRAN (valemitõlge). COBOL (“ühine ärile orienteeritud keel”) loodi 1959. aastal, et ettevõtetel oleks koodide kasutamist lihtsam teha. Statistilise analüüsi tegemiseks sobivad mõned keeled, näiteks R (1976).

Alates 1970. aastatest oli tõusnud üldotstarbelised programmeerimiskeeled, näiteks C, C ++, C # ja Java. Nagu ülaltoodud diagrammilt näha, domineerivad kümne populaarseima keele seas üldotstarbelised keeled.

1995. aastal loodud JavaScript on veebi jaoks populaarne keel. See annab veebisaitidele nende interaktiivsuse ja elu.

Hiljuti oleme näinud uute keelte sündi, näiteks Go from Google, mis oli mõeldud suurte tarkvarasüsteemide tõhusamaks hooldamiseks. Tõenäoliselt näeme tulevikus loodud programmeerimiskeeli veelgi rohkem.

Koostatud vs tõlgendatud programmeerimiskeeled

Kui hakkate programmeerimiskeeli paremini tundma õppima, puutute kokku kompileeritud ja tõlgendatud programmeerimiskeeltega. Mis vahe on?

Mis on koostatud keel?

Programmeerimiskeeltel, nagu C, C ++ ja Java, on „ehitamisprotsess“, kus teie kood kompileeritakse arvuti loetavamasse vormingusse (masinakeel).

Võib olla lihtsam mõelda kahest inimesest, kes ei räägi ühes keeles, kuid nad peavad tegema koostööd. John räägib inglise keelt ja Chloe prantsuse keelt. Chloe kirjutab prantsuse keeles šokolaadist suflee valmistamise juhiste komplekti, kuid John ei saa sellest aru. Neil on vaja tõlki, kes oskaks rääkida nii inglise kui prantsuse keeles. See on lihtsam, kui tõlk suudab Chloe juhised enne tõlkimist enne tõlkima asuda.

Selle asemel "räägivad" arendajad programmeerimiskeelt nagu Java või Python. Nad vajavad enne programmi käivitamist, et nende kood kompileeritaks (tõlgitaks) masinakeelde, et arvuti sellest aru saaks.

Kompileeritud keelest tehtud programme on arvutil lihtsam mõista ja seetõttu töötatakse need väga kiiresti.

Mis on tõlgendatud keel?

JavaScripti, PHP ja Pythoni näited on tõlgendatud programmeerimiskeeled. Koostamisprotsessi pole ja koodi pole vaja kompileerida. Programmi käivitamisel tõlgendatakse teie koodi või loetakse seda rea ​​kaupa.

Tagasi minu Chloe ja Johni analoogia juurde. Johannes kirjutab üles juhendite komplekti, kuidas karjasepirukat teha. Tõlk ei tõlgi Johni juhiseid ette, vaid liitub nendega nende kokandusseansiks. Tõlk tõlkib Johni juhiste iga rea ​​inglise keelest prantsuse keelde, kui Chloe kokkab. Seetõttu võtab Chloe söögi valmistamine ja küpsetamine kauem aega.

Seetõttu on tõlgendatud keeled aeglasemad kui kompileeritud keeled. Need tuleb tõlkida lennult, et arvuti saaks aru.

Kuid just-in-time (JIT) koostajate abil muutuvad tõlgendatud keeled kiiremaks ja tõhusamaks.

Millise programmeerimiskeele (de) peaksin õppima?

Programmeerimiskeeled teevad üsna sama asja, kuid need on lihtsalt erinevad viisid, kuidas samu juhiseid arvutisse väljendada. Kui olete mõistnud ühe programmeerimiskeele mõisteid ja põhialuseid, ei ole teise keele õppimise kõver nii järsk.

Programmeerimiskeel, mille peaksite kõigepealt õppima, sõltub paljudest teguritest. Näiteks tahtsin olla veebiarendaja, nii et valisin oma peamiseks programmeerimiskeeleks JavaScripti. Teised veebi keeled, mida saate õppida, on PHP ja Ruby on Rails.

Kui soovite saada andmeteadlaseks, võib Python olla üks võimalus. Pythoni peetakse üheks parimaks andmeteaduse tööriistaks suurandmete analüüsimiseks. Mainisin varem R-d, mis on veel üks andmeteadlaste ja statistikute seas laialt kasutatav keel.

Python on üldotstarbeline programmeerimiskeel ja seda on kasulik õppida ka siis, kui soovite jõuda masinõppe ja tehisintellekti valdkonda.

Kui soovite saada tarkvarainseneriks, võiks Java olla üks võimalus. Java on üks populaarsemaid ja nõutumaid keeli maailmas. See on mitmekülgne keel, mida saab kasutada väikeste ja suurte ettevõtete tarkvara arendamiseks.

Mõelge siis sellele, millist rolli tehnikas soovite ja millistes ettevõtetes soovite töötada.

Programmeerimiskeele valik sõltub ka sellest, millist tarkvara proovite ehitada. See viib meid kenasti meie järgmise jaotise juurde.

Mis on tarkvara?

Mitu korda te ühel päeval tarkvaraga suhtlete?

Tarkvara on kõikjal. See on integreeritud manustatud süsteemidena igapäevastesse seadmetesse, nagu mikrolaineahi, pesumasinad, autod, telerid, laste mänguasjad ja kaugjuhtimispuldid. Siis on veel ilmsemaid arvutiga seotud seadmeid, millel on rakendus ja / või süsteemitarkvara, näiteks tahvelarvutid, nutitelefonid, sülearvutid, lauaarvutid ja koduabilised nagu Alexa.

Tavainimene suhtleb tarkvaraga ilmselt paarkümmend korda päevas, kui mitte rohkem. See on osa meie igapäevaelust.

Kogu tarkvara on programmeerinud arendaja. Tarkvara on oma olemuselt vilgas ja suudab pidevalt korduda. Tarkvara ja riistvara on omavahel põimunud. Kujutage ette oma telefoni ilma selle rakenduste ja operatsioonisüsteemita. Telefon oleks sisuliselt kallis tellis! Seetõttu annab tarkvara riistvarale eluea ja riistvara on see, kuidas me tarkvaraga suhtleme.

Suurem osa programmeerijate loodud tarkvarast on kirjutatud kõrgel tasemel programmeerimiskeeles.

Mis on tarkvaraarendus?

Tarkvaraarendus on kõike idee väljatöötamisest arendamise ja juurutamiseni. Seda protsessi alates idee väljatöötamisest kuni tarkvara juurutamiseni nimetatakse ka tarkvara elutsükliks.

Tarkvara elutsüklil on mitu etappi: avastamine, kujundamine, programmeerimine / loomine, testimine ja juurutamine / käivitamine. See sisaldab ka kõike muud tarkvaraarenduse ökosüsteemis, näiteks hooldust, dokumentatsiooni ja veaparandusi.

Ma ei hakka siinkohal üksikasjalikult tutvuma, kuna tarkvaraarenduse teema nõuab oma artiklit.

Praegune tarkvaraarenduse ja arvutiprogrammeerimise suundumus

Tehisintellekt ja masinõpe

Viimastel aastatel olete ilmselt kuulnud sellistest terminitest nagu tehisintellekt ja masinõpe. Mõnikord kasutatakse neid vaheldumisi, kuid kas need on samad?

Ei, nad pole päris sama asi. Masinõpe on koht, kus masin õpib kogemuse kaudu. Kusjuures tehisintellekt on laiem idee, et masinad suudavad ülesandeid arukalt täita. Masinõpe on tehisintellekti alamhulk.

Mis on tehisintellekt?

Olen käsitlenud programmeerimiskeelte toimimist - programmeerija kirjutab arvuti täitmiseks juhiste komplekti. Tehisintellekt (AI) on laiem mõiste, kus arvutid võivad jäljendada aju toimimist. See õpetab masinat inimese moodi mõtlema.

Suur küsimus on: kas suudate inimese intelligentsust masinas korrata? Kas saate jäljendada seda, kuidas inimene õpib, põhjendab ja tajub? Alan Turing esitas selle küsimuse oma artiklis 1950:

"Kas masinad suudavad mõelda?"

(Arvutusmasinad ja intelligentsus, 1950, Alan Turing)

Turingi artiklis pakkus ta välja „Turingi testi”, kus masin klassifitseeritakse „intelligentseks”, kui inimene ei suuda inimese ja kunstlikult intelligentse masina vastuseid eristada.

70 aasta pärast üritavad tehisintellekti arendajad, akadeemikud, teadlased ja teadlased endiselt sellele küsimusele vastata ja luua kunstlikult intelligentset masinat. Ma ei usu, et me veel seal oleme. Kas olete proovinud Siri või Alexaga vestlust pidada? Vestlused nende kahe seadmega on endiselt põhilised. Siiski olen kindel, et tehnoloogia paranemine on vaid aja küsimus.

Sellised ettevõtted nagu DeepMind uurivad seda kontseptsiooni ja seda, kas masinad on intelligentsed. DeepMindi AlphaGo programm jõudis pealkirjadesse, kui võitis Go professionaalset mängijat. See oli tehisintellekti jaoks tohutu verstapost.

Mis on masinõpe?

Masinõpe (ML) on tehisintellekti alamhulk. ML on teistsugune programmeerimisviis. Idee on see, et arvutil on võimalus õppida ilma selgesõnaliselt programmeerimata. Masinõppe idee käis Arthur Samuel esmakordselt välja oma dokumendis 1959. aastal:

"Arvutite programmeerimine kogemustest õppimiseks peaks lõpuks kaotama vajaduse suurema osa selle üksikasjaliku programmeerimise järele."

Kui ma õpetasin oma pojale kassi äratundmist, näitasin talle kasside pilte. Tegin seda korduvalt, kuni ta suutis kassi ära tunda ilma, et ma teda käskisin.

Masinõpe on sellega sarnane. Annate oma arvutile sada pilti (sisend) kassidest. Seejärel õpib see andmete mustreid ja loob korduste abil klassifitseerimissüsteemi. Kui annate oma arvutile rohkem pilte kassidest ja teistest loomadest, peaks see suutma tuvastada, kas pildil olev loom on kass või mitte kass. Ta on sisuliselt õppinud, kuidas kass välja peaks nägema.

ML esitab teie arvuti andmeid ja näiteid ning omakorda on see võimeline ise õppima nagu imikud ja väikelapsed. Selle asemel, et arendajad arvutile juhiseid annaksid, loob arvuti masinõppe algoritmide järgimiseks oma juhiste komplekti. Masinõppe algoritmid on ML alamhulk, mõiste, mida tuntakse kui „sügavat õppimist“.

"Tehisintellekt on üks sügavamaid asju, mille kallal me inimkonnana töötame. See on sügavam kui tuli või elekter ... ”

(Sundar Pichai, Maailma Majandusfoorum, jaanuar 2020)

Alphabet Inc tegevjuhi Sundar Pichai tsitaat võtab kokku tehisintellekti ja ML tähtsuse.

Mis on arvutiprogrammeerimise tulevik?

Sellest viimasest osast saab minu prognoosid arvutiprogrammeerimise tuleviku kohta.

Arendajad jätkavad uute programmeerimiskeelte loomist. Programmeerimiskeeled muutuvad abstraktsemaks ja on seetõttu kodeerimist õppivatele inimestele ligipääsetavad.

Usun, et alg- ja keskkooli õppekavades pööratakse hariduse kodeerimisele ja programmeerimisele suuremat tähelepanu. Nõudlus arendajate ja programmeerijate järele ainult suureneb, kui tehnoloogia ja tarkvara integreeruvad meie igapäevaellu üha enam. Programmeerimine muutub üldlevinuks.

Näeme ML ja AI pidevat kasvu ja populaarsust, et aidata arendajaid tarkvara arendamise protsessis. See hõlmab testimise automatiseerimist ning haavatavuste ja vigade avastamist ja ennetamist.

Tehisintellekt muudab meie ühiskonna kõik aspektid, mitte ainult programmeerimise ja tarkvaraarenduse vallas. Näiteks oleme näinud suuri samme tehisintellekti ja isejuhtivate autode valdkonnas.

Üks juhtivaid isejuhtivaid autosid arendavaid ettevõtteid on Elon Muski asutatud Tesla. Inimjuhi järelevalve all saab Tesla auto nüüd automaatselt sõidurada vahetada, piiratud juurdepääsuga kiirteedel autonoomselt liikuda ning omanik saab auto kutsuda garaaži või parkimiskohta ja tagasi. Tesla eesmärk on luua täielikult automatiseeritud isejuhtiv auto ilma inimese järelevalveta.

Kui masinad muutuvad intelligentsemaks, võime jõuda punkti, kus masinad ületavad inimeste intelligentsust. Seda nimetatakse singulaarsuseks. See võib praegu tunduda täielik ulme! Kuid märkimisväärsed arvud, nagu Ray Kurzweil, ennustavad, et inimese tasemel intelligentsusega masinad on saadaval järgmise 20 aasta jooksul. Kurzweil on tuntud oma täpsete prognooside kohta, kuidas tehnoloogiad arenevad. Ta kirjutas selle kohta raamatu: Vaimsete masinate ajastu.

Kuidas muutub meie ühiskond ülintelligentsete masinate tulemusel?

Lõppsõnad

Tehnoloogia mõjutab ja kood puudutab peaaegu kõiki meie elu osi. Alates meelelahutuse valikust (võrgumängud, voogesitus) ja sellest, kuidas me ostleme, kuni söömise valimiseni ja isegi kohtinguni Kood on oluline ja rohkem töökohti vahetub ning see nõuab inimestelt vähemalt mingit põhiteadmist programmeerimisest.

Maailma arendajate populatsiooni ja demograafia uuringu 2019 kohaselt on maailmas vaid umbes 23,9 miljonit arendajat. Selle perspektiivi silmas pidades teab programmeerida vaid 0,3% maailma elanikkonnast. Nagu ma varem arutlesin, suureneb meie sõltuvus tarkvarast ja tehnoloogiast. USA tööbüroo statistika kohaselt kasvab nõudlus tarkvarainseneride järele aastatel 2018–2028 eeldatavasti 21%. Seetõttu peame arendajate arvu suurendama.

Kui mõtlete arendajaks saamise peale, alustage juba täna. See on uskumatult põnev aeg seda teha! Internetis on palju ressursse kodeerimiseks. On isetempoga platvorme nagu freeCodeCamp. Samuti on Laurence Bradfordi suurepärane postitus, mis koondab kõik parimad ressursid tasuta kodeerimise õppimiseks. Uurige veidi ja uurige, milline ressurss sobib teie õppimisstiiliga.

Kui teil on küsimusi või soovite lihtsalt tere öelda, leidke mind Twitterist @PhoebeVF.

Eriline tänu Katerina Limpitsounile ettevõttest Undraw selle artikli illustratsioonide loomise eest.