# Native Code > برنامه نویسی با C > برنامه نویسی در محیط QT و هم خانواده هایش >  آیا Qt بهترین انتخاب است؟

## prince0fpersia

سلام

دوستان من دنبال یک زبان برنامه نویسی + یک IDE میگردم که همه نیازهای یک برنامه نویس رو مرتفع کنه . مستقل باشه و روی همه جور سیستم عاملی اجرا بشه . بشه برنامه های سطح خیلی پایین سخت افزاری و برنامه های سطح بالای ویژوالی باهاش نوشت .

فوکوس اصلی من روی مباحث برنامه نویسی ربات هست ، از هوش مصنوعی و پردازش صوت و تصویر تا برنامه نویسی پورت ها و سخت افزارهای مختلف . میخوام همه جور سخت افزاری رو بشه باهاش پروگرام کرد .

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

ممنون میشم یکی از دوستان یک راهنمایی جامع و علمی به زبون ساده داشته باشند

اینکه اصلا فریم ورک یعنی چی؟ فرقش با کامپایلر چیه؟ چرا زبون سی native هست و سی شارپ نیست؟آیا ممنکنه سی شارپ هم روزی native حساب شه؟ جاوا کجای این ماجراست؟ 

همه میگن دنیا داره به سمت cross-platform میره . مگه ما غیر از C++‎ و فکر کنم بیسیک و دلفی زبون دیگه داریم که به درد کراس پلتفرم بخوره؟ 

پس مایکروسافت که اینهمه رو سی شارپ سرمایه گذاری کرده و میکنه داره به بیراهه میره؟!!!

و یا سیستم عامل های جدید شبیه اندروید که تقریبا کل بازار موبایل رو گرفته و زبون اصلی برنامه نویسیش java هست چرا اینقدر گسترش یافته؟ آیا این گسترش جاوا روی سایر سیستم ها از جمله کامپیوترها و یا embede-systems ادامه خواهد داشت و یا فقط تمرکزش روی موبایل هستش؟! 
جاوا جای سی++ رو میتونه بگیره یا خیر؟ چرا؟


و خیلی سوالای دیگه که در ادامه خواهم پرسید .
امیدوارم با همکاری دوستان بحث جامع و مفیدی شکل بگیره

----------


## returnx

زمانی میشه به این سوالات جواب درستی داد که یک فرد همه ی این فریم ورک ها رو تجربه کرده باشه ، که بعید میدونم کسی وقت کرده باشه به همه ی این ها سر زده باشه!!!
و قطعا هم بهترین بودن مطلق نیست و نمیتونیم بگیم فلان 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 را پیش بینی کنم در این مورد چیزی نمیگم....

----------


## prince0fpersia

خب سوال اصلی اینجاست که زبون هایی مثل سی شارپ و جاوا بعد از سی++ اومدند . و اونها که این زبون هارو ساختند به همه این موضوعات native بودن و پایین اومدن زمان اجرا اشراف داشتند اما چرا اینطوری این زبان هارو طراحی کردند؟!!!

ضمن اینکه امروز مطلبی رو در فروم stack overflow میخوندم که به دلیل بهینه سازی خودکار کد زبان هایی مقل سی شارپ و جاوا سرعت اونها حتی از سی++ هم بیشتر شده و یا خاصیتی مثل garbage collection به این موضوع خیلی کمک میکنه .

و من فکر میکنم اونها خواستند یک برتری به وجود بیارند که یک واسط بین کامپایلر زبان و کامپابلر سیستم عامل ایجاد کردند نه اینکه باعث کند تر شدن و غیر cross-platform شدن یک زبانی بشند . وگرنه میتونستند یک زبانی مثل سی++ طراحی کنند و این کتابخونه هارو به صورت پکیح های جداگانه بفروشند براش؟ 

من فکر میکنم اینها این واسط رو طراحی کردند تا ایتدا کدهای نوشته شده توسط کاربر رو به بهترین شکل ممکن خودش یکبار دیگه بتویسه (مثل اینکه یک نفر که کد زده ف کدش رو بده به یک استاد کد نویسی که از همه لحاظ کدش رو اصلاح و بهینه کنه ) و بعدش به زبون ماشین تبدیلش کنه

و اتفاقا برای برنامه های خیلی گسترده و پیچیده که برنامه نویس نمیتونه همه جوانب رو درنظر بگیره و یک حامعیت و یکپارچگی کلی بین همه پروژه ایجاد کنه ، اینجاست که این ویرژوال ماشین ثدرت نمایی میکنه و شاید هدف سازندگان هم همین بوده

***البته همه این نظرات شخصی بوده و وجاهت علمی نداره و امیدوارم دوستان با اطلاع بیان و اصلاح و تکمیل کنند

----------


## prince0fpersia

در مورد cross-platform من فکر میکنم دلیل عدم موفقیت مایکروسافت این بوده که مایکروسافت اساسا انحصارگراست و خودش .net رو گسترش نمیده تا هرکی میخواد ازش استفاده کنه بیاد و از دیگر محصولش یعنی ویندوز هم استفاده کنه

----------


## returnx

> و من فکر میکنم اونها خواستند یک برتری به وجود بیارند که یک واسط بین کامپایلر زبان و کامپابلر سیستم عامل ایجاد کردند نه اینکه باعث کند تر شدن و غیر cross-platform شدن یک زبانی بشند


فکر می کنم شما این قسمت بد متوجه شدید !! زبان های مدیریت شده آمدند تا Cross-platfrom بودن رو به برنامه نویس ها هدیه بدند نه اینکه غیر Cross-platform  باشند...
در ضمن باید بگم خوب همونطور که میدونید در زبان های مدیریت شده ، مدیریت حافظه تا حد زیادی به عهده کامپایلر هست ، شما با اشاره گر ها درگیر نیستید ، وظیفه ی تخریب شی تا حد زیادی از روی دوش برنامه نویس بر داشته شده و...
خوب میبینیم که تو این زبان ها هم سعی شده تا حد زیادی بهینه باشند ، حالا آیا در سرعت اجرا بهینه تر از زبان های native باشند ، مطمئن نیستم!!
البته من یک تذکر رو هم اضافه کنم : با قدرتمند شدن ، سخت افزار های امروزی ، خیلی رو سرعت اجرای زبان ها تمرکز نمیشه ، چون تقریبا به چشم نمیاد بلکه سعی میشه در بهینه بودن الگوریتم های بکار گرفته شده در یک پروژه ، تمرکز بشه ، پس نباید به این مسئله خیلی سخت گرفت...

----------


## prince0fpersia

ضمن این نکته که قبلا خونده بودم انگار زبون های C#‎ یا java توی مولتی تسکینگ و مولتی تردینگ و کلا پیاده سازی رو سیستم های چند پروسسوری موفقتر هستند!!

----------


## prince0fpersia

> فکر می کنم شما این قسمت بد متوجه شدید !! زبان های مدیریت شده آمدند تا Cross-platfrom بودن رو به برنامه نویس ها هدیه بدند نه اینکه غیر Cross-platform باشند.....


خب من دقیقا همینجارو نمیفهمم !!! مگر زبون های نیتیو  cross-platform نبودند؟!!
اما زبونی مثل سی شارپ که مدیریت شده است cross-platform نیست!

----------


## returnx

> خب من دقیقا همینجارو نمیفهمم !!! مگر زبون های نیتیو  cross-platform نبودند؟!!
> اما زبونی مثل سی شارپ که مدیریت شده است cross-platform نیست!


این مسئله که یک زبان Cross-platform باشه یا نباشه، خیلی به native بودن یا mange بودن ربطی نداره ، اما اصولا زبان های مدیریت شده در این امر یعنی Cross-platform موفق ترند ، چراکه مجبور نیستند کد خودشون رو به زبان محلی سیستم عامل خاصی کامپایل کنند ، بلکه به یک زبان میانی کامپایل کرده و سپس توسط ماشین مجازی به زبان محلی سیستم عامل ترجمه می کنند ، به همین دلیل هست که برای اجرای برنامه هایی که به زبان Java نوشته شده اند باید JVM رو سیستم مقصد نصب باشه یا همین موضوع برای .net هم صادق هست ، اما شما برنامه ای رو در C++‎‎‎‎‎‎ می نویسید و بعد کامپایل می کنید ، دیگه نیاز ندارید ماشین مجازی خاصی رو هم نصب کنید ولی C++‎‎‎‎ خیلی Cross-platform نیست  ، اما در مورد کیوت داستان یکم فرق داره ، کیوت برا اینکه هم بتونه هم Cross-platform  بمونه و هم از مزایای native بودن بهره ببره ، مجبور شد تمام Object های مورد نیاز برنامه نویسان رو خودش ایجاد کنه و از object های سیستم عامل ها استفاده نکنه و این باعث میشه تا از API های سیستم عامل های خاصی استفاده نکنه ، برای همین هم هست که زمان اجرای کد های Qt او چند تا DLL معروف رو باید کنار برنامتون قرار بدید...
در ضمن میبینیم وقتی Qt برای ایجاد object های خاص از API های یک سیستم عامل استفاده کرده تو اون زمینه دیگه Cross-platform نبوده و فقط در همون سیستم عامل خاص قادر به استفاده از اون Object ها هستیم ، مثل Mac Style که Style پنجره های پروژه رو به شکل پروژه های Macintosh در میاره ، اما در Windows قابل استفاده نیست...
ببینید :



> This class is implemented as a wrapper to the HITheme APIs, allowing applications to be styled according to the current theme in use on Mac OS X. This is done by having primitives in QStyle implemented in terms of what Mac OS X would normally theme.
> *Warning:* This style is only available on Mac OS X because it relies on the HITheme APIs


در ضمن C#‎‎‎‎ ، البته کل دات نت یکی از اهدافش Cross-platform بودن بود ، نه اینکه الان نباشه ، هست اما خیلی موفق نبود در این زمینه ، شما همین الان هم میتونید با C#‎‎‎‎ برنامه بنویسید و در mac اجرا کنید ، اما هیچ تضمینی نیست که برنامتون درست اجرا بشه ، برای همین هست که روی دات نت به عنوان یک چارچوب کاری Cross-platfom حساب نمیشه ....
امیدوارم این توضیحات کمک بیشتری بهتون کرده باشه...

----------


## prince0fpersia

من الان یه نکته که خیلی برام جالب بود اینه توی رنکینگ زبان های برنامه نویسی معمولا همیشه زبان C اول هست و بعدش java و بعدشم C++‎‎‎ و C#‎‎‎ و .....
الته جدیدا انگار زبان objective-c داره تو رنکینگ میاد جای یکی از اینهارو بگیره!!

الان این واسم سوال شده که ما توی ایران میگیم سی++ همون ارتقا یافته یا تکمیل شده یا پیشرفته C هست اما نمیدونم چرا همیشه C++‎‎‎ رتبه اش از C پایینتره؟!!

البته فکر میکنم دلیلش اینه که ما 2 جور عمده برنامه نویسی داریم . شی گرا و روالگرا و هنوز 35% برنامه نویسها روالگرا مینویسند و از C استفاده میکنند و به خاطر این شاید رتبه C همیشه (از سال 1988 تا الان) صدر جدول بوده! اما درصد ها در شی گرایی شکسته میشه بین C++‎‎‎ و java و C#‎‎‎ و ......
و چون توی شی گرایی جاوا از سی++ برتری داره رتبه سی++ بعد جاوا قرار میگیره

حالا چقدر این تحلیل درسته نمیدونم!!!

اما یه نکته جالبی هم دیدم یه تقسیم بندی دیگه از زبان ها بود که یه 2 دسته staticly و dynamicly تقسیم میشند . متاسفانه اطلاعتی در این زمینه ندارم و فقط میتونم حدس بزنم مربوط به نوع تعریف متغیر ها و نوع اجرای برنامه به صورت single-tasking or multitasking باشه! اگر در این زمینه اطلاعاتی دارید خوشحال میشم بشنوم

----------


## aidinMC

> مثل HTML ، چرا برای وب زبانی مثل HTML را ارائه دادن چون در سطح اینترنت n  تا ماشین بود با n  تا سیستم عامل مختلف!! پس باید یک زبانی می بود که برای همه قابل فهم بود ، اما زبان هایی مثل HTML فعلا فقط به درد طراحی اینترفیس می خورن و برای نوشتن هسته برنامه اصلا کارا نیستن...


 HTML زبان نیست. HTML تگهای رابط ، بین مفسر و کاربر هست.

