-
Bog, moje ime je Nick Parlante, a ovo je nastava o
-
svojstvima računala. Kako ona funkcioniraju, što mogu, a što ne mogu raditi.
-
Ne traži se nikakvo predznanje o računalima. Namijenjena je svima. Dakle prije
-
nego što započnem, želio bih se, kratko, zahvaliti Google-u na podršci mojim ranim
-
istraživanjima na ovu temu, koja su u konačnici pomogla u kreiranju ove nastave. Također
-
kratka napomena o obliku. Nastava se ne sastoji samo od videa. Uz svako poglavlje videa
-
postoji i neka vrsta pisanog dokumenta, kojeg ću listati, pomicati, na ekranu, koji
-
prati izlaganje i sadrži dijagrame, primjere koda i slične stvari.
-
Dakle, vi možete u bilo kojem trenutku prelaziti s videa na dokument
-
ako želite ponovo pročitati obrazloženje ili isprobati neki primjer ili slično.
-
Postoji velika razlika između gledanja kako ja nešto radim i pokušaja da to sami napravite.
-
Moj savjet bi bio: Puno puta, na kraju poglavlja imati ćemo vježbe.
-
Tada, prije nego što probate odraditi vježbe, odlučiti da li ste spremni
-
odmah prijeći na vježbe ili se želite vratiti na
-
dokument i malo sami eksperimentirati s primjerima da učvrstite
-
svoje znanje. Tek toliko da znate da vam ta mogućnost stoji na raspolaganju za svako poglavlje.
-
Rekao bih da je temeljna jednadžba računala:
-
računalo je "moćno" plus "glupo". Moćno u smislu da računala mogu
-
obaviti na milijarde operacija. Ona rade nezamislivo brzo. Ali,
-
operacije su "glupe" u smislu da su operacije koje računalo izvodi
-
u suštini vrlo jednostavne, one su potpuno mehaničke. One nemaju ništa što bi mi
-
opisali kao inteligentni (čovjekov) uvid u to na čemu rade. Dakle ta čudna
-
kombinacija, na neki način, velike moći kombinirane s nekom vrstom mehaničke
-
ograničenosti (gluposti). Taj obrazac postati će kristalno jasan dok budemo obrađivali
-
ove male primjere koda, kako bi se na neki način poigrali u računalnom svijetu.
-
Sad sam malo provokativan, na neki način ismijavam računala. "O da, ona su glupa",
-
ali u drugu ruku vidimo da su računala ...
ona su vrlo korisna.
-
Na neki način to je ono o čemu ova predavanja govore. S jedne strane ulaženje
-
u, na neki način zabavan svijet računala koji je pomalo mehanički onda ga povezivati
-
sa stvarima poput email-a i MP3 zvučnih zapisa. Stvarima koje su u realnom svijetu
-
vrlo uobičajene. Pokušavati povezati ta dva svijeta i pokazati kako računala funkcioniraju
-
i kako se to uklapa u svijet.
Moj cilj je da kad odradite nastavu
-
kako računala rade i kako se uklapaju u svijet.
-
I da ne budete zastrašeni računalima. Da ne mislite o njima kao nekakvoj magiji,
-
neshvatljivoj kutiji. Imam također i skriveni plan.
Premalo ima u svijetu onih koji se bave
-
računalnom znanošću. Postoji velik broj problema za koje bi željeli da budu riješeni
-
ali jednostavno nema dovoljno ljudi koji bi napisali programe za sve njih. Dakle,
-
moj skriveni plan je da, otvarajući vam pogled u računalni svijet i način kako
-
on funkcionira, vi otkrijete da ste zainteresirani nastaviti se baviti
-
računalnom znanošću i dalje. Dakle prva približan uvid u koji želim ući:
-
Kako računala funkcioniraju?
Iznutra je računalo pogonjeno kodom.
-
Mi ćemo detaljnije o tome kasnije. Ovo bi trebao biti samo prvi uvid.
-
Napravio sam ovdje malu sliku računala. Kod unutar računala sastavljen je
-
od ovih jednostavnih naredbi. Jedna naredba mogla bi biti da se zbroje dva broja,
-
izračuna se koliko je 1 više 1 ili da se provjeri da li je 2 manje od 10.
-
To je ono što računalo radi, na prvi pogled ono samo izvodi ovu listu naredbi.
-
Svaka je instrukcija vrlo jednostavna i računalo jednostavno izvodi jednu po jednu
-
s liste, ali ih izvodi izuzetno velikom brzinom.
-
Svaka instrukcija ima neku vrstu određenog mehaničkog dojma. Rekao bih,
-
da nas ovo vodi prema prirodnom pitanju koje glasi: Ako ... ako računalo
-
samo mehanički izvodi niz instrukcija, kako je moguće da ono obavlja
-
tako mnogo korisnih stvari u svijetu. Imam ovaj dijagram za taj slučaj.
-
Na desnoj strani zamisliti ću neke korisne mogućnosti poput
-
uklanjanja "crvenih očiju" ili instant messaging-a. Reći ću radi pojašnjenja da morate znati
-
da su vaš mobitel, vaš digitalni fotoaparat, sve su to računala.
Dakle na desnoj strani
-
imam korisnu mogućnost: "uklanjanje crvenih očiju",
a na lijevoj strani
-
imam računalo, koje upravo izvodi svoje, kao što znate, jednostavne mehaničke instrukcije.
-
Što je ono što povezuje ova dva pogleda?
A odgovor je
-
to je u suštini računalno programiranje.
Postoji osoba
-
računalni programer, koji u početku ima ideju. O, trebam ukloniti efekt "crvenih očiju",
-
to bi bilo vrlo korisno. Oni koriste svoju kreativnost i svoju imaginaciju
-
da smisle što bi računalo moglo korisno obaviti.
-
I tada, ono što programer radi je da strukturira i
-
razdijeli taj problem, tako da ga računalo može obaviti. Oni instruiraju računalo,
-
i strukturiraju stvari tako da to računalo može obaviti tu korisnu stvar.
-
To je ono što programiranje jest. I u stvari za bilo koju korisnu stvar
-
koju izvodite svojom digitalnom kamerom ili svojim mobitelom
-
ili svojim računalom, u pozadini stoji osoba koja je omogućila da se to dogodi.
-
Sviđa mi se ta kombinacija. Na neki način programer, osoba,
-
unosi svoju kreativnost i svoj pogled na svijet i razmišljanje o stvarima
-
koje bi bilo korisno napraviti i to je njihova polovica problema. A računalo
-
donosi ono u čemu je računalo dobro. Rekao bih da je računalo dobro u tome što je
-
u konačnici prilično jeftino. Računalo je u stanju izvoditi ove instrukcije
-
vrlo, vrlo brzo i tako u konačnici dobivamo ovu lijepu kombinaciju.
-
To je na neki način razlog što tako veliki broj računala
-
u svijetu izvodi tako mnogo korisnih stvari. To pokazuje da je ovo dobro partnerstvo
-
između ljudi i računala. Na svoj način ovaj dijagram je pomalo sažetak ovih predavanja.
-
Posjetiti ćemo na lijevoj strani da vidimo, pomalo, da vidimo
-
kako izgleda računalni svijet. I pogledati na vezu između tih
-
i aktualnih mogućnosti koje ste koristili i donekle razumjeli kako se računalo uklapa
-
u svijet i omogućava da se stvari obave. U drugom dijelu ovog poglavlja
-
započeti ću izvoditi male primjere koda. I moram kazati da će to zahtijevati
-
nešto strpljenja. Početi ću pisati kod ... i naš prvi
-
primjer biti će vrlo jednostavan. On neće obavljati ništa blistavo.
-
Rekao bih da je to pomalo kao LEGO kockice. Svaki komad koda koji naučimo
-
predstavlja dodatnu kockicu, i s vremenom ćemo biti u mogućnosti sastaviti ih
-
zajedno i napraviti prilično zgodne stvari. Međutim u ovih prvih nekoliko poglavlja
-
stvari ..., negdje moramo započeti, i ovi prvi primjeri su vrlo jednostavne.
-
Molim vas stoga za strpljenje i obećavam da ćemo postići nešto zgodno s ovim materijalom
-
U stvari, ovdje stavljam malo nagovještaja, kroz nekoliko sati predavanja
-
započeti ćemo raditi specijalne vizualne efekte.
-
Poigrati ćemo se poznatim, tu prikazanim, majmun-mjesec-banana problemom.
-
Samo malo naznake gdje ćemo dospjeti.
Ali ono što ćemo raditi danas su vrlo
-
jednostavni komadići koda. Za ove vježbe kodiranja koristiti ćemo programski jezik zvan
-
JavaScript. JavaScript je vrlo popularan jezik. Izvodi se u web pregledniku (browser-u)
-
što ga čini iznimno popularnim. To je i razlog koji ga
-
čini pogodnim za ovu nastavu. Jer radi, jer mi radimo u web browser-u,
-
moguće je da naš kod funkcionira vrlo jednostavno.
Koristiti ćemo JavaScript plus još neke
-
dodatke koje sam dodao samo za ova predavanja. Tako ovo neće izgledati baš kao
-
profesionalni JavaScript kod. Raditi ćemo na dijelovima koda
-
koji je u konačnici vrlo kratak, tek toliko da ukažemo na poantu
-
onog što pokazujemo i pomalo istražimo računala, ali bez dovlačenja puno "prtljage"
-
koja bi bila nužna za pisanje kompletnih profesionalnih programa.
-
Evo dakle mog prvog primjera. Ono što će kod napraviti za nas je ...
-
imamo ovo pravokutno područje i ovaj tekst u okviru njega
-
to je kod. Imati ćemo svaki put "RUN" gumb ovdje dolje.
Kad napravim klik mišem
-
na RUN gumb. Ono što će se dogoditi je da će računalo otići ovdje gore i
-
jednostavno proći ovim linijama. On će jednostavno, kao što kažemo, izvesti svaku liniju.
-
Obaviti će ono što ona kaže. U ovom slučaju, dakle, ono što gledamo je
-
print funkcija. Dakle imamo riječ "print". Način na koji je print funkcija uvedena u kod
-
je da imamo riječ "print" i onda imamo lijevu (otvorenu) zagradu i nakon nje niz stvari
-
U ovom primjeru to je samo brojka 6 nakon čega
-
redak završava s desnom (zatvorenom) zagradom i znakom točkom-zarez. Ono što print funkcija radi je
-
da uzme one stvari koje pišu u zagradama i ispisuje ih.
-
Ako pogledate preko na desnu stranu ovo je ispis
-
koji se dobije kad kliknemo na RUN. Ako ovo promijenim na recimo print(42) i sad
-
kliknem RUN tada vidimo 42. To je ono što dobijemo od prve linije, a kad
-
kažem print(1,2) tada vidim 1 i 2 s druge strane.
Dakle to tako radi.
-
Rekao sam već da su naši prvi primjeri vrlo banalni, nisu nešto blistavo.
-
To je u ovom slučaju doista i istina. Dakle mogao bih sada ovdje pokušati još par stvari.
-
Mogao bih napisati zarez 47 tako da kad to izvedem ... OK, sada vidimo
-
da dobijemo 1 i 2 i 47. Također da pokažem da se ove linije uzimaju samo jedna po jedna
-
Kopirati ću to i onda to mogu zalijepiti nekoliko puta ...
-
Imam viš linija, tako da kad to izvedem, ... sad možemo reći da je to u redu
-
dobijemo, dakle dobijemo ponavljanje onoga što god nam je ispis bio.
-
Dakle ono što treba naglasiti je da sintaksa naredbe nije slobodna forma.
-
Naprotiv, ona je vrlo čvrsto strukturirana. Ona mora biti upravo takva
-
da bi je računalo moglo razumjeti. To je, u stvari, posljedica
-
unutarnje prirode računala. Ono ima tu mehaničku čvrstinu, ograničenost,
-
pa će i jezik, kojeg ono razumije isto biti mehanički, čvrst.
-
Ovo je malo čudno. U početku krećemo slobodno pisati
-
engleski ovdje i postići da to računalo slijedi. Razmišljajte i tome
-
kao svojoj prvoj lekciji o prirodi računala. Ili po principu
-
"kad si u Rimu ponašaj se kao Rimljanin". Dakle tražim od vas da zavirite
-
u svijet računala. Raditi ćemo stoga malo u jeziku računala.
-
U početku će izgledati malo čudno, ali stvarnost je slijedeća,
to nije komplicirano,
-
Sintaksa postoji. To jest čvrsta struktura, ali to zapravo i nije tako teško
-
Htio bih vas ohrabriti da ne odustajete zbog pomalo
-
čvrsto strukturirane mehaničke kvalitete jezika. Ona će nam omogućiti da radimo
-
neke zgodne stvari. U redu, to je bio moj prvi primjer, probajmo ovaj drugi
-
U prvom primjeru radio sam samo s brojevima. U računalnom kodu postoje
-
i nešto što zovemo strig-om (nizom znakova). Ovo je prvi primjer sa string-om: "hi" unutar navodnika
-
Dakle niz je samo slijed znakova i u kodu ga zapisujemo između dvostrukih navodnika.
-
Zbog toga imam "hi". Dakle print može prihvatiti brojke i ispisati ih, a
-
pokazuje se da može ispisati i stringove. On jednostavno interpretira string kao
-
slijed slova i kojih god znakova što ga čine i ispisuje ih redom ovdje.
-
Mogao bih, znate, ovo izmijeniti da umjesto "hi" to promjenim u "good day"
-
Dakle string može uključivati i razmake. Ako to izvedem mi ćemo samo
-
dobiti ovdje 'good day'. Dakle u računalnom programu i stringovi i brojevi su, i jedni i drugi,
-
vrlo česti. Stringovi u programu se koriste da se u njima čuva
-
npr. URL kojeg ste utipkali ili, u programu za uređivanje teksta, cijeli stavak
-
teksta na kojem radimo može biti pohranjen u string.
Dakle string je u suštini
-
sekvenca znakova. To je vrlo uobičajena vrsta podatka u računalu.
-
Druga stvar koju smo pokazali u ovom primjeru koda je ovaj prvi redak. To nazivamo
-
komentarom i u JavaScript jeziku komentari započinju s dvije kose crte a komentari funkcioniraju tako
-
da se sve, počevši s dvije kose crte pa sve desno do kraja retka
-
ignorira od strane računala. Mogu to onda koristiti da tu napišem bilo kakvu opasku poput
-
tu imam dva stringa i sl. Neku malu opasku ili primjedbu sebi ili slično o kodu.
-
Dakle kad ovo izvedem računalo, recimo, ignorira ovaj dio.
-
U nekom od mojih primjera koji slijede vidjeti ćete
-
komentare razasute okolo u kojima ja stavljam napomene o tome što se događa.
-
Dakle, jedan primjer kojeg bi ovdje mogao pokazati, a koji je malo zbunjujući. Staviti ću riječ print
-
unutar stringa i pogledati što se ispisuje. Sad dakle ovdje
-
na drugom retku dobivam 'hello to print'. Ono što se dogodilo da se riječ print unutar
-
stringa ne tretira kao kod, kojeg treba izvesti poput riječi print izvan stringa,
-
t.j. kao funkcija koju kod programa poziva. Dakle kad se nalazi unutar dvostrukih navodnika
-
ista riječ tretira se kao običan podatak. To predstavlja distinkciju unutar koda.
-
To bi bilo u redu. Na kraju poglavlja imati ćemo nekoliko vježbi
-
u kojima ćete moći pisati kod kao što sam ja radio ovdje. Kao što sam prije spomenuo
-
kod funkcionira unutar sustava koji ima čvrsto strukturiranu ograničenu sintaksu.
-
U stvari, vrlo često se potkrade pogreška i profesionalnim programerima koji pišu
-
programe po cijeli dan. Kad se utipkava neki kod postoji tendencija da se naprave
-
sitne sintaktičke pogreške na raznim mjestima u kodu.
Moguće da se ispusti desna zagrada
-
ili se krivo otipka neka riječ ... I te sintaktičke pogreške su vrlo lake za
-
ispravljanje. Dakle kad pritisnete RUN gumb
-
vrlo često će se ukazati nekakva sitna pogreška koju je potrebno ispraviti.
-
Htio bi da to razumijete. Te sitne pogreške ne odražavaju vaše
-
duboko nerazumijevanje ili ozbiljan nedostatak, radi se samo o površnim previdima
-
koja se događaju tijekom kodiranja, a rade ih i profesionalni programeri cijelo vrijeme .
-
Mi niti ne mislimo o njima dok ih uklanjamo, uopće ne razmišljamo o njima.
-
Mislim stoga da, kad se ljudi uvode u kodiranje, ovo ih
-
pomalo izbacuje iz takta. To da postoje ove male sintaktičke greške
-
odvraća im pažnju i oni misle da rade nešto potpuno krivo, dok zapravo svi
-
rade takve greške. To uopće nije značajno. Da bi pomogao da vam malo
-
odvratim pažnju s toga, ja ću vam jednostavno prikazati gomilu primjera u kojima sam ...
-
Zadao sam par primjera u kojima imam neke tipične male sintaktičke greške.
-
Pokazati ću kako se greška manifestira kad kliknete na RUN gumb. Dobro?
-
Dakle što će se dogoditi je da kad kliknem RUN gumb stvari neće raditi. Dobiti ću
-
neku vrstu poruke o grešci. Dakle želim Vam pokazati proces od
-
pojave greške do razrješenja ovog sintaktičkog problema, samo kako bi se privikli.
-
O, da, kad prvi put kliknete RUN gumb, to je vrlo česta pojava,
-
dogoditi će se ovo. Samo da prođemo kroz ovo. U redu dakle kliknimo RUN gumb.
-
I umjesto izvođenja koda i realizacije ispisa, dobio sam
-
neku grešku ovdje. Malu poruku o grešci. Ponekad su poruke o grešci
-
prilično dobre i jasno opisuju što se događa. Dakle pogledajmo prvu, ona glasi:
-
Error: prlnt is not defined. Što se dogodilo je da "print" je funkcija ....
-
ali ovaj drugi navod, u drugom retku, ... sad u ovom slučaju,
-
dobro, to ne radi uvijek, ali u velikom broju slučajeva bit' će označen redak u kom je problem.
-
Problem je u tipkanju. Ne piše P R I N T,
već piše P R L N T
-
Dakle ako "l" promijenim u "i". Ha! Sada radi.
Dakle ovaj mali program
-
ispisuje 'a', pa '1' i 'b', pa 'c' i '3' , dakle jedan potpuno besmislen primjer
-
kojeg sam izmislio. Naravno stavio sam l jer sam razmišljao kako je to slovo
-
koje vrlo sliči i. Pa je nužno da pažljivo zagledate, dakle bio sam
-
pomalo zločesti profesor. U redu, pokušajmo s jednim od ovih
-
Kliknuti ću na RUN gumb na ovom. Javlja grešku, nezaključen doslovni string
-
i označio je drugi redak. Moram, dakle pregledati drugi redak s lijeva
-
na desno. Vidite ovaj (redak) i postoji 'b' . Ovdje je vidite problem što imamo doslovno naveden string
-
Htjeli smo string "b", ali nedostaje nam zatvaranje (desni) navodnika.
-
Trebamo oba navodnika.
Probati ću s trećim primjerom.
-
Pogledajmo, greška, nedostaje desna zagrada.
Još jednom je linija osvijetljena.
-
Ja ću ... u stvari ... u ovom slučaju ..
poruka o grešci je prilično dobra.
-
Ona govori, gledaj ..., kao i kod navodnika,
lijeva (otvorena) zagrada
-
i desna (zatvorena) zagrada, moraju se spariti.
Mora biti desna zagrada,
-
točno ovdje, da bi se dala naredbu ispisa. Sada, dakle, radi.
-
Evo zadnjeg. Nešto ne štima, javlja grešku da nema desne zagrade, ali kad pogledam ona je tu.
-
Ono što se dogodilo je da je poruka o grešci netočna. Ponekad, kad postoji sintaktička greška,
-
računalo se zbuni i ne može dobro dijagnosticirati grešku za vas u svojoj poruci
-
Ono u osnovici može govoriti
nešto ne valja u drugom retku.
-
Moja preporuka je da dobro pregledate s lijeva na desno ... i pogledajte ovdje, izgleda
-
prilično razumno. Izgleda da u ovom slučaju ono što nedostaje je zarez
-
Mislim da taj primjer dobro ukazuje na razliku između čovjeka i računala.
-
Čovjek bi mogao pogledati naredbu i otkriti vašu namjeru. Poput: vidim što je on
-
namjeravao je da ispiše '1' i 'b'.
Ali računalo ima tu mehaničku (nesvjesnu) crtu.
-
Stvari moraju biti upravo onakve kakve se očekuje da budu, pa i zarez
-
nije opcija već mora biti tamo, tako da smo blokirani tok to ne riješimo.
-
U redu, sad to radi. Dakle ti je prvo poglavlje samo s osnovnim ispisom
-
s brojkama i stringovima.
Imam jedan problemski primjer kojeg ću probati.
-
Ovako će najčešće izgledati vježbe.
Iako će kasnije vježbe biti zabavnije.
-
To vam obećavam. Ovdje piše:
izmijeni donji kod tako da kad se izvede
-
on generira upravo ovakav izlaz. Tu stoji
'1 2 buckle' .... dakle zasniva se na brojalici
-
'one, two, buckle my shoe'. Dakle, ovaj kod ovdje koji nešto radi
-
ali to nije, to uopće nije ono što trebamo, pa da moramo prepraviti
-
Pogledajmo! Najprije, ono što ću napraviti je ja ću dodati 2 i onda ću se
-
sjetiti dodati zarez ... i onda ću promijeniti ovaj strig
-
da glasi 'buckle'. Sad to mogu izvesti tek da vidim što radi.
-
Htio bi vas ohrabriti, da ako imate ideju za neki kod, ili samo želite nešto isprobati, ...
-
ne možete ništa razbiti ako ovdje bilo što ukucate i kliknete pogrešan gumb.
-
Dobro je imati osjećaj da malo eksperimentirate.
-
To je bio prvi redak. Isprobati ću i drugi.
'3' zarez '4' zarez 'knock'
-
Dobro je, sada to radi.
Vrlo često kad radim male pokuse
-
u dokumentu poput ovog, ... to može biti ovaj u videu,
raditi ću gomilu primjera
-
i onda vi možda zaželite isprobati ... moda ćete znate biti radoznali vezano za drugi primjer
-
I vi ćete naići na jedan i htjeti isprobati neku varijantu i stisnuti ćete krivu tipku
-
To je nešto što vi slobodno možete napraviti.
-
Često ću u dokumentu imati mali
'show solution' (pokaži rješenje) gumb
-
To znači da vi možete doći na njega, ... on je prazan, dakle možete eksperimentirati
-
Ali onda ako ste radoznali koji kod sam ja koristio, tada je i to dostupno
-
u dokumentu tako da možete usporediti to s vašim rješenjem.
-
Ili ako želite iz njega kopirati ili što god bilo to je u redu.
-
Time završavamo prvo poglavlje, isprobajte vježbe s kodom.