[Bực mình] Có nên học sâu về thuật toán?

Nhiều người có quan điểm rằng: “Học thuật toán và giải thuật chỉ là mấy mớ lý thuyết, không áp dụng được vào thực tế vì sau này đi làm chả mấy khi động đến mấy cái thuật toán đó mà chỉ là dùng thư viện sẵn có.”
Lại có ý kiến cho rằng: “Việc tham gia các cuộc thi lập trình thuật toán là vô nghĩa vì trong lập trình quan trọng là bạn làm ra sản phẩm chứ không phải là giải mấy cái bài tập mà không biết nó có ứng dụng gì nữa”.

Tóm lại là “coi thường thuật toán”.
Ý kiến cá nhân của mình như thế này (có sai sót gì thì ném đá nhẹ nhẹ thôi, em nó còn nhỏ):
Vấn đề học sâu về thuật toán hay không là tùy các bạn. Nhưng các bạn hãy lưu ý rằng phải tôn trọng những người đam mê thuật toán, giải thuật. Bản chất vấn đề cấu trúc dữ liệu và giải thuật là cực kì quan trọng trong lập trình và đừng thằng nào nghĩ nó vô dụng vì có “thư viện”.
Ai viết ra những thư viện đó? Có phải là những người rất siêu về thuật toán không?
Tại sao Việt Nam mãi không phát triển công nghệ, không tạo ra công nghệ mà toàn xài công nghệ nước ngoài? Tại vì Việt Nam dùng thư viện.
Tại sao Việt Nam có ít người làm việc cho Google, Facebook, Microsoft? Tại vì họ không giỏi thuật toán! Mà muốn vào đuợc các công ti đó phải trải qua các kì thi lập trình rất khó!
Tại sao có những người có thể tạo ra cách mã hóa và giải mã dữ liệu mới?
Tại sao có những chương trình vi diệu như máy tìm kiếm? trình biên dịch của các ngôn ngữ lập trình? Có phải là do các nhà khoa học máy tính, những người rất sành về giải thuật?
Vậy thuật toán có quan trọng không?

2 Likes

bình tĩnh đi em trai.
mọi người đều có con đường riêng của mình.
khi họ đánh giá thấp về thuật toán là do kiến thức của họ chưa tới thôi.
mọi thứ trong thế giới hiện đại đều dựa vào toán học.
Nên nó đã trở thành căn bản.

bình tĩnh đi cháu trai.

Mình không đánh giá cao thuật toán nhưng không đánh giá thấp thuật toán

1 Like

Ngôn ngữ, cú pháp là nhất thời, thuật toán là mãi mãi.
Thế thôi nhưng có lúc mình đọc sách Lê Minh Hoàng đã muốn nổ tung não ra rồi :joy_cat: :

3 Likes

Mình nghĩ bạn chưa đủ trình độ để đánh đồng nền công nghệ của cả một quốc gia như thế đâu. Và nói thật luôn không ai đủ trình độ cả.

1 Like

Vì ở Việt Nam phần lớn vẫn là gia công phần mềm nên có vẻ thuật toán không được ưa chuộng. Nhưng cần khẳng định là một sản phẩm muốn thành công và khác biệt thì cần có thuật toán. Mỗi người có con đường riêng nên ai mà có chê trách bạn thì chỉ cần cười và nói “Hãy khiêm tốn trong lập trình”.

Hãy yên lặng! Và biến sự thành công của bản thân thành tiếng ồn. - (Trích từ Hãy khiêm tốn trong lập trình)

5 Likes

thuật toán thực sự rất quan trọng, người học tốt thuật toán sau làm lập trình sẽ đơn gian hơn. Mình tốt nghiệp toán tin ứng dụng chuyên học về thuật toán, ngôn ngữ lập trình học khá ít nhưng sau khi tốt nghiệp mình chuyển hướng qua lập trình rất nhanh một phần do mình gần như chỉ cần làm quen với ngôn ngữ là đã có thể bắt đầu code!

1 Like

Học hành đang hoàng đau ai đánh giá thấp thuật toán, đúng là người đi làm công, coder thì bình thường không mấy đụng tới thuật toán đâu, họ tập trung vào business rồi từ đó tạo workflow để giải quyết bài toán trên máy
Với lại giải bài thi, bài tập thường là áp dụng các thuật toán đã có để làm, chứ có ai nghỉ ra được thuật toán nào đâu, nghi được 1 thuật toán chắc là mình đã nổi tiếng rồi (ví dụ dijkstra).
Mình làm ứng dụng hay gì đó thường cũng sử dụng lại thôi, nhưng nhiều người lại không implement lại được, như dijkstra, giờ nhiều bạn biết đấy nhưng kiêu implement thì chắc sẽ có người không implement được. Thuật toán tiến hóa, ant cũng thế…
Hoc thuật toán tốt sẽ có lợi nhiều, nên cư học đi. mà nếu theo hướng này thì sau nay kiếm mây công ty có phòng R&D, lĩnh vực viễn thông, xử lý ảnh chắc cũng đươc. Chứ làm kiểu outsource, gia công em sẽ chán đó.

5 Likes

Cái vấn đề là học sâu vào cái thuật toán nào để ứng dụng vào cái mục đích gì.
Toàn tập trung vào thuật toán, nhất là mấy cái thuật toán giời ơi đất hỡi thì cũng xịt cả.

1 Like

Mình công nhận thuật toán là một môn khó khi còn đi học. Tuy nhiên các giải thuật đó chỉ là căn bản nên mới không biết áp dụng vào thực tế.

Ngoài các thuật toán chung cơ bản được gói gọn trong 1 môn riêng là Cấu trúc dữ liệu và Giải thuật, còn có nhiều thuật toán khác mà chỉ học các môn cụ thể chuyên ngành thì mới tiếp xúc được.

Mình ví dụ về thuật toán DFS và BFS áp dụng trong graph, môn AI sử dụng lại để giải bài toán state decision, qua môn Lý thuyết Thông tin lại dùng nó để tạo cây quyết định, Xác suất dùng cho việc beysian làm giảm không gian xác suất.

Qua mỗi môn cấu trúc sửa 1 chút, giải thuật sửa 1 chút. Khi đọc paper thì họ lại kết hợp các cấu trúc lại với nhau để tăng hiệu suất. Khi quen với nhiều biến thể và cách kết hợp, phân rã khác nhau thì mới có chút kinh nghiệm để áp dụng thực tế.

1 Like

gì mà xem trọng với không xem trong, bản thân từng dòng code đã là thuật toán rồi.
Cho dù dùng thư viện thì cũng là mảnh ghép, ghép các mảnh lại thành 1 chương trình hoàn chỉnh cũng là thuật toán.
Đứa nào chê tào tao thì đừng code nữa; ha ha.

Vô xem lại mới biết mình vừa đào mộ :joy:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?