Học lập trình có cần giỏi Toán không?

Học lập trình có cần giỏi Toán không?

Học lập trình có cần giỏi Toán không?

Nếu bạn giỏi toán, bạn sẽ là một lập trình viên giỏi

SAI!

Việc các bạn mới học lập trình hoặc đang tìm hiểu về công nghệ thông tin đặt ra câu hỏi “Học lập trình có cần giỏi Toán không?” là chuyện bình thường. Tôi đã thấy cuộc tranh cãi này quá nhiều lần và tôi cảm thấy mệt mỏi với nó. Vì vậy, hãy để tôi chia sẻ quan điểm của tôi về điều này và giải thích lý do tại sao tôi cho rằng lập luận này không chính xác.

Nguồn cảm hứng cho bài đăng này là một chủ đề trong một trong các nhóm Facebook. Một lập trình viên tự hào nhận xét:

Bạn có thể tạo ra công cụ giải TOÁN CAO CẤP ở ĐẠI HỌC bằng học máy chứ? Đừng ảo tưởng những ứng dụng web đơn giản bạn làm mà đã cho mình là một lập trình viên giỏi nhé!

Thực sự thế giới lập trình rất đa dạng. Không phải mọi ứng dụng đều là về AI hoặc học máy. Bên cạnh đó, nếu có yếu tố học máy liên quan, điều đó không có nghĩa là người ta phải là một thiên tài toán học để xây dựng một ứng dụng sử dụng tính năng của học máy.

Học lập trình có cần giỏi Toán không

Vấn đề thứ hai của tôi là định nghĩa “lập trình viên giỏi”. Điều gì tạo nên một lập trình viên giỏi? Bạn có thấy ở đâu định nghĩa những từ đó không?

Theo kinh nghiệm cá nhân của tôi, những người định nghĩa lập trình viên theo cách này có xu hướng là những người theo chủ nghĩa kinh điển. Có nghĩa là những người thích cảm thấy vượt trội hơn những người khác vì biết một số phép toán hay công cụ. Đây cũng là một sự thiếu hiểu biết đối với sự đa dạng của kinh nghiệm trong thế giới lập trình.

Thế nào là một lập trình viên giỏi?

Đây là định nghĩa cá nhân của tôi về một lập trình viên giỏi.

Học lập trình có cần giỏi Toán không?

Một lập trình viên giỏi là người:

  • Giải quyết các vấn đề của ngày hôm nay theo cách tốt nhất có thể (không phải các vấn đề trong tương lai có thể không bao giờ xảy ra)
  • Đam mê học hỏi những điều mới
  • Quen thuộc với nhiều ngôn ngữ, công cụ và phương pháp hay nhất
  • Sử dụng đúng ngôn ngữ/công cụ cho đúng vấn đề
  • Viết mã sạch, mọi người có thể hiểu và có thể bảo trì
  • Biết viết các hàm kiểm thử đơn vị
  • Xem xét sự cân bằng về hiệu suất, khả năng mở rộng, bảo mật, khả năng bảo trì,…
  • Là một người thân thiện và giao tiếp tốt trong nhóm
  • Luôn luôn đúng hạn, cung cấp chức năng của phần mềm trong thời gian đã đặt ra

Lập trình là một hoạt động sáng tạo. Nó đòi hỏi sự chu đáo, kỷ luật, quyết tâm và ham học hỏi.

Toán học và lập trình

Tôi học toán ở trường đại học, học cách tính giao của một khối lập phương với một khối cầu trong không gian ba chiều. Tôi cũng học rất nhiều về giới hạn, tích phân, vi phân, v.v. ở trường trung học. Nhưng cuối cùng, tất cả chỉ là việc ghi nhớ rất nhiều công thức và hiếm khi được sử dụng, chứ chưa nói đến việc ghi nhớ. Không ai trong số này dạy tôi cách trở thành một lập trình viên giỏi.

Toán học giúp phát triển các kỹ năng giải quyết vấn đề và phân tích. Tôi không đồng ý với điều đó. Nhưng tôi cũng tin rằng bộ não con người phức tạp hơn những gì chúng ta hiểu, và toán học không phải là cách duy nhất để phát triển kỹ năng phân tích.

Học lập trình có cần giỏi Toán không?

