Alan Kay: Kako bi poučeval računalništvo 101

"Eden od razlogov, da dejansko gremo na univerzo, je preseči preprosto poklicno usposabljanje in namesto tega razumeti globlje ideje."

Alan Kay: Kako bi poučeval računalništvo 101

Razmislimo malo o tem vprašanju. Pred nekaj leti so me oddelki za računalništvo povabili k predavanjem na številnih univerzah. Skoraj po naključju sem svoje prvo občinstvo dodiplomskih študentov, podiplomskih študentov in profesorjev vprašal o njihovi definiciji »računalništva«. Vsak bi lahko dal le inženirsko definicijo. To sem naredil na vsakem novem mestu in povsod so bili podobni rezultati.

Drugo vprašanje je bilo: "Kdo je Douglas Engelbart?" Več ljudi je reklo, "ali ni bilo to povezano z računalniško miško?" (in to me je zelo razočaralo, saj je moja znanstvena skupnost vložila veliko truda v to, da je odgovor na to vprašanje mogoč z dvema ali tremi kliki miške, in prepričana, da ima Engelbart res nekaj opraviti z računalniško miško) .

Deloma je bila težava v pomanjkanju radovednosti, deloma v ozkosti osebnih ciljev, ki niso bili povezani z učenjem, deloma v nerazumevanju, kaj je ta veda itd.

Že nekaj let delam s krajšim delovnim časom na oddelku za računalništvo na Univerzi v Kaliforniji (v bistvu sem profesor, vendar mi ni treba hoditi na sestanke oddelka). Občasno vodim tečaje, včasih za študente prvega letnika. Z leti se je že tako nizka stopnja radovednosti v računalništvu znatno zmanjšala (zvišala pa se je tudi stopnja priljubljenosti, saj se na računalništvo gleda kot na pot do dobro plačane službe, če znaš kodirati in pridobiš certifikat od vrhunskega 10 šola). Skladno s tem se niti en študent ni nikoli pritožil, da je prvi jezik na Univerzi v Kaliforniji C++!

Zdi se mi, da se soočamo s situacijo, v kateri sta oba pomena "računalnika" in "znanosti" uničena s šibkimi, masivnimi koncepti, da bi ustvarili nov izraz - nekakšno etiketo na kavbojkah - kar zveni dobro, a je precej prazen. Podobno uničen soroden izraz je »programski inženiring«, ki pa spet ni uporabil najbolj genialnih idej »programiranja« in »inženiringa«, ampak ju preprosto združil (to je bilo namerno storjeno v šestdesetih letih, ko je skovan izraz).

Eden od razlogov, da dejansko greste na univerzo, je preseči preprosto poklicno usposabljanje in namesto tega razumeti globlje ideje. Zdi se mi povsem razumno, da se pri uvodu v specialnost poskusi – s primeri, če je le mogoče – študente vključiti v probleme iz resničnega življenja in začnejo razumeti, kaj je dejansko zanimivo, pomembno in osrednjega pomena za to področje.

Prvošolci se razveselijo, ko jim pokažejo, kako ravnilo na drugem ravnilu postane seštevalnik, s katerim lahko premagajo otroke 5. razreda pri seštevanju ulomkov. In potem bodo z veseljem sodelovali pri razvoju izboljšanih seštevalnikov. Dotaknili so se pravega računalnika – fizičnega in mentalnega orodja, ki nam pomaga razmišljati. Naučili so se res učinkovitega načina predstavljanja števil – učinkovitejšega od tistega, kar se učijo v šolah!

Lahko so združili svojo zdravorazumsko idejo o "dodajanju" kot "kopičenju" z nečim podobnim z močnimi novimi lastnostmi. Programirali so ga tako, da je lahko reševal najrazličnejše probleme.

Tudi razširili so ga. In tako naprej. To ni digitalni računalnik. In to ni računalnik s pomnjenim programom. Ampak to je bistvo računalnika. Tako kot antikiterski mehanizem - To je na splošno bistvo računalnika in računalništva.

Alan Kay: Kako bi poučeval računalništvo 101

Antikiterski mehanizem

Kako daleč lahko gremo in koliko lahko naredimo, preden stvari uidejo izpod nadzora in se izgubimo v abstrakcijah? Vedno sem bil naklonjen karakterizaciji Alan Perlis - prvi dobitnik Turingove nagrade, ki je morda izumil izraz "računalništvo" - ki je v 60-ih rekel: "Računalništvo je znanost o procesih." Vsi procesi.

Zavoljo Quore ne poskušajmo tega nadaljevati ali spreminjati v versko dogmo. Samo veselo uporabimo idejo Ala Perlisabolje razmišljati o našem področju. In predvsem o tem, kako ga učiti. Zdaj moramo pogledati sodoben pomen "znanosti" in Perlis je bil dokaj prepričan, da ga ne bi smeli razredčiti s starejšimi pomeni (kot je "zbiranje znanja") in uporabami (kot je "knjižničarstvo" ali celo "družbena znanost" znanosti")"). Z "znanostjo" je poskušal razumeti pojav tako, da je ustvaril modele/zemljevide, ki poskušajo prikazati, "slediti" in napovedati pojav.

Alan Kay: Kako bi poučeval računalništvo 101

Dal sem več intervjujev o tem, kako se lahko najboljši zemljevidi in modeli pogosto prilegajo majici, tako kot Maxwellove enačbe in druge. Analogija je, da obstaja "znanost o mostovih", čeprav je večina mostov umetna. Toda ko je most enkrat zgrajen, predstavlja pojave, ki jih lahko znanstveniki preučujejo, mostove je mogoče uporabiti za izdelavo modelov mnogih vrst in tvorijo celovite in uporabne "teorije mostov". Zabavno je, da lahko nato načrtujete in gradite nove mostove (omenil sem že, da skoraj ni nič bolj zabavnega kot znanstveniki in inženirji, ki skupaj rešujejo velike in pomembne probleme!)

Alan Kay: Kako bi poučeval računalništvo 101

Herbert Simon, dobitnik Turingove nagrade in Nobelove nagrade, je vse skupaj poimenoval »znanost o umetnem« (in napisal odlično knjigo z istim naslovom).

Alan Kay: Kako bi poučeval računalništvo 101

Naj vam povem primer. V 50. letih prejšnjega stoletja so podjetja in univerze izdelovali pomnilniške računalnike in jih začeli programirati – in bil je poseben trenutek, ko je leta 1956 izšel Fortran – ki ni bil prvi visokonivojski jezik, ampak morda prvi, ki je bil tako dobro izdelan, da je uporabljajo na številnih različnih področjih, vključno s številnimi, ki so se prej izvajala samo v strojnem jeziku.

Vse to je povzročilo "pojave".

Alan Kay: Kako bi poučeval računalništvo 101

John McCarthy

Zgodovina Lispa je bolj zapletena, vendar se je John McCarthy začel zanimati za iskanje "matematične teorije računanja" in bil je odločen, da bo vse delovalo brezhibno. Funkcija eval, ki interpretira Lisp, bi zlahka pristajala na majico! V primerjavi s »programskim sistemom« je to nepomembno. Še pomembneje je, da je bila ta "teorija računanja" močnejši koncept kot Fortran! To je bila najboljša ideja za most!

Miniaturna narava Lispa omogoča, da se celotna ideja programiranja zajame v nekaj klikih na globlji ravni in da se jo premisli na ravni, ki se ob pogledu na ogromne artefakte zdi preprosto nemogoča (to je eden od razlogov, zakaj imajo znanstveniki radi, da je matematika kompaktna in močna). Matematika, uporabljena tukaj, je nova matematika, ker dopušča koncepte, kot sta "prej" in "potem", kar vodi do "spremenljive logike", ki omogoča ohranitev funkcionalne odvisnosti in logičnega toka misli, hkrati pa omogoča položaj in prehod časa. (Tega v našem času v krutem svetu situacijskega programiranja še vedno ne razumemo).

Lisp je kot močan programski jezik in metajezik, ki lahko predstavlja lastno teorijo, primer pravega računalništva. Če se naučiš tega in podobnih stvari, boš sposoben globlje razmišljati in biti bolj odgovoren za svojo usodo, kot če bi se enostavno naučil programirati v Fortranu ali njegovih sodobnih ekvivalentih (... da se lahko približaš programerje! ).

Izvedeli boste veliko več o posebnih vrstah oblikovanja, ki so potrebne v računalništvu (na primer, običajno ni cenjeno, ko računalništvo pogosto zahteva izhod iz računalniškega okolja: ena od posebnih značilnosti shranjenega mehkega računalništva je, da ni samo material za program, ampak material za popolnoma nov računalnik).

Drugi razlog za izbiro Perlisove definicije je, da se računalništvo na splošno veliko bolj ukvarja z ustvarjanjem sistemov mnogih vrst kot z algoritmi, "podatkovnimi strukturami" ali celo samim programiranjem. Na primer, računalnik je sistem, računalništvo je sistem, lokalno omrežje in internet sta sistema in večina programov bi morala biti boljših sistemov, kot so (stari stil programiranja iz 50-ih je trajal, dokler se ni zdelo, da bi moralo biti programiranje takole - nič ne more biti dlje od resnice).

Internet je dober primer - za razliko od večine programske opreme v današnjem času interneta ni treba ustaviti, da bi karkoli popravili ali izboljšali - je bolj podoben biološkemu sistemu - po našem namenu - kot tistemu, kar si večina ljudi predstavlja kot računalniški sistem. Poleg tega je veliko bolj razširljiv in zanesljiv kot skoraj vsi programski sistemi, ki so danes na voljo. O tem je res vredno razmisliti, preden programerje začetnike učite manj zmogljive koncepte!

Torej, kar moramo storiti v prvem letniku tečaja računalništva, je, da upoštevamo, kaj točno študentje morda počnejo na samem začetku, in nato poskušamo ostati znotraj njihove "kognitivne obremenitve", da jim pomagamo priti do tistega, kar je res pomembno. Pomembno je "ostati realen" in najti načine, ki so intelektualno pošteni in primerni za tiste, ki šele začenjajo. (Prosim, ne učite slabih idej samo zato, ker se zdijo nekoliko enostavnejše – veliko slabih idej je pravzaprav preprostejših!).

Učenci bi morali začeti z ustvarjanjem nečesa, kar ima veliko pomembnih značilnosti, o katerih sem tukaj razpravljal. To bi moral biti sistem več dinamično medsebojno delujočih delov itd. Dober način, da se odločite, kateri programski jezik boste uporabili, je, da preprosto naredite nekaj, kar ima na tisoče medsebojno povezanih delov! Če ne, potem bi ga morali najti. Najslabše, kar lahko naredite, je, da študente usmerite na pot premalo tekočnosti, kar bi močno omejilo velike ideje. Samo ubija jih – in mi jih želimo vzgajati, ne ubijati.

O GoTo School

Alan Kay: Kako bi poučeval računalništvo 101

Vir: www.habr.com

Dodaj komentar