Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

"Ien fan 'e redenen om eins nei de universiteit te gean is om fierder te gean dan ienfâldige beropsoplieding en ynstee djipper ideeën te begripen."

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Lit ús tinke oer dizze fraach in bytsje. Ferskate jierren lyn hawwe ôfdielingen Computer Science my útnoege om lêzingen te jaan oan in oantal universiteiten. Hast tafal frege ik myn earste publyk fan undergrads, ôfstudearden en heechleararen oer har definysje fan "Computer Science." Elkenien koe allinich in technyske definysje jaan. Ik die dit op elk nij plak, en oeral wiene d'r ferlykbere resultaten.

In oare fraach wie: "Wa is Douglas Engelbart?" Ferskate minsken seine: "wie it net wat mei in kompjûtermûs?" (en dit wie my tige teloarstellend, om't myn wittenskiplike mienskip in protte muoite hie om te soargjen dat it antwurd op dizze fraach mooglik wie mei twa of trije mûsklikken en oertsjûge dat Engelbart echt wat mei de kompjûtermûs te krijen hie) .

In part fan it probleem wie in gebrek oan nijsgjirrigens, foar in part in bekrompenheid fan persoanlike doelen dy't net relatearre wiene oan learen, foar in part in gebrek oan begryp fan wat dizze wittenskip wie, ensfh.

Ik haw ferskate jierren dieltiid wurke yn 'e ôfdieling kompjûterwittenskip oan' e Universiteit fan Kalifornje (ik bin yn essinsje in heechlearaar, mar ik hoech net nei ôfdielingsgearkomsten te gean). Ut en troch jou ik lessen, soms foar earstejiersstudinten. Yn 'e rin fan' e jierren is it al lege nivo fan nijsgjirrigens yn Computer Science gâns sakke (mar it nivo fan populariteit is ek tanommen, om't computing wurdt sjoen as in paad nei in goed beteljende baan as jo kinne koade en krije in sertifikaat fan in top 10 skoalle). Dêrtroch hat net ien studint ea klage dat de earste taal oan 'e Universiteit fan Kalifornje C ++ is!

It liket my ta dat wy te krijen hawwe mei in situaasje wêryn sawol de betsjuttingen fan "kompjûter" as "wittenskip" binne ferneatige troch swakke, massale begripen om in nije term te meitsjen - in soarte fan label op jeans - dy't goed klinkt, mar is frij leech. In besibbe term dy't likegoed ferneatige is, is "software engineering", dy't, wer, net de meast geniale ideeën fan "programmearring" en "engineering" brûkte, mar se gewoan kombinearre (dit waard mei opsetsin dien yn 'e jierren sechtich, doe't it wie betocht term).

Ien fan 'e redenen om eins nei de universiteit te gean is om fierder te gean dan ienfâldige beropsoplieding en ynstee djipper ideeën te begripen. It liket my frij ridlik foar in ynlieding ta in spesjaliteit om te besykjen - troch foarbylden as it kin - om studinten dwaande te krijen mei echte problemen en begjinne te begripen wat eins nijsgjirrich, wichtich en sintraal op it fjild stiet.

Earsteklassers binne bliid as se sjen litte hoe't in liniaal boppe op in oare liniaal in optelmasine wurdt, wêrmei't se de bern fan 'e 5e klasse ferslaan kinne by it tafoegjen fan fraksjes. En dan sille se graach meidwaan oan 'e ûntwikkeling fan ferbettere tafoegingsmasines. Se berikten in echte kompjûter - in fysyk en geastlik ark dat ús helpt te tinken. Se learden in echt effektive manier om nûmers te fertsjintwurdigjen - effektiver dan wat op skoallen leard wurdt!

Se wienen by steat om te kombinearjen harren sûn ferstân idee fan "tafoeging" as "akkumulearje" mei wat ferlykber mei krêftige nije eigenskippen. Se programmearre it om in ferskaat oan problemen op te lossen.

Se hawwe it ek útwreide. Ensafuorthinne. Dit is gjin digitale kompjûter. En dit is gjin kompjûter mei in memorized programma. Mar dat is de essinsje fan in kompjûter. Krekt as antikythera meganisme - Dit is oer it algemien de essinsje fan in kompjûter en komputer.

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Antikythera Mechanism

Hoe fier kinne wy ​​gean en hoefolle kinne wy ​​dwaan foardat dingen út de hân rinne en wy ferdwale yn abstraksjes? Ik haw altyd foar in part west foar karakterisearring Alan Perlis - de earste Turing Award winner, dy't mooglik de term "Computer Science" útfûn hawwe - dy't yn 'e jierren '60 sei: "Computer Science is de wittenskip fan prosessen." Alle prosessen.

Litte wy om 'e wille fan Quora net besykje dit fierder te triuwen of it yn religieus dogma te feroarjen. Litte wy it idee gewoan lokkich brûke Ala Perlisaom better nei te tinken oer ús fjild. En foaral oer hoe't jo it leare moatte. Wy moatte no sjen nei de moderne betsjutting fan "wittenskip", en Perlis wie der frij wis fan dat it net mei âldere betsjuttingen (lykas "kolleksje fan kennis") en gebrûk (lykas "bibleteekwittenskip" of sels "sosjaal" wittenskippen") "). Troch "wittenskip" besocht er in ferskynsel te begripen troch modellen/kaarten te meitsjen dy't besykje de ferskynsels sjen te litten, te "tracken" en te foarsizzen.

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Ik haw ferskate ynterviews jûn oer hoe't de bêste kaarten en modellen faaks in T-shirt kinne passe, lykas de fergelikingen fan Maxwell en oaren dogge. De analogy is dat d'r in "wittenskip fan brêgen" is, ek al binne de measte brêgen troch de minske makke. Mar ienris in brêge is boud, it fertsjintwurdiget ferskynsels dy't wittenskippers kinne studearje, brêgen kinne brûkt wurde om modellen fan in protte soarten te meitsjen, en foarmje wiidweidige en nuttige "brêgeteoryen". De wille is dat je dan nije brêgen ûntwerpe en bouwe kinne (ik neamde al dat der amper wat leuker is as wittenskippers en yngenieurs dy't gearwurkje om grutte en wichtige problemen op te lossen!)

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Herbert Simon, in Turing Award en Nobelpriiswinner, neamde it allegear "de wittenskip fan it keunstmjittige" (en skreau in poerbêst boek mei deselde titel).

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Lit my dy in foarbyld jaan. Yn 'e jierren '50 bouden bedriuwen en universiteiten ûnthâldkompjûters en begûnen se te programmearjen - en d'r wie in spesjaal momint doe't Fortran útkaam yn 1956 - dat wie net de earste taal op hege nivo, mar miskien de earste dy't sa goed makke is dat it west hat brûkt yn in protte ferskillende gebieten, ynklusyf in protte dy't earder allinnich dien waarden yn masinetaal.

Dit alles joech oanlieding ta "ferskynsels".

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

John McCarthy

Lisp's skiednis is komplekser, mar John McCarthy waard ynteressearre yn it besykjen om in "wiskundige teory fan berekkening" te finen en wie besletten om alles perfekt te meitsjen. De evalfunksje, dy't Lisp ynterpretearret, koe maklik passe op in T-shirt! Yn ferliking mei in "programmearring systeem," dit is ûnbelangryk. Noch wichtiger, dizze "teory fan berekkening" wie in machtiger konsept dan Fortran! Dit wie it bêste brêgeidee!

De miniatueraard fan Lisp lit it hiele idee fan programmearring yn in pear mûsklikken op in djipper nivo fêstlein wurde en trochtocht wurde op in nivo dat gewoan ûnmooglik liket as jo sjogge nei enoarme artefakten (dit is ien fan 'e redenen wêrom wittenskippers graach wiskunde kompakt en krêftich binne). De wiskunde dy't hjir brûkt wurdt is nije wiskunde, om't it konsepten mooglik makket lykas "foar" en "nei" en dit liedt ta "fariabele logika" wêrtroch sawol funksjonele ôfhinklikens as logyske gedachtestreaming bewarre wurde, wylst ek posysje en de passaazje mooglik makket. fan tiid. (Dit wurdt yn ús tiid noch net begrepen yn 'e wrede wrâld fan situasjonele programmearring).

Lisp, as in krêftige programmeartaal en metataal dy't har eigen teory fertsjintwurdigje kin, is in foarbyld fan wiere kompjûterwittenskip. As jo ​​it leare en oare ferlykbere dingen, sille jo djipper kinne tinke en mear ferantwurdlik wêze foar jo eigen bestimming dan as jo gewoan learden te programmearjen yn Fortran of syn moderne ekwivalinten (... sadat jo tichter by programmeurs komme kinne! ).

Jo sille folle mear leare oer de spesjale soarten ûntwerp dy't nedich binne yn komputer (it wurdt bygelyks net meastentiids wurdearre as komputer faaks bûten de komputeromjouwing giet: ien fan 'e bysûndere skaaimerken fan opsleine sêfte komputer is dat it net allinich is it materiaal foar it programma, mar materiaal foar in folslein nije kompjûter).

