Alans Kejs: kā es mācītu Computer Science 101

Ā«Viena no reālajiem iemesliem, lai patiesi iestātos universitātē, ir pārkāpt vienkārÅ”as profesionālās apmācÄ«bas robežas un pievērsties dziļākām idejām.Ā»

Alans Kejs: kā es mācītu Computer Science 101

PārlÅ«kosim Å”o jautājumu nedaudz dziļāk. Pirms dažiem gadiem informācijas tehnoloÄ£iju katedras aicināja mani sniegt lekcijas vairākās universitātēs. GandrÄ«z nejauÅ”i es jautāju savam pirmajam auditorijai, kas sastāvēja no bakalauriem, maÄ£istriem un profesoriem, kā viņi definētu Ā«Computer ScienceĀ». Visi sniedza tikai inženiertehnisku definÄ«ciju. Es veicu Å”o paÅ”u eksperimentu katrā jaunā vietā, un rezultāti visur bija lÄ«dzÄ«gi.

Cits jautājums bija: Ā«Kas ir Doug Engelbart?Ā». Daži cilvēki teica: Ā«vai viņŔ nebija saistÄ«ts ar datoru peli?Ā» (un tas mani ļoti vilināja, jo mana zinātniskā kopiena ir ieguldÄ«jusi daudz pūļu, lai bÅ«tu iespējams atbildēt uz Å”o jautājumu pēc diviem vai trim klikŔķiem un pārliecināties, ka Engelbart tieŔām ir saistÄ«ts ar datoru peli).

Daļēji problēma bija saistÄ«ta ar zinātkāres trÅ«kumu, daļēji — ar Å”aurām personiskajām mērÄ·iem, kas nebija saistÄ«ti ar mācÄ«bām, daļēji — ar izpratnes trÅ«kumu par to, kas ir Ŕī zinātne, un tā tālāk.

Es strādāju uz pusslodzi Kalifornijas universitātes datora zinātnes katedrā jau vairākus gadus (praksē esmu profesors, taču man nav jāapmeklē katedras sanāksmes). Laiku pa laikam es pasniedzu nodarbības, dažreiz pirmajā kursā. Šo gadu laikā jau tā zems zinātkāres līmenis par Computer Science ievērojami samazinājies (bet pieaudzis popularitātes līmenis, jo datorzinātne tiek uzskatīta par ceļu uz labi apmaksātu darbu, ja tu proti programmēt un esi ieguvis sertifikātu kādā no labākajām 10 skolām). Attiecīgi neviens students vēl nav sūdzējies, ka Kalifornijas universitātē pirmais valoda ir C++!

Man Ŕķiet, ka mēs esam saskāruÅ”ies ar situāciju, kurā abi vārdi ā€žDatorsā€ un ā€žZinātneā€ ir iznÄ«cināti vājām masÄ«vām koncepcijām, lai izveidotu jaunu terminu — kaut ko lÄ«dzÄ«gu cenu zÄ«mei džinsos — kas izklausās labi, bet ir pietiekami tukÅ”s. SaistÄ«tais termins, kurÅ” lÄ«dzÄ«gi ir iznÄ«cināts, ir ā€žprogrammatÅ«ras inženierijaā€, kas, atkal, nelieto visgudrākās idejas par ā€žprogrammēŔanuā€ un ā€žinženierijuā€, bet vienkārÅ”i apvieno tos (tas tika apzināti izdarÄ«ts seÅ”desmitajos gados, kad tika izgudrots Å”is termins).

Viena no Ä«stajām, lai tieŔām iestātos universitātē, ir izkāpt ārpus vienkārÅ”as profesionālās apmācÄ«bas un tā vietā aizÄ·erties pie dziļākām idejām. Man Ŕķiet diezgan saprātÄ«gi, ka, ievadot specialitātē, cenÅ”as — ja iespējams, izmantojot piemērus — panākt, lai studenti nodarbotos ar reālām problēmām un sāktu saprast, kas patiesÄ«bā ir interesants, svarÄ«gs un centrāls Å”ajā jomā.

Pirmklasnieki ir sajÅ«smā, kad viņiem rāda, kā lineāls virs cita lineāla kļūst par aritmometru, ar kura palÄ«dzÄ«bu viņi var pārspēt piektās klases bērnus, pievienojot daļas. Un tad viņi bÅ«s laimÄ«gi piedalÄ«ties uzlabotu aritmometru izstrādē. Viņi ir pieskāruÅ”ies Ä«stam datoram — fiziskam un garÄ«gam rÄ«kam, kas palÄ«dz mums domāt. Viņi ir apguvuÅ”i patiesi efektÄ«vu veidu, kā attēlot skaitļus — daudz efektÄ«vāku nekā tas, ko māca skolās!

Viņi spēja savienot viņu veselo ideju par ā€žpievienoÅ”anuā€ kā ā€žuzkrāŔanuā€ ar kaut ko lÄ«dzÄ«gu jaunām jaudÄ«gām Ä«paŔībām. Viņi to ir programmējuÅ”i tā, lai tas bÅ«tu spējÄ«gs risināt dažādas problēmas.

Viņi to arÄ« paplaÅ”ināja. Un tā tālāk. Tas nav digitālais dators. Un tas nav dators ar atmiņā saglabātu programmu. Bet tas ir datora bÅ«tÄ«ba. TieÅ”i tāpat kā Antikiteras mehānisms — tas ir vispār datora un aprēķinu bÅ«tÄ«ba.

Alans Kejs: kā es mācītu Computer Science 101

Antikiteras mehānisms

Cik tālu mēs varam aiziet un cik daudz izdarÄ«t, pirms viss izslÄ«d no kontroles, un mēs apmaldāmies abstrakcijās? Es vienmēr esmu bijis ieinteresēts raksturojumā Alans Perlijs — pirmais TjÅ«ringa balvas ieguvējs, kurÅ”, iespējams, izgudroja terminu Ā«DatorzinātneĀ» — kurÅ” 60. gados teica: Ā«Datorzinātne ir procesus pētoÅ”a zinātneĀ». Par visiem procesiem.

Dēļ uzņēmuma Quora nevajadzētu censties to tālāk virzÄ«t vai pārvērst par reliÄ£isku dogmu. VienkārÅ”i laimÄ«gi izmantosim Å”o ideju. Alans Perlis, lai labāk domātu par mÅ«su jomu. Un Ä«paÅ”i par to, kā to mācÄ«t. Tagad mums jāapskata mÅ«sdienu Ā«zinātnesĀ» nozÄ«me, un Perlis bija diezgan pārliecināts, ka tai nevajadzētu Ŕķidrināties ar vecām nozÄ«mēm (piemēram, Ā«zināŔanu krāŔanaĀ») un izmantot to (piemēram, Ā«bibliotēku zinātneĀ» vai pat Ā«sociālās zinātnesĀ»). Ar Ā«zinātniĀ» viņŔ centās izprast fenomenu, veidojot modeļus/kartes, kas mēģina parādÄ«t, Ā«izsekotĀ» un prognozēt parādÄ«bas.

Alans Kejs: kā es mācītu Computer Science 101

Es sniedzu dažas intervijas par to, kā labākās kartes un modeļi bieži var bÅ«t piemēroti uz T-kreklu, tāpat kā Maksvela vienādojumi un citi. Analogie ir tas, ka pastāv Ā«zinātne par tiltiemĀ», lai gan lielākā daļa tiltu ir cilvēka veidoti. Bet, tiklÄ«dz tilts ir uzbÅ«vēts, tas atspoguļo parādÄ«bas, ko zinātnieki var pētÄ«t, no tiltiem iespējams izveidot dažādu veidu modeļus un izstrādāt plaÅ”as un noderÄ«gas Ā«tiltu teorijasĀ». Prieks ir tajā, ka pēc tam iespējams izstrādāt un uzbÅ«vēt jaunus tiltus (es jau pieminēju, ka, iespējams, nav nekas aizraujoŔāks par zinātnieku un inženieru kopÄ«gu darbu, lai risinātu lielas un nozÄ«mÄ«gas problēmas!).

Alans Kejs: kā es mācītu Computer Science 101

Herberts Saimons — TjÅ«ringa balvas un Nobela prēmijas ieguvējs — visu Å”o nosauca par Ā«mākslÄ«gās zinātnesĀ» (un uzrakstÄ«jis lielisku grāmatu ar Å”o paÅ”u nosaukumu).

Alans Kejs: kā es mācītu Computer Science 101

Ä»aujiet sniegt piemēru. 50. gados uzņēmumi un universitātes sāka bÅ«vēt datorus ar programmām, kas bija atmiņā, un sākumā tos programmēt — un 1956. gadā radās Ä«paÅ”s brÄ«dis, kad parādÄ«jās Fortran — kas nebija pirmais augstākās lÄ«meņa valoda, bet, iespējams, pirmais, kas tika izveidots tik labi, ka to izmantoja daudzās dažādās jomās, tostarp daudzās, kas agrāk tika darÄ«tas tikai maŔīnu valodā.

Viss tas radīja «fenomenus».

Alans Kejs: kā es mācītu Computer Science 101

Džons Makartijs

Lisp vēsture ir sarežģītāka, taču Džons Makkartijs interesējās par matemātiskās aprēķinu teorijas atraÅ”anas mēģinājumu un bija apņēmÄ«bas pilns panākt, lai viss darbotos lieliski. Eval funkcija, kas interpretē Lisp, bez grÅ«tÄ«bām var tikt uzdrukāta uz T-kreklā! SalÄ«dzinājumā ar "programēŔanas sistēmu" tas ir niecÄ«gi. Kas ir vēl svarÄ«gāk, Å”ai "aprēķinu teorijai" bija spēcÄ«gāka koncepcija nekā Fortran! Tā bija labākā tilta ideja!