----------


## FastCode

در مورد native نبودن  .net باید بگم که میشه با  mono/aot تبدیلش کرد.ولی چون تنها خاصیت .net همین managed بودنشه.من ترجیح میدم از اول با C++‎ بنویسم و حداقل یه اسمی داشته باشم.(بگن طرف با یه زبون واقعی برنامه مینویسه نه با یه اسباب بازی)

----------


## aidinMC

> در مورد native نبودن  .net باید بگم که میشه با  mono/aot تبدیلش کرد.ولی چون تنها خاصیت .net همین managed بودنشه.من ترجیح میدم از اول با C++‎ بنویسم و حداقل یه اسمی داشته باشم.(بگن طرف با یه زبون واقعی برنامه مینویسه نه با یه اسباب بازی)


موافقم واقعا اسباب بازی هستش ....

----------


## prince0fpersia

چرا اسباب بازی هست؟ چون فرمی که باید کلی وقت بذاری بنویسی رو از قبل آماده داره؟

یا برنامه ای هست که آدم نتونه با سی شارپ بنویسه اما با سی ++ بتونه؟ لطفا علمی بحث کنید

----------


## aidinMC

> چرا اسباب بازی هست؟ چون فرمی که باید کلی وقت بذاری بنویسی رو از قبل آماده داره؟
> 
> یا برنامه ای هست که آدم نتونه با سی شارپ بنویسه اما با سی ++ بتونه؟ لطفا علمی بحث کنید


بله برنامه های هست که نمیشه با سی شارپ ساخت ::::: مثال -> کامپایلر سی شارپ با سی پلاس ساخته شده. آیا سی شارپ میتونه؟ (من این مثال تو این انجمن بارها زدم)

درمورد سوال اولت. شما میخوای یه ماشین (اتومبیل) بسازی تو دوتا حالت میتونی این کارو بکنی:

1) بیای از صفر همه چی رو طبق محاسبات خودت طراحی کنی و بسازی 
2) یکی بیاد قطعات رو آماده کنه بهت بگه بیا اینارو به هم وصل کن

سوال: تو کدوم حالت به خودت افتخار میکنی؟

----------


## prince0fpersia

یعنی تو سی شارپ نمیشه از صفر طراحی کرد؟!!

----------


## prince0fpersia

البته من بحثم زیاد در مورد سی شارپ نیست چون مایکروسافت ذاتا انحصار طلبه و مسلما به درد من که دلم میخواد با زبانی که بلدم هرکاری که خواستم روی هر سخت افزار و سیستم عاملی کنم جور درنمیاد (هرچند من شنیدم با سی شارپ هم میشه همه کار کرد و الزامی نیست که شما حتما از toolbox آماده اون استفاده کنید!! و حتی میتونید کد اسمبلی رو هم تو برنامه هاتون استفاده کنید)

من بیشتر در مورد جاوا سوال دارم که توی ایران خیلی کم بهش پرداخته شده اما توی جهان از محبوب ترین زبان ها (اگر محبوبترین نیاشه) هستش و جدیدا حتی سیستم عامل اختصاصی اندروید رو هم یه جورایی واسه موبایل ها و تبلت ها جا انداخته و من فکر میکنم در آینده بیشتر گسترش پیدا کنه و به pc ها و سایر سیستم های سخت افزاری هم برسه و یکحورایی جایگزین c ,C++‎ هم بشه و در نهایت بالای 50% برنامه نویسان و برنامه هارو به خودش اختصاص بده

نمیدونم چقدر این پیش بینی میتونه درست باشه اما اینطوری که جاوا پیشروی میکنه بعید به نظر نمیرسه

----------


## حامد مصافی

> دوستان من دنبال یک زبان برنامه نویسی + یک IDE میگردم که همه نیازهای یک برنامه نویس رو مرتفع کنه . مستقل باشه و روی همه جور سیستم عاملی اجرا بشه . بشه برنامه های سطح خیلی پایین سخت افزاری و برنامه های سطح بالای ویژوالی باهاش نوشت .


زبان C++‎




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


جاوا که در ابتدا oak (بلوط) نامیده می‌شد کراس‌پلت‌فرم بوده را هدف قرار داده است و بر این هدف هم مسلط شده است. جاوا روی پلت‌فرم دستکتاپ ویندوز، لینوکس، مک‌او‌اس و دستگاه‌های همراه و به عنوان زبان سمت‌سرور برنامه‌نویسی وب‌سایت کاملاً کاربردی و عالی‌است.
C#‎ یا بهتر بگوییم کل دات‌نت را اندروهلزبرگ در راستای سیاست‌های مایکروسافت طراحی کرده است. مایکروسافت در کنفرانس توسعه‌دهندگان در آوریل سال ۲۰۰۰ (اگر اشتباه نکنم) اعلام کرد فریم‌ورک دات‌نت در آینده جز جداناشدنی ویندوز خواهد بود. حال اینکه کی و تا چه حد یا اینکه اینک هم دیدگاه مایکروسافت همان است یا نه اطلاعی ندارم. اما نقطه‌اصلی هدف دات‌نت برنامه‌های سازمانی است. هر چند دات‌نت استاندارد شده است و شرکت‌های دیگری هم پیاده‌سازی‌هایی از آن را ارائه کرده‌اند اما زمان ثابت کرده همچنان مایکروسافت به کس دیگری موقعیت عرضه‌اندام در این زمینه را نمی‌دهد. عمده تولیدات تحت لوای دات‌نت برنامه‌ها و سایت‌های درون سازمانی هستند که برای همیشه در حیطه عملکرد یک سازمان خواهند ماند. دات‌نت و جاوا دو رقیب قدرتمند برای برنامه‌های سازمانی هستند که زبان‌هایی مانند C++‎ توانایی مقابله با‌ آنها را ندارند!





> و یا سیستم عامل های جدید شبیه اندروید که تقریبا کل بازار موبایل رو گرفته و زبون اصلی برنامه نویسیش java هست چرا اینقدر گسترش یافته؟ آیا این گسترش جاوا روی سایر سیستم ها از جمله کامپیوترها و یا embede-systems ادامه خواهد داشت و یا فقط تمرکزش روی موبایل هستش؟! 
> جاوا جای سی++ رو میتونه بگیره یا خیر؟ چرا؟


زبان اصلی برنامه‌نویسی اندروید C++‎ هست. افزونه‌های اندروید برای جاوا مجموعه‌ای از رابط‌های دیداری برای ساده‌تر کردن برنامه‌نویسی است. وگرنه نرم‌افزار‌های سیستمی و بازی‌ها با C++‎ (android ndk) نوشته می‌شوند.
جاوا جای خودش رو داره که هیچ تکنولوژی به این سادگی نمیتونه جاشو بگیره تصمیم هم نداره جای C++‎ رو بگیره. اما اگر بنا باشه جوابی به سوال شما بدم «خیر» خواهد بود.

پاورقی: digia قول داده در طول امسال (۲۰۱۳) پورت کیوت رو برای اندروید و ios آماده کنه که بنده شدیداً منتظر هستم و برای پیگیری کوچکترین خبری در این رابطه هر روز به سایت digia سر میزنم. اگر دنبال شماره یک کراس‌پلت‌فرم (لقبی که digia تصمیم داره برای کیوت محقق کنه) هستید این نکته رو در نظر بگیرید.






> پس مایکروسافت که اینهمه رو سی شارپ سرمایه گذاری کرده و میکنه داره به بیراهه میره؟!!!


مایکروسافت بسیار هدفمند و با یک برنامه‌ریزی عالی دات‌نت رو توسعه میده. کوچکترین خللی بر کار مایکروسافت نیست!





> ضمن اینکه امروز مطلبی رو در فروم stack overflow میخوندم که به دلیل بهینه سازی خودکار کد زبان هایی مقل سی شارپ و جاوا سرعت اونها حتی از سی++ هم بیشتر شده و یا خاصیتی مثل garbage collection به این موضوع خیلی کمک میکنه .


درسته که قابلیت optimize های بسیار عالی در دات‌نت و جاوا وجود داره. اما این مسائل ربطی به سرعت ندارند و فقط برای راحتی کار برنامه‌نویس هستند. برنامه‌نویس دات‌نت و جاوا نمیدونه زباله‌های برنامش کی منهدم میشن اما برنامه‌نویس C++‎ باید خودش اونا رو بذاره دم در!





> ضمن این نکته که قبلا خونده بودم انگار زبون های C#‎‎ یا java توی مولتی تسکینگ و مولتی تردینگ و کلا پیاده سازی رو سیستم های چند پروسسوری موفقتر هستند!!


پس چرا ژاپنی‌ها برنامه تمام(شایدم اکثر) روبوت‌های خودشون رو با C++‎ می‌نویسن و اونو روی لینوکس اجرا می‌کنند؟ ادامه جواب همان عرایضم در پاراگراف قبلی هست!





> من الان یه نکته که خیلی برام جالب بود اینه توی رنکینگ زبان های برنامه نویسی معمولا همیشه زبان C اول هست و بعدش java و بعدشم C++‎‎‎‎ و C#‎‎‎‎ و .....


توجه کن که این رنکینگ‌ها بر مبنای سورس نرم‌افزارهای اوپن‌سورس ساخته میشن. لذا تا زمانی که هسته لینوکس و gtk و هزاران هزار کتابخانه و نرم‌افزار کدباز لینوکسی با زبان سی هست این آمار جای تعجب نداره. سی هم مثل سی‌پلاس‌پلاس امکانات خوبی برای چند سکویی داره.

----------


## returnx

> HTML زبان نیست. HTML تگهای رابط ، بین مفسر و کاربر هست.


بله ، به این معنای زبان های برنامه نویسی که ما فعلا روش بحث داریم نیست اما همونطور که می دونید اون" L" کلمه ی HTML به Language اشاره داره!!
من با اون مثال سعی کردم تا مفهوم Cross-platform را توضیح بدم...

----------


## FastCode

> چرا اسباب بازی هست؟ چون فرمی که باید کلی وقت بذاری بنویسی رو از قبل آماده داره؟
> 
> یا برنامه ای هست که آدم نتونه با سی شارپ بنویسه اما با سی ++ بتونه؟ لطفا علمی بحث کنید


نمونش که خیلی زیاده.
نمیخوام وارد بحث کرنل و درایور و بوت لودر و .... بشم
همین برنامه های معمولی و روزمره ای که باهاشون کار میکنیم رو میگم.
فکر کن یه انجین ه بازی یا انجین دیتابیس رو با C#‎‎‎‎ بنویسی.
من که به کسی که این کار رو بکنه میخندم.حتی خودم یک بار سعی کردم انجامش بدم.(قبلش فکر میکردم اونایی که میگن نمیشه شوخی میکنن)
نتیجه؟پروژه چند ماه به دلیل سرعت تخیلی متوقف شده تا به Qt تبدیل بشه.

----------


## prince0fpersia

> نمونش که خیلی زیاده.
> نمیخوام وارد بحث کرنل و درایور و بوت لودر و .... بشم
> همین برنامه های معمولی و روزمره ای که باهاشون کار میکنیم رو میگم.
> فکر کن یه انجین ه بازی یا انجین دیتابیس رو با C#‎‎‎‎ بنویسی.
> من که به کسی که این کار رو بکنه میخندم.حتی خودم یک بار سعی کردم انجامش بدم.(قبلش فکر میکردم اونایی که میگن نمیشه شوخی میکنن)
> نتیجه؟پروژه چند ماه به دلیل سرعت تخیلی متوقف شده تا به Qt تبدیل بشه.




ولی من با سی شارپ و در ویژوال استودیو کار پردازش تصویر با EMGU که همون تبذیل شده ی opencv برای سی شارپ هست کد زدم و روی ربات های تیم AUT دانشگاه امیرکبیر هم الان همین کدها پیداه سازی شده + کل کد های دیگه ربات و ربات از خیلی نظرها حتی از نمونه های لینوکسی خارجی بهتر عمل میکنه و سریعتره!

