Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

"Salah satu sebab untuk benar-benar pergi ke universiti adalah untuk bergerak melangkaui latihan vokasional yang mudah dan sebaliknya memahami idea yang lebih mendalam."

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Mari kita fikirkan soalan ini sedikit. Beberapa tahun yang lalu, jabatan Sains Komputer menjemput saya untuk memberi syarahan di beberapa universiti. Hampir secara kebetulan, saya bertanya kepada penonton pertama saya yang terdiri daripada pelajar sarjana muda, pelajar siswazah dan profesor tentang definisi mereka tentang "Sains Komputer." Semua orang hanya boleh memberikan definisi kejuruteraan. Saya melakukan ini di setiap tempat baharu, dan di mana-mana terdapat hasil yang serupa.

Soalan lain ialah: "Siapa Douglas Engelbart?" Beberapa orang berkata, "bukankah ia ada kaitan dengan tetikus komputer?" (dan ini sangat mengecewakan saya, kerana komuniti saintifik saya telah berusaha keras untuk memastikan bahawa jawapan kepada soalan ini mungkin dengan dua atau tiga klik tetikus dan yakin bahawa Engelbart benar-benar ada kaitan dengan tetikus komputer) .

Sebahagian daripada masalah itu ialah kekurangan rasa ingin tahu, sebahagiannya kesempitan matlamat peribadi yang tidak berkaitan dengan pembelajaran, sebahagiannya kurang pemahaman tentang sains ini, dan sebagainya.

Saya telah bekerja sambilan dalam jabatan sains komputer di University of California selama beberapa tahun (saya pada dasarnya seorang profesor, tetapi saya tidak perlu pergi ke mesyuarat jabatan). Dari semasa ke semasa saya mengajar kelas, kadang-kadang untuk pelajar tahun satu. Selama bertahun-tahun, tahap rasa ingin tahu yang sudah rendah dalam Sains Komputer telah menurun dengan ketara (tetapi tahap populariti juga telah meningkat, kerana pengkomputeran dilihat sebagai laluan kepada pekerjaan yang bergaji tinggi jika anda boleh mengekod dan mendapatkan sijil dari atasan 10 sekolah). Sehubungan itu, tidak seorang pun pelajar pernah mengadu bahawa bahasa pertama di Universiti California ialah C++!

Nampaknya pada saya bahawa kita berhadapan dengan situasi di mana kedua-dua makna "Komputer" dan "Sains" telah dimusnahkan oleh konsep yang lemah dan besar-besaran untuk mencipta istilah baru - sejenis label pada seluar jeans - yang kedengaran bagus tetapi menarik. agak kosong. Istilah berkaitan yang telah dimusnahkan sama ialah "kejuruteraan perisian", yang, sekali lagi, tidak menggunakan idea "pengaturcaraan" dan "kejuruteraan" yang paling bijak, tetapi hanya menggabungkannya (ini sengaja dilakukan pada tahun enam puluhan, apabila ia istilah yang dicipta).

Salah satu sebab untuk benar-benar pergi ke universiti adalah untuk bergerak melangkaui latihan vokasional yang mudah dan sebaliknya memahami idea yang lebih mendalam. Nampaknya saya agak munasabah untuk pengenalan kepada kepakaran untuk mencubaβ€”melalui contoh jika bolehβ€”untuk melibatkan pelajar dengan masalah kehidupan sebenar dan mula memahami perkara yang sebenarnya menarik, penting dan penting dalam bidang tersebut.

Pelajar darjah satu bergembira apabila mereka ditunjukkan bagaimana pembaris di atas pembaris lain menjadi mesin tambah, yang dengannya mereka boleh mengalahkan kanak-kanak gred 5 dalam menambah pecahan. Dan kemudian mereka akan gembira untuk mengambil bahagian dalam pembangunan mesin penambahan yang lebih baik. Mereka menyentuh komputer sebenar - alat fizikal dan mental yang membantu kita berfikir. Mereka mempelajari cara yang benar-benar berkesan untuk mewakili nombor - lebih berkesan daripada apa yang diajar di sekolah!

