Các chủ đề toán học hoặc các lĩnh vực làm tăng trình độ lập trình máy tính? [đóng cửa]


14

Nói chung các lập trình viên máy tính là những nhà toán học hoặc có nền tảng toán học rất giỏi về thuật toán và lập trình máy tính nói chung.

Những gì tôi không nói:

Toán học là cần thiết để trở thành một lập trình viên máy tính giỏi. Toán học là cần thiết cho lập trình. Nhà toán học giỏi là những lập trình viên giỏi và ngược lại

Những gì tôi đang nói

Tôi muốn học một số toán học vì tôi tin rằng nó sẽ giúp tôi trở thành một lập trình viên giỏi hơn. Những lĩnh vực / chủ đề của toán học sẽ giúp tôi trở thành một lập trình viên tốt hơn? Câu trả lời của mẫu math topic - corresponding cs areasẽ được đánh giá cao.

Lưu ý: Tôi đã hỏi điều này trên StackOverflow nơi nó được tuyên bố ngoài chủ đề. Tôi muốn học nó trong thời gian rảnh rỗi giống như cách tôi đã làm với lập trình máy tính. Cảm ơn trước.


1
Tôi ngạc nhiên khi StackOverflow tuyên bố câu hỏi này không có chủ đề. Theo quan điểm của tôi (một lập trình viên đã nghỉ hưu), câu hỏi này nên là một trong những câu hỏi quan trọng nhất đối với SO.
scaaahu

1
StackOverflow thực sự nhiều hơn về các vấn đề lập trình cụ thể. Điều này là tốt nhất trên CSEducators và có thể đã hoạt động trên SoftwareEngineering.
Nat

1
Chúng tôi đã có những câu hỏi như thế này trước đây và tất cả chúng đều có cùng một vấn đề: chúng quá rộng và quá chủ quan. Câu trả lời đồng thuận duy nhất là: tất cả của nó .
Raphael

@Raphael Trước tiên, tôi tôn trọng quyết định của Mod. Tuy nhiên, tôi muốn hỏi một câu hỏi thay mặt cho OP. Có cách nào để cải thiện câu hỏi để nó có thể được mở lại không? Nếu không có cách nào để cải thiện nó, liệu có bất kỳ SE nào khác mà OP có thể đi để hỏi câu hỏi này không? (Rõ ràng, OP đã thử SO và tôi biết nó có thể không phù hợp với Academia SE vì nó không liên quan chặt chẽ với Academia.)
scaaahu

Các câu hỏi yêu cầu giải pháp chính thức cho các vấn đề cụ thể sẽ ổn. Các câu hỏi tư vấn nghiên cứu thường không phù hợp với định dạng SE; lý do chặt chẽ "dựa trên quan điểm" áp dụng cho tất cả các trang web!
Raphael

Câu trả lời:


19

Vì vậy, có nhiều lĩnh vực toán học có liên quan đến Khoa học CS, nhưng dành riêng cho lập trình:

  • Lý thuyết đồ thị : đây là một trong những lớn. Đồ thị và cây ở khắp mọi nơi. Mạng, bản đồ, đường dẫn trong trò chơi video. Ngay cả những thứ như giải một khối Rubiks cũng có thể được mô hình hóa như một thuật toán đồ thị và giải bằng A *.

  • Toán học rời rạc : ngoài lý thuyết đồ thị, biết khu vực này nói chung là hữu ích. Nó chứa đầy các bằng chứng bằng cảm ứng, rất hữu ích để hiểu đệ quy, rất hữu ích trong lập trình, đặc biệt là với các cấu trúc dữ liệu. Biết về các bộ, đếm, loại trừ bao gồm, logic boolean, vv có thể có ích một lần trong một thời gian.

  • Lý thuyết loại: không có gì đáng ngạc nhiên, biết lý thuyết loại giúp hiểu về lập trình bằng các ngôn ngữ được gõ và rộng hơn, với việc sử dụng các loại như một cách đảm bảo các thuộc tính chính xác nhất định. Biết về lý thuyết phân nhóm giúp bạn hiểu hiệp phương sai và chống đối trong các ngôn ngữ giống như Java. Biết về những thứ như đa hình tham số rõ ràng là hữu ích khi học một ngôn ngữ nặng như Haskell hoặc Purescript, nhưng các ngôn ngữ như Scala, TypeScript và Rust đang trở nên phổ biến hơn trong ngành và các loại nằm trong lõi của chúng.

    Nếu bạn thực hiện điều này đến mức cực đoan, bạn sẽ có được những thứ như Coq và Agda và Idris, có thể được sử dụng để chứng minh các thuộc tính chính xác cực kỳ chính xác về các chương trình.

  • Lý thuyết tính toán và độ phức tạp : biết khi nào một vấn đề là không thể giải quyết được, hoặc NP-hard, là hữu ích, bởi vì bạn sẽ không lãng phí hàng giờ để làm hỏng bộ não của mình để làm điều đó nhanh chóng. Tương tự như vậy, biết một số lý thuyết đằng sau các thuật toán gần đúng, khả năng biến đổi tham số cố định hoặc thuật toán hàm mũ cơ sở thấp, có thể giúp ích khi bạn thực sự cần giải một bài toán NP-hard.

  • Lý thuyết tự động: nhiều vấn đề có thể được mô hình hóa với các máy trạng thái khác nhau, vì vậy việc hiểu các thuộc tính của chúng là hữu ích.

Ngoài ra còn có một số lĩnh vực cụ thể lĩnh vực:

  • Thống kê: Nếu bạn đang học máy hoặc dữ liệu lớn, đây là điều bắt buộc.

  • Đại số tuyến tính / vector calc : cả hai đều quan trọng cho việc học máy, đồ họa, mô phỏng hoặc xử lý hình ảnh / âm thanh.

  • Lý thuyết mạng : nếu bạn đang thực hiện bất kỳ công việc nào với trình biên dịch hoặc tối ưu hóa chương trình, thì điều này sẽ xuất hiện mọi lúc. Điểm cố định ở khắp mọi nơi!

  • Lý thuyết phạm trù: không cần thiết để viết mã, nhưng hữu ích cho bất cứ điều gì chìm sâu trong lý thuyết loại.

Chỉnh sửa: không thể tin rằng tôi đã quên:

  • Mật mã học : nếu bạn quan tâm đến bảo mật, băm, chữ ký số, v.v., hãy đảm bảo học một số lý thuyết số, Lý thuyết nhóm, Lý thuyết trường, Lý thuyết đường cong elip, v.v.
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.