ما یک کد رو هم با opencv و هم با emgu تست کردیم . تفاوت سرعتی ندارند . نکته ای که توی سایت ها و فروم ها و بحث های خارجی هم خوندم همین بوده که این بحث سرعت کاملا ادعایی هست و واقعیت عملی نداره . حتی بالاتر هم نوشتم که یک جا یک بحث خیلی مفصلی در stackoverflow بود که چرا جاوا و سی شارپ از C++‎ سریعتر هستند!!!!!!!!! و اتفاقا کسی این حرفو رد نکرده بود و دلیل رو به خاطر optimizition این دو زبون دونسته بودند

----------


## returnx

> حتی بالاتر هم نوشتم که یک جا یک بحث خیلی مفصلی در stackoverflow بود که چرا جاوا و سی شارپ از C++‎‎ سریعتر هستند!!!!!!!!! و اتفاقا کسی این حرفو رد نکرده بود و دلیل رو به خاطر optimizition این دو زبون دونسته بودند


در مورد موارد قبل خیلی بحثی ندارم ، ولی در این مورد خیلی عجیب بنظر میرسه!! در ضمن من هم مثل جناب *FastCode* 	اصلا نمیتونم تصور کنم که مثلا بیان ، برنامه ای مثل photoshop ، یا هر برنامه دیگه ای که نیاز به پردازش بالا دارن را با C#‎ بنویسن !! یکم مضحک بنظر میریسه !! این برنامه ها را اصولا با C++‎ و فریم ورک های تحت آن مثل MFC یا  Qt و... توسعه میدن...
حتی خود ماکروسافت هم نمیاد حتی برنامه های کاربردیش را با دات نت بنویسه ، جز برنامه های خیلی کوچیک مثل Calculator ،که یجورایی می خواست WPF را نمایش بده!!

----------


## prince0fpersia

متاسفانه آدرس اون بحث رو پیدا نکردم .

اما من یک لیست بلند بالا ار برنامه هایی که با جاوا نوشته شده پیدا کردم : http://platform.netbeans.org/screenshots.html
همه جور برنامه توش پیدا میشه . از فوتوشاپ گرفته تا طراحی بوئینگ و برنامه هواشناسی و ......

اما چون همچین لیستی برای سی شارپ وجود نداره دلیل نمیشه که اسباب بازی باشه . چون بیشتر در برنامه های درون سازمانی به کار برده میشه که دیده نمیشن!
منم تا قبل اینکه کار پردازش تصویر انجام بدم همین نظر رو داشتم ، اما وقتی کار سنگینی مثل image-processing رو در سی شارپ میشه real-time و بدون خطا انجام داد دیگه حرف زدن در مورد سرعت بی معنی میشه!

هرکس قبول نداره میتونه هر دو کتابخونه Emgu و OpenCV رو دانلود کنه و روی انواع پلتفرم ها تست کنه ببینه کدوم سریعتر هست! فکر نمیکنم هیچ برنامه ای سنگین تر از مثلا پیدا کردن یک سری شکل در تصویر آنلاین یک دوربین باشه! اگر تصویر دوربین رو 600*800 هم فرض کنید با 30 فریم در ثانیه میشه 480 هزار پیکسل در 30/1 ثانیه که برنامه باید اطلاعات تک تک اینهارو بخونه ، انواع الگوریتم های پیچیده هوش مصنوعی رو روی اینها اجرا کنه و درنهایت با تغییر دادن اطلاعات برخی از اینها مثلا دور اون شکل خاص یک خط بکشه به نشانه اینکه کجای تصویر قرار داره و بعد تازه مثلا به موتورهای ربات فرمانه بده چطوری حرکت کنند نسبت به اون شی !

اگر برنامه ای سنگینتر از این وجود داره که باید real-time هم اجرا بشه باشه سی شارپ اسباب بازیه!!!

من اصلا نمیخوام از C#‎‎‎ دفاع کنم اما این کارارو باهاش انجام دادم و نمیتونم بپذیرم اسباب بازی باشه!! فقط همین!
چون با سی شارپ در این مثل اسباب بازی رفتار میشه و همه ویندوز فرم میسازند دلیل نمیشه قابلیت این زبان فقط همینقدر باشه!

----------


## UfnCod3r

برای این جور کارایی که شما می گی زبان فقط سی پلاس مناسبه !
به نظر من دات نت فقط بدرد وب می خوره ! خودم خیلی سی شارپ کار کرده بودم !
شما تا حالا برنامه دات نتی خوب دیدی تو دنیا ؟ نت پد ویندوز هم با سی پلاسه برادر !  :قهقهه: 
QT هم زبان نیست ! به طور خیلی ساده رابط کاربری برنامه رو باهاش می نویسن ! و خیلی قابلیت ها داره !
دیگه پردازش تصویر که خودش نداره ! باید از کتاب خونه های دیگه استفاده کنید !





> چرا جاوا و سی شارپ از C++‎‎ سریعتر هستند!


جان ! دیگه این حرفو نزنی ها ! مردیم از خنده ! :قهقهه: 

البته در مواقعی برنامه ای که با سی پلاس نوشته شده باشه از نمونه دات نتی کند تره
و دلیلش چیزی نیست جز این که شما برنامه رو بد نوشتی !
چون توی دات نت مدیریت حافظه و .. اتوماتیک انجام میشه مشکلی نیست
اما تو سی پلاس اگه شما اشتباه کنی برنامت واقعا افتضاه میشه !
اتفاقا یکی از دوستای من یه برنامه نوشته بود new تو سی پلاس رو  new تو سی شارپ فرض کرده بود !  :قهقهه: 
delete هم یادش رفته بود بکنه !  :قهقهه: 


برای کارایی مثل پردازش تصاویر و برنامه رباط دیگه حتما باید سی / سی پلاس کار کنید !
دلیل اینکه مایکروسافت هم اینهمه هوای سی شارپو داره طبیعیه می خواد برنامه نویس ها فقط برا ویندوز برنامه بزنن ! از محصولات خودش استفاده کنن و ...

سی شارپ در برابر سی پلاس هیچه ! :لبخند گشاده!: 

++C
 :قلب: 
++C

----------


## prince0fpersia

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


شما جای اینکه اینقدر از شکلک خنده استفاده کنید یکمی با دقت پست هارو میخوندین
هیچکس نگفته Qt زبان هست یا باید پردازش تصویر هم بکنه!

اون چیزی هم که من نوشتم و شمارو کشته از خنده یک تاپیک خیلی مفصل در یکی از معتبر ترین سایت های برنامه نویسی بود که متاسفانه آدرسش رو پیدا نکردم قرار بدم! من فقط نقل قول کردم و بس!

پیشرفته ترین ربات های انسان نمای فوتبالیست موجود در کشور متعلق به تیم AUT-Man دانشگاه امیرکبیر هست که کل برنامه ربات با C#‎ نوشته شده و منم توی اون تیم بودم.
در کنارش ربات استاندارد nao رو هم با پلتفرم کامل لینوکس و برنامه نویسی C++‎  داریم که هیچ برتری نسبت به ربات های دست ساز خودمون نداره!(تست شده در عمل)

بحث سرعت هم کاملا منسوخ شده و شما اگر انگلیسی سرچ کنید میبینید دیگه هیچکس ادعای سرعت برای C++‎ نمیکنه!
بالاتر هم گفتم ، اینکه اکثر برنامه های تجاری با سی++ یا سی یا جاوا نوشته شدند دلیل بر برتری اونها نیست! دلیلش اینه که اونها open-source هستند اکثرا و C#‎ انحصاری مایکروسافت هست ! و همه جای دنیا مثل ایران نیست که قانون کپی رایت نداشته باشند!!!

شما اگر در مورد زبان برنامه نویسی ای تجربه یا اطلاعاتی ندارید دلیل نمیشه بیاید و هرچی دلتون خواست بنویسید!

----------


## returnx

> پیشرفته ترین ربات های انسان نمای فوتبالیست موجود در کشور متعلق به تیم AUT-Man دانشگاه امیرکبیر هست که کل برنامه ربات با C#‎‎‎‎‎‎ نوشته شده و منم توی اون تیم بودم.


خوب این یکی از او اشتباهایی بوده که خوب جواب داده!!



> در کنارش ربات استاندارد nao رو هم با پلتفرم کامل لینوکس و برنامه نویسی C++‎‎‎‎‎‎  داریم که هیچ برتری نسبت به ربات های دست ساز خودمون نداره!(تست شده در عمل)


این یکی از کار های خوبی بوده که بد جواب داده!!
نه حالا بدون شوخی ، زمانی این حرف قابل استناد هست که ، الگوریتم های بکار رفته در هر دو روبات دقیقا مثل هم و با سخت افزار های یکسانی پیاده شده باشد ولی یکی با C#‎‎‎‎‎ و دیگری با C++‎‎‎‎‎ ، در اون زمان کاملا مشخص میشه کدام زبان کارایی بهتری داره ، اصلا میتونید رو همین روبات خودتون هم تست کنید ، عین همین کد ها و الگوریتم هارو این بار با C++‎‎‎‎‎ بنویسید (البته اگه اونقدر بیکار هستید) ، بعد بیاین نتایج رو هم مقایسه کنید....



> بالاتر هم گفتم ، اینکه اکثر برنامه های تجاری با سی++ یا سی یا جاوا نوشته شدند دلیل بر برتری اونها نیست! دلیلش اینه که اونها open-source هستند اکثرا و C#‎‎‎‎‎‎ انحصاری مایکروسافت هست ! و همه جای دنیا مثل ایران نیست که قانون کپی رایت نداشته باشند!!!


نه اینطوری هام  نیست ، من لیست یکسری از برنامه های معروف که همین الان هم احتمالا رو سیستمتون نصب هست رو براتون میزارم  میبینید که همه با C++‎‎‎‎‎ توسعه داده شدند ، حالا تحت FrameWork های مختلف:
Microsoft office 
Internet Explorer
Adobe Photoshop
Adobe Acrobat
Firefox
Nero Multimedia Suite
Safari (web browser)
Google Chrome
VLC media player
Adobe Dreamweaver
و خیلی های دیگه ف که اگر من الان بخوام اینجا براتون نام ببرم ، تا صبح فردا باید Copy/paste کنم....
من بهتون توصیه می کنم حتما تجربه ای حتی کوچک با Visual C++‎‎‎‎‎/MFC داشته باشید ، من خیلی با MFC تجربه ندارم ، اما وقتی یک مدت روش کار می کردم دقیقا همون موقع بود که فهمیدم ، C#‎‎‎‎‎ اگر اسباب بازی نباشه ، خیلی شبیه اسباب بازی هست....
شما هم میتونید زمان نصب برنامه ها ، دقت کنید که چه FrameWork هایی همراش نصب میشه Micrsoft Visual C++‎‎‎‎‎ Redistributable پای ثابت نرم افزار های بزرگ ، معروفه ، نه .net frameWrok ...
البته این موضوع رو هم اضافه کنم که یک برنامه بزرگ صرفا با یک زبان نوشته نمیشه ، و با چندین تکنولوژی مختلف توسعه داده میشه ، اما اون چیزی که برای ما مهم هست ، هسته ی برنامه هست...
و همچنین شما میتونید به صفحه ی jobs شرکت های بزرگ مثل مایکروسافت و Google و... نگاه کنید ، کسی نمیگه برنامه نویس C#‎‎‎‎ میخوایم!! همش نوشته C/C++‎‎‎‎ ,Pythone,ruby البته java هم کم و بیش دیده میشه ...

----------


## Navid_QQQ

عمق بی سوادی این فروم تو این تاپیک داره نمایان می شه !!
سی شارپ نه تنها اسباب بازی نیست بلکه یکی از بزرگترین دست آورد های ماکروسافته و بسیار هم خوش ساخته . 
هرچند شخصا به عنوان یه هکر اوپن سورسی و آرچ لینوکسی اصلا از ماکروسافت و سیاست های کثیفش خوشم نمیاد . ولی این دلیل نمی شه در موردش بد بگم ...

موفق باشید

----------


## bethoveen

متاسفانه اون طور که تو کشور ما باب شده و قانون کپی رایت رعایت نمیشه اکثر  کسایی که میان به سمت برنامه نویسی C#‎ رو انتخاب میکنن چون نسبت به بقیه  کامپوننت ها و امکانات بیشتری داره که برای یه برنامه نویس تازه کار به نظر  من خوبه اما به شرطی که باعث درجازدن نشه ...من خودم یه مدت پندتا پروژه  با سی شارپ کار کردم و با توجه به اینکه مشتری اینترفیس زیبا و راحتی  میخواست از کامپونتت های شرکت هایی مث RadControls ،krypton استفاده کردم  اما اخرش به این نتیجه رسیدم که این کار باعث میشه من بد عادت بشم و حتی  کدنویسیم افت کنه...
مدتی قبل تصمیم گرفتم با ویندوز خداحافظی کنم و رو لینوکس با سی پلاس و کیو  تی کار کنم اما خیلی سخته چون باید برای کوچیک ترین کار باید مهارت داشته  باشی....
اینو هم باید در نظر گرفت که تو ویندوز شما نمی تونی با توجه با رویه که  ماکروسافت پیش گرفته با جاوا و سی زیاد موفق باشی...انگار که بهت میگن یا  سی شارپ یا شکست...
دوستان این رو در نظر داشته باشین تو شرکتهای بزرگ برای لایسنس فناوری های  دات نت هزینه های زیادی میشه..نمونش همین ویژوال اسدیو که چند هزار دلار  قیمتشه...
اما کیو تی تا اونجایی که من میدونم نسخه های پایینش رایگانه و همچنین جاوا که تو اکثر موارد رایگانه...
در حالت کلی واقعا سخته بگیم کدوم خوبه یا کدوم بد...
دوست بالایی هم اشاره کرد به نرم افزارایی که رو سی پلاس کار شده ...خوب اکثرشون عمر تولیدشون از سی شارپ زیادتره...
به نظر من باید الویت بندی بشه و باتوجه به هدف و انگیزه انتخاب بشه و پارامترهایی که مهمه برات رو در نظر بگیری:
اگه میخوای مستقل از سیسیتم عامل کار کنی جاوا و برای پروژه های خاص سی پلاس...
اگه سرعت و امنیت مد نظرت باشه سی پلاس و سی بهتره ...
اگه عاشق دات نت هستی سی شارپ یا وی بی دات نت...
البته من تازه به این نتیجه رسیدم که رو پلتفورم دات نت خیلی فرقی نداره که  کدوم زبانو انتخاب کنی...البته از بین سی شارپ و وی بی و سی دات نت...

----------


## bethoveen

> عمق بی سوادی این فروم تو این تاپیک داره نمایان می شه !!
> سی شارپ نه تنها اسباب بازی نیست بلکه یکی از بزرگترین دست آورد های ماکروسافته و بسیار هم خوش ساخته . 
> هرچند شخصا به عنوان یه هکر اوپن سورسی و آرچ لینوکسی اصلا از ماکروسافت و سیاست های کثیفش خوشم نمیاد . ولی این دلیل نمی شه در موردش بد بگم ...
> 
> موفق باشید


دوست عزیز سی شارپ زبان خوبیه و دوستان قبلی هم تایید کردن و همچنین خودم اما فکر کنم بحث چیز دیگه بود که شما همه رو بی سواد کردی...

----------


## prince0fpersia

> نه حالا بدون شوخی ، زمانی این حرف قابل استناد هست که ، الگوریتم های بکار رفته در هر دو روبات دقیقا مثل هم و با سخت افزار های یکسانی پیاده شده باشد ولی یکی با C#‎‎‎‎‎‎‎‎ و دیگری با C++‎‎‎‎‎‎‎‎ ، در اون زمان کاملا مشخص میشه کدام زبان کارایی بهتری داره ، اصلا میتونید رو همین روبات خودتون هم تست کنید ، عین همین کد ها و الگوریتم هارو این بار با C++‎‎‎‎‎‎‎‎ بنویسید (البته اگه اونقدر بیکار هستید) ، بعد بیاین نتایج رو هم مقایسه کنید....


 

من فکر کنم اشتباه شما همینجاست . اگر قرار بود ما دقیقا یک الگوریتم رو به یک زبان دیگه ترجمه کنیم پس دیگه چه لزومی به ایجاد یک زیان جدید بود؟!!!
زیان های جدید ایجاد میشند که یک طرز تفکر جدید نسبت به برنامه نویسی ایجاد کنند نه اینکه فقط اسم توابع رو عوض کنند!!

----------


## aidinMC

> پیشرفته ترین ربات های انسان نمای فوتبالیست موجود در کشور متعلق به تیم AUT-Man دانشگاه امیرکبیر هست که کل برنامه ربات با C#‎‎ نوشته شده و منم توی اون تیم بودم.


دوست من خب این انتخاب شما و تیم شما بوده... 
آیا شما وقتی طراحی این رباتها رو تو ذهن داشتین و داشتین آنالیز میکردین جایی به مشکل خوردین که آقا بله این قسمت رو نمیشه با سی پلاس ساخت، بریم به سمت سی شاپ؟!؟
شما مطمن باش (اصلا شک نکن) اگه تونستی با سی شارپ این کارو بکنی، با سی پلاس به بهترین نحو خواهی انجام داد.

توجه : تعصب نیست واقعیته....

----------


## UfnCod3r

چه جالب نکنه شما چون دیدی با سی شارپ روباته بهتر کار می کنه می گی سی شارپ قوی تره ! :قهقهه: 

اصلا Native رو با managed مقایسه کردن اشتباست ! :خیلی عصبانی: 

دلیل جا افتادن سی شارپ تو ایران یکی نبود کپی رایته و یکی دیگه اسون بودنشه
چون الان دیگه اکثرا از راه وب و برنامه های حساب داری پول در میارن که همه با دات نت هستن !
ولی شما اگه بخوای یه چی مثل فتوشاپ بنویسی با دات نت نمیشه ! اونوقت دیگه می ری سی پلاس !
برنامه peid که حجمشم کمه رو دان کن با اون می شه فهمید که برنامه ها با چی نوشته شدن !
هرچی برنامه هست امتحان کن ! عمرا اگه یکی با سی شارپ بود ! :چشمک: 

درضمن مدیریت اوتوماتیک حافظه واقعا سرعت می گیره ! شما تو سی شارپ وقتی یه عمل انتساب انجام میدی (برای اشیا) کلی دستور باهاش اجرا میشه !
یا حتی از بین رفتن شی ! تک تکه بقیه اشیا بررسی میشن تا معلوم بشه  شی ای به شی جاری نیاز داره یا نه !
شما می تونی خودت تو سی پلاس کلاس ابجکت هوشمند یا اشاره گر هوشمند رو بنویسی ! اونوقت می فهمی مدیریت حافظه چیه !
و در ضمن سی شارپ امنیت نداره ! با یه دیکامپیلر به راحتی کد ها رو می شه بدست اوارد ! :شیطان: 




> شما اگر انگلیسی سرچ کنید میبینید دیگه هیچکس ادعای سرعت برای C++‎‎ نمیکنه!


:شکلک قهقه فجیح :
شما فرض کن ما سرچ بلد نیستیم !


دیگه داریم از مبحث اصلی خارج می شیم ! عنوان اینه >>  آیا Qt بهترین انتخاب است؟

نظر شخصی من ! بله چون سی پلاس بهترینه !
 :لبخند:

----------


## bethoveen

من کاملا با شما مخالفم...
تمام نرم افزارهای بزرگی که رو سیستم های صنعتی و حساس کار میکنن با سی پلاس نوشته شدن...
کی گفته این بحث سرعت ادعاییه و واقعیت علمی نداره؟؟؟
بابا از من و شما بعیده...
سرعت و پارامترهای مربوط به اون جدای از بحث کامپایلر به الگوریتم بستگی داره...
شما که رباتیک کار میکنی نشنیدی که مثلا avr با C خیلی بهتر از basic جواب میده؟؟؟اینا رو الکی همین واسه دل خوشی گفتن؟؟؟

----------


## prince0fpersia

من قبلا هم گفتم که وقتی یک پروژه بزرگ قراره نوشته بشه و چند برنامه نویس روش کار کنند ، لینک کردن و بهینه کردن همه این کامپوننت ها یا زیر پروژه ها با هم شاید اینقدر کار سحت و پیچیده ای بشه که از عهده بشر برنیاد! اینجاست که ماشین مجازی میتونه خودنمایی کنه و کاری رو انجام بده که از عهده انسان خارجه!

مثال خیلی ساده اش این میشه که تا حالا فکر کردین چرا هواپیماها رو با بال ثابت میسازند و هواپیما مثل پرنده بال نمیزنه؟!! یا اینکه چرا هرچقدر سایز و وزن یک پرنده بزرگتر میشه تعداد بال زدن هاش کمتر میشه ؟ جوابش خیلی ساده است ، چون بال متحرک به درد سیستم های سبک وزن میخوره ، هرچند خیلی قدرت و قابلیات بیشتری به پرنده میده (قدرت مانور یک مگس رو در مقابل یک عقاب در نظر بگیرید!) اما وقتی وزن سیستم از یک حدی رفت بالاتر دیگه به هیچ وجه به صرفه نیست !

در مورد برنامه های خیلی بزرگ هم به نظر من همین امر صادقه و انسان به تنهایی نمیتونه کل برنامه رو مدیریت کنه!!!

ضمنا به قول دوستمون اکثر قریب به اتفاق اون برنامه های معروف عمرشون بیشتر از C#‎ هستش و ما باید در این دهه و دهه های آینده منتظر برنامه هایی که با C#‎ نوشته میشند باشیم نه برنامه هایی که با زبان و معماری 40 سال پیش نوشته شدند!

----------


## UfnCod3r

> من قبلا هم گفتم که وقتی یک پروژه بزرگ قراره نوشته بشه و چند برنامه نویس روش کار کنند ، لینک کردن و بهینه کردن همه این کامپوننت ها یا زیر پروژه ها با هم شاید اینقدر کار سحت و پیچیده ای بشه که از عهده بشر برنیاد! اینجاست که ماشین مجازی میتونه خودنمایی کنه و کاری رو انجام بده که از عهده انسان خارجه!
> 
> مثال خیلی ساده اش این میشه که تا حالا فکر کردین چرا هواپیماها رو با بال ثابت میسازند و هواپیما مثل پرنده بال نمیزنه؟!! یا اینکه چرا هرچقدر سایز و وزن یک پرنده بزرگتر میشه تعداد بال زدن هاش کمتر میشه ؟ جوابش خیلی ساده است ، چون بال متحرک به درد سیستم های سبک وزن میخوره ، هرچند خیلی قدرت و قابلیات بیشتری به پرنده میده (قدرت مانور یک مگس رو در مقابل یک عقاب در نظر بگیرید!) اما وقتی وزن سیستم از یک حدی رفت بالاتر دیگه به هیچ وجه به صرفه نیست !
> 
> در مورد برنامه های خیلی بزرگ هم به نظر من همین امر صادقه و انسان به تنهایی نمیتونه کل برنامه رو مدیریت کنه!!!
> 
> ضمنا به قول دوستمون اکثر قریب به اتفاق اون برنامه های معروف عمرشون بیشتر از C#‎ هستش و ما باید در این دهه و دهه های آینده منتظر برنامه هایی که با C#‎ نوشته میشند باشیم نه برنامه هایی که با زبان و معماری 40 سال پیش نوشته شدند!


ببخشیدا ولی کلا اشتباه می کنی !
یادمه یکی از دوستام سی شارپ می خوندن تو دانشگاه کفتم چرا سی شارپ
گفت اول زبان سی امد بعد سی پلاس بعد سی شارپ الان سی شارپ هم جدید تره و راحته دیگه باید بریم سراغ سی شارپ
:خنده:

بهتره قبل از برنامه نویسی بدونید که هر گردی گردو نیست !
-
در ضمن درسته سی پلاس / سی خیلی قدیمی هستن ولی این ضعف نیست ! قوته !
الانم که سی پلاس 11 کلی قواعد بهش اضاقه شده !
من دیگه بحث نمی کنم شما خودت هر کاری خواستی بکن !
اون مثالتم خیلی مسخره بود ! کاملا بی ربط بود !

----------


## prince0fpersia

شما هم وقتی سی شارپ رو از نزدیک دیدی بعد بیا در موردش نظر بده!
ضمنا من فکر میکنم حتی سی رو هم جز همون 4 تا درس ابتدایی دانشگاهی نمیشناسی چه برسه سی + و جاوا 

خوشحالم دیگه پست نمیدی ... امیدوارم همیشه بخندی ولی به جاش!

----------


## aidinMC