Mereka dapat menggabungkan idea akal mereka untuk "menambah" sebagai "terkumpul" dengan sesuatu yang serupa dengan sifat baharu yang berkuasa. Mereka memprogramkannya supaya dapat menyelesaikan pelbagai masalah.

Mereka juga mengembangkannya. Dan sebagainya. Ini bukan komputer digital. Dan ini bukan komputer dengan program yang dihafal. Tetapi itulah intipati komputer. Seperti mekanisme antikythera - Ini secara amnya adalah intipati komputer dan pengkomputeran.

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Mekanisme Antikythera

Sejauh mana kita boleh pergi dan berapa banyak yang boleh kita lakukan sebelum perkara menjadi tidak terkawal dan kita tersesat dalam abstraksi? Saya sentiasa memihak kepada pencirian Alan Perlis - pemenang Anugerah Turing pertama, yang mungkin telah mencipta istilah "Sains Komputer" - yang pada tahun 60-an berkata: "Sains Komputer ialah sains proses." Semua proses.

Demi Quora, jangan cuba untuk menolak perkara ini lebih jauh atau mengubahnya menjadi dogma agama. Mari kita gunakan idea itu dengan gembira Ala Perlisauntuk berfikir lebih baik tentang bidang kita. Dan terutamanya tentang cara mengajarnya. Kita kini perlu melihat makna moden "sains", dan Perlis cukup yakin bahawa ia tidak boleh dicairkan dengan makna yang lebih lama (seperti "himpunan ilmu") dan kegunaan (seperti "sains perpustakaan" atau pun "sosial". sains") "). Dengan "sains" dia cuba memahami sesuatu fenomena dengan mencipta model/peta yang cuba menunjukkan, "menjejaki" dan meramalkan fenomena tersebut.

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Saya telah memberikan beberapa temu bual tentang cara peta dan model terbaik selalunya boleh memuatkan baju-T, cara persamaan Maxwell dan lain-lain. Analoginya ialah terdapat "sains jambatan," walaupun kebanyakan jambatan adalah buatan manusia. Tetapi sebaik sahaja jambatan dibina, ia mewakili fenomena yang boleh dikaji oleh saintis, jambatan boleh digunakan untuk membuat model pelbagai jenis, dan membentuk "teori jambatan" yang komprehensif dan berguna. Keseronokan ialah anda kemudian boleh mereka bentuk dan membina jambatan baharu (saya sudah menyebut bahawa hampir tidak ada perkara yang lebih menyeronokkan daripada saintis dan jurutera bekerja bersama untuk menyelesaikan masalah besar dan penting!)

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Herbert Simon, seorang pemenang Anugerah Turing dan Hadiah Nobel, memanggil semuanya "sains buatan" (dan menulis buku yang sangat baik dengan tajuk yang sama).

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Biar saya berikan satu contoh. Pada tahun 50-an, syarikat dan universiti membina komputer memori dan mula memprogramkannya - dan terdapat detik istimewa apabila Fortran keluar pada tahun 1956 - yang bukan bahasa peringkat tinggi pertama, tetapi mungkin yang pertama dibuat dengan sangat baik sehingga ia telah digunakan dalam banyak bidang yang berbeza, termasuk banyak yang sebelum ini hanya dilakukan dalam bahasa mesin.

Semua ini menimbulkan "fenomena".

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

John McCarthy

Sejarah Lisp lebih kompleks, tetapi John McCarthy mula berminat untuk cuba mencari "teori pengiraan matematik" dan bertekad untuk menjadikan semuanya berfungsi dengan sempurna. Fungsi eval, yang mentafsir Lisp, boleh dimuatkan dengan mudah pada baju-T! Berbanding dengan "sistem pengaturcaraan," ini tidak penting. Lebih penting lagi, "teori pengiraan" ini adalah konsep yang lebih berkuasa daripada Fortran! Ini adalah idea jambatan terbaik!

