Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Üks põhjus, miks tõeliselt ülikooli astuda, on see, et minna kaugemale lihtsalt ametialasest ettevalmistusest ja haarata hoopis sügavamate ideede külge.

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Mõtleme selle üle natuke. Mõni aasta tagasi kutsusid Computeri teaduse osakonnad mind loenguteks mitmesse ülikooli. Peaaegu juhuslikult küsisin oma esimeselt auditooriumilt, mis koosnes vanemaastmest, kraadiõppuritest ja professoritest, nende määratlust «Computer Science». Kõik suutsid anda vaid inseneritehnilise määratluse. Olen seda teinud igas uues kohas ja kõikjal olid sarnased tulemused.

Teine küsimus oli: «Kes on Douglas Engelbart?». Mõned inimesed ütlesid: «Kas ta ei olnud kuidagi seotud hiirega?» (ja see häiris mind väga, kuna minu teaduslik kogukond on teinud palju tööd, et sellele küsimusele saaks vastata kahe-kolme hiireklõpsuga ning veenduda, et Engelbart tõepoolest oli hiirega seotud).

Osaliselt oli probleemis uudishimu puudumine, osaliselt isiklikud eesmärgid, mis ei olnud seotud õppimisega, ja osaliselt puudulik arusaam sellest, mis see teadus endast kujutab, ja nii edasi.

Olen töötanud osalise tööajaga California Ülikooli arvutitehnika osakonnas mõned aastad (põhimõtteliselt olen professor, kuid mul pole vaja osaleda osakonna koosolekutel). Aeg-ajalt õpetan tunde, mõnikord esimese kursuse üliõpilastele. Nende aastate jooksul on juba madal uudishimu arvutiteaduse vastu veelgi vähenenud (aga populaarsus on suurenenud, kuna arvutitehnika nähakse kui teed hästi tasustatud tööle, kui oskad programmeerida ja oled saanud sertifikaadi parimates kümnes koolis). Seega ei ole ükski üliõpilane veel kaevanud, et Kalifornia Ülikoolis on esimene keel C++!

Minu arvates oleme sattunud olukorda, kus mõlemad mõisted „Arvuti“ ja „Teadus“ on nõrkade massiivsete kontseptsioonide tõttu purustatud, et luua uus termin - omamoodi silt teksapükstel - mis kõlab hästi, kuid on piisavalt tühi. Sellega seotud termin „programmeerimise inseneriteadus“ on samuti selliselt purustatud, mis ei kasutanud parimaid mõisteid „programmeerimine“ ja „inseneriteadus“, vaid lihtsalt kombineeris need (see tehti teadlikult kuuekümnendatel, kui termin loodi).

Üks põhjus, miks ülikooli astuda, on välja minna lihtsast ametikoolitusest ja haarata hoopis sügavamad ideed. Arvan, et on üsna mõistlik üritada aine tutvustamisel - kui võimalik, näidete kaudu - teha nii, et õppijad tegeleksid reaalsete probleemidega ja hakkaksid aru saama, mis on tõeliselt huvitav, oluline ja kesksel kohal antud valdkonnas.

Esimese klassi õpilased rõõmustavad, kui neile näidatakse, kuidas joonlaud teise joonlaua kohal muutub aritmeetikainstrumendiks, millega nad saavad 5. klassi õpilasi ületada murdosa lisamisel. Ja seejärel on nad õnnelikud, et saavad osaleda täiustatud aritmeetikainstrumendi arendamisel. Nad said tõeliselt kontakti arvutiga - füüsilise ja vaimse tööriistaga, mis aitab meil mõelda. Nad on õppinud tõeliselt tõhusat viisi numbrite esitlemiseks - tõhusam, kui seda õpetatakse koolides!

Nad suutsid siduda oma aruka idee „lisamisest“ kui „kumulatsioonist“ millegi uuega, mis omab uusi võimsaid omadusi. Nad programmeerisid selle selliselt, et see suudab lahendada erinevaid probleeme.

