Tại sao gia đình c là trung đoàn nghiên cứu CS tiêu chuẩn cho các chương trình Toán học / CS thay vì gia đình LISP? [đóng cửa]


14

Tôi đã làm quen với LISP cho mục đích cải thiện bản thân. Một trong những điều tôi nhận thấy là LISP nằm trong khuôn khổ của Toán học hơn là nói C. Cú pháp và cấu trúc thiết kế dường như lặp lại trực tiếp mô hình toán học thực tế của một thuật toán. Nó không có ý nghĩa với tôi tại sao ngay cả các chương trình CS dựa trên Toán học tốt cũng học C thay vì LISP. Tôi nghĩ rằng LISP sử dụng trực tiếp các khái niệm toán học cao hơn C. Tôi không nói rằng bạn không thể mô hình hóa các cấu trúc toán học trong C. Tôi chỉ nhận thấy rằng LISP dường như khó kết nối với các nhà toán học.

Tôi đã đọc rất nhiều lời tán dương của Joel Spolsky trên các trường JAVA và những gì không - và tôi đồng ý với khẳng định của anh ấy--, nhưng trường tôi không dạy JAVA vì lý do đó. Họ nghiêm ngặt trong việc giảng dạy các khái niệm cơ bản như con trỏ, thiết kế thuật toán, đệ quy và thậm chí hướng dẫn lắp ráp. Tuy nhiên, họ đã làm tất cả điều này trong C và c ++. Có ai biết lý do cho điều này và / hoặc lịch sử của nó?


Vào cuối ngày, một văn bằng khoa học máy tính nên là ngôn ngữ bất khả tri ở một mức độ nào đó. Ý tưởng của một CS là anh ấy / cô ấy có thể học bất kỳ ngôn ngữ mới nào vì khoa học máy tính là lý thuyết. Bên ngoài CS dường như là tất cả bao gồm dạy bạn làm thế nào để trở thành một lập trình viên và một nhà khoa học. Đây không phải là trường hợp, học cách học một ngôn ngữ là những gì CS nói về.
Chris

2
Cũng giống như cách LISP "lặp lại mô hình toán học thực tế của thuật toán", C lặp lại cấu trúc thực tế của phần cứng và đơn giản là cách cấu trúc trong ánh xạ C vào bộ nhớ (đặc biệt hữu ích cho các hệ thống nhúng). Tuy nhiên, tôi hoàn toàn đồng ý với bạn. Tôi đã đánh giá cao một số khóa học đại học hơn trong LISP để tôi thực sự có thể đi sâu vào nó hơn nữa
Bill VB

Câu trả lời:


13

ĐỒNG Ý. Vì vậy, câu trả lời nhàm chán là, cuối cùng, hầu hết các trường dạy những gì các giáo sư cảm thấy thoải mái, và hầu hết các giáo sư đã không lớn lên hack Lisp; họ đã dành những năm đầu tiên của họ trong lĩnh vực này với các ngôn ngữ dựa trên Algol. Bởi vì điều này, nhiều năm sau, khi họ đang xây dựng chương trình giảng dạy, bạn kết thúc với các trường dạy CS với nền tảng là Pascal, rồi C, rồi C ++ và Java.

Sau đó, bạn có những trường học thấp hơn và trẻ hơn vài tuổi. Và họ nhìn lên quán bar do các trường dẫn đầu, và họ thấy rằng các sinh viên rời khỏi những trường đó biết C, và họ thấy rằng các sinh viên của họ cũng mong muốn như vậy - vì vậy họ bắt đầu dạy C, rồi C ++, sau đó Java.

Cuối cùng, bạn có một số tổ chức kỹ thuật hoặc 'cấp thấp' chỉ đơn giản là dạy bất kỳ bộ công nghệ nào sẽ phù hợp với các từ khóa mà sinh viên muốn có trong hồ sơ xin việc của họ - vì vậy bạn chỉ cần có Java.

Đó là hạnh phúc cho biết, một số trường làm dạy Lisp, mặc dù nó có thể là nhiều hơn một tự chọn chứ không phải là một ngôn ngữ nền tảng. Và ngay cả những trường không dạy Lisp như một ngôn ngữ độc lập, hãy sử dụng nó rộng rãi trong các khóa học về AI, vì vậy các khóa học AI mới bắt đầu tập trung vào việc bắt đầu lập trình Lisp.


2
Tôi nghe ya. Không tôn trọng C và c ++, chúng là ngôn ngữ tôi chọn trong toàn bộ sự nghiệp của mình, nhưng LISP sẽ là công cụ giảng dạy tốt hơn cho sinh viên toán học hơn C. C là một ngôn ngữ tuyệt vời, và bằng mọi cách, tôi sẽ không bao giờ thuê ai đó người không biết điều đó, nhưng mục đích của bằng cấp CS không phải là đào tạo lĩnh vực kỹ thuật, mà là để nắm vững các khái niệm về Toán học và Khoa học Máy tính. LISP có vẻ phù hợp hơn nhiều cho mục đích này.
Jonathan Henson

Tôi nghĩ cả hai đều có vị trí của mình, và các trường đại học có thể được hưởng lợi từ việc có một lý thuyết / học thuật hơn để lấy bằng CS nơi bạn mở rộng tâm trí của mình. Bản nhạc đó nên có một loạt các ngôn ngữ, bao gồm Lisp, Prolog, dựa trên Algol, v.v. Và một bản nhạc dựa trên thực tiễn, tập trung vào bất cứ hương vị thực tế nào trong ngày.
Andrey Butov

@Jonathan Henson: Phát hiện!
Chris

9

Điều này thực sự phụ thuộc vào các trường đại học. Scheme (một phương ngữ của lisp) đã là ngôn ngữ cho khóa học giới thiệu về khoa học máy tính tại MIT từ lâu, mặc dù nó đã được thay thế bởi python gần đây. Tôi đã nhận bằng cử nhân CS tại một trường kỹ thuật, nơi tôi được tiếp xúc với C, Scheme, Prolog và C ++ trong năm đầu tiên. Tôi nghĩ rằng đó là một kết hợp tốt.

Tôi tin chắc rằng ngôn ngữ bạn bắt đầu với ít quan trọng hơn nhiều so với việc tiếp xúc với nhiều mô hình từ rất sớm, trước khi bộ não của bạn đóng băng thành một cách nhìn về thế giới.


1

Về cơ bản, lý thuyết khoa học máy tính là toán học. Kỹ thuật phần mềm, tuy nhiên, là không. Mô hình hóa các khái niệm toán học trực tiếp không phải là một lợi thế vốn có - tôi cho rằng nó thường có thể là một bất lợi.

Lý thuyết tốt và chương trình tốt không nhất thiết phải liên quan.


"Lý thuyết tốt và chương trình tốt không nhất thiết phải liên quan.": Lập trình là về xây dựng và kết hợp trừu tượng để giải quyết vấn đề. Và, theo wikipedia, "Lý thuyết là một ... kiểu suy nghĩ trừu tượng hoặc khái quát hóa, hoặc kết quả của suy nghĩ như vậy." ( en.wikipedia.org/wiki/ Theory) Vì vậy, lý thuyết và lập trình (tốt) thực sự rất gần nhau.
Giorgio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.