Dù là hai môn học mang tính tư duy logic, nhưng Toán học và Lập trình liên quan tới nhau như thế nào? Liệu một lập trình viên có cần thiết phải là người giỏi toán?
Hầu hết mọi người “ngoại đạo” đều có niềm tin vững chắc rằng các lập trình viên đều có đầu óc tính toán siêu việt hoặc có thế mạnh ở môn toán. Tuy nhiên, điều này chỉ đúng với một số lượng nhỏ lập trình viên hiện nay. Thực chất, toán học chỉ được coi là một công cụ cần thiết để giúp các kỹ sư lập trình tăng thêm khả năng khi làm việc với ngôn ngữ máy tính. Và để trở thành một tay “pro” hơn nữa trong lĩnh vực CNTT, một kỹ sư lập trình cần phải phụ thuộc vào nhiều yếu tố khác không chỉ riêng kiến thức về toán học.
Tư duy trong toán học và lập trình
Sự nhạy bén trong tư duy là cần thiết đối với coder nhưng nó không phải là thứ làm nên coder. Ở rất nhiều trường hợp, chẳng hạn như trong các cuộc phỏng vấn, việc đưa ra một bài toán để kiểm tra sự nhạy bén trong tư duy và khả năng xử lý tình huống thường được đưa ra như một bài kiểm tra. Đó có thể là một câu đố mẹo, một bài toán hay một câu hỏi logic bất kì, điều quan trọng là nó yêu cầu sự động não. Cả toán học và lập trình đều cần rất nhiều đến sự hoạt động của não bộ. Về bản chất thì lập trình chính là giải quyết một bài toán cụ thể một cách tổng quát và đa số là cho nhiều trường hợp của đầu vào (input).
Mặc dù về bản chất giống như một bài toán và lập trình là cách để giải bài toán đó nhưng cách để giải một bài toán trong lập trình lại không hề hoàn toàn giống nhau. Ví dụ với bài toán tính tổng các số từ 1 đến 100. Một lập trình viên bình thường sẽ sử dụng một vòng lặp để cộng từng số lại để thu được kết quả cuối cùng thay vì nhớ công thức tính tổng từ 1 đến 100 sẽ có giá trị là (1+100)*100/2. Với một bài toán có quy mô của đầu vào nhỏ, việc khác nhau về cách giải quyết vấn đề sẽ không cho ta thấy được rõ sự khác biệt giữa lập trình và toán học.
Tuy nhiên, với một bài toán kinh điển như tính các chữ số thập phân của số Pi (tỉ lệ giữa chu vi và đường kính của đường tròn) thì toán học thuần túy gần như bó tay và không thể bắt kịp được. Các lập trình viên có thể tính chính xác số Pi đến hàng tỉ chữ số thập phân bằng các hàm và máy tính, đương nhiên là không thể tính số cuối cùng là gì vì toán học đã chứng mình được Pi là số thập phân vô hạn không tuần hoàn. Vì thế nên có thể nói rằng: Toán học là nền tảng cơ bản và lập trình là cách ta sử dụng sức mạnh của máy móc để tính toán”.“
Toán học mang tính trừu tượng còn lập trình cụ thể hơn
Các nhà toán học đã mất hàng nghìn năm để xây dựng nên hệ thống toán học siêu to khổng lồ với vô vàn các tiên đề, định lý. Đối với lập trình, việc giải các bài toán cũng giống như cách các nhà toán học xây dựng nên các định lý. Điều này nghe có vẻ vô lý nhưng lại khá thuyết phục. Các lập trình viên sẽ đưa ra phương pháp giải tổng quát cho mọi đầu vào, mỗi khi có một bài toán như vậy, họ sẽ dùng lại phương pháp đó. Nói chính xác, lập trình sẽ giải quyết một bài toán ở mức tổng quát, thay vì làm từng bài toán nhỏ cho các trường hợp nhỏ.
Giỏi toán thì sẽ giỏi lập trình?
Một lập trình viên giỏi là người áp dụng tốt các kiến thức toán học vào xử lý các bài toán, tận dụng được sức mạnh của máy móc và công nghệ. Về cơ bản, thuật toán trong lập trình cũng không hề giống với các thuật toán cụ thể trong toán học, hai khái niệm này thực tế vẫn chưa được phân biệt rõ ràng. Đa số các bài toán lập trình thực tế hiện tại không yêu cầu những bài toán tinh vi và tỉ mỉ. Lập trình viên chỉ cần biết cách khai thác những yếu tố toán học ở mức thông dụng để giải bài toán và cách để lập trình giỏi hơn chính là lập trình nhiều hơn và rút ra kinh nghiệm.
Có thể thấy, sự khắt khe trong toán học có thể được lập trình làm cho trở nên nhẹ nhàng hơn. Còn lập trình sẽ dùng thuật toán để yêu cầu, chỉ thị máy thực hiện, giải quyết một công việc, bài toán cụ thể nào đó trong cuộc sống một cách dễ dàng, cùng với độ chính xác cao trong thời gian ngắn nhất.
Vì vậy, nếu bạn không giỏi toán không có nghĩa là bạn không thể lập trình, đó là 2 thái cực khác nhau. Từ toán học đến lập trình không phải một con đường dễ như ta tưởng nhưng chỉ cần sự nỗ lực và đam mê, bạn vẫn có thể trở thành một “pro vip” lập trình viên.
Bộ môn Ứng dụng phần mềm
Cao đẳng FPT Mạng cá cược bóng đá Hà Nội