لطفا ایــــــن صفحه رو چک کنید و لذت ببرید.
و اینکه سایت مثل این برای سی شارپ معرفی کنید ببینیم قدرتشو..

----------


## BORHAN TEC

سلام
خیلی عذر می خواهم از اینکه مجبورم کمی تند بنویسم. البته باید بگویم که منظور من با برنامه نویسان حرفه ای و صاحب نظر نیست. من شخصاً چند سالی است که در حوزه برنامه نویسی به صورت حرفه ای فعالیت می کنم. افراد زیادی را دیده ام که مدت ها به دنبال یک زبان برنامه نویسی قدرتمند بوده اند و بعد از مثلاً (!) چند سال کار کردن با آن زبان خاص بزرگترین برنامه ای که نوشته اند از دیدگاه بنده یک برنامه بسیار ضعیف و مسخره بوده است. من تعجب می کنم که این بحث چرا تا به اینجا کش پیدا کرده است. اینکه C++‎‎‎ یک زبان قدرتمند است شکی در آن نیست. انکه Qt یک فریم ورک قدرتمند است هم شکی در آن نیست. برنامه های بسیار معروفی را می توانیم ببینیم که با Qt نوشته شده اند و همین موارد نشان می دهد که Qt یک گزینه بسیار عالی برای برنامه نویسی به شمار می رود. حال من مانده ام که این همه کل کل سر چیه؟ یعنی دوستانی که در اینجا اینقدر با هم بحث می کنند قصد ساخت برنامه ای بزرگتر و حرفه ای تر از مثلاً VirtualBox را دارند؟ در حالت کلی هر زبانی جایگاه و امتیازات خاص خودش را دارد و بنابرین نباید زیاد تعصبات بی مورد را در این شرایط دخیل کنیم. یک برنامه نویس حرفه ای بسته به شرایط باید بتواند بهترین گزینه (زبان برنامه سازی و فریم ورک) را انتخاب کرده و از آن استفاده کند. گفتن حرف هایی نظیر فقط X یا فقط Y مخصوص برنامه نویسان مبتدی است و نه برنامه نویسان حرفه ای!!!
موفق باشید...

----------


## mohammadali1375

دوباره از این بحثای مسخره سر چی قویه چی نیست.
آقا این چیز خیلی مشخصیه با کمی تجربه بهش میشه فهمید چی به چیه . C#‎‎ برای پروژه های معمولی و متوسط بد نیست. چون راحت میشه مدیریتش کرد و پیچیده گی هایی هم مثل مدیریت حافظه و ... کمتر دارید. اما چون .Net هست به معنای واقعی کلمه نه امنیت نه سرعت. یعنی برنامه ای که با .Net نوشته شده باشه ماکروسافت هم بنویسه در چند ثانیه میشه کداش رو دیدید . سرعتش هم که قطعا کمه چون manage هست.
فعلا برای پروژه های بزرگ و یا حتی کوچیک چیزی به خوبی C++‎‎ بنده ندیدم . مدریت و پیچیدگیش بیشتره اما خوب باهاش کاری نیست که نشه کرد (‌برعکس C#‎‎ ) . مثلا این که بگید فلان سیستم عامل رو با C#‎‎ نوشتند واقعا خنده دار و مضحکه . چون اصلا C#‎‎‌ به تنهایی نمیتونه اجرا بشه و ... اما در هر حال شما باید ببینید چه کاری میخاید بکنید و چی بدردتون میخوره
QT هم که زبان نیست سرش بحث میکنید. Qt بهتون تو خیلی ضمینه ها ( گرافیک ، شبکه و ... ) کمک میکنه و تاحالا هم خوب جای خودش رو باز کرده و میشه روش حساب باز کرد ( اما چون انحصار داره ممکنه شب بخابی صبح پاشی بگند دیگه نیست. ) و اسلام

----------


## حامد مصافی

ظاهرا بحث داره به بیراهه کشیده میشه. از دوستان ارجمند تقاضا دارم کل‌کل و تعصب بی مورد رو کنار بذارن.




> اما چون انحسار داره ممکنه شب بخابی صبح پاشی بگند دیگه نیست.


نه دوست عزیزم. تیم kde قراردادی با شرکت نوکیا بسته که طبق اون اگر صاحب وقت کیوت اونو از حالت اوپن‌سورس خارج کنه kde می‌تونه همزمان کیوت رو به صورت اوپن‌سورس عرضه کنه (از این بابت واضعا تیم kde رو تحسین می‌کنم) و اعتبار این قرار‌داد همیشه باقیست، یعنی حتی اگر همین الان digia کیوت رو فقط تجاری اعلام کنه تیم kde یک نسخه از اون رو میخره و به صورت اوپن سورس عرضه می‌کنه.
برای توضیحات بیشتر اینجا رو ببینید

----------


## mohammadali1375

> ظاهرا بحث داره به بیراهه کشیده میشه. از دوستان ارجمند تقاضا دارم کل‌کل و تعصب بی مورد رو کنار بذارن.
> 
> 
> نه دوست عزیزم. تیم kde قراردادی با شرکت نوکیا بسته که طبق اون اگر صاحب وقت کیوت اونو از حالت اوپن‌سورس خارج کنه kde می‌تونه همزمان کیوت رو به صورت اوپن‌سورس عرضه کنه (از این بابت واضعا تیم kde رو تحسین می‌کنم) و اعتبار این قرار‌داد همیشه باقیست، یعنی حتی اگر همین الان digia کیوت رو فقط تجاری اعلام کنه تیم kde یک نسخه از اون رو میخره و به صورت اوپن سورس عرضه می‌کنه.
> برای توضیحات بیشتر اینجا رو ببینید


خوب اینطوری یکم بهتره . راستش این رو گفتم چون همین دو سه روز پیش شب خوابیدم و صبح پاشدم گفتند XNA تموم شد  :اشتباه:  . اما خوب اون ماکروسافته از این کارا زیاد میکنه. به نظر من هم QT گزینه ی خوبیه

----------


## prince0fpersia

من این بحث رو توی فروم code-project هم دارم دنبال میکنم . منتهی نظراتی که اونجا میدن خیلی متفاوت تر هست . 
نظراتی که دوستان اینجا میدند شاید همه اش از طرف کسانی هست که با سی++ کار میکنند (یا حتی شاید فقط آشنایی دارند) و چیز زیادی در مورد سایر زبان ها نمیدونند و برای همین کاملا یکطرفه دارند یکسری بحث های تکراری و غیر مستند و علمی رو تکرار میکنند .

من خودم برنامه نویسی رو با سی++ شروع کردم (بگم یاد گرفتم بهتره!) و تو دانشگاه هم درس برنامه نویسی پیشرفته رو جاوا پاس کردم و چنتا پروژه مثلا درست کردن یک بازی ساده یا شبیه سازی سیستم atm یا یک برنامه یرای یک کارخونه که نوع محصول و ... و .... رو توش داشته باشه انجام دادم . 
با سی شارپ هم علاوه بر پردازش تصویر و برنامه نویسی ربات، چند روز پیش یک برنامه مالتی مدیا آموزش ریاضی پیش دبستانی درست کردم واسه پروژه درس محیط چند رسانه ای
اما با سی++ هم برنامه نویسی میکروکنترولر و همچنین برنامه نویسی پورت سریال کامپیوتر و کمی هم پردازش تصویر کار کردم و درنهایت یک کواد روتور ساحتم که همه کدهاش با سی++ نوشته شده .

حداقل سینتکس و ساختار همه این برنامه هارو دیدم و باهاش پروژه انجام دادم . هرکدوم معایب و مزایایی داره (که البته به نظرم بیشتر مربوط به پلتفرم ها و ساپورت ها میشه ، مثلا اینکه نمیشه میکرو کنترولر رو با سی شارپ پروگرام کرد) اما مزیت فوق العاده ای که سی شارپ تونست ایجاد کنه و خیل عظیم برنامه نویس هارو (حداقل تو ایران) تونست جذب کنه ، IDE قدرتمند ویژوال استودیو بود . یک IDE غنی و از اون مهمتر خیلی مرتب و منظم و اصولی. کلا ساختار خود سی شارپ هم بسیار منظم و طبقه بندی شده است و همینه که برنامه نویسی باش رو اینقدر راحت و سریع میکنه . همچنین همخونی فوق العادش با ویژوال استودیو .
اما من هنوز بعد 4 سال بعضی کدهای C++‎ رو میبینم سردرنمیارم . بس که همه چیز تو هم و قر و قاطی هستش و البته شاید یه دلیل عمده اش اینه که هرکس یه چیزی به این زبان اضافه کرده و وصله و پینه شده بهش و یک ساختار مشخص و منظم نداره به نظرم. همچنین هنوز نتونستم یه IDE درست و حسابی و به درد بخور واسش پیدا کنم (حتی ویژوال استودیو هم تو سی++ مشکل داره و بعضی توابع خیلی مشخص و استاندارد رو اجرا نمیکنه! و یا یه سری قوانین خودش بهش اضافه کرده و یا قابلیت هایی مثل پیش نمایش کد که تو سی شارپ خیلی عالی کار میکنه رو نداره (حتی با اضافه کردن assist ))

حتی توی هر IDE سی ++ یکجور متفاوت کار میکنه!!! یا هر کامپایلرش متفاوته . حلاصه هرکسی یک سازی میزنه توش و این تنها دلیلی هست که من از سی++ لذت نمیبرم موقع کد زدن .

در مورد جاوا هم میتونم بگم جاوا یک سی++ مرتب و منظم شده است ولی IDE قدرتمندی مeل ویژوال استودیو رو نداره و شاید تنها ضعفش همین باشه (البته eclipse و netbeans رو داره اما تا چند سال پیش که من باهاشون کد زدم ، امکانات ویژوالی مثل vs نداشتند)

همین الان هم واسه همین سی++ بهترین IDE رو سرچ کنید 90% گفتن ویژوال استودیو! با اینکه این برنامه تو کشورای دیگه کپی رایت داره!!

در مورد Qt هم من هنوز شک دارم بشه به این فریم ورک اعتماد کرد و روش سرمایه گذاری کرد یا نه!
اگر واسه سی++ میشد یک IDE به قدرت ویژوال استودیو پیدا کرد من 100% انتخاب اولم سی++ بود اما انگار این زبون متولی نداره و حس میکنم شاید در سالهای آتی توسط زبان هایی مثل سی# یا جاوا که متولیان گردن کلفتی پشتش خوابیده محو بشه (هرچند سی++ هم ساپورت خیل عظیم برنامه نویسان open-source رو داره اما آینده اش در پس ابهامه به نظرم! . توی همین اینترنت هم بحث های زیادی هست که با جاوا جایگزین میشه!!)

به هر حال من دل رو به دریا زدم و خواستم Qt رو دانلود کنم اما حجم بالای اون منو شگفت زده کرد . همچنین اینکه نسخه 32 بیتی رو فقط برای ویتدوز داره . و در نهایت اینکه من نمیدونم کدوم یکی از اینهارو باید دانلود کنم ؟!

1- Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB) 
2-Qt 5.0.1 for Windows 32-bit (VS 2010, 481 MB)

----------


## returnx

فکر کنم حالا به حرف پست اولم رسیده باشید که  گفته بودم:



> و قطعا هم بهترین بودن مطلق نیست و نمیتونیم بگیم فلان FrameWork بهترین و اون یکی نیست !! پس جواب هایی که داده میشه بیشتر تجربه شخصی افراد هست...(به این نکته دقت کنید)


همون شماره 1 را دانلود کنید ، چون اگر شماره دو را دانلود کنید حتما باید کامپایلر C++‎ ماکروسافت رو سیستمتون نصب باشه یعنی msvc که با Visual Studio نصب میشه و اگر Visual  Studio نداشته باشید نمیتونید کاری کنید!!!

----------


## prince0fpersia

ممنون . حالا بهترین کامپایلر c/C++‎ چی هست؟ اصلا چرا ما اینهمه کامپایلر برای سی ++ داریم؟ و اینها تفاوت هاشون در چی هست؟

----------


## UfnCod3r

prince0fpersia
شما بعضا حرفاتون اشتباهه به علت نداشتن اطلاعات درست ! :لبخند: 



> اگر واسه سی++ میشد یک IDE به قدرت ویژوال استودیو پیدا کرد من 100% انتخاب اولم سی++ بود


