Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

"Üks põhjus, miks ülikooli minna, on minna kaugemale lihtsast kutseõppest ja haarata selle asemel sügavamaid ideid."

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Mõelgem selle küsimuse üle veidi. Mitu aastat tagasi kutsusid arvutiteaduse osakonnad mind mitmetesse ülikoolidesse loenguid pidama. Peaaegu juhuslikult küsisin oma esimeselt üliõpilastelt, magistrantidelt ja professoritelt arvutiteaduse definitsiooni kohta. Igaüks võiks anda vaid insenerimääratluse. Tegin seda igas uues kohas ja kõikjal olid sarnased tulemused.

Teine küsimus oli: "Kes on Douglas Engelbart?" Mitmed inimesed küsisid: "Kas see polnud arvutihiirega seotud?" (ja see valmistas mulle suurt pettumust, kuna minu teadlaskond oli näinud palju vaeva, et sellele küsimusele oleks võimalik vastata kahe või kolme hiireklõpsuga, ning veendunud, et Engelbartil on arvutihiirega tõesti midagi pistmist) .

Osaliselt oli probleemiks vähene uudishimu, osalt isiklike eesmärkide kitsikus, mis ei olnud seotud õppimisega, osalt arusaamatus, mis see teadus on jne.

Olen töötanud mitu aastat osalise tööajaga California ülikooli arvutiteaduse osakonnas (sisuliselt olen ma professor, aga ma ei pea käima osakonna koosolekutel). Aeg-ajalt annan tunde, vahel ka esmakursuslastele. Aastate jooksul on niigi madal uudishimu arvutiteaduse alal oluliselt langenud (kuid populaarsuse tase on ka tõusnud, sest arvutustehnikat nähakse kui teed hästi tasustatud töökohale, kui oskad kodeerida ja saada tipptasemelt tunnistus 10 kool). Seetõttu pole ükski tudeng kunagi kurtnud, et California ülikooli esimene keel on C++!

Mulle tundub, et seisame silmitsi olukorraga, kus nii "arvuti" kui ka "teaduse" tähendused on hävitatud nõrkade, massiivsete kontseptsioonide tõttu, et luua uus termin - omamoodi silt teksadele -, mis kõlab hästi, kuid on üsna tühi. Seotud termin, mis on samamoodi hävitatud, on "tarkvaratehnika", mis jällegi ei kasutanud kõige geniaalsemaid "programmeerimise" ja "inseneride" ideid, vaid lihtsalt ühendas need (seda tehti sihilikult kuuekümnendatel, kui väljamõeldud termin).

Üks põhjus, miks päriselt ülikooli minna, on lihtsast kutseõppest kaugemale jõudmine ja hoopis sügavamate ideede haaramine. Mulle tundub üsna mõistlik, et eriala sissejuhatusega püütakse – võimalusel näidete kaudu – panna tudengeid tegelema päriselu probleemidega ja hakata mõistma, mis on tegelikult huvitav, oluline ja valdkonna keskne.

Esimese klassi õpilased rõõmustavad, kui neile näidatakse, kuidas teise joonlaua peal olevast joonlauast saab liitmismasin, millega saab murdude liitmisel 5. klassi lapsi võita. Ja siis osalevad nad hea meelega täiustatud lisamismasinate väljatöötamises. Nad puudutasid tõelist arvutit – füüsilist ja vaimset tööriista, mis aitab meil mõelda. Nad õppisid tõeliselt tõhusa viisi numbrite kujutamiseks – tõhusamalt, kui koolides õpetatakse!

Nad suutsid ühendada oma terve mõistuse idee "lisamisest" kui "akumuleerumisest" millegi sarnasega, millel on võimsad uued omadused. Nad programmeerisid selle nii, et see suudab lahendada mitmesuguseid probleeme.

Samuti laiendasid nad seda. Ja nii edasi. See ei ole digitaalne arvuti. Ja see pole päheõpitud programmiga arvuti. Kuid see on arvuti olemus. Just nagu antikythera mehhanism - See on üldiselt arvuti ja andmetöötluse olemus.

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Antikythera mehhanism

Kui kaugele saame minna ja kui palju ära teha, enne kui asjad käest ära lähevad ja abstraktsioonidesse eksime? Olen alati olnud iseloomustamisel poolik Alan Perlis - esimene Turingi auhinna võitja, kes võis leiutada termini "arvutiteadus" - kes 60ndatel ütles: "Arvutiteadus on protsesside teadus." Kõik protsessid.

Quora huvides ärgem püüdkem seda edasi lükata ega muuta seda religioosseks dogmaks. Kasutagem seda ideed mõnuga Ala Perlisaet oma valdkonnale paremini mõelda. Ja eriti selle kohta, kuidas seda õpetada. Nüüd peame vaatama sõna "teaduse" tänapäevast tähendust ja Perlis oli üsna kindel, et seda ei tohiks lahjendada vanemate tähenduste (nagu "teadmiste kogumine") ja kasutusviisidega (nt "raamatukoguteadus" või isegi "ühiskondlik"). teadused")"). "Teaduse" abil püüdis ta mõista nähtust, luues mudeleid/kaarte, mis püüavad nähtusi näidata, "jälgida" ja ennustada.

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Olen andnud mitmeid intervjuusid selle kohta, kuidas parimad kaardid ja mudelid sageli T-särgile sobivad, nii nagu Maxwelli võrrandid ja teised. Analoogia on see, et on olemas "sillateadus", kuigi enamik sildu on inimese loodud. Kuid kui sild on ehitatud, esindab see nähtusi, mida teadlased saavad uurida, sildade abil saab teha mitmesuguseid mudeleid ning luua põhjalikke ja kasulikke "sillateooriaid". Lõbus on see, et saab siis projekteerida ja ehitada uusi sildu (ma juba mainisin, et vaevalt on midagi lõbusamat kui teadlaste ja inseneride koostöö suurte ja oluliste probleemide lahendamisel!)

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Turingi auhinna ja Nobeli preemia laureaat Herbert Simon nimetas seda kõike "kunstliku teaduseks" (ja kirjutas suurepärase raamatu sama pealkirjaga).

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Lubage mul tuua teile näide. 50ndatel ehitasid ettevõtted ja ülikoolid mäluarvuteid ja hakkasid neid programmeerima – ja oli eriline hetk, kui Fortran 1956. aastal välja tuli –, mis polnud küll esimene kõrgetasemeline keel, aga võib-olla esimene nii hästi tehtud keel, et see on olnud kasutatakse paljudes erinevates valdkondades, sealhulgas paljudes, mida varem tehti ainult masinkeeles.

