Alan Kay: kako bi učio Računarske nauke 101

Ena od razlogov, zakaj se dejansko vpisati na univerzo, je prekoračiti zgolj poklicno usposabljanje in se namesto tega oprijeti globljih idej.

Alan Kay: kako bi učio Računarske nauke 101

Premislimo o tem vprašanju. Pred več leti so me oddelki za računalništvo povabili na predavanja na več univerzah. Skoraj naključno sem vprašal svoje prvo občinstvo, ki je bilo sestavljeno iz študentov zadnjega letnika, postdiplomcev in profesorjev, kako definirajo »računalništvo«. Vsi so lahko podali le inženirsko definicijo. To sem ponavljal na vsakem novem mestu in povsod so bili rezultati podobni.

Drugo vprašanje je bilo: »Kdo je Douglas Engelbart?«. Nekaj ljudi je reklo: »Ali ni bil nekako povezan z miško?« (in to me je zelo razočaralo, saj se je moja znanstvena skupnost močno trudila, da bi lahko na to vprašanje odgovorili po dveh do treh klikih miške in se prepričali, da je Engelbart res povezan 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, in deloma v pomanjkanju predstave o tem, kaj ta znanost sploh je, in tako naprej.

Nekaj let delam s polovičnim delovnim časom na oddelku za računalništvo Univerze v Kaliforniji (v bistvu sem profesor, a mi ni treba hoditi na sestanke oddelka). Občasno vodim tečaje, včasih pri prvih letnikih. V teh letih se je že tako nizka raven radovednosti do računalništva znatno zmanjšala (a tudi priljubljenost se je povečala, saj se računalništvo obravnava kot pot do dobro plačane službe, če znaš programirati in si pridobil certifikat na najboljši deseterici šol). Tako noben študent še ni potožil, da je prvi jezik na Univerzi v Kaliforniji C++!

Zdi se mi, da smo se znašli v situaciji, kjer sta bili oba izraza "Računalnik" in "Znanost" podvržena šibkim masivnim konceptom, da bi ustvarila nov termin – nekakšno etiketo na kavbojkah – ki zveni lepo, a je dovolj prazna. Povezan termin, ki je bil prav tako razdrobljen, "programska inženiring", ki ponovno ni izkoristil najbolj genijalnih idej "programiranja" in "inženiringa", temveč ju je preprosto združil (to je bilo namenoma storjeno v šestdesetih letih, ko je bil termin izumljen).

Eden od razlogov, da se dejansko vpišete na univerzo, je, da presežete preprosto poklicno usposabljanje in se namesto tega osredotočite na globlje ideje. Zdi se mi precej smiselno, da bi pri uvodu v strokovno področje poskušali – če je mogoče, s pomočjo primerov – zagotoviti, da se učenci ukvarjajo z resničnimi problemi in začnejo razumeti, kar je v dejstvu zanimivo, pomembno in osrednje na tem področju.

Prvošolci se veselijo, ko jim pokažejo, kako ravnila ena nad drugo postanejo aritmetični pripomoček, s katerim lahko prehitijo učence petega razreda pri seštevanju decimalnih delov. Nato bodo srečni, ker bodo lahko sodelovali pri razvoju izboljšanih aritmetičnih pripomočkov. Dotaknili so se pravega računalnika – fizičnega in mentalnega orodja, ki nam pomaga razmišljati. Naučili so se resnično učinkovitega načina za prikazovanje števil – bolj učinkovitega, kot ga učijo v šolah!

Uspešno so povezali njihovo zdravo idejo "seštevanja" kot "kopičenja" s čim podobnim z novimi močnimi lastnostmi. Programirali so ga tako, da je bilo sposobno reševati različne probleme.

Prav tako so ga razširili. In tako naprej. To ni digitalni računalnik. In to ni računalnik z pomnilniškim programom. A to je bistvo računalnika. Prav tako kot antikiteški mehanizem – to je sploh bistvo računalnika in računalništva.

Alan Kay: kako bi učio Računarske nauke 101

Antikiteški mehanizem

Kako daleč lahko gremo in koliko lahko naredimo, preden vse uide izpod nadzora in se izgubimo v abstrakcijah? Vedno me je zanimalo značilnost Alana Perliša — prvega dobitnika Turingove nagrade, ki je morda izumil izraz 'računalništvo' — ki je v 60-ih letih dejal: 'Računalništvo je znanost o procesih.' Vseh procesih.

Zaradi podjetja Quora ne poskušajmo tega potiskati naprej ali spreminjati v religiozno dogmo. Preprosto uživajmo v ideji. Ala Perlis, da bolje razmišljamo o našem področju. In še posebej o tem, kako ga poučevati. Zdaj se moramo osredotočiti na sodoben pomen 'znanosti', Perlis pa je bil precej prepričan, da ga ne bi smeli razredčiti s starimi pomeni (na primer tistimi, kot je 'pridobivanje znanja') in uporabi (kot je 'knjigovodska dejavnost' ali celo 'družbene vede'). Pod 'znanostjo' je skušal razumeti fenomen, tako da je ustvarjal modele/o zemljevide, ki poskušajo prikazati, 'slediti' in napovedovati pojave.

Alan Kay: kako bi učio Računarske nauke 101

Dal sem nekaj intervjujev o tem, kako najboljši zemljevidi in modeli velikokrat lahko ustrezajo majici, tako kot ustrezajo Maxwellove enačbe in druge. Analogija je, da obstaja 'znanost o mostovih', čeprav so večino mostov naredili ljudje. Toda takoj ko je most zgrajen, prikazuje pojave, znanstveniki jih lahko preučujejo, iz mostov je mogoče ustvariti modele različnih vrst in oblikovati celovite in koristne 'teorije mostov'. Zabavno je, da potem lahko načrtujemo in zgradimo nove mostove (že sem omenjal, da verjetno ni nič bolj zabavnega kot skupno delo znanstvenikov in inženirjev za reševanje velikih in pomembnih problemov!).

Alan Kay: kako bi učio Računarske nauke 101

Herbert Simon, dobitnik Turingove nagrade in Nobelove nagrade, je to vse poimenoval 'znanosti o umetnem' (in napisal čudovito knjigo s tem imenom).

Alan Kay: kako bi učio Računarske nauke 101

Dovolite, da navedem primer. V 50-ih letih so podjetja in univerze začela graditi računalnike z shranjenim programom in jih začela programirati — in bil je poseben trenutek, ko je leta 1956 prišel Fortran — ki ni bil prvi jezik visoke ravni, vendar je bil morda prvi, izdelan tako dobro, da so ga uporabljali na mnogih različnih področjih, vključno z mnogimi, ki so bila prej narejena samo v strojni koda.

To je povzročilo 'fenomene'.

Alan Kay: kako bi učio Računarske nauke 101

John McCarthy

Zgodovina Lisp-a je bolj zapletena, toda John McCarthy je bil zainteresiran za poskus iskanja "matematične teorije izračunavanja" in bil je odločn, da bo vse delovalo odlično. Funkcija eval, ki interpretira Lisp, se lahko enostavno natisne na majici! V primerjavi s "programskim sistemom" je to zanemarljivo. Kar je bolj pomembno, ta "teorija izračunavanja" je imela močnejšo konceptualizacijo kot Fortran! To je bila najboljša mostna ideja!

Majhnost Lisp-a omogoča, da celotna ideja programiranja zajame le s parom pritiskov na višji ravni in se obravnava na nivoju, ki se zdi preprosto nemogoč, ko gledaš na ogromne artefakte (to je eden izmed razlogov, zakaj znanstveniki radi vidijo matematiko compact in močno). Matematika, ki je tukaj uporabljena, je nova matematika, saj dopušča takšne koncepte kot "pred" in "po", kar vodi do "logike spremenljivih vrednosti", ki omogoča ohranjanje tako funkcionalne odvisnosti kot logičnega razmišljanja, pri čemer dopusti tudi položaj in potek časa. (To še vedno ni razumljeno v našem divjem svetu situacijskega programiranja).

Lisp, ki deluje kot močan programski jezik in meta-jezik, ki lahko predstavi svojo lastno teorijo, je primer prave računalniške znanosti. Če se ga naučite in še drugih podobnih stvari, boste lahko globlje razmišljali in imeli večjo odgovornost za svojo lastno usodo, kot če bi se samo naučili programirati v Fortranu ali njegovih sodobnih ekvivalentih (… tako se boste lahko približali programerjem!).

Izvedeli boste veliko več o posebnih vrstah oblikovanja, ki so potrebne v izračunih (na primer, običajno se ne ceni, ko izračuni pogosto zahtevajo izhod iz izračunskega okolja: ena izmed posebnih značilnosti shranjenih programskih izračunov je, da to ni le material za program, temveč material za povsem nov računalnik).

Drugá příčina výběru definice Perlisa spočívá v tom, že výpočty jsou obecně mnohem více spojeny se systémovým vytvářením různých typů než s algoritmy, „datovými strukturami“ nebo dokonce programováním jako takovým. Například počítač je systém, výpočty jsou systémy, místní síť a internet jsou systémy, a většina programů by měla představovat lepší systémy, než jakými ve skutečnosti jsou (starý styl programování z 50. let přežil až do okamžiku, kdy se zdá, že programování by mělo být takové — není nic dál od pravdy).

Internet je dobrým příkladem — na rozdíl od většiny dnešních programů, internet není nutné zastavovat, abychom něco opravili nebo zlepšili — je to spíše jako biologický systém — podle našeho záměru, než to, co většina lidí považuje za výpočetní systém. A je mnohem škálovatelnější a spolehlivější než téměř všechny softwarové systémy, které v současnosti existují. Opravu se skutečně vyplatí promyslet, než začneme učit nováčky v programování takto slabým konceptům!

Takže, co potřebujeme udělat na první hodině předmětu Počítačové vědy, je vzít v úvahu, co konkrétně mohou studenti na začátku udělat, a pak se pokusit zůstat v rámci jejich „kognitivní zátěže“, aby jim pomohlo dostat se k tomu, co je opravdu důležité. Je naprosto zásadní „zůstat opravdový“ a nalézt cesty, které by byly intelektuálně poctivé a vhodné pro ty, kteří teprve začínají své vzdělání. (Prosím, neučte špatné myšlenky jen proto, že se zdají o něco jednodušší — spousta špatných myšlenek je ve skutečnosti jednodušších!).

Študenti bi se morali začeti z ustvarjanjem nečesa, kar bi imelo številne pomembne značilnosti, o katerih sem tukaj govoril. To mora biti sistem s številnimi dinamično medsebojno povezanimi deli itd. Dober način, da ugotovite, kateri programski jezik uporabiti, je preprosto narediti nekaj, kar ima na tisoče sodelujočih delov! Če ne, bi morali poiskati kaj takega. Najslabše, kar lahko storite, je, da študente postavite na pot preveč šibke fluentnosti, ki bi močno omejila obsežne ideje. To jih preprosto uniči — mi pa jih želimo razvijati, ne uničevati.

O šoli GoTo

Alan Kay: kako bi učio Računarske nauke 101

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster