Mikä on tietokoneohjelmointi? Ohjelmistokehityksen määrittely.

Viisivuotias poikani Ramy lähestyi minua eräänä päivänä, kun työskentelin kotona ja kysyi: "Mitä teet äiti?"

"Työskentelen", vastasin.

Hän katsoi kannettavan tietokoneen näyttöä ja kysyi uudelleen: "Mutta mitä teet ?"

Pysyin tauossa ja aloin ajatella tätä. Olen web-kehittäjä ja ohjelmoin JavaScriptiä. Kuinka selitän tämän viiden vuoden ikäiselle?

"Kirjoitan ohjeet tietokoneelle ja tietokone tekee sen, mitä käsken sen tehdä. Tätä kutsutaan ohjelmoinniksi ”, selitin. Ramy näytti hämmentyneeltä.

Jatkoin: "Voin esimerkiksi antaa tietokoneelle ohjeet kahden numeron lisäämiseksi, ja se antaa minulle vastauksen." Kirjoitin toiminnon, joka lisäsi 2 + 2 ja näytti vastauksen näytölläni. Hänen silmänsä syttyivät.

Siitä lähtien aloin miettiä, mikä on ohjelmointi ? Mitä todella tapahtuu konepellin alla? Kun aloin oppia koodaamaan vuonna 2017 freeCodeCampissa, käytin sisäänrakennettua koodieditoria verkkosivustolla ja näen tulokset. En kuitenkaan oikeastaan ​​ymmärtänyt kulissien takana tapahtuvaa taikuutta.

Aloin tehdä tutkimusta, ja nämä olivat joitain hakemani termejä: "Mikä on tietokoneohjelmointi? Mikä on ohjelmisto? " Googlessa on yli 600 miljoonaa hakutulosta "Mikä on tietokoneohjelmointi?" Se on vähän kuin menen kaninreiästä - se voi olla monimutkaista ja ylivoimaista.

Halusin koota kattavan johdannon tietokoneohjelmoinnista ja ohjelmistokehityksestä aloittelijoille. Aloitan tietokoneohjelmoinnista ja sitten tietokoneohjelmointikielistä. Sitten puhun ohjelmistoista ja ohjelmistojen kehittämisestä. Lopuksi siirryn nykyisiin suuntauksiin ja tietokoneohjelmoinnin tulevaisuuteen.

Jos ajattelet siirtymistä ohjelmointimaailmaan tai olet vain kiinnostunut koodaamisen oppimisesta, tämä antaa sinulle yleiskatsauksen ilman (liikaa!) Teknistä ammattikieltä.

Vain yksi asia, joka on huomioitava: voit käyttää sanoja "Kehittäjä" ja "Ohjelmoija" tarkoittaa jotakuta, joka kirjoittaa koodin.

Mikä on tietokoneohjelmointi?

Wikipediassa "tietokoneohjelmointi" on määritelty seuraavasti:

"Tietokoneohjelmointi on suoritettavan tietokoneohjelman suunnittelu ja rakentaminen tietyn laskentatuloksen saavuttamiseksi."

Mutta mitä se tarkoittaa?

Tietokone itsessään ei ole älykäs. Kyllä, he ovat voimakkaita ja voivat suorittaa tehtäviä paljon nopeammin kuin ihminen. Mutta tietokoneet tarvitsevat ihmisen kirjoittamaan ohjeet ja kertomaan heille, mitä tehdä.

Siksi ohjelmointi on näiden ohjeiden kirjoittaminen. Tätä varten käytämme ohjelmointikieltä. Nämä ohjeet käännetään luettavaan muotoon, jonka tietokone ymmärtää. Tietokone suorittaa sitten ohjeet.

Ohjelmoidaan kuinka valmistaa kuppi teetä

Otetaan esimerkkinä kupin teetä. Jos annat ohjeet kupin teetä valmistamiseen, se näyttää seuraavalta:

  1. Kiehauta vettä
  2. Kaada kuumaa vettä kuppiin, jossa on teepussi
  3. Anna teen hautua
  4. Poista teepussi
  5. Lisää maitoa ja / tai sokeria (haluttaessa)

Yksinkertainen, eikö?

Mitä pidämme itsestäänselvyytenä, että kommunikointi ihmisen kanssa on erilainen kuin kommunikointi tietokoneen kanssa. Ihmisellä on ennakkotieto ja elämänkokemus - he saattavat tietää, mistä tee löytyy. Oletamme heidän tietävän, että maito varastoidaan jääkaapissa.

Ihmisillä on myös intuitio. Jos et löydä kuppia, voit sitten etsiä kaapista. Siellä lukee myös ihmisten sanattomia vihjeitä, kuten kehon kieli.

Ohjelmoinnin suhteen sinun on oltava hyvin tarkka. Jatkamalla kupin teetä valmistamista, voit kirjoittaa ohjeet näennäiskoodilla seuraavasti:

  1. Mene keittiöön
  2. Etsi vedenkeitin
  3. Avaa kattilan kansi
  4. Täytä vedenkeitin vedellä
  5. Kytke vedenkeitin päälle
  6. Odota, että se kiehuu 100 asteeseen
  7. Etsi kuppi

Ja niin edelleen.

Entä jos yllä olevien kaltaiset ohjeet eivät riitä? Saatat joutua lisäämään logiikkaa kaikkien skenaarioiden huomioon ottamiseksi. Esimerkiksi: 2) Etsi vedenkeitin. No, onko se vedenkeitin vai keitin, jonka laitat liedelle? Sinun on lisättävä ehto, että jos se on vedenkeitin, tee xyz. Muussa tapauksessa tee xyz keittimelle, jonka laitat liedelle.

Vaikka luulet, että olet ottanut huomioon kaikki mahdolliset tilat ja antanut hyvin tarkat ohjeet, on asioita, joita et voi ennakoida. Aloitat kupin teetä ja jotain menee pieleen. Voi ei! Vedenkeitin lakkaa toimimasta, kun olet kiehunut.

Mitä tapahtui? Koodissasi on vika! Virhe on virhe tai virhe koodissasi, mikä voi johtaa odottamattomiin tuloksiin. Korjataksesi koodisi käy läpi virheenkorjausprosessin, josta löydät koodisi ongelmat ja ratkaiset ongelmat.

Tässä tapauksessa ohjeidesi ei sisältänyt vedenkeittimen täyttämistä 0,8 litraan lämmityselementin peittämiseksi. Joten vedenkeitin sammuu turvatoimenpiteenä.

Estääksesi virheiden syntymisen ohjelman suorittamisen jälkeen, kehittäjät suorittavat ohjelmiensa testauksen ja yksikötestauksen. Yksikkötestaus on paikka, jossa kirjoitat testejä koodin osille. Testit joko epäonnistuvat tai läpäisevät.

Esimerkiksi kirjoitat funktion, joka lisää kaksi numeroa: 1 + 1. Sitten kirjoitat yksikkötestin, jossa odotettu tulos on 2. Kaikki vastaukset epäonnistuvat, ellei se ole 2.

Käy läpi koodisi, kunnes kaikki toimii ilman odottamattomia ongelmia. Ohjelmointi on siis yksityiskohtainen ja iteratiivinen prosessi, jossa parannat jatkuvasti aiemmin kirjoittamaasi.

Kuinka tietokoneesi ymmärtää koodisi?

Se, mitä useimmat ohjelmoijat kirjoittavat koodiksi, on korkean tason ohjelmointikieli. Se on suunnittelultaan abstrakti. Abstraktio tarkoittaa tässä yhteydessä, että olemme siirtymässä kauemmaksi konekoodista ja ohjelmointikielet ovat lähempänä puhuvia kieliä.

Mutta tietokone ei ymmärrä tekstipohjaista koodia. Se on käännettävä (käännettävä) konekoodiksi. Konekoodi on joukko ohjeita, jotka tietokoneen keskusyksikkö (CPU) ymmärtää. Ajattele prosessoria tietokoneen aivoina. Konekoodi koostuu yhdistä ja nollista. Tätä kutsutaan binaariseksi.

Esimerkiksi näin kirjoittaisit “Hello World” binaarina:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Kuten näette, binääriä ei ole helposti luettavissa ihmisille, joten pyrimme välttämään ohjelmointia konekoodissa!

Mikä on ohjelmointikieli?

Ohjelmointikielet kuuluvat sekä matalatasoisten kielten, kuten kokoonpano, että korkean tason ohjelmointikielien, kuten JavaScript, kirjoihin.

Mutta mikä on ohjelmointikieli tarkalleen? Paras analogia, jonka voin ajatella, ovat puhutut kielet, joita käytämme tänään. Kaikki kielet ilmaisevat saman idean, mutta eri tavoin toiselle henkilölle:

Englanti: Hei

Ranska: Bonjour

Espanja: Hola

Ohjelmointikielet ovat erilaisia ​​tapoja ilmaista sama idea, mutta sen sijaan tietokoneelle. Seuraava tulostaa "Hello" kolmella eri ohjelmointikielellä:

JavaScript: alert(“Hello”);

Python: print(“Hello”)

Perl: print "Hello";

Jokaisella ohjelmointikielellä on oma syntaksinsa. Englanniksi meillä on kielioppi. Sama koskee ohjelmointikieliä - niillä kaikilla on omat säännöt.

Mistä tiedät, onko ohjelmointikieli ohjelmointikieli?

Tämä saattaa tuntua oudolta kysyä. Onko kaikki koodi kirjoitettu ohjelmointikielellä? Teknisesti, ei. Esimerkiksi on väärinkäsitys siitä, että HTML (HyperText Markup Language) on ohjelmointikieli. Se on itse asiassa "julistava" kieli, joka Wikipedian mukaan on:

"... tietokoneohjelmien rakenteen ja elementtien rakentamisen tyyli - joka ilmaisee laskennan logiikan kuvaamatta sen ohjausvirtaa."

Toisin sanoen HTML tarjoaa verkkosivun rakenteen, mutta ei hallitse verkkosivuston käyttäytymistä tai toimintaa.

Voit selvittää, onko kieli ohjelmointikieli sen perusteella, onko se "Turing valmis". Turing Machine on hypoteettinen kone, jonka Alan Turing kuvasi vuonna 1936. Jotta ohjelmointikieli olisi Turingin täydellinen, se tarvitsee:

  1. Ehdollinen haarautuminen (jota tutkin alla).
  2. Kyky lukea ja kirjoittaa äärettömälle paperinauhalle. Tämä tarkoittaa lähinnä kykyä tallentaa tietoja muistiin.

En aio tutkia tätä aihetta syvällisesti, mutta jos olet kiinnostunut, tämä video on hyödyllinen esittely.

Mitkä ovat ohjelmointikielen perusteet?

On joitain peruselementtejä, jotka ovat yleisesti esillä. Tämä sisältää muuttujia, silmukoita, ehdollisia lauseita, tietorakenteita ja algoritmeja. Nämä ovat useimpien ohjelmointikielien rakennuspalikat.

Mikä on "for loop"?

Silmukat ovat hyödyllisiä, jos joudut suorittamaan joukon ohjeita toistuvasti. Esimerkiksi sinulla on iltapäiväteetä ja sinun on tehtävä viisi kupillista teetä vieraille. Yhden kupin teetä varten sinun on noudatettava joukkoa ohjeita, kuten aikaisempi esimerkkini.

Sen sijaan, että kirjoitat ohjeet viisi kertaa, voit pyytää tietokonetta käymään läpi samat ohjeet viisi kertaa. Tämän avulla voit skaalata.

Alla on esimerkki forperussilmukasta:

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

Mikä on ehdollinen lausunto?

JavaScriptissä meillä on if...elseehdollisia lauseita. Näitä käytetään, kun haluat suorittaa erilaisia ​​toimintoja ehdon perusteella.

Menee takaisin minun aiemmin esimerkiksi kysyt käyttäjää , jos he haluavat maitoa teetä. Jos he haluavat maitoa, lisää sitten maitoa teetä, muuten tee mitään.

Tässä on esimerkki if...elselauseesta JavaScriptissä:

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

Mitä ovat tietorakenteet?

"Tietorakenne on tapa järjestää data siten, että sitä voidaan käyttää tehokkaasti ... Ne ovat välttämättömiä ainesosia nopeiden ja tehokkaiden algoritmien luomisessa."

(Tietorakenteiden helppo jatkokurssi, William Fiset)

Yleiset tietorakenteet, jotka löydät useilta ohjelmointikieliltä, ​​ovat matriisit, objektit, joukot ja liittot. Otan taulukot esimerkkinä.

JavaScriptiä matriisi voi tallentaa useita tietoja, kuten numeroita ja merkkijonoja (teksti). Rakastan keksejä teen kanssa, joten aion tallentaa ne valikoimaani:

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

Nämä keksit tallennetaan tietokoneen muistiin, ja kehittäjänä pääset tiettyyn keksiin viittaamalla sen hakemistoon. Aloitat indeksin laskemisen nollasta. Indeksi on kuin keksin sijainti kekseissä. Voit viitata siihen käyttämällä hakasulkeita.

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

Jos haluat saada ruoansulatuskanavan keksi, voit käyttää sen hakemistosijaintiin: biscuits[1]. Voin helposti löytää sen, koska tiedän, mihin se on tallennettu.

Muista, että matriisin ensimmäinen kohde on indeksi 0. Joten kun viitataan indeksiin 1, se on itse asiassa matriisin toinen kohde.

Siksi tietorakenteet ovat tapa hallita tietoja. Tähän sisältyy tietojen tallentaminen ja noutaminen. Algoritmeja on tehokkaampi suorittaa, jos tiedot on järjestetty tietorakenteeseen.

Mikä on algoritmi?

Algoritmi on erityinen ohjeisto, joka ratkaisee ongelman. Se on abstrakti käsite. Tässä on linkki TED: n lyhyeen videoon aiheesta "Mikä on algoritmi?".

Muistatko, kun kirjoitimme ohjeita teekupin valmistamisesta aikaisemmin? Se on pohjimmiltaan algoritmi: sarja peräkkäisiä käskyjä.

Kun kirjoitin ensimmäisen funktioni JavaScriptiin, luin itse asiassa ensimmäisen algoritmini tietämättä, että se oli algoritmi! Funktio on algoritmin toteutus.

Aivan kuten tosielämässä, koodausongelmalle on usein useita ratkaisuja. Oletetaan esimerkiksi, että aiot käydä kahvilassa, jossa et ole koskaan ennen käynyt. On useita tapoja päästä määränpäähän. Jotkut reitit kestävät kauemmin kuin toiset, mutta lopulta ne kaikki vievät sinut samaan paikkaan. Ihannetapauksessa haluat valita nopeimman, tehokkaimman ja helpoimman reitin.

Samaa periaatetta voidaan soveltaa ohjelmointiin. Koodausongelman ratkaisemiseksi on yleensä muutama tapa, ja ohjelmoijat pyrkivät löytämään tyylikkään ja tehokkaan ratkaisun.

Kehittäjät eivät useinkaan ymmärrä sitä heti ensimmäisellä kerralla! Aivan kuten kirjoitan ensimmäisen luonnoksen artikkelille, se on sama koodaukselle. Kirjoitan artikkelin uudelleen useita kertoja, joissa voin muuttaa rakennetta, muokata, kirjoittaa osia uudelleen ja leikata tarpeettomia lauseita. Ohjelmoinnissa käymme läpi samanlaisen prosessin, ja kutsumme tätä koodin uudistamiseksi.

Mitkä ovat nykyisin tärkeimmät ohjelmointikielet? Kuinka monta siellä on?

Näyttää olevan jonkin verran keskustelua ohjelmointikielten kokonaismäärästä Internetissä. Joillakin verkkosivustoilla, kuten Wikipediassa, on luettelo noin 700 "kaikista merkittävistä" nykyisistä ja historiallisista ohjelmointikielistä. Muut sivustot, kuten Tiobe, seuraavat ja seuraavat 250 suosituinta kieltä.

Githubissa vuoden 2019 suosituin ohjelmointikieli oli JavaScript:

Miksi ohjelmointikieliä on niin paljon? Kuinka ohjelmointikielet ovat kehittyneet?

Eri ohjelmointikielet on kehitetty tyydyttämään erilaisia ​​tarpeita. Tämä näkyy koko ohjelmointikielien historiassa. Katso tämä O'Reillyn kaavio, joka kuvaa ohjelmointikielien historiaa 1950-luvulta 2004.

1950-luvun puolivälissä FORTRAN (Formula Translation) luotiin käsittelemään monimutkaisia ​​matemaattisia, tilastollisia ja tieteellisiä ongelmia. COBOL (”Common Business Oriented Language”) perustettiin vuonna 1959 helpottamaan koodien käyttöä yrityksillä. On joitain kieliä, jotka soveltuvat paremmin tilastollisen analyysin tekemiseen, kuten R (1976).

Yleiskäyttöiset ohjelmointikielet, kuten C, C ++, C # ja Java, nousivat 1970-luvulta lähtien. Kuten yllä olevasta kaaviosta näet, yleisimmät kielet hallitsevat kymmenen suosituinta kieltä.

Vuonna 1995 luotu JavaScript on suosittu verkkokieli. Se antaa verkkosivustoille vuorovaikutteisuuden ja elämän.

Viime aikoina olemme nähneet uusia kieliä, kuten Go from Google, jonka tarkoituksena oli ylläpitää suuria ohjelmistojärjestelmiä tehokkaammin. Tulevaisuudessa näemme todennäköisesti lisää ohjelmointikieliä.

Koottu vs. tulkitut ohjelmointikielet

Kun alat tutustua ohjelmointikieliin, törmäät käännettyihin ja tulkittuihin ohjelmointikieliin. Mikä on ero?

Mikä on käännetty kieli?

Ohjelmointikielillä, kuten C, C ++ ja Java, on "rakennus" -prosessi, jossa koodisi käännetään tietokoneeseen luettavampaan muotoon (konekieleksi).

Voi olla helpompaa ajatella kahta ihmistä, jotka eivät puhu samaa kieltä, mutta heidän on tehtävä yhteistyötä. John puhuu englantia ja Chloe puhuu ranskaa. Chloe kirjoittaa joukon ohjeita suklaasoufflen valmistamisesta ranskaksi, mutta John ei ymmärrä sitä. He tarvitsevat kääntäjän, joka osaa puhua sekä englantia että ranskaa. On helpompaa, jos kääntäjä pystyy kääntämään Chloen ohjeet etukäteen ennen kuin he alkavat kokata yhdessä.

Sen sijaan kehittäjät "puhuvat" ohjelmointikieltä, kuten Java tai Python. He tarvitsevat koodinsa käännettynä (käännettynä) konekielelle ennen kuin ohjelma voidaan suorittaa, jotta tietokone ymmärtää sen.

Käännetystä kielestä tehdyt ohjelmat ovat tietokoneelle helpommin ymmärrettäviä, ja siksi ne toimivat hyvin nopeasti.

Mikä on tulkittu kieli?

JavaScript, PHP ja Python ovat esimerkkejä tulkituista ohjelmointikielistä. Rakennusprosessia ei ole, eikä koodia tarvitse kääntää. Koodiasi tulkitaan tai luetaan rivi riviltä, ​​kun suoritat ohjelmaa.

Takaisin analogiani Chloesta ja Johnista. John kirjoittaa muistiin joukon ohjeita paimenpiirakan valmistamisesta. Kääntäjä ei käännä Johnin ohjeita etukäteen, vaan liittyy heidän kanssaan heidän ruoanlaittotilaisuuteensa. Kääntäjä kääntää kaikki Johnin ohjeiden rivit englannista ranskaksi Chloen kokkeina. Tämän vuoksi Chloen aterian valmistaminen ja valmistaminen kestää kauemmin.

Siksi tulkitut kielet ovat hitaampia kuin käännetyt kielet. Ne on käännettävä lennossa, jotta tietokone ymmärtää.

Mutta just-in-time (JIT)-kääntäjien avulla tulkitut kielet ovat nopeutumassa ja tehokkaampia.

Mitä ohjelmointikieliä haluaisin oppia?

Ohjelmointikielet tekevät melkein saman asian, mutta ne ovat vain erilaisia ​​tapoja ilmaista samat ohjeet tietokoneelle. Kun olet ymmärtänyt yhden ohjelmointikielen käsitteet ja perusteet, toisen kielen oppimiskäyrä ei ole yhtä jyrkkä.