Kõik see tekitas "nähtusi".

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

John McCarthy

Lispi ajalugu on keerulisem, kuid John McCarthy tundis huvi "matemaatilise arvutusteooria" leidmise vastu ja oli otsustanud, et kõik toimiks ideaalselt. Lispi tõlgendav eval funktsioon võiks vabalt T-särgile ära mahtuda! Võrreldes "programmeerimissüsteemiga" on see tähtsusetu. Veelgi olulisem on see, et see "arvutusteooria" oli võimsam kontseptsioon kui Fortran! See oli parim silla idee!

Lispi miniatuurne olemus võimaldab kogu programmeerimise idee mõne klõpsuga sügavamal tasemel tabada ja läbi mõelda tasemel, mis tohutuid artefakte vaadates tundub lihtsalt võimatu (see on üks põhjusi miks teadlastele meeldib, et matemaatika on kompaktne ja võimas). Siin kasutatav matemaatika on uus matemaatika, kuna see võimaldab kasutada selliseid mõisteid nagu "enne" ja "pärast" ning see viib "muutuva loogikani", mis võimaldab säilitada nii funktsionaalse sõltuvuse kui ka loogilise mõttevoolu, võimaldades samas ka positsiooni ja läbipääsu. ajast. (Situatsioonilise programmeerimise julmas maailmas ei mõisteta seda meie ajal ikka veel).

Lisp kui võimas programmeerimiskeel ja metakeel, mis võib esindada oma teooriat, on tõelise arvutiteaduse näide. Kui õpite seda ja muid sarnaseid asju, saate sügavamalt mõelda ja oma saatuse eest rohkem vastutada kui siis, kui õppisite programmeerima lihtsalt Fortranis või selle tänapäevastes ekvivalentides (... et saaksite programmeerijatele lähemale! ).

Saate palju rohkem teada andmetöötluses vajalike disainilahenduste eriliikide kohta (näiteks ei ole seda tavaliselt hinnatud, kui andmetöötlus nõuab sageli arvutikeskkonda väljumist: üks salvestatud pehme andmetöötluse eripära on see, et see ei ole lihtsalt materjal programmi jaoks, kuid materjal täiesti uue arvuti jaoks).

Teine põhjus Perlise definitsiooni valimiseks on see, et üldiselt tegeleb andmetöötlus palju rohkem mitmesuguste süsteemide loomisega kui algoritmide, "andmestruktuuride" või isegi programmeerimisega. Näiteks arvuti on süsteem, andmetöötlus on süsteem, kohtvõrk ja Internet on süsteemid ja enamus programme peaks olema paremad süsteemid kui nad on (vana programmeerimisstiil 50ndatest kestis seni, kuni tundus, et programmeerimine peaks olema nagu see – miski ei saa olla tõest kaugemal).

Internet on hea näide – erinevalt enamikust tänapäeval kasutatavatest tarkvaradest ei pea Internetti peatama, et midagi parandada või täiustada – see on meie kavatsusest lähtuvalt pigem bioloogiline süsteem kui see, mida enamik inimesi arvab arvutussüsteemina. Ja see on palju skaleeritavam ja usaldusväärsem kui peaaegu kõik tänapäeval saadaolevad tarkvarasüsteemid. Sellele tasub tõesti mõelda, enne kui õpetate algajatele programmeerijatele vähem võimsaid kontseptsioone!

Seega peame esimese aasta arvutiteaduse kursusel võtma arvesse, mida õpilased täpselt alguses teha võivad, ja seejärel püüdma jääda oma "kognitiivse koormuse" piiridesse, et aidata neil jõuda selleni, mis on tõeliselt oluline. Oluline on „reaalsuseks jääda“ ja leida viise, mis on intellektuaalselt ausad ja sobivad just alustajatele. (Palun ärge õpetage halbu ideid lihtsalt sellepärast, et need tunduvad veidi lihtsamad – paljud halvad ideed on tegelikult lihtsamad!).

Õpilased peaksid alustama sellest, et luua midagi, millel on palju olulisi omadusi, millest olen siin arutanud. See peaks olema süsteem, mis koosneb mitmest dünaamiliselt interakteeruvast osast jne. Hea viis otsustada, millist programmeerimiskeelt kasutada, on lihtsalt teha midagi, millel on tuhandeid üksteisega suhtlevaid osi! Kui ei, siis peaksite selle leidma. Halvim, mida saate teha, on suunata õpilased liiga vähese sujuvuse teele, mis piiraks tugevalt suuri ideid. See lihtsalt tapab nad – ja me tahame neid kasvatada, mitte tappa.

GoTo Schoolist

Alan Kay: Kuidas ma õpetaksin arvutiteadust 101

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusväärne hostimine, VPS VDS-serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster