• Thứ Ba, 06/11/2007 10:22 (GMT+7)

    Góp ý bài “Công cụ nào cho phát triển ứng dụng C/C++”

    Bài viết đăng trên TGVT A số tháng 8/2007 (tr.132) đã đưa ra một cái nhìn tổng quan về các công cụ phát triển ứng dụng C/C++ trên nền Windows, tuy nhiên trong bài viết còn có nhiều chỗ thông tin chưa được chính xác, xin được góp ý, bổ sung như sau:

    Visual C++ .NET 2003 nói riêng và Visual Studio.NET 2003 nói chung chỉ mới hỗ trợ .NET 1.1, không hỗ trợ .NET 2.0. Cần chú ý là kể từ phiên bản này, VC++ hỗ trợ cả 2 "trường phái" lập trình: lập trình truyền thống trên C/C++ và được dịch ra file thực thi PE; và lập trình nền .NET thông qua Managed Extension C++, sử dụng CLR (Common Language Runtime). Mặc dù bộ Visual Studio .NET 2003 rất lớn nhưng nếu chỉ cần sử dụng C/C++ thì bạn có thể cài đặt riêng Visual C++, thậm chí mua riêng phiên bản này, để giảm chi phí sử dụng.

    Về Visual C++ 2005 Express Edition, bài viết có một số nhầm lẫn như sau: VC++ 2005 Express Edition hỗ trợ phát triển ứng dụng .NET thông qua chuẩn C++/CLI tới phiên bản 2.0 (chứ không phải là 3.0). Mặt khác, phiên bản này hỗ trợ hoàn toàn việc xây dựng ứng dụng Win32, chỉ không hỗ trợ phát triển ứng dụng 64-bit mà thôi. Những khác biệt đáng kể của phiên bản Express với các bản VC++ 2005 chính thức là: không hỗ trợ MFC, ATL (dù vẫn hỗ trợ STL), hỗ trợ hạn chế cho Windows SDK... Các khác biệt có thể tham khảo tại địa chỉ sau: http://msdn2.microsoft.com/en-us/library/hs24szh9(VS.80).aspx. Ngoài ra, dung lượng của công cụ này chỉ vào khoảng trên dưới 50MB chứ không phải là 600MB như trong bài viết. Thậm chí, người dùng có thể tải về bản web-installer chỉ có 2.57MB, trong quá trình cài đặt chương trình sẽ tải tiếp các file cần thiết (yêu cầu kết nối Internet)

    Kể từ phiên bản 2005 (8.0), Microsoft bỏ đuôi .NET phía sau, chính vì vậy chúng ta có Visual C++ 2005 (cũng như Visual Basic 2005 chứ không còn là VB.NET). Cần chú ý là cả 3 phiên bản chính của Visual Studio 2005 (gồm có Standard, Professional và Team System) đều có thể cài trực tiếp từ DVD, và bộ MSDN được chứa trên một bản DVD riêng. Vấn đề bài viết nói đến là phải copy vào đĩa cứng, do dùng nhầm phiên bản không bản quyền chăng? Nếu chỉ cài mình VC++ 2005 thì dùng lượng đĩa cứng yêu cầu chỉ khoảng trên dưới 1GB (chưa kể MSDN), chứ không lên đến 3GB như bài viết đề cập.

    Một trong những điểm tác giả có nhắc đến trong bài là tốc độ của VC++ 2005 chậm hơn C-Free hay Pelles C. Nếu hiểu dưới góc độ biên dịch mã nguồn thì cần chú ý, VC++ 2005 nói riêng và VS 2005 nói chung đều tiến hành biên dịch cả Project, nôm na là "sắp xếp xong xuôi rồi mới biên dịch". Chính vì vậy với các dự án nhỏ, chỉ có ít mã nguồn thì quả thực VC++ 2005 chậm hơn rất nhiều công cụ khác. Nhưng nếu dùng với các dự án lớn và cực lớn thì chưa biết "mèo nào cắn mỉu nào". Đặc biệt, các trình dịch miễn phí, đôi khi gặp rắc rối không thể biên dịch với các dự án kiểu này khi số file .cpp, .h quá lớn và sử dụng nhiều khai báo #include. Các phiên bản trước của VC++ có thể mắc lỗi này nhưng đến VC++ 2005 thì chúng đã được khắc phục một cách khá triệt để.

    Một cách khái quát, có thể đánh giá các công cụ phát triển C/C++ như sau:

    Các công cụ miễn phí như DevCpp phù hợp cho việc học tập và phát triển các dự án từ vừa trở xuống. Trên thực tế, chúng chỉ bao gồm 3 thành phần cơ bản là trình soạn thảo, trình dịch và trình gỡ rối nên khi sử dụng với dự án lớn sẽ rất khó khăn. Các công cụ này có dung lượng nhỏ, yêu cầu ít tài nguyên hệ thống, dịch khá nhanh nhưng thiếu các công cụ hỗ trợ tốt cho lập trình viên trong việc viết và kiểm soát mã nguồn.

    Riêng VC++ của Microsoft, tuy không phải là trình biên dịch tốt nhất (tham khảo thêm bài viết về vấn đề này: "Trình biên dịch C/C++ tốt nhất?", ID: A0401_77), nhưng lại là trình phát triển C/C++ trên nền Windows tốt nhất do cung cấp cho lập trình viên những công cụ bổ sung xuất sắc.

    Nếu muốn lập trình đa nền tảng, các bạn có thể tham khảo một số công cụ như Qt, hay sử dụng các gói bổ sung C/C++ cho Netbeans và Eclipse.
    Rất mong được mọi người đóng góp ý kiến.

    Mai Văn Quân
    Email:
    Vimvq1987@yahoo.com

    ID: A0710_144