7/04/2021

Thuật toán có thực sự quan trọng? | Blogging


Thuật toán là gì? Theo wiki, trong toán học và khoa học máy tính, một thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn các hướng dẫn được xác định rõ ràng, có thể thực hiện được bằng máy tính, thường để giải quyết một lớp vấn đề hoặc để thực hiện một phép tính.

Vậy học thuật toán để làm gì? Và tại sao gần như mọi trường đại học và điển hình tại Bách Khoa Hà Nội thì thuật toán là môn học không thể thiếu? Cùng nghe về chia sẻ của mình nha, nếu bạn có những ý kiến khác thì hãy comment để mọi người cùng biết nha.

Tại sao cần dùng thuật toán?

Bạn chỉ cần search trên Google là 'Tại sao cần dùng thuật toán' thì sẽ ra cả tá bài viết viết về vấn đề này, hoặc tiêu biểu bạn có thể xem bài viết Đôi chút về cấu trúc dữ liệu và thuật toán, bài viết này mình sẽ tóm gọn lại nhanh vấn đề nha.

Thuật toán không giúp code của bạn ngắn hơn mà thậm chí nó phải dài hơn. Nhưng hiệu quả là vấn đề không phải bàn cãi, thuật toán giúp chương trình của bạn chạy nhanh hơn, với những thuật toán tối ưu chương trình của bạn còn có thể chạy nhanh hơn rất nhiều nữa. 

Học thuật toán sẽ giúp các bạn có một tư duy tốt hơn và có thể là tốt hơn rất nhiều để giải quyết vấn đề.

Am hiểu về thuật toán sẽ là một điểm cộng khi tham gia phỏng vấn. Với bạn nào mà muốn theo đuổi lập trình Game hay muốn làm việc tại 1 số tập đoàn lớn như VNG, Viettel, Samsung thì thuật toán là thứ không thể thiếu nay. Phỏng vấn đầu vào là thuật toán, tại Samsung nếu bạn muốn làm các chức vụ cao hơn thì bạn phải thi các cuộc thi về thuật toán nữa nha,... Vậy nếu các bạn có những định hướng về hướng đi giống như trên thì hãy học thuật toán ngay đi nha. 

...

Không học, không giỏi thuật toán có được không?

Mình không hề master thuật toán, và cũng không phải là fan cuồng thuật toán vậy nên nhận xét thật lòng thì không giỏi thuật toán chả sao, chúng ta vẫn có thể trở thành thành lập trình viên giỏi trên các lĩnh vực của mình.

Không cần thuât toán bạn vẫn sẽ đưa ra được cái giải pháp của mình, tuy nhiên nó có thể không tối ưu với vôn thuật toán hạn chế của lập trình viên nhưng nó chắc cũng sẽ là một giải pháp.

Nếu bạn là một lập trình viên viết những web thiên về nội dung. blog hay những app với những xử lý logic đơn giản có lẽ những djikstra, quick sort,... cũng không có nhiều đất dụng võ.

Bây giờ một số thuật toán kinh điển đều đã được cài đặt sẵn và xây dựng thành các thư viện và đã được tối ưu, kiểm thử lỗi,... nên lập trình viên muốn dùng chỉ cần gọi ra và sử dụng.

Có nhiều phần mềm, sự hiểu biết về thiết kế, tổ chức dữ liệu sẽ quan trọng hơn rất nhiều so với những thuật toán hay được sử dụng trong phần mềm.

Vậy thuật toán có thực sự quan trọng không?

Những người đọc bài viết này của mình chắc đa số đều là sinh viên Bách Khoa và chắc chắn dù muốn hay không thì các bạn đều phải học, thậm chí là cày ngày, đêm để còn qua môn cấu trúc dữ liệuthuật toán ứng dụng hay là để thi tuyển vào samsung,...

Một số bạn thì so sánh rằng, các trường như FPT họ không học thuật toán mà học thẳng trực tiếp các framework, thư viện, những thứ thực tế cần dùng hơn. Nhưng mình xin đính chính lại là FPT có học toán rời rạc, cấu trúc dữ liệu,... nha chỉ là họ học khá là nhẹ nhàng hơn so Bách Khoa mà thôi, nhưng cũng vì thế mà một người anh của mình tại FPT cũng từng nói với mình rằng là thật tiếc rằng ngày đó anh không được tiếp cận đồ thị sớm hơn khi còn học tại trường.

Không nhắc về các trường đại học nữa, vậy thì một số trung tâm, hệ thống đào tạo lập trình viên thì sao? Như APTECH. Nhưng cũng xin đính chính tiếp với các bạn, những lập trình viên mà APTECH đào tạo ra họ là những người thợ code, khi họ học thì họ thực hành là chủ yếu, code ngày code đêm và trình độ code của họ chắc chắn là hơn sinh viên đại học như chúng ta. Tuy nhiên, chúng ta không phải là những thợ code, chúng ta không thể chỉ biết code, chúng ta là những kỹ sư mà kỹ sư là phải giải quyết các vấn đề chứ không chỉ đơn giản là bạn được vứt cho một loạt mẫu có sẵn và code theo những mẫu này như những người thợ code thực thụ.

Vậy kết luận lại thì thuật toán cần không? Thuật toán cần, phải học, ít nhất là phải học để biết nhưng không phải là tất cả. Đó là những suy nghĩ của mình về vấn đề khá nan giải này. Còn bạn nghĩ gì thì hãy comment cho mọi người cùng biết nha.

1 comment:

  1. BigTech tuyển dụng toàn hỏi những câu có độ khó Hard ở vòng coding interview, nên thuật toán là cần thiết. Tuy nhiên ở thị trường VN hầu hết là gia công phần mềm nên học theo công nghệ mới nhiều lắm nên những thứ nằm trong Cấu Trúc Dữ Liệu Và Giải Thuật hay Lý Thuyết Đồ Thị thì ít khi nào đụng tới.

    ReplyDelete