Mengapa keluarga c resimen studi CS standar untuk program Matematika / CS bukan keluarga LISP? [Tutup]

14

Saya telah membiasakan diri dengan LISP untuk tujuan peningkatan diri. Salah satu hal yang saya perhatikan adalah bahwa LISP jauh lebih dalam paradigma Matematika daripada mengatakan C. Sintaks dan struktur desain tampaknya menggemakan langsung model matematika sebenarnya dari suatu algoritma. Tidak masuk akal bagi saya mengapa bahkan program CS berbasis Matematika yang bagus belajar C daripada LISP. Saya berpikir bahwa LISP lebih langsung menggunakan konsep matematika yang lebih tinggi daripada C. Saya tidak mengatakan bahwa Anda tidak dapat memodelkan struktur matematika dalam C. Saya hanya memperhatikan bahwa LISP tampaknya terprogram untuk matematikawan.

Saya telah membaca banyak ocehan Joel Spolsky di sekolah-sekolah JAVA dan apa yang tidak - dan saya setuju dengan penilaiannya -, tetapi sekolah saya tidak mengajar JAVA karena alasan itu. Mereka ketat dalam mengajarkan konsep-konsep dasar seperti pointer, desain algoritma, rekursi, dan bahkan instruksi perakitan. Namun, mereka melakukan ini semua dalam C dan c ++. Adakah yang tahu alasan untuk ini dan / atau sejarahnya?

Jonathan Henson
sumber
Pada akhirnya, gelar ilmu komputer harus agnostik bahasa sampai batas tertentu. Gagasan CS adalah dia harus bisa belajar bahasa baru karena ilmu komputer adalah teoretis. Di luar, CS tampaknya menjadi yang paling inklusif untuk mengajarkan Anda cara menjadi programmer dan ilmuwan. Ini bukan masalahnya, belajar bagaimana belajar bahasa adalah tentang CS.
Chris
2
Sama seperti LISP "menggemakan model matematika aktual dari suatu algoritma", C menggemakan struktur sebenarnya dari perangkat keras dan secara langsung bagaimana konstruksi dalam peta C ke memori (yang secara alami sangat berguna untuk sistem embedded). Namun, saya sangat setuju dengan Anda. Saya akan lebih menghargai beberapa kursus sarjana di LISP sehingga saya benar-benar bisa menyelami lebih dalam
Bill VB

Jawaban:

13

BAIK. Jadi, jawaban yang membosankan adalah bahwa, pada akhirnya, sebagian besar sekolah mengajarkan apa yang nyaman dengan profesor, dan sebagian besar profesor tidak tumbuh menjadi peretas Lisp; mereka menghabiskan tahun-tahun awal mereka di lapangan dengan bahasa berbasis Algol. Karena itu, bertahun-tahun kemudian, ketika mereka sedang membangun kurikulum, Anda berakhir dengan sekolah yang mengajarkan CS dengan yayasan di Pascal, lalu C, lalu C ++, dan kemudian Jawa.

Kemudian Anda memiliki sekolah yang tingkatnya lebih rendah dan beberapa tahun lebih muda. Dan mereka melihat ke bar yang ditetapkan oleh sekolah-sekolah yang memimpin, dan mereka melihat bahwa siswa meninggalkan sekolah-sekolah itu mengetahui C, dan mereka melihat bahwa siswa mereka sendiri mengharapkan hal yang sama - jadi mereka mulai mengajar C, lalu C ++, lalu Jawa.

Akhirnya, Anda memiliki beberapa lembaga teknis atau 'ujung bawah' yang hanya mengajarkan serangkaian teknologi apa pun yang akan cocok dengan kata kunci yang diinginkan siswa pada resume mereka - sehingga Anda cukup banyak mendapatkan Java.

Yang sedang berkata, beberapa sekolah memang mengajarkan Lisp, meskipun mungkin lebih dari pilihan bahasa daripada dasar. Dan bahkan sekolah-sekolah yang tidak mengajarkan Lisp sebagai bahasa mandiri, menggunakannya secara luas dalam kursus AI, jadi kursus AI pemula mendapatkan konsentrasi dalam memulai pemrograman Lisp.

Andrey Butov
sumber
2
Aku dengar ya Tidak menghormati C dan c ++, mereka telah menjadi bahasa pilihan saya sepanjang karir saya, tetapi LISP akan menjadi alat pengajaran yang jauh lebih baik untuk siswa matematika daripada C. C adalah bahasa yang hebat, dan tentu saja, saya tidak akan pernah mempekerjakan seseorang yang tidak mengetahuinya, tetapi tujuan dari gelar CS bukan pelatihan bidang teknis, itu untuk menguasai konsep Matematika dan Ilmu Komputer. LISP tampaknya jauh lebih cocok untuk tujuan ini.
Jonathan Henson
Saya pikir keduanya memiliki tempat masing-masing, dan universitas dapat mengambil manfaat dari memiliki jalur yang lebih teoritis / akademis ke gelar CS di mana Anda memperluas pikiran Anda. Lagu itu harus memiliki rentang bahasa yang bagus, termasuk Lisp, Prolog, berbasis Algol, dll. Dan trek yang berbasis praktik, dengan konsentrasi pada apa pun citarasa praktis hari itu.
Andrey Butov
@ Jonathan Henson: Temukan!
Chris
9

Ini sangat tergantung pada universitas. Skema (dialek bahasa Inggris) telah menjadi bahasa untuk kursus pengantar dalam ilmu komputer di MIT selama berabad-abad, meskipun telah digantikan oleh python baru-baru ini. Saya mendapatkan gelar BS di CS di sebuah sekolah teknik, di mana saya terpapar C, Skema, Prolog, dan C ++ selama tahun pertama saya. Saya pikir itu campuran yang baik.

Saya sangat percaya bahwa bahasa apa yang Anda mulai dengan jauh lebih penting daripada terkena berbagai paradigma sejak awal, sebelum otak Anda membeku menjadi satu cara memandang dunia.

Dima
sumber
1

Pada dasarnya, teori ilmu komputer adalah matematika. Namun, rekayasa perangkat lunak tidak. Pemodelan konsep-konsep matematika secara langsung bukan merupakan keuntungan yang melekat - saya berpendapat itu sering dapat merugikan.

Teori yang baik dan program yang baik belum tentu terkait.

DeadMG
sumber
"Teori dan program yang bagus belum tentu terkait.": Pemrograman adalah tentang membangun dan menggabungkan abstraksi yang memecahkan masalah. Dan, menurut wikipedia, "Teori adalah ... jenis pemikiran abstrak atau generalisasi, atau hasil dari pemikiran semacam itu." ( en.wikipedia.org/wiki/Theory ) Jadi, teori dan pemrograman (bagus) sangat dekat satu sama lain.
Giorgio