بحث IDE شد . خیلی ها تو ایران همش با توربو یا بورلند کار می کنن مخصوصا دانشگاها! البته بعضیا می گن که بهتره برای شروع از محیط های ساده استفاده کرد
ولی من خودم شخصا کد رنگ و با رنگ رو دوست دارم ! :لبخند: 
ویژال استدیو سی پلاس هم می خوره ! فقط سی شارپ نیست که !
VS2010 بهترینه البته نه به تنهایی ! فقط کافیه پلاگین VAssistXرو نصب کنی تا لذت برنامه نویسی رو بفهمی 
http://www.wholetomato.com
حتما اینو نصب کن !
من خودم بدون ویژال استدیو و این پلاگینه اصلا برنامه نمی نویسم ! شما اینو نصب کن بعد بگو IDE درست برا سی پلاس نیست !
VS هم یه نسخش پولیه نسخه رایگان داره !
درضمن شما کد رو تو اون بنویس بعد برو با GCC کامپیل کن کاریت ندارن ! :چشمک: 
-
بقیه چیزایی هم که گفتی چز سختی های سی پلاس پلاسه ! که قدرت سی پلاس به همونه ! (ماکرو ها ، تمپلیت ها ، و خیلی چیزا که تو کتاب جعفر نژاد نیست و تو دانشگاهم نمی گن )
چون شما خیلی چیزاشو بلد نیستی می گی این چقدر افتضاهه اصلا خوانا نیست !
متاسفانه هرکسی یه کتاب جعفر نژاد قمی می خونه فکر می کنه حرفه ای شده !
درضمن من خودم 2 سال سی شارپ کار کردم ! ولی الان می فهمم سی شارپ بیشتر از اسباب بازی نبود !




> به هر حال من دل رو به دریا زدم و خواستم Qt رو دانلود کنم اما حجم بالای اون منو شگفت زده کرد . همچنین اینکه نسخه 32 بیتی رو فقط برای ویتدوز داره . و در نهایت اینکه من نمیدونم کدوم یکی از اینهارو باید دانلود کنم ؟!
> - Qt 5.0.1 for Windows 32-bit (MinGW 4.7, 823 MB) 
>  2-Qt 5.0.1 for Windows 32-bit (VS 2010, 481 MB


اولی برا MinGW هست و دومی برای VS2010 
اگه ویژال استدیو 2010 رو نصب داری دومی رو بگیر !
اگر هم می خوای تو محیط خود ویژال با کیوتی کار کنی پلاگینش هست ! همون پایین مایین ها نوشته !

----------


## UfnCod3r

> ممنون . حالا بهترین کامپایلر c/C++‎‎ چی هست؟ اصلا چرا ما اینهمه کامپایلر برای سی ++ داریم؟ و اینها تفاوت هاشون در چی هست؟


بستگی داره برا چی بخوای کامپیل کنی !
برای ویندوز کامپایلر ماکروسافت مصلما" بهترینه . ولی از MinGW هم می تونی استفاده کنی .
بخاط اینکه هر کامپیلری کد رو مخصوص اون پلتفرم تولید می کنه !
ویندوز ، لینوکس ، مک ، اندروید و بلک بری و حتی کنسول های بازی کامپیلر های خودشونو دارن !
البته اکثرا از GCC گرفته شدن !
تفاوت اصلی تو خروجی ای هست که به شما میده !

----------


## FastCode

فکر میکنم QtCreator بهتر باشه چون خیلی بهتر از امکانات Qt استفاده میکنه و طراحی فرم داره و ....

----------


## pswin.pooya

دوستان به نظر من باید یه مقدار دید رو بازتر کرد. ما چندین سطح برنامه نویسی داریم و سی شارپ و سی پلاس پلاس هرکدوم برای سطوح مختلفی مناسب هستند. زمانی که درمود سطح آماتوری و متوسط صحبت می کنیم خب باید بگم که سی شارپ یه گزینه خوب به شمار میره اما تمام حرفه ای های دنیای کامپیوتر یا حداقل در سطح برنامه نویسهای سیستمی از C++‎ و حتی C استفاده می کنن. این زبانها توی یه کتگوری نیستند. به نظر من مقایسه اشتباه هست اما اگر بخواییم مقایسه کنیم چند چیز مشخص رو میشه روش تکیه کرد:

1. بدون چون چرا سرعت کد تولیدی با C++‎ بیشتر از C#‎ هست.
2. کدهای تولیدی با C++‎ در مقابل کدهای تولید شده در برابر C#‎ امنیت بیشتری دارند. (دیرتر هک میشن )
3. انعطاف پذیری بیشتری داخل C++‎ وجود داره.
4. هزینه تولیدی در سی شارپ کمتر هست اما اگر بخوایم اون رو با C++‎ CLI مقایسه کنیم. هزینه تولیدی هم فرقی نمی کنه.




> ما من هنوز بعد 4 سال بعضی کدهای C++‎‎ رو میبینم سردرنمیارم . بس که همه  چیز تو هم و قر و قاطی هستش و البته شاید یه دلیل عمده اش اینه که هرکس یه  چیزی به این زبان اضافه کرده و وصله و پینه شده بهش و یک ساختار مشخص و  منظم نداره به نظرم. همچنین هنوز نتونستم یه IDE درست و حسابی و به درد  بخور واسش پیدا کنم (حتی ویژوال استودیو هم تو سی++ مشکل داره و بعضی توابع  خیلی مشخص و استاندارد رو اجرا نمیکنه! و یا یه سری قوانین خودش بهش اضافه  کرده و یا قابلیت هایی مثل پیش نمایش کد که تو سی شارپ خیلی عالی کار  میکنه رو نداره (حتی با اضافه کردن assist ))


به نظر من دلیل اینه که ما از اصول کامپیوتر رو درک نکردیم. مثلا به احتمال زیاد 99 درصد برنامه نویسهای سایت حتی اسم قراردادهای فراخوانی رو نشنیده باشن اما داخل C/C++‎ کلمه کلیدی مثل cdecl برای تنظیم قراردادهای فراخوانی هست. خب معلومه که زمانی یا این نوع کلمات که خارج از استاندارد C/C++‎ هستند برخورد می کنید متوجه اونها نمی شید ( یا حداقل زمانی که خودتون رو فقط محدود به دانشگاه کرده باشید) اما واقعیت اینه که اینها برای برنامه نویس های حرفه ای قابلیتهای انعطاف اون بشمار میرن. مثل اگر برنامه نویس بخواد زبان برنامه نویسی خودش رو ایجاد کنه و یا اینکه از زبان دیگه ای در کنار C++‎ استفاده کنه می تونه از این قرار دادها استفاده کنه. ( یعنی توی یه فایل exe از چندین زبان برنامه نویسی استفاده شده باشه). یا مثلا برنامه نویسهای لینوکس و برخی از برنامه نویسهای حرفه ای ویندوز فایلهای رو به اسم فایلیهای اسکریپت لینکر میسازن و از اونها استفاده های جالبی برای exe نهایی تولید شده می کنند.





> اگر واسه سی++ میشد یک IDE به قدرت ویژوال استودیو پیدا کرد من 100% انتخاب  اولم سی++ بود اما انگار این زبون متولی نداره و حس میکنم شاید در سالهای  آتی توسط زبان هایی مثل سی# یا جاوا که متولیان گردن کلفتی پشتش خوابیده  محو بشه (هرچند سی++ هم ساپورت خیل عظیم برنامه نویسان open-source رو داره  اما آینده اش در پس ابهامه به نظرم! . توی همین اینترنت هم بحث های زیادی  هست که با جاوا جایگزین میشه!!)


عملا آمار داره خلاف این رو ثابت میکنه. روزانه داره برنامه نویسی خانواده سی و جاوا ( مخصوصا جاوا ) گسترش پیدا میکنه. در مقابل اون زبانهای دات نتی ته جدول هستند. این قضیه فقط توی ایران رواج داره. توی صنعت کامپیوتر یکسری چیزها نابود نمیشن و اونها مواردی هستند که بیس باهاشون ساخته شده. و هر چیزی که مبتنی بر اساس اون روشها باشه چون از نظر عملی درست هست نابود نمیشه. مثلا یه زمانی میگفتن دیگه اسمبلی نمی مونه و بعد از یک مدت کامپیوترهای از مفسرها استفاده میکنن ( در ابتدای طهور زبانهای سطح بالا ) و نمونه اون میکروهای PIC بود. یا همین الان یکسری میگن به زودی به کامپیوترها میگیم چه برنامه ای لارم داریم خودش برامون میسازه lol . منتها همه این افکار حساب و کتاب درستی نداره.

در مورد C++‎ باید بگم که یکی از به روزترین زبانهای برنامه نویسی بشمار میره مثلا اخیرا استاندارد ISO 2011 اون تصویب شده و یا حتی C به زودی یه استاندارد جدید ایزو براش تصویب میشه. و من مطوئن هستم پشتش به این زودیها زمین نمیاد.


به هر حال واقعیتی که وجود داره اینه که اگر پروژه از نظر زمانی و مالی محدود باشه سی شارپ گزینه خوبیه اما من فکر میکنم که اگر از نظر زمانی و مالی مشکل نداشته باشین بهتره یه تجدید نظر بکنین. خود ما توی شرکتمون از دست سی شارپ مخصوصا از لحاظ کند بودنش شاکی هستیم و یه جورایی همه دو دلیم که سوئیچ کنیم روی QT. خود من استارت زدم و یک مساله برام خیلی واضح شده. از نظر زمانی حجم کدینگ بشدت پروژه سنگین میشه اما در عوض اگر درست کار کنیم جواب خیلی بهتری رو می تونیم نسبت به سی شارپ بگیریم. به هر حال C++‎ و QT دارن ریسک رو افزایش میدن اما فکر کنم این ریسک ارزشش رو داشته باشه.

یه مورد دیگه که خیلی برام جالبه دلفی هست. من خودم شخصا نه از دلفی و نه از پاسکال خوشم میاد اما واقعا هم سرعت توسعه برنامه داخلش بالاست هم اینکه خیلی از مزیتهای C++‎ مثل سرعت رو به همراهش داره.

----------


## FastCode

و برنامه های native در ماشین های مجازی مثل virtual box درست اجرا میشن.

----------


## pswin.pooya

> و برنامه های native در ماشین های مجازی مثل virtual box درست اجرا میشن.


منظورتون رو متوجه نشدم.


دوستان یه مورد که وجود داره کامپایلر C++‎ مایکروسافت قدرت کمی داره اما بهینه ساز کد فوقالعاده ای داره. سرعت کد تولیدی توسط ویژوال استادیو توی بعضی موارد بصورت چشم گیری از مابقی کامپایلرها مثل کامپایلرمعروف intel و gcc بیشتر هست. فقط باید به یه مورد دقت کنید و اونم انتخاب کامپایلر بسته به نیازتون هست. کامپایلر gcc برای کارهای سیستمی فوقالعاده هست و امکانات خوبی رو فراهم میکنه و کامپایلر اینتل برای برنامه نویسی موازی مناسب هست مثلا یه مفهوم جدید برنامه نویسی داخلش به اسم transactional memory مطرح هست که خودش ناحیه بحرانی رو کنترل میکنه. و کامپایلر gcc از نظز مانور برنامه نویسی همتا نداره شما تقریبا روند همه چی رو میتونید کنترل کنید از طرف دیگه gcc به روزترین کامپایلر رو از لحاظ رعایت استانداردها در اختیار داره. در مقابل اینها کامپایلر ویژوال استادیو هست که کدی با سرعت بالا تولید میکنه. و همنطور قابلیت ادغام با CLR یا همون دات نت رو داره که باعث میشه بتونید از فریم ورک دات نت استفاده کنید. بقیه مواردش مثل MFC الکی هستند و شما می تونید با کامپوننتها یا فریم ورکهایی مثل QT و CodeJack یه UI بهتر رو فراهم کنید.

----------


## FastCode

> منظورتون رو متوجه نشدم.


ماشین های مجازی خیلی علاقه دارند که کد رو قبل از اجرا تبدیل به کد قابل اجرا روی سیستم هاست بکنن و وقتی این ترجمه قبل از ترجمه CLR اتفاق بیافته برنامه دچار خطا میشه.
من آشنایی خیلی خاصی با این خطاها دارم.
کد native عملاً نمیتونه این مشکل رو داشته باشه چون خیلی کم اتفاق میافته که خودش رو On The Fly  تغییر بده

تنها hypervisor ی که من میشناسم که این کار رو نمیکنه یا حداقل درست انجام میده qemu/kvm ه

----------


## pswin.pooya

ما چندین نوع ماشین مجازی داریم تنها یک نمونه از اونها، اونم فقط قسمتهایی از کد رو به ماشین مقصد تبدیل می کنن. 





> ماشین های مجازی خیلی علاقه دارند که کد رو قبل از اجرا تبدیل به کد قابل  اجرا روی سیستم هاست بکنن و وقتی این ترجمه قبل از ترجمه CLR اتفاق بیافته  برنامه دچار خطا میشه.


خب اینکه مشخص هست. چون هیچکس به جزء CLR از کد اسمبلی دات نت سر در نمیاره




> تنها hypervisor ی که من میشناسم که این کار رو نمیکنه یا حداقل درست انجام میده qemu/kvm ه


qemu ماشین مجازی فوقالعاده ای هست. حتی اجازه میده برنامه های ARM روی سیستم x86 اجرا کنید ( البته تحت لینوکس ) اما یکسری مشکلات هم داره. و بعضی از خطاها رو ازش گذشت میکنه و در حالت کلی بهتره اگر تست می گیرید همیشه از چندین ماشین مجازی استفاده کنید.

----------


## FastCode

> ما چندین نوع ماشین مجازی داریم تنها یک نمونه از اونها، اونم فقط قسمتهایی از کد رو به ماشین مقصد تبدیل می کنن. 
> 
> 
> 
> خب اینکه مشخص هست. چون هیچکس به جزء CLR از کد اسمبلی دات نت سر در نمیاره
> 
> 
> qemu ماشین مجازی فوقالعاده ای هست. حتی اجازه میده برنامه های ARM روی سیستم x86 اجرا کنید ( البته تحت لینوکس ) اما یکسری مشکلات هم داره. و بعضی از خطاها رو ازش گذشت میکنه و در حالت کلی بهتره اگر تست می گیرید همیشه از چندین ماشین مجازی استفاده کنید.


اتفاقا من همین الان از یک سیستم debian/multi-arch استفاده میکنم

amd64
i386
armel
mipsel

به جز اینها بهترین چیزی که ازش دیدم chroot ه cross-architecture ه که چند بار واقعا کمکم کرده.


ممکنه چند مورد از خطاهاش رو بگید؟
خیلی دوست دارم تست کنم. 


ماشین های مجازی معروف مثل VMWare و VirtualBox هر دو از این روش استفاده میکنند.
ظاهرا ماشینهای مجازی Microsoft هم مثل qemu عمل میکنند.(تست نکردم)

----------


## pswin.pooya

من تقریبا از تمام ماشینهای مجازی خطا دیدم. یه نمونه که باهاش برخورد کردم توی مقدار دهی PIT ( programable interrupt timer در سیستم عاملم بود. با اینکه اشتباه مقدار دهی می کردم PIT کار می کرد. خب منم خیالم راحت که کد درسته و البته جتالتر این بود که کد روی بعضی از PCهای واقعی هم کار می کرد. وقتی همین رو با bochs امتحان کردم دیدم همه چی بهم ریخت و در نتیجه تونستم خطا رو پیدا کتم.

یا در vmware یه قسمت کدم بشدت مورد داشت که هیچ وقت پیداش نکردم ( ولی مرتبط با حافظه بود ) و vmware کد رو درست اجرا میکرد. بعدا که روی سیستم واقعی و qemu کد رو اجرا کردم تونستم خطا رو پیدا کنم. و یا bochs توی محاسبه فرکانس مشکل داره ( البته ایرادهای زیادی داره ). بی ایراد ترین ماشین مجازی xen هست که امکاناتش فوقالعاده است و بعد از هسته 3 لینوکس جزء هسته شده. اما کار با اونم خیلی سختر از بقیه هست. وقتی خود CPU هم گاها ایراد داره شما چه انتظاری از vmm میره که ایراد نداشته باشه  :لبخند گشاده!:

----------


## FastCode

> من تقریبا از تمام ماشینهای مجازی خطا دیدم. یه نمونه که باهاش برخورد کردم توی مقدار دهی PIT ( programable interrupt timer در سیستم عاملم بود. با اینکه اشتباه مقدار دهی می کردم PIT کار می کرد. خب منم خیالم راحت که کد درسته و البته جتالتر این بود که کد روی بعضی از PCهای واقعی هم کار می کرد. وقتی همین رو با bochs امتحان کردم دیدم همه چی بهم ریخت و در نتیجه تونستم خطا رو پیدا کتم.
> 
> یا در vmware یه قسمت کدم بشدت مورد داشت که هیچ وقت پیداش نکردم ( ولی مرتبط با حافظه بود ) و vmware کد رو درست اجرا میکرد. بعدا که روی سیستم واقعی و qemu کد رو اجرا کردم تونستم خطا رو پیدا کنم. و یا bochs توی محاسبه فرکانس مشکل داره ( البته ایرادهای زیادی داره ). بی ایراد ترین ماشین مجازی xen هست که امکاناتش فوقالعاده است و بعد از هسته 3 لینوکس جزء هسته شده. اما کار با اونم خیلی سختر از بقیه هست. وقتی خود CPU هم گاها ایراد داره شما چه انتظاری از vmm میره که ایراد نداشته باشه


 فکر میکنم PIT جزء چیزهایی هست که هنوز نمیتونم تست کنم :)

xen که واقعا سخته.پارسال یکی دو روز روی تنظیمش کار کردم.آخرش هم منصرف شدم.البته کرنلم 2.6.38 بود.الان باید خیلی راحتتر شده باشه.

ولی در کل به این نتیجه رسیدیم که dotNet+VM=Fail

----------


## omidshaman

اضافه شدن پورت ios و android به Qt در اینده باعث جذب شدن برنامه نویسای خیلی بیشتری میشه هر چند من خودم Qt رو زیاد قبول ندارم مخصوصا با این باگ هایی که تو ورژن 5 داشت !! 



> ضمن اینکه امروز مطلبی رو در فروم stack overflow میخوندم که به دلیل بهینه سازی خودکار کد زبان هایی مقل سی شارپ و جاوا سرعت اونها حتی از سی++ هم بیشتر شده و یا خاصیتی مثل garbage collection به این موضوع خیلی کمک میکنه .


بستگی داره کد C++‎ رو کی نوشته باشه ولی غیر ممکنه کدی که بصورت حرفه ای با C++‎ نوشته شده باشه از C#‎ یا جاوا کند تر باشه!



> زبان هایی که اینجا نام بردید هیچ کدوم به تنهایی Cross-Platform نیستن ، مگر C++‎‎/Qt


البته C++‎ به تنهایی هم Cross -platform ه...
از نظر سرعت و مدیریت منابع و قدرت برناتمه نویسی هم هیچی توی ویندوز به win32 نمیرسه که خوب یادگیریش ساده نیست 
هر زبانی برای نوشتن یک سری برنامه خاص مناسبه همون کروم رو هم که بقیه مثال زدن به غیر از C++‎ از چند تا زبون و تعدادی زیادی کتابخونه استفاده کرده.
http://en.wikipedia.org/wiki/Google_Chrome



> اگر واسه سی++ میشد یک IDE به قدرت ویژوال استودیو پیدا کرد من 100% انتخاب اولم سی++ بود اما انگار این زبون متولی نداره و حس میکنم شاید در سالهای آتی توسط زبان هایی مثل سی# یا جاوا که متولیان گردن کلفتی پشتش خوابیده محو بشه (هرچند سی++ هم ساپورت خیل عظیم برنامه نویسان open-source رو داره اما آینده اش در پس ابهامه به نظرم! . توی همین اینترنت هم بحث های زیادی هست که با جاوا جایگزین میشه!!)


داخل ویژوال استودیو هم که میشه C++‎نوشت! یعنی شما این مدتی که با ویژوال استودیو کار می کردی visual C++‎ رو ندیدی؟!

----------


## aidinMC

> اضافه شدن پورت ios و android به Qt در اینده باعث جذب شدن برنامه نویسای خیلی بیشتری میشه هر چند من خودم Qt رو زیاد قبول ندارم مخصوصا با این باگ هایی که تو ورژن 5 داشت !!


یه مثال از این باگها رو میزنی!؟!؟

----------


## returnx

> البته C++‎‎ به تنهایی هم Cross -platform ه...


درسته ، در صورتی که کدتون رو درست بنویسید و از هیچ API  ای استفاده نکنید...

----------


## omidshaman

> یه مثال از این باگها رو میزنی!؟!؟


 یکم توی گوگل بچرخی خودت  پیدا می کنی
دقیقا به خاطر همین هم 5.01 رو این قدر سریع دادن بیرون البته توی ۵.۰۱ خیلیاشون حل شدن
یکیشون مثلا مشکل با فایل ترجمه ورژن های قبلی  بود که توی بعضی برنامه ها مصرف سی پی یو میرفت رو ۵۰٪!! یا قسمت های statues bar درست ترجمه نمیشدن! که خیلی رفته بود روی اعصابم! که با ترجمه دوباره حل شد!
البته ۵.۰۱ mingw هم که دیگه شاهکاره hello world سی مگابایت فایل dll می خواد:) که با انواع فشرده سازی دیکه کمتر از ۱۰ مگابایت نمیشه! 
http://qt-project.org/forums/viewthread/23796/
https://bugreports.qt-project.org/br...3Aissues-panel

----------


## FastCode

> یکم توی گوگل بچرخی خودت  پیدا می کنی
> دقیقا به خاطر همین هم 5.01 رو این قدر سریع دادن بیرون البته توی ۵.۰۱ خیلیاشون حل شدن
> یکیشون مثلا مشکل با فایل ترجمه ورژن های قبلی  بود که توی بعضی برنامه ها مصرف سی پی یو میرفت رو ۵۰٪!! یا قسمت های statues bar درست ترجمه نمیشدن! که خیلی رفته بود روی اعصابم! که با ترجمه دوباره حل شد!
> البته ۵.۰۱ mingw هم که دیگه شاهکاره hello world سی مگابایت فایل dll می خواد:) که با انواع فشرده سازی دیکه کمتر از ۱۰ مگابایت نمیشه! 
> http://qt-project.org/forums/viewthread/23796/
> https://bugreports.qt-project.org/br...3Aissues-panel


 یعنی فقط qt5-core میشه ۳۰ مگ؟