Nad laiendasid seda ka. Ja nii edasi. See ei ole digitaalne arvuti. Ja see ei ole arvuti, millel on salvestatav programm. Kuid see on arvuti olemus. Just nagu Antiküütera mehhanism — see on arvuti ja arvutuste olemus.

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Antiküütera mehhanism

Kaua me saame minna ja kui palju saame teha enne, kui kõik läheb kontrolli alt välja ja me kaotame end abstraktsioonides? Olen alati olnud tundlik Alan Perlis — esimene Turingi auhinna laureaat, kes võib-olla leiutas termini „Arvutiteadus” — kes ütles 60ndatel: „Arvutiteadus on protsesside teadus.” Kõikides protsessides.

Quora nimel ärgem üritagem seda edasi suruda või religioosseks dogmaks muuta. Lihtsalt kasutame ideed õnnelikult. Alan Perlis, et paremini mõelda meie valdkonnale. Ja eriti sellele, kuidas sellele õpetada. Täna peame vaatama „teaduse” kaasaegset tähendust, ja Perlis oli üsna kindel, et see ei tohiks olla lahjendatud vanade tähendustega (näiteks „teadmiste kogumisega”) ja kasutustega (nt „raamatukogu teadus” või isegi „sotsiaalteadused”). All „teadus” üritas ta mõista fenomeni, luues mudeleid/kaarte, mis püüavad näidata, „jälgida” ja ennustada nähtusi.

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Olen andnud mõningaid intervjuusid selle kohta, kuidas parimad kaardid ja mudelid võivad sageli sobida t-särgi jaoks, nagu Maxwelli võrrandid ja muud. Analoogia on selles, et on olemas „sildade teadus”, kuigi enamik sildu on inimese loodud. Kuid niipea kui sild on ehitatud, kajastab see nähtusi, teadlased saavad neid uurida, sildadest on võimalik luua mudeleid mitmesuguste liikide jaoks ja luua laiahaardelisi ja kasulikke „sildade teooriaid”. Toimus on see, et seejärel saab kavandada ja ehitada uusi sildu (olen juba maininud, et tõenäoliselt ei ole midagi lõbusamat kui teadlaste ja inseneride koostöö suurte ja oluliste probleemide lahendamiseks!)

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Herbert Simon — Turingi auhinna ja Nobeli preemia laureaat — nimetas kogu seda „tehnoloogia teaduseks” (ja kirjutas suurepärase raamatu sama pealkirjaga).

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Toon välja näite. 50ndatel aastatel ehitasid ettevõtted ja ülikoolid arvuteid, millel oli salvestatav programm, ja hakkasid neid programmeerima — ja oli eriline hetk, kui 1956. aastal ilmus Fortran — mis ei olnud esimene kõrgetasemeline keel, kuid võimalik, et esimene, mis oli tehtud nii hästi, et seda kasutati paljudes erinevates valdkondades, sealhulgas paljudes, mis varem olid tehtud ainult masinkeelega.

Kõik see sünnitas „fenomena”.

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

John McCarthy

Lisp'i ajalugu on keerulisem, kuid John McCarthy oli huvitatud proovimisest leida "arvutuste matemaatiline teooria" ja oli määratud tegema nii, et kõik töötaks suurepäraselt. Eval-funktsioon, mis tõlgendab Lisp'i, mahub kergesti T-särgi peale! Võrreldes "programmimiseksüsteemiga" on see väga väike. Mis veelgi olulisem, see "arvutuste teooria" sisaldas võimsamat kontseptsiooni kui Fortran! See oli parim idee sillaks!

Lisp'i kompaktne olemus võimaldab kogu programmeerimise ideed haarata mõne klõpsuga sügaval tasandil ja mõelda tasemele, mis tundub lihtsalt võimatu, kui vaatad suuri artefakte (see on üks põhjusi, miks teadlased armastavad, et matemaatika oleks kompaktne ja võimas). Siin kasutatud matemaatika on uus matemaatika, kuna see lubab selliseid mõisteid nagu "enne" ja "pärast", mis viib "muutuva suuruse loogikani", mis võimaldab säilitada nii funktsionaalset sõltuvust kui ka loogilist mõtlemist, samuti lubades aega ja selle liikumatust. (See on endiselt meie ajal arusaamatu julmas situatsiooniprogrammeerimise maailmas).

Lisp, olles võimas programmeerimiskeel ja meta-keel, mis suudab esitada oma teooriat, on tõeline arvutiteaduse näide. Kui te õpite seda ja muid sarnaseid asju, saate sügavamalt mõelda ja olla suurema vastutuse all oma saatuse ees, kui kui te lihtsalt õpite programmeerima Fortran'is või selle kaasaegsetes ekvivalentides (... nii saate läheneda programmeerijatele!).

Te õpite palju rohkem spetsiaalsetest disainidest, mis on arvutustes vajalikud (näiteks ei hinnata tavaliselt, kui arvutused sageli nõuavad väljapoole arvutuslikke keskkondi: üks salvestatud programmide arvutamise eripära on see, et see ei ole lihtsalt programmimaterjal, vaid täiesti uue arvuti jaoks vajalik materjal).

Teine põhjus Perl'i definitsiooni valimiseks on see, et arvutamine on üldiselt rohkem seotud erinevat tüüpi süsteemide loomisega, kui algoritmide, "andmestruktuuride" või isegi programmeerimisega kui sellisega. Näiteks arvuti on süsteem, arvutused on süsteemid, kohalik võrk ja internet on süsteemid, ja enamik programme peaks olema paremad süsteemid kui need, millega nad on (vana programmeerimise stiil 50ndatest aastatest on kestnud nii kaua, et tundub, et programmeerimine peab olema selline — ei ole midagi tõeliselt kaugemale tõest).

Internet on hea näide — erinevalt enamikust tänapäeva programmidest ei pea internetti peatama, et midagi parandada või täiustada — see sarnaneb rohkem bioloogilisele süsteemile — meie kavatsusest tulenevalt, kui sellele, mida enamik inimesi arvab arvutisüsteemidest. See on palju skaleeritavam ja usaldusväärsem kui peaaegu kõik olemasolevad tarkvarasüsteemid. See on tõeliselt väärt mõtlema, enne kui õpetad algajaid programmeerimisele vähem võimekatesse kontseptsioonidesse!

Nii et mida me peame tegema esimesel kursusel, mis käsitleb arvutiteadust, on arvesse võtta, mida konkreetselt üliõpilased saavad alguses teha, ja seejärel püüda jääda nende "kognitiivse koormuse" piiridesse, et aidata neil jõuda sinna, kus on tõeliselt oluline. On väga oluline "olla tõeline" ning leida teid, mis oleksid intellektuaalselt ausad ja sobiksid neile, kes alles alustavad õppimist. (Palun ärge õpetage halbu ideid lihtsalt seetõttu, et need tunduvad veidi lihtsamad — palju halbu ideid on tegelikult lihtsamad!).

Üliõpilased peaksid alustama millegi loomisega, millel on palju oluliselt tähtsaid omadusi, millest ma siin rääkisin. See peaks olema süsteem mitmest dünaamiliselt omavahel suhtlevast osast ja nii edasi. Hea viis otsustada, millist programmeerimiskeelt kasutada, on lihtsalt luua midagi, millel on tuhandeid omavahel koostööd tegevaid komponente! Kui seda pole, peaksite seda leidma. Kõige hullem, mida teha saab, on suunata üliõpilased liiga nõrga sujuvuse teele, mis piiraks tugevalt ulatuslikke ideid. See lihtsalt tapab nende entusiasmi — me tahame neid kasvatada, mitte hävitada.

GoTo koolist

Alan Kay: Kuidas ma õpetaksin Arvutiteaduse 101

Allikas: habr.com

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster