Một mặt, đúng là 90% công việc của một lập trình viên, bạn sẽ không sử dụng bất kỳ phép toán nào ngoài số học cơ bản. Nhưng mặt khác, nhiều người đã chỉ ra một cách đúng đắn rằng lập trình chỉ đơn giản là một tập hợp con của khoa học máy tính, mà bản thân nó lại là một tập hợp con của toán học. Vì vậy, làm thế nào mà toán học lại không cần thiết cho lập trình được?
Tôi hiểu cả hai lập luận. Tôi tin rằng cả hai đều đúng, vì vậy trong bài viết này, tôi sẽ cố gắng hết sức để dung hòa chúng. Kết luận của tôi là trong nhiều ứng dụng lập trình, bạn sẽ không cần nhiều toán học như vậy, bạn vẫn nên học nó.
Nhưng quan trọng hơn kết luận đó là cách tôi đạt được điều đó. Cuối cùng, tôi cũng đưa ra đề xuất của mình về một nguồn tài nguyên miễn phí để dạy cho bạn tất cả những kiến thức toán học cần thiết cho khoa học máy tính.
Hầu hết thời gian, bạn sẽ không cần nó. Nhưng…
Hỏi “Bạn có cần toán học để lập trình không?” không thực sự có ý nghĩa như một câu hỏi mà không có ngữ cảnh. Tất cả phụ thuộc vào những gì bạn muốn tạo. Nếu tất cả những gì bạn muốn làm là một trang web đơn giản với HTML, CSS và Javascript, thì bạn sẽ không cần biết một điều gì về đại số ma trận hoặc cách tìm một loại tô pô của đồ thị tuần hoàn có hướng hữu hạn.
Vì vậy, nếu bạn biết chắc chắn rằng bạn sẽ chỉ thực hiện những nhiệm vụ đơn giản như thế trong sự nghiệp của mình, thì bạn cứ làm đi. Bạn có thể sẽ không cần biết bất kỳ môn toán cao cấp nào.
Nhưng tôi sẽ lập luận rằng ngay cả khi đúng như vậy, bạn vẫn nên học một số phép toán được sử dụng trong khoa học máy tính.
Dù sao bạn cũng nên học nó
Rất dễ dàng để đưa ra lập luận rằng hầu hết các lập trình viên mới bắt đầu phát triển web và trong phát triển web, bạn thường không sử dụng nhiều toán học phức tạp, do đó, việc nghiên cứu toán học được dạy trong các văn bằng khoa học máy tính, như đại số tuyến tính hoặc xác suất là hoàn toàn phù hợp. vô ích.
Nhưng tôi nghĩ rằng lập luận đó là thiển cận và nếu bạn có thái độ này, nó có thể dẫn đến các vấn đề cho bạn với tư cách là một lập trình viên.
Tôi thường nghĩ rằng bạn nên luôn sai lầm khi chỉ học thêm, vì biết nhiều hơn không bao giờ có hại và nếu bạn làm việc trong lĩnh vực công nghệ, dù sao thì bạn cũng nên thực sự là kiểu người thích học hỏi.
Tuy nhiên, nếu những lập luận đó không thuyết phục được bạn, thì đây là bốn lập luận cụ thể giải thích tại sao mặc dù có thể không cần thiết để có được công việc đầu tiên của bạn, nhưng có lẽ bạn vẫn nên học toán.
Tập luyện trí não phù hợp
Tôi đã nghe những người trong ngành thường nói rằng sinh viên chuyên ngành toán học thường được xếp hạng trong số những người giỏi nhất trong các chương trình đào tạo mã hóa và họ thường tạo ra những lập trình viên giỏi. Trên thực tế, giỏi toán hóa ra lại là một yếu tố dự đoán rất đáng tin cậy về sự xuất sắc trong lập trình.
Điều này không phải vì bạn nhất thiết phải sử dụng toán học trong công việc mỗi lần xem, mà bởi vì toán học và lập trình sử dụng cùng một loại ‘cơ bắp trí tuệ’, tức là giải quyết vấn đề logic.
Mối tương quan không phải là quan hệ nhân quả – có thể những kiểu người có khả năng hoàn thành chuyên ngành toán học cũng là những kiểu người có khả năng thể hiện tốt tại một bootcamp mã hóa – ngay cả khi họ đã bỏ qua chuyên ngành toán học.
Phát triển sự hiểu biết cơ bản hơn về các khái niệm lập trình.
Ngay cả khi 99% thời gian bạn không cần phải hiểu lý thuyết đồ thị ngoài việc có thể áp dụng thuật toán tìm kiếm theo chiều sâu một cách chính xác, thì vẫn có 1% trường hợp mà việc hiểu lý thuyết cơ bản là hữu ích.
Ngay cả với kinh nghiệm được thừa nhận là rất hạn chế của mình, tôi đã gặp những trường hợp mà tôi rất vui vì mình đã học toán cho khoa học máy tính trước khi đi sâu vào cấu trúc dữ liệu và thuật toán chẳng hạn. Việc có thể hiểu một cách cơ bản các nguyên tắc và lý thuyết đằng sau những khái niệm này đã giúp tôi rất nhiều trong việc có thể nắm bắt không chỉ cái gì mà cả lý do đằng sau những chủ đề này. (nếu bạn đã theo dõi nội dung của tôi, bạn sẽ biết rằng tôi rất ủng hộ việc hiểu hơn là chỉ ghi nhớ.)
Ngay cả những chủ đề về toán học mà bạn không nghĩ sẽ hữu ích trong thực tế cũng xuất hiện. Ví dụ, trước khi học toán đúng cách cho khoa học máy tính, tôi chưa bao giờ thực sự hiểu cách hoạt động của số học mô-đun. Nhưng bây giờ khi đã làm như vậy, tôi đã tự nhiên tìm thấy nhiều cách sử dụng thực tế cho toán tử modulo mà tôi sẽ không nghĩ tới nếu không hoàn toàn thoải mái với ý nghĩa của nó.
Nếu bạn muốn trở thành người tiên phong
Bạn muốn tham gia vào một lĩnh vực thậm chí còn có nhu cầu cao hơn cả công nghệ phần mềm?
Nhìn vào Trí tuệ nhân tạo và Học máy. Đây là những lĩnh vực con của khoa học máy tính nơi hầu hết các ứng dụng mới đến từ những ngày này. Và để giỏi chúng, bạn hoàn toàn cần toán học.
Trên thực tế, mọi người thường nói về “lỗ hổng toán học” với nhiều kỹ sư phần mềm muốn chuyển sang một trong những lĩnh vực này. Cụ thể, trong ML và AI, bạn cần biết: Đại số tuyến tính (cần thiết để hiểu hầu hết các phương pháp ML/AI) Phép tính vi phân cơ bản (với một chút phép tính nhiều biến) Phép biến đổi tọa độ và phép biến đổi phi tuyến tính (ý tưởng chính trong ML/ AI).
Nó sẽ giúp bạn vượt qua các cuộc phỏng vấn
Loại này liên quan đến hai điểm đầu tiên, nhưng tôi muốn ném nó vào đó vì đây có lẽ là lợi ích mà mọi người sẽ quan tâm nhất (xét cho cùng, hầu hết chúng ta chỉ muốn có một công việc).
Tôi không thể tin được có bao nhiêu người mà tôi thấy đang chuẩn bị cho các cuộc phỏng vấn viết mã bằng cách chỉ ghi nhớ các câu hỏi về mã thay vì dành thời gian trước để thực sự hiểu các khái niệm mà sau đó họ có thể áp dụng cho bất kỳ vấn đề nào.
Một lần nữa, chắc chắn rằng bạn không cần phải hiểu chúng, sau tất cả, nhiều người vẫn thành công chỉ bằng cách nghiền ngẫm trong 2 tuần và ghi nhớ càng nhiều câu hỏi càng tốt, nhưng đây vẫn là một chiến lược học tập dài hạn tồi tệ. Dựa vào trí nhớ ngắn hạn có thể là một giải pháp nhanh chóng nếu bạn có một cuộc phỏng vấn vào ngày mai, nhưng nếu sau đó bạn có một cuộc phỏng vấn khác sau vài tháng thì việc học lại sẽ dễ dàng hơn nhiều nếu bạn đã nắm vững các ý cơ bản trước đó.
Đó là một chiến lược tốt hơn nhiều nếu bạn chỉ đơn giản làm điều gì đó như khóa học video về Cấu trúc dữ liệu và thuật toán của Zero to Mastery hoặc đọc Cracking the Coding Interview một lần, tiếp thu đúng cách và hiểu ý nghĩa của đống, thử và Big O để sau đó bạn có thể áp dụng sự hiểu biết đó đến bất kỳ vấn đề nào. (Tuyên bố miễn trừ trách nhiệm: cả hai điều trên đều là liên kết liên kết)
Bạn thực sự có thể học DSA mà không cần đi sâu vào toán học, nhưng ngay cả khi đó, tôi thấy rằng việc hình dung và nắm bắt các chủ đề này dễ dàng hơn nhiều đối với tôi ngay cả trước khi sử dụng hai tài nguyên trên (không nặng về toán học) dành thời gian để học toán.
Bạn không muốn đi vào các trường con này? Tốt rồi. Nhưng hãy nhớ rằng về bản chất, ngành công nghệ không ngừng phát triển và thích nghi. Bạn không bao giờ biết liệu các tác vụ lập trình cơ bản có được AI tự động hóa sau 10 năm nữa hay không, trong trường hợp đó, công việc duy nhất còn lại là những công việc áp dụng toán học để xây dựng bot để viết mã cho chúng.