Lisp sÄ«kums ļauj visai programmēŔanas idejai tikt uztvertai ar pāris klikŔķiem dziļākā lÄ«menÄ« un tikt pārdomātai tādā lÄ«menÄ«, kas Ŕķiet vienkārÅ”i neiespējams, kad tu skaties uz milzÄ«gajiem artefaktiem (tas ir viens no iemesliem, kāpēc zinātnieki vēlas, lai matemātika bÅ«tu kompakta un jaudÄ«ga). Å eit izmantotā matemātika ir jauna, jo pieļauj tādas jēdzienus kā "pirms" un "pēc", un tas noved pie "mainÄ«gas lieluma loÄ£ikas", kas ļauj saglabāt gan funkcionālo atkarÄ«bu, gan loÄ£isko domāŔanu, kā arÄ« pieļaujot laika stāvokli un gaitu. (Tas joprojām nav saprasts mÅ«su laikā nežēlÄ«gajā situatÄ«vās programmēŔanas pasaulē).

Lisp, darbojoties kā spēcÄ«ga programmēŔanas valoda un meta valoda, kas spēj prezentēt savu teoriju, ir Ä«sta datorzinātnes piemērs. Ja tu to iemācÄ«sies un citas lÄ«dzÄ«gas lietas, tu varēsi domāt dziļāk un lielākā atbildÄ«bā bÅ«t par savu likteni, nekā ja tu vienkārÅ”i iemācÄ«sies programmēt Fortranā vai tā mÅ«sdienu ekvivalentos (tādējādi tu varēsi pietuvoties programmētājiem!).

Tu uzzināsi daudz vairāk par speciāliem dizaina veidiem, kas nepiecieÅ”ami aprēķinos (piemēram, parasti netiek novērtēts, kad aprēķini bieži prasa iziet ārpus aprēķinu vides: viena no speciālām iezÄ«mēm uzkrātajām programmām ir tā, ka tās nav tikai materiāls programmai, bet materiāls pavisam jaunam datoram).

Vēl viens iemesls, kāpēc izvēlēties Perlisa definÄ«ciju, ir tas, ka kopumā aprēķini ir daudz saistÄ«tāki ar daudzu veidu sistēmu izveidi nekā ar algoritmiem, "datu struktÅ«rām" vai pat programmatÅ«ru kā tādu. Piemēram, dators ir sistēma, aprēķini ir sistēmas, lokāla tÄ«kla un interneta ir sistēmas, un lielākajai daļai programmu ir jābÅ«t labākām sistēmām nekā tās ir (vecais programmatÅ«ras izstrādes stils, kas pastāv kopÅ” 50. gadiem, ir pastāvējis lÄ«dz brÄ«dim, kad Ŕķiet, ka programmēŔanai tā jābÅ«t — nav nekas tālāk no patiesÄ«bas).

Internets ir labs piemērs — atŔķirÄ«bā no lielākā daļa programmu mÅ«sdienās, internetu nav nepiecieÅ”ams apstāt, lai salabotu vai uzlabotu kaut ko — tas vairāk atgādina bioloÄ£isku sistēmu — kā mēs to redzam, nevis to, ko lielākā daļa cilvēku uzskata par aprēķinu sistēmu. Un tas ir daudz mērogojams un uzticamāks nekā gandrÄ«z visas esoŔās programmatÅ«ras sistēmas. Par to patieŔām ir vērts padomāt, pirms mēs mācam iesācējiem programmēŔanu ne tik jaudÄ«gām koncepcijām!

Tātad, kas mums jādara pirmajā kursā datorsistēmās, ir ņemt vērā, ko tieÅ”i studenti var darÄ«t sākumā, un pēc tam mēģināt palikt viņu ā€žpazīŔanas slodzesā€ robežās, lai palÄ«dzētu viņiem nonākt pie tā, kas patieŔām ir svarÄ«gi. Ir ļoti svarÄ«gi ā€žpalikt Ä«stiemā€ un atrast ceļus, kas bÅ«tu intelektuāli godÄ«gi un atbilstu tiem, kuri tikai sāk mācÄ«ties. (LÅ«dzu, neapmāciet sliktiem uzskatiem tikai tāpēc, ka tie Ŕķiet nedaudz vienkārŔāki — daudz slikti uzskati patiesÄ«bā ir vienkārŔāki!).

Studentiem jāsāk ar kaut ko, kam bÅ«tu daudz svarÄ«gu Ä«paŔību, par kurām es Å”eit runāju. Tam jābÅ«t sistēmai no vairākiem dinamiski mijiedarbojoÅ”iem komponentiem utt. Labs veids, kā izdomāt, kuru programmēŔanas valodu izmantot, ir vienkārÅ”i izveidot kaut ko, kam ir tÅ«kstoÅ”iem mijiedarbojoÅ”u daļu! Ja tāda nav, jums vajadzētu to atrast. Visvairāk sliktākais, ko var izdarÄ«t, ir novietot studentus uz pārāk vāju ceļu, kas stipri ierobežotu lielas idejas. Tas vienkārÅ”i viņus nogalina - bet mēs vēlamies viņus audzināt, nevis nogalināt.

GoTo skola

Alans Kejs: kā es mācītu Computer Science 101

Avots: habr.com

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster