Haskell có giỏi dạy các nguyên tắc cơ bản của toán học không?


19

Tôi tham gia giảng dạy toán học cho các lớp học với các yêu cầu như đặc tả Toán học cấp độ AS và A.

Sách lớp thường cung cấp các ví dụ về phần mềm máy tính được áp dụng cho các nhiệm vụ toán học, nhưng chúng thường dựa trên các ứng dụng phần mềm như mathlab, mathicala hoặc derive.

Ngay cả khi một ngôn ngữ lập trình thực sự được sử dụng, nó vẫn là ngôn ngữ được kết hợp cũ như Pascal. Và điều này thực sự đáng buồn theo ý kiến ​​của tôi.

Bởi vì, Haskell nổi tiếng với cảm giác của mình với toán học, và vì tôi cũng thích nó, tôi muốn hỏi liệu Haskell có phải là một lựa chọn tốt như phương pháp tập thể dục mở rộng cho sinh viên của một lớp đại học năm thứ nhất. Các môn học điển hình là các hàm, caclulus, giới hạn, nhưng cũng có thể là đại số tuyến tính.

Tôi đã có kinh nghiệm kiến ​​thức trung cấp về lập trình (c #, ruby, powershell, javascript, tex) và cũng đã tiếp cận lập trình chức năng với XSLT.

Câu trả lời sẽ được nâng cao có trách nhiệm. Các câu trả lời dài bao gồm cả một số ví dụ cơ bản về mã Haskell được áp dụng cho toán học, chẳng hạn như đại số tuyến tính (ví dụ không gian vectơ), đa thức, giải phương trình tuyến tính được đánh giá cao và nhắm mục tiêu như mong muốn.


3
Hãy xem cuốn sách này: collegepublications.co.uk/computing/?00004
Fred Foo

@larsmans: cảm ơn. Đó thực sự là một điểm khởi đầu tốt; Tôi cũng quan tâm đến toán học thực tế hơn, như phân biệt, giới hạn, tích phân.
Emiliano Poggi

Tôi không thấy Mathicala không phải là một ngôn ngữ lập trình thực sự . Khi tôi gặp vấn đề về toán học, tôi rất thường xuyên sử dụng nó trước tiên (cũng là Octave), sau đó chuyển đổi sang ngôn ngữ khác. Nếu trọng tâm là toán học thì tôi thấy không có lý do tại sao một ngôn ngữ toán học chuyên ngành không phù hợp.
edA-qa mort-ora-y

@edA: Mathicala! = Octave! Octave là một bản sao Matlab. Những người sử dụng cả hai cho tôi biết Matlab / Octave thiên về số (mảng lớn, FFT, v.v.) trong khi Mathicala tốt hơn cho thao tác biểu tượng. FOSS gần nhất tương đương với Mathicala có lẽ là Maxima (trước đây là Macsyma).
timday

@timday, vâng, tôi biết Octave! = Mathicala, nhưng ngôn ngữ mã là như nhau. Tôi cũng sử dụng Maxima cho thao tác tượng trưng.
edA-qa mort-ora-y

Câu trả lời:


9

Haskell đang ngày càng phổ biến trong các nhà toán học. Như một blogger đã viết:

"sau khi tôi liên quan đến bản thân mình trong chủ đề này, một điều nổi bật là khoảng cách tương đối thấp giữa suy nghĩ được thể hiện trong diễn ngôn toán học thông thường hàng ngày của tôi và suy nghĩ được thể hiện bằng mã Haskell."

Vì vậy, đây là một số quan điểm được thu thập, mà tôi cảm thấy rằng bạn không thể sai lầm khủng khiếp khi áp dụng phương pháp này.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Cuối cùng,


1
Đọc một số liên kết của bạn, tôi không thể nói rằng tôi quá thuyết phục. Có bất kỳ ví dụ thực tế nào về việc ai đó ngồi xuống một phiên Haskell và làm việc như bạn có thể Mathicala / Maxima không? Hơn nữa, blog "11 lý do" chỉ ra thư viện chuẩn là gì lộn xộn theo quan điểm của một nhà toán học, và nhìn vào danh sách các gói toán học tôi thấy rất nhiều số (ví dụ như blas, fft) nhưng không nhiều cách thao tác tượng trưng / CAS. Phải nói rằng ... cả hai cuốn sách trông thực sự thú vị!
timday

Các bạn, một số ví dụ về toán học thực tế sẽ rất tuyệt (như bổ sung ma trận đại số lin, v.v ...) - để xem cú pháp thực tế trông như thế nào. Tôi cá là thậm chí còn không quá tải ...
Andriy Drozdyuk

@drozzy: tất nhiên có quá tải toán tử, thông qua các lớp loại.
Tên của

4

Mặc dù tôi là một người hâm mộ cuồng nhiệt của Haskell khi dạy toán, nhưng nó có thể không phù hợp với tất cả các chủ đề ở cấp độ AS / A.

Bạn sẽ không gặp vấn đề gì với việc dạy ý tưởng về hàm và đại số tuyến tính có thể tốt trong Haskell. Đại số tuyến tính thường được dạy theo cách rất cấp thiết với các bản cập nhật tại chỗ của mảng. Tất cả có thể được dịch sang Haskell, nhưng nó có thể đòi hỏi một chút suy nghĩ khác biệt.

Nhưng nó trở nên khó khăn khi bạn muốn nói về giới hạn và tính toán. Tôi đã thành công lớn khi thực hiện tính toán trong Haskell với cách tiếp cận không thông thường. Nhưng đó có thể không phải là một ý tưởng tuyệt vời khi dạy cho một giáo trình cố định. Ngoài ra, bạn có thể chơi với sự khác biệt mang tính biểu tượng nhưng sau đó bạn sẽ bắt đầu phải xây dựng các kiểu dữ liệu cho các biểu thức có thể gây khó khăn cho cấp độ A / AS. Đó không phải là rất nhiều mã để bắt đầu, chỉ có một vài dòng, nhưng nó có thể đáng sợ cho sinh viên. Không giống như Derive và Mathicala, bạn không nhận được các biểu thức tượng trưng miễn phí.

Tổ hợp cơ bản rất dễ khám phá với danh sách đơn nguyên. Điều này có thể hữu ích cho việc giảng dạy lý thuyết xác suất.

Haskell là tốt cho các ứng dụng số loại có thể xuất hiện ở cấp A / AS, ví dụ. áp dụng quy tắc của Simpson hoặc điều tra các phương tiện và phương sai mẫu.

Bạn có làm lý thuyết nhóm tiểu học? Thật dễ dàng để viết mã và chơi với Haskell.

Nhìn chung, nếu bạn quan tâm đến các giới hạn, tôi nghi ngờ rằng việc thực hiện nhiều phép toán cấp A / AS với Haskell là điều đơn giản.


2

Tôi không chắc Haskell có phải là một lựa chọn tốt hay không. Chắc chắn, nó có một "cảm giác toán học", liên quan đến các cấu trúc vô hạn, vv Nhưng bạn chỉ có thể đánh giá cao các tính năng này nếu bạn đã biết ngôn ngữ. Học Haskell để học toán xếp chồng một nhiệm vụ khó khăn lên trên một nhiệm vụ khác. Và học Haskell khó khăn, thậm chí nếu bạn đã biết lập trình. Vì vậy, nó thực sự phụ thuộc nếu khán giả của bạn đủ sáng và tò mò, nếu không bạn mất một nửa trong số họ vì toán học, và nửa còn lại do Haskell.


Học Haskell thật dễ dàng nếu bạn đã biết toán học đằng sau nó. Rất dễ.
Tên của

@nomen Có thể, nhưng đây không phải là câu hỏi.
Landei

Tôi đang nói rằng khó học với một người có nền tảng lập trình không đủ tiêu chuẩn.
Tên của

1

Không có ngôn ngữ máy tính sẽ dạy bạn toán học. Chỉ có toán học sẽ dạy bạn toán học. Đó là: cách tiếp cận bút và giấy (hoặc phấn và bảng đen), tiên đề, định lý và bằng chứng. Đây là toán học. Cho dù ngôn ngữ gợi cảm đến mức nào, một chương trình được viết trong đó không phải là toán học, nó chỉ là một ứng dụng của toán học. Để áp dụng một cái gì đó, bạn cần phải học nó trước.


1
Tôi không nghĩ bất cứ ai mong đợi một ngôn ngữ lập trình sẽ dạy toán theo nghĩa đen và tôi không nghĩ câu hỏi ban đầu yêu cầu một ngôn ngữ lập trình để dạy toán theo nghĩa đen. Họ muốn một cái gì đó có thể được sử dụng cho một số bài tập để giúp cho việc giảng dạy toán học.
dùng27539

Phấn, bảng đen ...
quant_dev

Không đồng ý. Một ngôn ngữ chỉ là một phương tiện biểu đạt. Phấn, bút chì, máy tính: chỉ là công cụ được sử dụng để diễn đạt toán học một cách cụ thể. Ngôn ngữ chỉ là công cụ để diễn đạt toán học một cách trừu tượng. Hãy so sánh định lý Haskell-Curry đẳng cấu (một chương trình là một bằng chứng trong một logic mang tính xây dựng)
Tên của
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.