با upx هم زیر 10 نمیشه؟

----------


## omidshaman

البته ۳۸ مگ می خواد:)
با upx میشه ۱۳.۵ با smart install maker حدودا ۱۲! 
http://upload.tehran98.com/img1/ts3p...rva7s23dgp.jpg

----------


## حامد مصافی

> یکم توی گوگل بچرخی خودت پیدا می کنی
> دقیقا به خاطر همین هم 5.01 رو این قدر سریع دادن بیرون البته توی ۵.۰۱ خیلیاشون حل شدن
> یکیشون مثلا مشکل با فایل ترجمه ورژن های قبلی بود که توی بعضی برنامه ها مصرف سی پی یو میرفت رو ۵۰٪!! یا قسمت های statues bar درست ترجمه نمیشدن! که خیلی رفته بود روی اعصابم! که با ترجمه دوباره حل شد!
> البته ۵.۰۱ mingw هم که دیگه شاهکاره hello world سی مگابایت فایل dll می خواد:) که با انواع فشرده سازی دیکه کمتر از ۱۰ مگابایت نمیشه!


اگه از چیزی مطمئنی با رفرنس ارائه کن استفاده کنیم!
افزایش حجم خروجی در نسخه جدید به خاطر dll های unicode هست و ربطی به فرم‌ورک کیوت نداره. شما می‌تونید این dll ها رو ارائه نکنید چون جزئی از redistribute های مایکروسافت هستند. برنامه‌نویسان غیر از فرم‌ورک کیوت هم به این dllها نیاز دارند.

----------


## prince0fpersia

Your evaluation allows you to try Qt for the next 30 days, ending on 2013-03-14. The evaluation version contains all the functionality of Qt, but is limited to 30 days.



Please note that the usage is restricted to the evaluation only. See the User Licensing Agreement included in each package for details.

