@namdq2k:
Học Win32 API ngày nay chỉ với lý do sau:
1. Chắc chắn em làm cho Windows, no other OS.
2. Học để hiểu cội nguồn của hệ điều hành, Messaging, GDI ... cái mà đã được .NET đã che lại.
3. Em học vì em thích việc học.
4. Thằng .NET nói cho cùng là gì? Nó là wrapper của mấy cái Win32, nếu hiểu nó thì tất nhiên có lợi cho .NET khi mà có những cái em không tìm ra được nguyên nhân. Nhưng có một điều là 99.1% em sẽ không dùng Win32 cho công việc ngày nay. Bởi vì sao? Dùng nó so với .NET thì quá ư là mệt mỏi.
Còn câu trả lời cho chủ topic thì là YES. Tất nhiên học Win32 sẽ hiểu kĩ hơn khi làm MFC vậy thôi.
Anh từng coi qua Win32, coi cho biết thôi, còn học cho kĩ thì anh thà để thời gian học các kĩ thuật khác. Bởi vì những cái mà Win32 dùng đã quá lỗ thời rồi. Plain pure function pointer, naked char* -> cội nguồn của bugs and bugs.
Ngày nay testing là coi như không thể thiếu trong bất cứ một software nào, không có chuyện viết cái ầm rồi đưa cho dân QA, kiểu này thì chẳng ai dám xài software của em. Mà để viết test cho Win32 thì chỉ có bằng niềm tin, vì nó quá low level, và vì nó quá cũ, không ai lấy nó ra để viết lại cả. Và tại cái thời điểm mà nó ra đời, lúc này programmers chưa biết đến Test Driven Development là gì. Và vì lý do này, nó không còn phù hợp với những cách tư duy lập trình ngày nay.
TopCoder là một ví dụ cụ thể khi họ loại bỏ C. Không phải vì học chê C, nhưng dùng C so với C++, Java, C# thì hầu như chấp đối thủ 50%. Vì sao, khi làm bài, mỗi bài chỉ có 25 phút. Mà các cuộc thi này đòi hỏi debug cực nhanh, chứ không phải ngồi cái mà nhìn các hexa hàng giờ để tìm lỗi. Tụi cao thủ, nó debug mấy bài graph chỉ trong vòng 10-20 phút.
Một điều quan trọng nữa là nên học cái giải thuật hơn là tập trung nhiều cho những kĩ thuật đã quá cũ này. Vì giải thuật sẽ còn được sử dụng mãi, trong khi mấy cái kiến trúc cơ bản sẽ dần bị đào thải. Thử hỏi ngày xưa máy có bao nhiêu dữ liệu? Ngày nay thì sao? Gấp có vài ngàn lần. Một giải thuật tốt 10 năm sau vẫn còn chạy được mà không cần biết kích thước của dữ liệu. Trong khi một kĩ thuật của 10 năm trước, nếu đem về 10 năm sau thì sẽ làm được gì?