Tôi là một sinh viên tốt nghiệp toán học, và đã học đại học về khoa học máy tính. Tôi giữ một blog tên là Toán học ∩ Lập trình trong đó tôi khám phá các ứng dụng toán học để lập trình (và ngược lại), và tôi phải thừa nhận rằng tôi thấy hầu hết các khía cạnh toán học ít hơn của khoa học máy tính khá khô khan và không mệt mỏi (về cơ bản, sự phản đối của tôi đối với tất cả các vụ hack lố bịch đi vào lập trình hệ thống theo kinh nghiệm của tôi trong ngành công nghiệp).
Mặt khác, trên blog của tôi, tôi xem xét các vấn đề như nhận dạng khuôn mặt (khá nhiều đại số tuyến tính), phương pháp mã hóa, máy Turing và máy tự động di động, mô hình để dự đoán hoạt động giết người hàng loạt, công cụ tìm kiếm và một loạt các khái niệm toán học khác . Phần tốt nhất là tôi có thể thực hiện các ý tưởng, và bất kỳ ý tưởng nào của riêng tôi!
Để khiến bạn của bạn yêu thích lập trình như những người khác trong chúng ta, hãy tìm cho anh ấy một điều thực sự thú vịdự án. Khía cạnh lập trình sẽ không gắn bó nếu không làm việc với một sản phẩm mà anh ấy thấy đẹp. Đối với các ngôn ngữ, tôi khuyên dùng Mathicala, Vợt (một dẫn xuất Scheme rất thân thiện nhưng vẫn mạnh mẽ), Python và Haskell. Mathematica có lẽ là tốt nhất, bởi vì anh ta có thể thực hiện có chọn lọc các hàm toán học của riêng mình và sử dụng các thư viện được xây dựng của Mathicala để hoàn thành dự án (ví dụ, viết một hàm tính toán các hệ số Fourier, sau đó sử dụng Mathicala để thực hiện phần còn lại của phân tích, chẳng hạn như lọc, tạo hình ảnh, v.v.). Ngay cả các chủ đề cơ bản như tích hợp cũng đưa ra một số dự án hấp dẫn (các quy tắc bậc hai khác nhau, tích hợp monte carlo, chuyển đổi nhẹ nhàng sang học máy với các tập dữ liệu lớn).
Ngoài ra, có vẻ như rất nhiều câu trả lời ở đây là từ những người không làm toán hoặc những người chưa sử dụng ngôn ngữ mà họ đề xuất để làm phần mềm toán học. Lý do mọi người khuyên dùng Haskell là vì nó càng gần với việc thực hiện theo nghĩa đen của lý thuyết thể loại càng tốt và phù hợp với một số định nghĩa toán học của một số khái niệm cơ bản. Nhưng nếu bạn của bạn gần bằng tuổi bạn, thì anh ta chưa sẵn sàng cho lý thuyết phạm trù về mặt toán học (sự trưởng thành đó ít nhiều vô dụng cho đến khi tốt nghiệp đại học, và khó khăn để tự dạy mình), và là ngôn ngữ đầu tiên Haskell có độ dốc cao nhấtđường cong học tập của các ngôn ngữ được đề xuất (có lẽ Prolog dốc hơn). Tôi đã sử dụng Haskell để triển khai trình biên dịch Javascript và tôi đã kết thúc với một đoạn mã thanh lịch rất đẹp, nhưng đối với những thứ trực quan như đột biến biến, bạn đã phải lao vào các đơn nguyên không cần thiết.
Python và Mathematica sẽ thân thiện hơn nhiều và Mathicala có đường cong học tập nông nhất chỉ đơn giản vì tất cả các thư viện được đóng gói vào một giao diện người dùng đẹp với tài liệu tuyệt vời (chỉ cần nhấn F1!). Mặt khác, có một cuốn sách tôi đã nghe nói (nhưng chưa đọc) cung cấp cả quá trình chuyển đổi sang toán học nâng cao và giới thiệu về Haskell cùng một lúc . Nó dường như có các đánh giá tích cực trên Amazon, vì vậy bạn có thể muốn kiểm tra nó. Anh ta có thể chuyển sang các ngôn ngữ như C # và Java nếu anh ta muốn làm công cụ công nghiệp, nhưng nhiều khả năng anh ta sẽ không bao giờ cần phải vào khu rừng đó (và dù sao thì rất nhiều công cụ toán học công nghiệp hoàn toàn là Matlab).
Nhưng như tôi đã nói, với dự án phù hợp, việc học ngôn ngữ sẽ trở thành niềm vui, bất kể dự án có thể là gì.