این که رایگان نیست؟ یا جریان چیز دیگه است؟

----------


## prince0fpersia

روی لینوکس هم Qt بهترین گزینه است یا چیزای بهتری هم پیدا میشند؟ چون میخوام برنامه نویسی روی لینوکس رو شروع کنم و ادامه بدم ، تمرکزم هم روی همون opencv و برنامه نویسی ربات هست

راستی یک مدل جدید از بورلند هم اومده که اونم البته پولی هست به اسم borland C++‎ XE3 . کسی تا حالا باهاش کار کرده؟ اون چطوریه؟ کرکش پیدا میشه؟

----------


## حامد مصافی

شما ظاهرا نسخه تجاری کیوت رو نصب کردید!

----------


## FastCode

> روی لینوکس هم Qt بهترین گزینه است یا چیزای بهتری هم پیدا میشند؟ چون میخوام برنامه نویسی روی لینوکس رو شروع کنم و ادامه بدم ، تمرکزم هم روی همون opencv و برنامه نویسی ربات هست
> 
> راستی یک مدل جدید از بورلند هم اومده که اونم البته پولی هست به اسم borland C++‎‎‎ XE3 . کسی تا حالا باهاش کار کرده؟ اون چطوریه؟ کرکش پیدا میشه؟


 در بیشتر جاها با gtk و wx مقایسه میشه.من با دو تای اول(Qtوgtk) کار کردم ولی نه اینقدر که بتونم نظر بدم.با Qt راحتتر بودم.

----------


## prince0fpersia

> شما ظاهرا نسخه تجاری کیوت رو نصب کردید!


والا من نصب نکردم موقع دانلود دیدم اینهارو نوشته .
نسخه رایگانش چه امکاناتی کمتر از نسخه تجاری داره؟  کرک نداره نسخه تجاری؟

----------


## prince0fpersia

> در بیشتر جاها با gtk و wx مقایسه میشه.من با دو تای اول کار کردم ولی نه اینقدر که بتونم نظر بدم.با Qt راحتتر بودم.


 
درسته . همچنین من anjuta رو هم دیدم در فروم های خارجی . همچنین eclipse و netbeans که البته این 2 چون خودشون با جاوا نوشته شدند و نیاز به یکسری پیش نصب های جاوا هم دارند من خوشم نمیاد با اینها کار کنم.

این wx فقط IDE هست یا فریم ورک هست اینم ؟ رایگانه یا نسخه پولی هم داره؟

----------


## FastCode

> درسته . همچنین من anjuta رو هم دیدم در فروم های خارجی . همچنین eclipse و netbeans که البته این 2 چون خودشون با جاوا نوشته شدند و نیاز به یکسری پیش نصب های جاوا هم دارند من خوشم نمیاد با اینها کار کنم.
> 
> این wx فقط IDE هست یا فریم ورک هست اینم ؟ رایگانه یا نسخه پولی هم داره؟


 Qt
GTK
wx
framework هستن
بقیه اونهایی که اسم بردید IDE هستن

----------


## prince0fpersia

البته wx فکر میکنم IDE هم داشته باشه (مثل کیوت کریتور) . در مورد GTK من به اسم یک ToolKit گرافیکی همه جا دیدمش و IDE به این اسم ندیدم تا حالا!

به هر حال من هنوز نمیدونم کیوت رو دانلود کنم یا نه ؟ فکر میکنم از نسحه ۵ به بعدش پولی شده!

----------


## BORHAN TEC

> راستی یک مدل جدید از بورلند هم اومده که اونم البته پولی هست به اسم borland C++‎‎‎ XE3 . کسی تا حالا باهاش کار کرده؟ اون چطوریه؟ کرکش پیدا میشه؟


بله من با این محصول کار کرده ام و ازش واقعاً راضی هستم. ولی مسئله ای که وجود دارد این است که منابع آموزشی در موردش نسبت به C++‎‎/Qt خیلی کمتره ولی اگر با دلفی آشنایی داشته باشید به راحتی می توانید با C++‎‎ Builder هم کار کنید در غیر این صورت کار سختی را پیش رو خواهید داشت. ولی در کل در حوزه C++‎‎ به نظرم C++‎‎/Qt نسبت به بقیه شاید گزینه بهتری باشد به خاطر این که Open Source است، رایگان است، خیلی جا افتاده است و ده ها دلیل دیگه. از طرفی هم در حوزه های مختلف برنامه های زیادی به صورت کد باز با Qt نوشته شده است که در انجام پروژه های واقعی خیلی کمک می کند. یکی از ویژگی های خوب Qt این است که کلاسهای آن واقعاً خیلی جامع و عالی طراحی شده است. از طرفی باید قبول کرد که C++‎‎/Qt نسبت به بقیه از قابلیت Cross-Platform بیشتری بهره می برد(البته منظورم محیطهای مبتنی بر C++‎‎ است و با جاوا و ... کاری ندارم)

----------


## prince0fpersia

آخه Qt 5 هم پولی شده انگار!! من که روی سایتشون لینک دانلود ۵ رو پیدا نمیکنم مگر اینکه نوشته ۳۰ روزه است !

بعدشم ، به فرض که نسخه رایگان هم داشته باشه ، میخوام ببینم چه امکاناتی در نسحه رایگان کمتره نسبت به تجاری؟ و یا اینکه نسخه کرک شده اش تجاری موجود هست؟

----------


## FastCode

> آخه Qt 5 هم پولی شده انگار!! من که روی سایتشون لینک دانلود ۵ رو پیدا نمیکنم مگر اینکه نوشته ۳۰ روزه است !
> 
> بعدشم ، به فرض که نسخه رایگان هم داشته باشه ، میخوام ببینم چه امکاناتی در نسحه رایگان کمتره نسبت به تجاری؟ و یا اینکه نسخه کرک شده اش تجاری موجود هست؟


http://origin.releases.qt-project.org/qt5/5.0.1/

----------


## prince0fpersia

پس حربان digia چی هست؟ من فکر میکردم متولی کیوت اونها باشند.(رو سایت اونها نسحه ۳۰ روزه هست)

سوال آخر اینکه اگر بخوام به صورت native و استاندارد و فارق از پلتفرم داخل کیوت کد بزنم باید چه کنم؟ همین که از header های غیر استاندارد استفاده نکنم کافیه یا کار دیگه ای هم لازمه؟ میخوام بعضی کدهام portable باشه و بتونم روی هر سیستمی اجراش کنم (از ویندوز تا لینوکس و اندروید و ...)

*** یک سوال خارج از تا\یک هم مدتیه ذهنمو مشغول کرده . اگر بخوام مثلا قسمت گرافیک پروژه رو با سی شاپ بنویسم ، قسمت سخت افزارو با سی و بقیه رو با سی++ ، و در نهایت همه اینها رو به هم ربط بدم ، اولا اینکه ربط دادن این ها به هم دیگه جزو چه مبحثی در برنامه نویسی میشه ؟ آیا کار سختیه یا آسون ؟ به صرفه  است نسبت به اینکه همه پروژه رو با یک زبان بنویسیم؟(چون شاید موقع نوشتن خیلی کار رو آسون و سریع کنه اما آیا از بهینگی برنامه نهایی میکاهه یا حجم برنامه رو خیلی افزایش نمیده یا سایر مشکلات؟)

دوست دارم بدونم لینک کردن چند پروژه که با زبون های مختلف نوشته شده و در نهایت ساختن یک پروژه جامع چه مبحثی از برنامه نویسیه؟

----------


## FastCode

> پس حربان digia چی هست؟ من فکر میکردم متولی کیوت اونها باشند.(رو سایت اونها نسحه ۳۰ روزه هست)
> 
> سوال آخر اینکه اگر بخوام به صورت native و استاندارد و فارق از پلتفرم داخل کیوت کد بزنم باید چه کنم؟ همین که از header های غیر استاندارد استفاده نکنم کافیه یا کار دیگه ای هم لازمه؟ میخوام بعضی کدهام portable باشه و بتونم روی هر سیستمی اجراش کنم (از ویندوز تا لینوکس و اندروید و ...)
> 
> *** یک سوال خارج از تا\یک هم مدتیه ذهنمو مشغول کرده . اگر بخوام مثلا قسمت گرافیک پروژه رو با سی شاپ بنویسم ، قسمت سخت افزارو با سی و بقیه رو با سی++ ، و در نهایت همه اینها رو به هم ربط بدم ، اولا اینکه ربط دادن این ها به هم دیگه جزو چه مبحثی در برنامه نویسی میشه ؟ آیا کار سختیه یا آسون ؟ به صرفه  است نسبت به اینکه همه پروژه رو با یک زبان بنویسیم؟(چون شاید موقع نوشتن خیلی کار رو آسون و سریع کنه اما آیا از بهینگی برنامه نهایی میکاهه یا حجم برنامه رو خیلی افزایش نمیده یا سایر مشکلات؟)
> 
> دوست دارم بدونم لینک کردن چند پروژه که با زبون های مختلف نوشته شده و در نهایت ساختن یک پروژه جامع چه مبحثی از برنامه نویسیه؟


https://www.google.com/search?q=Cross+platform+rules
 آسون نیست.معمولاً به صرفه نیست
برای نمونه میتونید از swigاستفاده کنید که تا ۹۰٪ کار رو براتون انجام میده.
Qt به شما اینقدر امکانات میده که استفاده از C#‎‎‎ به سرت نزنه

----------


## BORHAN TEC

> *** یک سوال خارج از تا\یک هم مدتیه ذهنمو مشغول کرده . اگر بخوام مثلا قسمت گرافیک پروژه رو با سی شاپ بنویسم ، قسمت سخت افزارو با سی و بقیه رو با سی++ ، و در نهایت همه اینها رو به هم ربط بدم ، اولا اینکه ربط دادن این ها به هم دیگه جزو چه مبحثی در برنامه نویسی میشه ؟ آیا کار سختیه یا آسون ؟ به صرفه است نسبت به اینکه همه پروژه رو با یک زبان بنویسیم؟(چون شاید موقع نوشتن خیلی کار رو آسون و سریع کنه اما آیا از بهینگی برنامه نهایی میکاهه یا حجم برنامه رو خیلی افزایش نمیده یا سایر مشکلات؟)


من هم چند وقت پیش همین مشکل رو داشتم و با ساخت dll در کیوت توانستم از آن در دلفی استفاده کنم ولی متاسفانه انجام این کارها خیلی سخت و زمانبر است و پیشنهاد بنده این است که اگر *واقعاً و واقعاً* مجبور شدید این کار را انجام دهید، چون ایجاد سازگاری بین زبانهای و فریم ورکهای مختلف خیلی سخت است. به عنوان پاسخ روشی برای حل کردن یک مسئله نمونه مدتی قبل در لینک زیر مطرح شد:
http://stackoverflow.com/questions/1...st-application

----------


## مهران موسوی

> نمونش که خیلی زیاده.
> نمیخوام وارد بحث کرنل و درایور و بوت لودر و .... بشم
> همین برنامه های معمولی و روزمره ای که باهاشون کار میکنیم رو میگم.
> فکر کن یه انجین ه بازی یا انجین دیتابیس رو با C#‎‎‎‎‎ بنویسی.
> من که به کسی که این کار رو بکنه میخندم.حتی خودم یک بار سعی کردم انجامش بدم.(قبلش فکر میکردم اونایی که میگن نمیشه شوخی میکنن)
> نتیجه؟پروژه چند ماه به دلیل سرعت تخیلی متوقف شده تا به Qt تبدیل بشه.


دوست عزیز هیچوقت با دانش خودت در مورد چیزی قضاوت نکن . به نظرت انجین بانک اطلاعاتی یا انجین بازی با C#‎ واقعا خنده داره ؟

من طرفدار C#‎ یا .net نیستم ولی محض اطلاع یک Database Engine  بهت معرفی میکنم که خودم ازش استفاده کردم و با C#‎ نوشته شده و سرعتشم تحسین بر انگیزه و سورس باز هم هست . مطالعه کن سورسش رو تا دیگه نخندی به اینجور آیتم هایی که مثال زدی .

http://iboxdb.codeplex.com/

برای انجین بازی هم یه سرچ تو گوگل بزنی برای انجین های ساخته شده توسط C#‎ بد نیست . یا حق

----------