Ohjelmointikieli, jonka sinun pitäisi ensin oppia, riippuu useista tekijöistä. Halusin esimerkiksi olla verkkokehittäjä, joten valitsin JavaScriptin ensisijaiseksi ohjelmointikieleksi. Muita verkkokieliä, joita voit oppia, ovat PHP ja Ruby on Rails.

Jos haluat tulla datatieteilijäksi, Python saattaa olla vaihtoehto. Pythonia pidetään yhtenä parhaista datatieteen työkaluista suurten tietojen analysointiin. Mainitsin aiemmin R: n, joka on toinen kieli, jota käytetään laajasti datatieteilijöiden ja tilastotieteilijöiden keskuudessa.

Python on yleiskäyttöinen ohjelmointikieli, ja siitä on hyötyä myös oppimisessa, jos haluat päästä koneoppimisen ja tekoälyn kentälle.

Jos haluat tulla ohjelmistoinsinööriksi, Java voi olla vaihtoehto. Java on yksi suosituimmista ja kysytyimmistä kielistä maailmassa. Se on monipuolinen kieli, jota voidaan käyttää pienten ja suurten yritysten ohjelmistojen kehittämiseen.

Joten mieti mitä roolia tekniikassa haluaisit ja millaisissa yrityksissä haluat työskennellä.

Ohjelmointikielen valinta riippuu myös siitä, mitä ohjelmistoa yrität rakentaa. Tämä johtaa meidät hienosti seuraavaan osioon.

Mikä on ohjelmisto?

Kuinka monta kertaa olet vuorovaikutuksessa ohjelmistojen kanssa tiettynä päivänä?

Ohjelmisto on kaikkialla. Se on integroitu sulautettuina järjestelminä jokapäiväisiin laitteisiin, kuten mikroaaltouuniin, pesukoneisiin, autoihin, televisioihin, lasten leluihin ja kaukosäätimiin. Sitten on ilmeisempiä tietokoneisiin liittyviä laitteita, joilla on sovellus- ja / tai järjestelmäohjelmistoja, kuten tabletit, älypuhelimet, kannettavat tietokoneet, pöytätietokoneet ja Alexan kaltaiset kodin avustajat.

Keskimääräinen ihminen on todennäköisesti vuorovaikutuksessa ohjelmistojen kanssa muutama kymmenen kertaa päivässä, ellei enemmän. Se on osa jokapäiväistä elämäämme.

Kehittäjä on ohjelmoinut kaikki ohjelmistot. Ohjelmisto on luonteeltaan ketterä ja voi toistaa jatkuvasti. Ohjelmistot ja laitteistot ovat kietoutuneet toisiinsa. Kuvittele puhelimesi ilman sen sovelluksia ja käyttöjärjestelmää. Puhelin olisi pohjimmiltaan kallis tiili! Siksi ohjelmisto antaa laitteistolle käyttöiän ja laitteisto on se, miten olemme vuorovaikutuksessa ohjelmiston kanssa.

Suurin osa ohjelmoijien luomista ohjelmistoista on kirjoitettu korkean tason ohjelmointikielellä.

Mikä on ohjelmistokehitys?

Ohjelmistokehitys on kaikkea idean suunnittelusta kehitykseen ja käyttöönottoon. Tämä prosessi ideon suunnittelusta ohjelmistojen käyttöönottoon tunnetaan myös ohjelmiston elinkaarena.

Ohjelmiston elinkaaressa on useita vaiheita: etsiminen, suunnittelu, ohjelmointi / luominen, testaus ja käyttöönotto / toteutus. Se sisältää myös kaiken muun ohjelmistokehityksen ekosysteemissä, kuten ylläpidon, dokumentoinnin ja virhekorjaukset.

En tarkoita tässä, koska ohjelmistokehityksen aihe takaa oman artikkelin.

Ohjelmistokehityksen ja tietokoneohjelmoinnin nykyiset suuntaukset

Tekoäly ja koneoppiminen

Viime vuosina olet todennäköisesti kuullut termeistä, kuten tekoäly ja koneoppiminen. Joskus niitä käytetään keskenään, mutta ovatko ne samat?

Ei, he eivät ole aivan sama asia. Koneoppimisessa kone oppii kokemuksen kautta. Tekoäly on laajempi ajatus, että koneet voivat suorittaa tehtäviä älykkäästi. Koneoppiminen on tekoälyn osajoukko.

Mikä on tekoäly?

Olen katsonut kuinka ohjelmointikielet toimivat - ohjelmoija kirjoittaa joukon ohjeita tietokoneelle suoritettavaksi. Tekoäly (AI) on laajempi käsite, jossa tietokoneet voivat jäljitellä aivojen toimintaa. Se kouluttaa konetta ajattelemaan ihmisen tavoin.

Suuri kysymys on: voitko kopioida ihmisen älykkyyden koneessa? Voitteko matkia tapaa, jolla ihminen oppii, syitä ja mieltää? Alan Turing esitti tämän kysymyksen artikkelissaan vuonna 1950:

"Voivatko koneet ajatella?"

(Computing Machinery and Intelligence, 1950, Alan Turing)

Turingin artikkelissa hän ehdotti "Turingin testiä", jossa kone luokitellaan "älykkääksi", ellei henkilö pystyisi erottamaan ihmisen ja keinotekoisesti älykkään koneen vastauksia.

70 vuoden jälkeen tekoälyn kehittäjät, tutkijat, tutkijat ja tutkijat yrittävät edelleen vastata tähän kysymykseen ja luoda keinotekoisesti älykkään koneen. En usko, että olemme vielä siellä. Oletko yrittänyt keskustella Sirin tai Alexan kanssa? Keskustelut näiden kahden laitteen kanssa ovat edelleen perustavanlaatuisia. Olen kuitenkin varma, että tekniikan parantuminen on vain ajan kysymys.

DeepMindin kaltaiset yritykset tutkivat tätä konseptia ja sitä, pystyvätkö koneet älykkyydelle. DeepMindin AlphaGo-ohjelma nousi otsikoihin, kun se voitti Go-ammattilaisen. Tämä oli tekoälylle valtava virstanpylväs.

Mikä on koneoppiminen?

Koneoppiminen (ML) on tekoälyn osajoukko. ML on erilainen tapa ohjelmoida. Ajatuksena on, että tietokoneella on kyky oppia ilman nimenomaista ohjelmointia. Koneoppimisen ajatuksen Arthur Samuel keksi ensimmäisen kerran paperissaan vuonna 1959:

"Tietokoneiden ohjelmoiminen kokemuksesta oppimiseen pitäisi lopulta poistaa tarpeen suurelle osalle tätä yksityiskohtaista ohjelmointityötä."

Kun opetin poikani tunnistamaan kissan, näytin hänelle kuvia kissoista. Tein tämän toistuvasti, kunnes hän pystyi tunnistamaan kissan ilman minun kehotusta.

Koneoppiminen on samanlainen kuin tämä. Annat tietokoneellesi sata kuvaa (syöttö) kissoista. Sitten se oppii datan mallit ja rakentaa luokitusjärjestelmän toistamalla. Jos annat tietokoneellesi enemmän kuvia kissoista ja muista eläimistä, sen pitäisi pystyä tunnistamaan, onko kuvassa oleva eläin kissa vai ei. Se on pohjimmiltaan oppinut miltä kissan tulisi näyttää.

ML antaa tietokoneellesi tietoja ja esimerkkejä, ja puolestaan ​​se pystyy oppimaan itselleen kuten vauvat ja pienet lapset. Sen sijaan, että kehittäjät antavat ohjeet tietokoneelle, tietokone luo omat ohjeet koneoppimisalgoritmien seuraamiseksi. Koneoppimisalgoritmit ovat ML: n osajoukko, joka tunnetaan nimellä "syvä oppiminen".

"Tekoäly on yksi syvimmistä asioista, joiden parissa työskentelemme ihmiskuntana. Se on syvällisempää kuin tuli tai sähkö ... "

(Sundar Pichai, Maailman talousfoorumi, tammikuu 2020)

Alphabet Inc: n toimitusjohtajan Sundar Pichain lainaus tiivistää tekoälyn ja ML: n merkityksen.

Mikä on tietokoneohjelmoinnin tulevaisuus?

Tämä viimeinen osa on ennustani tietokoneohjelmoinnin tulevaisuudesta.

Kehittäjät jatkavat uusien ohjelmointikielien luomista. Ohjelmointikielistä tulee abstraktimpia, joten koodaamista oppivat henkilöt voivat käyttää niitä.

Uskon, että peruskoulun ja lukion opetussuunnitelmissa korostetaan opetuksen koodaamista ja ohjelmointia. Kehittäjien ja ohjelmoijien kysyntä vain kasvaa, kun tekniikka ja ohjelmistot integroituvat yhä enemmän jokapäiväiseen elämäämme. Ohjelmoinnista tulee kaikkialla.

Näemme ML: n ja tekoälyn jatkuvan nousun ja suosion kehittäjien auttamiseksi ohjelmistokehitysprosessissa. Tähän sisältyy testauksen automatisointi sekä haavoittuvuuksien ja virheiden havaitseminen ja estäminen.

Tekoäly mullistaa kaikki yhteiskuntamme osa-alueet, ei vain ohjelmoinnissa ja ohjelmistokehityksessä. Olemme esimerkiksi nähneet suuria edistysaskeleita tekoälyn ja itse ajavien autojen alalla.

Yksi maailman johtavista autoja kehittävistä yrityksistä on Tesla, jonka perusti Elon Musk. Ihmisen kuljettajan valvonnassa Tesla-auto voi nyt vaihtaa kaistaa automaattisesti, navigoida itsenäisesti rajoitetuilla moottoriteillä, ja omistaja voi kutsua auton autotalliin tai pysäköintialueelle. Teslan tavoitteena on luoda täysin automatisoitu, itse ajava auto ilman ihmisen valvontaa.

Kun koneista tulee älykkäämpiä, voimme päästä pisteeseen, jossa koneet ylittävät ihmisten älykkyyden. Tätä kutsutaan singulariteetiksi. Se voi tuntua täydelliseltä tieteiselta fiktiolta tällä hetkellä! Mutta merkittävät luvut, kuten Ray Kurzweil, ennustavat, että koneet, joilla on älykkyyttä älykkyyttä, ovat saatavilla seuraavan 20 vuoden aikana. Kurzweil tunnetaan tarkoista ennusteistaan ​​teknologian etenemisestä. Hän kirjoitti kirjan tästä: Hengellisten koneiden aikakausi.

Kuinka yhteiskuntamme muuttuu superälykkäiden koneiden seurauksena?

Viimeiset sanat

Teknologia vaikuttaa ja koodi koskettaa melkein jokaista elämäämme. Viihdevalinnastamme (verkkopelit, suoratoisto) ja ostoksistamme aina siihen, mitä syömme ja jopa tapaamme! Koodi on tärkeä, ja lisää työpaikkoja vaihtuu ja edellyttää ihmisiltä ainakin jonkinlaista perustuntemusta ohjelmoinnista.

Silti maailmassa on vain noin 23,9 miljoonaa kehittäjää vuoden 2019 Global Developer Population and Demographic -tutkimuksen mukaan. Tämän näkökulmasta vain 0,3% maailman väestöstä osaa ohjelmoida. Kuten aiemmin keskustelin, riippuvuutemme ohjelmistoista ja tekniikoista kasvaa. Yhdysvaltain työvaliokunnan tilastojen mukaan ohjelmistosuunnittelijoiden kysynnän odotetaan kasvavan 21% vuodesta 2018 vuoteen 2028. Siksi meidän on lisättävä kehittäjien määrää.

Jos olet ajatellut tulla kehittäjäksi, aloita jo tänään. Se on uskomattoman jännittävä aika tehdä niin! Verkossa on monia koodaamisen oppimisen resursseja. On itsetempoisia alustoja, kuten freeCodeCamp. Siellä on myös loistava viesti Laurence Bradford, joka kokoaa kaikki parhaat resurssit oppia koodaamaan ilmaiseksi. Tee tutkimusta ja selvitä, mikä resurssi sopii oppimistyyliisi.

Jos sinulla on kysyttävää tai haluat vain tervehtiä, etsi minut Twitteristä @PhoebeVF.

Erityinen kiitos Katerina Limpitsounille Undrawista tämän artikkelin kuvien luomisesta.