اکنون 10 سال از انتشار کامپایلر VC++‎6 گذشته است، کامپایلری که از مهم ترین قابلیت هایش برنامه نویسی unmanaged یا همان غیر دات نتی بود حال به شیوه MFC یا Win32 API.

اما نکته ای که باید به آن توجه کرد آن است که در طی این سال ها قابلیت های زیادی به زبان استاندارد ++C/C و به API های سیستم عامل های جدید اضافه شده است، که برخی از این امکانات در قالب SDK جدید و قابل دانلود، هر چند ماه عرضه شده است و این در حالی است که با نصب و استفاده از هر یک از کامپایلرهای ++Visual C نسخه های بعد از VC6، می توان از تمامی این امکانات و SDK جدید بهره مند شد. (که بسیاری از آن ها از جمله کتابخانه های استاندارد و با کیفیت ++C خریداری شده اند)

اما متاسفانه هر روزه با تعداد زیادی از برنامه نویسان در کشور مواجه می شوم که همچنان این تفکر اشتباه در ذهنشان وجود دارد که نسخه های بعد از VC6 دیگر میبتنی بر .NET شده اند و یا اینکه اشتباها VC6 را یک زبان و آن هم مختص همین نسخه کامپایلر می دانند. (از فارغ التحصیلات کامپیوتر گرفته تا برنامه نویسان تازه کار C++‎ و حتی حرفه ای در سایر زبان های برنامه نویسی) و در بیان برنامه نویسی غیر دات نتی از طریق C++‎ و توصیه هایشان می گویند به سراغ VC6 برو !

حتی برخی ++VC را فقط MFC می دانند و از مهم ترین بخش آن ( لایه زیرین MFC) یعنی برنامه نویسی win32 API غفلت می کنند.


لذا برای روشن شدن موضوع نسخه های ارائه شده بعد از Visual C++‎ 6 و برخی از قابلیت های مهم آن ها را بررسی می کنیم:

1) Visual C++‎ 6.0: (سال 1998 ، دات نت هنوز عرضه نشده است)
- پشتیبانی از MFC 6.0
- پشتیبانی از برنامه نویسی win32 و همین طور کنسولی


2) Visual C++‎ .NET 2002 :
- پشتیبانی از MFC 7.0 ( بدون .NET)
- پشتیبانی از برنامه نویسی win32 و همین طور کنسولی ( بدون .NET)
- پشتیبانی از برنامه نویسی .NET نسخه 1.0 از طریق managed C++‎ extensions


Visual C++‎ .NET 2003 (3:
- پشتیبانی از MFC 7.1 ( بدون .NET)
- پشتیبانی از برنامه نویسی win32 و همین طور کنسولی ( بدون .NET)
- پشتیبانی از برنامه نویسی .NET نسخه 1.1 از طریق managed C++‎ extensions


:Visual C++‎ 2005 (4
- پشتیبانی از MFC 8.0 ( بدون .NET)
- نیازمند تغییرات اندکی در پروژه های MFC نوشته شده توسط VC++‎6
- پشتیبانی از برنامه نویسی win32 و همین طور کنسولی ( بدون .NET)
- پشتیبانی از برنامه نویسی.NET نسخه 2.0 از طریق C++‎/CLI با تغییرات زیادی در syntax برنامه نویسی .NET
- امکان برنامه نویسی برای دستگاه های موبایل و PDA شامل windows mobile


:Visual C++‎ 2008 (5
- پشتیبانی از MFC 9.0 ( بدون .NET)
- پشتیبانی و ارائه هزاران API برای سازگاری بیشتر با ویندوز Vista و افزودن سبک ویندوز Vista در طراحی Dialog box
- امکان استفاده محدود از Class Designer در برنامه نویسی native (همانند برنامه نویسی #C)
- پشتیبانی از برنامه نویسی .NET نسخه 3.5 از طریق C++‎/CLI
- پشتیبانی از برنامه نویسی win32 با ارائه هزاران API جدید و همین طور کنسولی ( بدون .NET)
- عدم پشتیبانی از کامپایل و اجرا شدن برنامه در Windows 95, Windows 98, Windows ME و Windows NT


اما تذکرات:

نکته 1) از آنجایی که این کامپایلرها با نام NET. عرضه شدند (همین طور خود بسته Visual Studio .NET) اشتباها این تفکر را در برنامه نویسان ایجاد کرده است که برنامه نویسی ++C در این نسخه ها فقط از طریق دات نت می باشد، در حالی که چنین نیست، بلکه این فقط یک نام برای کامپایلرهای جدید ++VC می باشد که با پسوند NET. عرضه شدند و برای رفع این تفکرات غلط در نسخه های 2005 به بعد، این نام به حالت قبل تغییر داده شد و پسوند نام NET. حذف شد و شما همانطور که مشاهده کردید همچنان می توانید از نسخه های جدیدتر برنامه نویسی MFC یا win32 بدون نیاز به NET Framework. استفاده کنید و اصلا نیازی به برگشتن به محیط قدیمی VC++‎6 نیست.


نکته 2) احتمالا اکثر کاربران اشتباها کامپایلر VC6 را همانند Visual Basic 6 فرض می کنند. در حالی VB یک زبان برنامه نویسی هست.


نکته 3) از طریق همه این کامپایلرها (به جز VC6)در صورت تمایل می توانید کدهای native کنونی خود را (مانند MFC و win32) با برنامه نویسی .NET از طریق C++‎/CLI ترکیب کنید و از مزایای دات نت نیز بهره مند شوید.


نکته 4) توجه داشته باشید که کامپایلر VC++‎6 (سال 1998) با نسخه های جدید ویندوز از جمله XP مشکلاتی بسیاری دارد و حداقل نیازمند نصب جدبدترین سرویس پک می باشد (آخرین نسخه SP6) و در ویندوز ویستا نیز پشتیبانی نمی شود، لذا با گذشت 10 سال دیگر این کامپایلر از طرف مایکروسافت پشتیبانی نخواهد شد، همانطور که نسخه های ویندوز زیر 2000 از این پس پشتیبانی نخواهند شد.

پس راهکار استفاده از نسخه های جدید کامپایلر ++Visual C هست، چیزی که بدون پرداخت هزینه زیادی در کشور قابل یافت می باشد و کدهای شما فقط در برخی موارد جزئی با تفاوت بسیار اندک قابل انتقال به نسخه های بعد می باشد.


نکته 5) برخی از کاربران نیز به خاطر مطالعه کتاب ها و منابع قدیمی MFC همچنان اصرار بر استفاده از VC6 دارند در حالی که تنها تفاوت قابل لمس آن تغییر مکان Class wizard می باشد که فقط Tab ها آن wizard، به چندین دیالوگ جداگانه با همان نام ها مانند Add variables و غیره تقسیم شده است و فراگیری آن کمتر از نیم ساعت زمان نیاز دارد. (پست بعد را مشاهده کنید)


نکته 6) برخی از کاربران دیگر نیز به دلیل تغییرات ایجاد شده در ارتباطات با پایگاه داده های جدید (مانند نسخه MSSQL 2008) برای سازگاری به نسخه VC++‎6 روی آوردند که همچنان می توانستند از نسخه های جدید تر مانند 2003 استفاده کنند.


در پایان اگر این مورد شامل حال شما هم می شود لطفا در نظرسنجی فوق شرکت کنید و نظر یا دلیل خود را نیز در همان مورد مطرح کنید.

موفق باشید