زمانی میشه به این سوالات جواب درستی داد که یک فرد همه ی این فریم ورک ها رو تجربه کرده باشه ، که بعید میدونم کسی وقت کرده باشه به همه ی این ها سر زده باشه!!!
و قطعا هم بهترین بودن مطلق نیست و نمیتونیم بگیم فلان FrameWork بهترین و اون یکی نیست !! پس جواب هایی که داده میشه بیشتر تجربه شخصی افراد هست...(به این نکته دقت کنید)
نتیجه تحقیق شاید چند ساله من روی سی++ و محیط Qt رسیده . آیا این نتیجه درسته و روی این زبون و این محیط تمرکز کنم و همه چیزشو با جزییات یاد بگیرم یا اینکه در آینده نزدیک اینها از رده خارج میشه و زبون هایی مثل C#‎‎ یا JAVA جای C++‎‎ رو خواهند گرفت (یا شاید تا الان هم گرفتند؟!)
مطمئنا این زبان ها یعنی جاوا و C#‎ جایگاه خیلی خوبی دارند ، بویژه جاوا !! و اینکه آیا C++‎ از رده خارج میشه رو جدا نمیدونم ولی بعید میدونم چرا ، چون C++‎ خودش یک زبان قدرتمند هست اما جاوا و C#‎ قدرتشون رو از فریم ورک های پشتشون می گیرن...
در هر صورت من به این سوال اینجوری جواب میدم و از تجربه ی خودم استفاده می کنم ، من با جاوا تجربه ای ندارم ، اما از C#‎ تجربه دارم و هر از چند گاهی مجبورم باهاش پروژه هام انجام بدم ، برای پروژه های کوچیک خوبه ، کاراست اما برای پروژه های بزرگ خیلی نمیتونه کارایی داشته باشه ، البته من با Qt هم تجربه کمی دارم و این سوال همیشه برای خودم هم هست که آیا وقت گذاشتن روش با ارزش هست یا نه !؟ باید این بگم وقتی که من با C++‎ تحت Qt کد میزنم خیلی بیشتر لذت می برم تا زمانی که با C#‎ تحت دات نت کد میزنم شاید بپرسید چرا ، من هم باید بگم نمیدونم!!

اینکه اصلا فریم ورک یعنی چی؟ فرقش با کامپایلر چیه؟ چرا زبون سی native هست و سی شارپ نیست؟آیا ممنکنه سی شارپ هم روزی native حساب شه؟ جاوا کجای این ماجراست؟
شاید جواب دادن به این سوال ها بیشتر شما رو روشن کنه!!
اصلا فریم ورک چیه!؟ فریم ورک یا چارچوب کاری ، به مجموعه کلاس ها و کتابخانه هایی می گن که به برنامه نویس کمک میکنه نرم افزار مورد نظرش ، خیلی راحت تر و سریع تر توسعه بده!! پس حالا می تونید تفاوت قائل بشید بین زبان برنامه نویسی و چارچوب کاری!! C#‎ و C++‎ و همچنین ربان جاوا (نه کلیات جاوا) زبان برنامه نویسی اند نه چارچوب کاری ، اما Qt و دات نت و چارچوب جاوا (همون کلاس های آماده جاوا) همون چارچوب کاری یا فریم ورکند...
فرقش با کامپایلر چیه؟
فرقش از زمین تا آسمانه!! کامپایلر وظیفش ترجمه کد ها به زبان ماشین هست ، در حالی که فریم ورک صرفا یک سری کلاس ها و کد های از قبل نوشته شده برای راحتی کار برنامه نویس است...
چرا زبون سی native هست و سی شارپ نیست؟آ
آها !! سوال اصلی اینجاست ، وقتی میگیم یک زبان native یا manage یعنی چی ؟! C++‎ یک زبان native چون کد های نوشته شده به این زبان بعد از کامپایل مستقیما به کد قابل فهم برای سیستم عامل مقصد ترجمه میشه ، در حالی که کد هایی که در Framework های manage تولید میشه مستقیما به کد های قابل فهم برای سیستم عامل مقصد ترجمه نمیشه بلکه به زبانی ترجمه میشه که برای ماشین مجازی FrameWork مورد نظر قابل فهم باشه ، خوب چرا اینکار انجام میدن !؟ دقیقا همینجاست که Cross-Platfom معنا پیدا میکنه ، این کار انجام میدن تا مجبور نباشیم برای هر سیستم عامل زمان کامپایل یک نوع کد تولید کنیم ، یک بار کد رو به زبان قابل فهم برای ماشین مجازی ترجمه میکنیم ، و روی سیستم عامل مورد نظر ماشین مجازی رو نصب می کنیم ، حالا وظیفه ی ماشین مجازی که کد ما را برای سیستم عامل مقصد ترجمه کنه...
پس در نتیجه C#‎ (تمام زبان های تحت دات نت) و جاوا به این دلیل زبان های Manage خوانده میشن که کد های آنها بعد از کامپایل دو باره باید توسط ماشین مجازی مورد نظر برای سیستم عامل مقصد ترجمه بشن!! به ماشین مجازی جاوا میگن JVM و به ماشین مجازی دات نت میگن CLR...
جاوا کجای این ماجراست؟
جاوا ، جای خوبه این ماجراست!! فریم ورک دات نت ، هیچوقت نتونستن بطور کامل Cross-Platfom باشن ، و خیلی ضعف دارن در این مسئله ، اما جاوا در این زمینه بسیار موفق تر از دات نت عمل کرد...
همه میگن دنیا داره به سمت cross-platform میره . مگه ما غیر از C++‎‎ و فکر کنم بیسیک و دلفی زبون دیگه داریم که به درد کراس پلتفرم بخوره؟
زبان هایی که اینجا نام بردید هیچ کدوم به تنهایی Cross-Platform نیستن ، مگر C++‎/Qt و VB/.net یا Delphi/.net ( Delphi prism) اما آره زبان هایی بیشتر بدرد چند سکویی می خورن که قبل از اجرا کامپایل نشن ، و در واقع تفسیری باشن ، مثل HTML ، چرا برای وب زبانی مثل HTML را ارائه دادن چون در سطح اینترنت n تا ماشین بود با n تا سیستم عامل مختلف!! پس باید یک زبانی می بود که برای همه قابل فهم بود ، اما زبان هایی مثل HTML فعلا فقط به درد طراحی اینترفیس می خورن و برای نوشتن هسته برنامه اصلا کارا نیستن...
پس مایکروسافت که اینهمه رو سی شارپ سرمایه گذاری کرده و میکنه داره به بیراهه میره؟!!!
این نمیدونم و باید از خود میدیران ماکروسافت بپرسی ببنی چه آینده ای را متصور شدن ، اما احساس می کنم خودشون هم دارن به این نتیجه میرسن ، و برای همین صداهایی داره میرسه از طراحی زبانی جدید به اسم WinC++‎ ، البته اطلاعات دقیقی در این مورد ندارم ، یا مثلا همینکه برای نوشتن برنامه های Metro Style کنار C#‎/Vb+XAML ، امکان کد نویسی با Java Script+HTML5 هم گذاشتن ، نشان میده یکم دنبال تغییرند....
و یا سیستم عامل های جدید شبیه اندروید که تقریبا کل بازار موبایل رو گرفته و زبون اصلی برنامه نویسیش java هست چرا اینقدر گسترش یافته؟ آیا این گسترش جاوا روی سایر سیستم ها از جمله کامپیوترها و یا embede-systems ادامه خواهد داشت و یا فقط تمرکزش روی موبایل هستش؟!
جاوا جای سی++ رو میتونه بگیره یا خیر؟ چرا؟
جاوا در Cross-platform بودن بسیار موفق بوده و همیشه می گیم جاوا خیلی خوبه ، اما جاوا هم مثل هر چیز یکسری ضعف و یکسری قوت داره ، جاوا انقدر خوب هست که منکه هیچ تجربه ای با جاوا ندارم ، به صراحت بگم جاوا خیلی خوبه حالا شما حساب اونیکه داره با جاوا پول در میاره رو بکن!! اما ضعفش نسبت به Qt اینکه نیاز نیست برای هر سیستم عامل کدی که نوشتیم رو ببریم در همان سیستم عامل یک بار کامپایل کنیم تا خروجی اجرایی بگیریم ، کافیه یکبار کامپایل و n بار در n سیستم عامل اجرا کنیم ، اما جاوا به دلیل manage بودن ، نیاز داره کدش دو باره ترجمه بشه ، پس کند تر از Qt هست...
من چون خیلی نمیتونم آینده Qt را پیش بینی کنم در این مورد چیزی نمیگم....