Sifat kecil Lisp membolehkan keseluruhan idea pengaturcaraan ditangkap dalam beberapa klik pada tahap yang lebih mendalam dan difikirkan pada tahap yang kelihatan mustahil apabila anda melihat artifak besar (ini adalah salah satu sebab mengapa ahli sains suka matematik padat dan berkuasa). Matematik yang digunakan di sini adalah matematik baru kerana ia membenarkan konsep seperti "sebelum" dan "selepas" dan ini membawa kepada "logik pembolehubah" yang membolehkan kedua-dua pergantungan fungsi dan aliran logik pemikiran dipelihara sementara juga membenarkan kedudukan dan laluan. masa. (Ini masih tidak difahami pada zaman kita dalam dunia pengaturcaraan situasi yang kejam).

Lisp, sebagai bahasa pengaturcaraan dan bahasa metal yang berkuasa yang boleh mewakili teorinya sendiri, adalah contoh sains komputer yang sebenar. Jika anda mempelajarinya dan perkara lain yang serupa, anda akan dapat berfikir dengan lebih mendalam dan lebih bertanggungjawab terhadap nasib anda sendiri berbanding jika anda hanya belajar memprogram dalam Fortran atau setara modennya (... supaya anda boleh lebih dekat dengan pengaturcara! ).

Anda akan mengetahui lebih lanjut tentang jenis reka bentuk khas yang diperlukan dalam pengkomputeran (contohnya, ia biasanya tidak dihargai apabila pengkomputeran sering memerlukan ke luar persekitaran pengkomputeran: salah satu ciri khas pengkomputeran lembut tersimpan ialah ia bukan sekadar bahan untuk program, tetapi bahan untuk komputer yang benar-benar baru).

Satu lagi sebab untuk memilih definisi Perlis ialah, secara amnya, pengkomputeran lebih mementingkan penciptaan pelbagai jenis sistem berbanding dengan algoritma, "struktur data" atau malah pengaturcaraan itu sendiri. Sebagai contoh, komputer ialah sistem, pengkomputeran ialah sistem, rangkaian tempatan dan Internet adalah sistem, dan kebanyakan program mestilah sistem yang lebih baik daripada yang sedia ada (gaya lama pengaturcaraan dari tahun 50-an berlangsung sehingga nampaknya pengaturcaraan harus seperti ini - tiada apa yang boleh jauh dari kebenaran).

Internet ialah contoh yang baik - tidak seperti kebanyakan perisian hari ini, Internet tidak perlu dihentikan untuk membetulkan atau menambah baik apa-apa - ia lebih seperti sistem biologi - mengikut niat kita - daripada apa yang kebanyakan orang fikirkan sebagai sistem pengkomputeran. Dan ia jauh lebih berskala dan boleh dipercayai daripada hampir semua sistem perisian yang tersedia hari ini. Ini benar-benar berbaloi untuk difikirkan sebelum mengajar konsep yang kurang berkesan kepada pengaturcara baru!

Jadi apa yang perlu kita lakukan dalam kursus Sains Komputer tahun pertama ialah mengambil kira perkara yang sebenarnya mungkin pelajar lakukan pada awal-awal lagi, dan kemudian cuba kekal dalam "beban kognitif" mereka untuk membantu mereka mencapai perkara yang benar-benar penting . Adalah penting untuk "kekal nyata" dan mencari cara yang jujur ​​dari segi intelek dan sesuai untuk mereka yang baru bermula. (Tolong jangan ajar idea buruk hanya kerana ia kelihatan lebih mudah - banyak idea buruk sebenarnya lebih mudah!).

Pelajar harus bermula dengan mencipta sesuatu yang mempunyai banyak ciri penting yang telah saya bincangkan di sini. Ia mestilah sistem beberapa bahagian yang berinteraksi secara dinamik, dan sebagainya. Cara yang baik untuk memutuskan bahasa pengaturcaraan yang hendak digunakan ialah dengan hanya membuat sesuatu yang mempunyai beribu-ribu bahagian yang berinteraksi! Jika tidak, maka anda harus mencari satu. Perkara paling buruk yang boleh anda lakukan ialah menetapkan pelajar pada jalan yang terlalu sedikit kefasihan, yang akan mengehadkan idea besar dengan teruk. Ia hanya membunuh mereka - dan kami mahu membesarkan mereka, bukan membunuh mereka.

Mengenai GoTo School

Alan Kay: Bagaimana saya akan mengajar Sains Komputer 101

Sumber: www.habr.com

Tambah komen