In oare reden foar it kiezen fan Perlis's definysje is dat komputer yn 't algemien folle mear dwaande is mei it meitsjen fan systemen fan in protte soarten dan mei algoritmen, "datastruktueren" of sels programmearjen sels. Bygelyks, in kompjûter is in systeem, komputer is in systeem, in lokaal netwurk en it ynternet binne systemen, en de measte programma's moatte bettere systemen wêze as se binne (de âlde styl fan programmearring út 'e jierren '50 duorre oant it liket dat programmearring moat wêze lykas dit - neat koe fierder fan 'e wierheid wêze).

It ynternet is in goed foarbyld - yn tsjinstelling ta de measte software dizze dagen, hoecht it ynternet net te stopjen om wat te reparearjen of te ferbetterjen - it is mear as in biologysk systeem - troch ús bedoeling - dan wat de measte minsken tinke oan as in kompjûtersysteem. En it is folle mear skalberber en betrouber as hast alle softwaresystemen dy't hjoed beskikber binne. Dit is echt de muoite wurdich om oer te tinken foardat jo minder krêftige konsepten leare oan newbie-programmeurs!

Dat wat wy moatte dwaan yn in kursus Computer Science foar it earste jier is rekken hâlde mei wat studinten krekt oan it begjin kinne dwaan, en besykje dan binnen har "kognitive lading" te bliuwen om har te helpen nei wat echt wichtich is. It is wichtich om "echt te bliuwen" en manieren te finen dy't yntellektueel earlik en geskikt binne foar dyjingen dy't krekt begjinne. (Lear asjebleaft gjin minne ideeën gewoan om't se wat ienfâldiger lykje - in protte minne ideeën binne eins ienfâldiger!).

Learlingen moatte begjinne mei it meitsjen fan iets dat in protte fan 'e wichtige skaaimerken hat dy't ik hjir haw besprutsen. It moat in systeem wêze fan ferskate dynamysk ynteraksjende dielen, ensfh. In goede manier om te besluten hokker programmeartaal te brûken is gewoan wat te meitsjen dat tûzenen ynteraktive dielen hat! As net, dan moatte jo ien fine. It slimste dat jo kinne dwaan is studinten op in paad fan te min floeiberens sette, wat grutte ideeën slim beheine soe. It deadet se gewoan - en wy wolle se ferheegje, se net deadzje.

Oer GoTo School

Alan Kay: Hoe soe ik kompjûterwittenskip leare 101

Boarne: www.habr.com

Add a comment