Chỉ vì một người biết cách giải các bài toán phức tạp không có nghĩa là họ biết cách giải một bài toán lập trình bằng mã sạch, có thể bảo trì và đúng hạn.

Tôi đã làm trong ngành lập trình gần hai thập kỷ và tôi đã thấy những lập trình viên giỏi toán nhưng họ không thể cung cấp một ứng dụng đơn giản đúng hạn. Họ viết mã lộn xộn và không thể hiểu được.

Toán học có giúp bạn thông minh hơn không?

Cũng có một quan niệm sai lầm khác rằng học giỏi toán sẽ khiến một người thông minh hơn. Theo lý do này, các bác sĩ đa khoa hoặc luật sư kém thông minh hơn vì họ không sử dụng toán học?

Đừng kiêu ngạo về những gì chúng ta biết và có thể làm mà những người khác không làm được.

Có những người làm được những điều phi thường trên thế giới và họ không biết toán học. Họ là những người giải quyết vấn đề xuất sắc, rất có óc phân tích và có thể giải quyết các vấn đề của ngày hôm nay một cách xuất sắc và đúng lúc.

Lập trình thời xa xưa

Trong lập trình, chúng ta có khái niệm này được gọi là “lớp trừu tượng”. Lập trình bắt đầu với 0 và 1. Sau vài năm, hợp ngữ ra đời và nó cho phép chúng ta viết các chương trình theo cách biểu đạt hơn là sử dụng một loạt các số 0 và 1. Vài năm sau, ngôn ngữ C ra mắt, bổ sung thêm một lớp trừu tượng cho Assembly.

Học lập trình có cần giỏi Toán không?

Mặc dù cơ sở của lập trình là 0, 1 và các mạch logic, nhưng điều đó không có nghĩa là người ta phải biết tất cả những điều đó để trở thành một lập trình viên giỏi ngày nay. Không ai có thời gian để học tất cả những điều đó.

Ngày nay, phần lớn, chúng ta đang lập trình ở mức độ trừu tượng cao hơn.

Quay trở lại những năm 90, chúng ta thường viết mã cấp thấp bằng C để chuyển một số dữ liệu từ máy tính này sang máy tính khác. Chúng ta phải mở kết nối TCP, dữ liệu đệm, xử lý các mã lỗi khác nhau và đóng kết nối.

Lập trình thời hiện đại

Ngày nay, bạn không cần phải hiểu cách TCP hoạt động để gửi thông báo đẩy tới thiết bị di động của một người. Nếu bạn thực sự nghĩ rằng bạn cần phải biết điều đó hoặc biết điều đó khiến bạn trở thành một lập trình viên tốt hơn thì bạn nên quay lại và học hợp ngữ cũng như kiến ​​trúc của CPU, mạch logic, v.v.

Tương tự, chúng ta viết các truy vấn để lấy dữ liệu từ cơ sở dữ liệu. Chúng ta đang lập trình ở cấp độ trừu tượng cao hơn. Chúng ta không cần biết chính xác cách dữ liệu trong tệp được cấu trúc hoặc thậm chí triển khai cơ sở dữ liệu mà không biết truy vấn cơ sở dữ liệu đúng cách.

Học lập trình có cần giỏi Toán không?

Trên thực tế, bạn có thể triển khai cơ sở dữ liệu, nhưng bạn sẽ không có manh mối về các kỹ thuật tối ưu hóa truy vấn cơ sở dữ liệu hoặc cấu trúc dữ liệu để bảo mật hoặc khả năng mở rộng. Đây là những kỹ năng hoàn toàn khác nhau.

Theo quan điểm của tôi, ngôn ngữ lập trình phát triển giống như các sinh vật sống. Sự sống bắt đầu với những sinh vật đơn bào và sau hàng triệu năm tiến hóa, giờ đây chúng ta là những sinh vật phức tạp với hàng nghìn tỷ tế bào.

Bạn không cần phải hiểu cách hoạt động của tế bào để học cách ăn uống lành mạnh. Hãy nghĩ về nó ở cấp độ cao hơn như nghĩ đến việc ăn rau xanh, protein, tránh đồ chiên rán, v.v.

Mất bao lâu để học một ngôn ngữ lập trình?

Những thứ mà mọi lập trình viên phải học

Mặc dù toán học rất quan trọng và đã được sử dụng trong việc thiết kế máy tính, nhưng không phải mọi lập trình viên ngày nay đều cần phải giỏi toán. Trừ khi bạn đang xây dựng một ứng dụng liên quan đến xử lý hình ảnh, video hoặc âm thanh. Hãy để tôi giải thích tại sao lại như vậy.

Toán học là tuyệt vời, nhưng nó không phải là một kỹ năng cần thiết cho các lập trình viên hiện đại.

Các lập trình viên thời hiện đại cần phải giỏi một hoặc hai ngôn ngữ lập trình, thành thạo với cấu trúc dữ liệu, design pattern và cơ sở dữ liệu. Đây là kho kiến ​​thức điển hình mà họ cần phải có để trở thành một lập trình viên giỏi.

Học lập trình có cần giỏi Toán không?

Ngoài ra, các lập trình viên cũng phải biết sử dụng nhiều công cụ khác nhau để giúp cuộc sống của họ dễ dàng hơn. Các công cụ để quản lý điều khiển mã nguồn như Git, IDE như Visual Studio, v.v. Đây là những kỹ năng mà các lập trình viên cần học để thành công trong công việc hàng ngày với tư cách là một nhà phát triển phần mềm.

Họ phải biết các design pattern tốt nhất để phù hợp với yêu cầu của khách hàng, họ cần biết cấu trúc dữ liệu và sử dụng chúng khi nào, v.v.

Bạn có thể thấy rõ ở đây, rằng các bài toán giải tích phức tạp không dạy bạn bất kỳ kỹ năng nào trong số này mà chúng ta đã thảo luận. Các bài toán phức tạp cũng không giúp lập trình viên học nhanh hơn.

Vấn đề của toán học và lập trình

Học lập trình có cần giỏi Toán không?

Một câu hỏi phỏng vấn phổ biến tại các công ty như Google và Amazon là tìm ký tự không lặp lại đầu tiên trong một chuỗi. Không ai làm điều này trong thế giới thực. Nhưng biết cách giải quyết vấn đề lập trình này sẽ hiệu quả hơn nhiều trong việc rèn luyện trí não lập trình của mọi người so với việc tính toán giao của một khối lập phương và một khối cầu.

Nói về thuật toán, độ phức tạp về hiệu suất của một thuật toán liên quan đến các đường cong logarit, tuyến tính và hàm mũ. Người ta không cần biết cách giải một bài toán logarit để hiểu được độ phức tạp về hiệu suất của một thuật toán. Tất cả những gì họ cần hiểu là sự khác biệt giữa đường cong tuyến tính và logarit, và ngay cả học sinh trung học cũng có thể hiểu được điều đó.

Kết luận

Hãy tôn trọng người khác và không xúc phạm trí thông minh hoặc năng lực của họ bởi vì bạn chỉ làm những việc nhất định, có khi chả liên quan đến việc họ làm. Nhưng đừng đánh đồng điều gì cả, chắc gì bạn đã giỏi hơn người ta, hay là bạn chỉ biết hơn người ta một chút về lĩnh vực nào đó rồi “lên giọng”. Đừng thiếu hiểu biết về những điều này nhé, đó là kỹ năng sống.

Bạn càng học nhiều, bạn càng nhận ra mình chưa biết bao nhiêu. Nhưng dốt đến đâu học lâu cũng biết. Không có một công thức duy nhất cho một món ăn, cũng không có một công thức duy nhất để trở thành một lập trình viên giỏi hoặc thành công trong cuộc sống.

Đừng bỏ cuộc khi thấy một vấn đề gì đó khó, hãy cố gắng suy ngẫm và tìm cách giải quyết. Đó mới là tố chất của một lập trình viên giỏi, chứ đừng mang Toán học ra để đánh đố, phán xét người khác một cách vô lý.

Vậy bạn đã tìm được câu trả lời cho câu hỏi “Học lập trình có cần giỏi Toán không?” chưa? Hãy đưa ra ý kiến của bạn phần dưới comment nhé!

Cảm ơn bạn đã theo dõi bài viết!

Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

TỔNG HỢP TÀI LIỆU HỌC LẬP TRÌNH CƠ BẢN CHO NGƯỜI MỚI BẮT ĐẦU

KHOÁ HỌC BOOTCAMP JAVA/PHP/.NET TRỞ THÀNH LẬP TRÌNH VIÊN TRONG 5-6 THÁNG

Leave a Reply

Your email address will not be published. Required fields are marked *