PDA

View Full Version : راهنمایی در انتخواب فریم ورک



alireza es
جمعه 23 خرداد 1393, 01:08 صبح
با عرض سلام.راستش میدونم از این تایپک ها زیاد داشتیم.ولی مجبور شدم.مجبور!!
راستش من الان دلفی رو یاد گرفتم.اما به شدت به زبان خانواده C مثل خود C یا c++ به خصوص c++11 علاقه دارم.
سوالم در انتخواب با فریم ورک هستش.من به یه فریم ورک گرافیکی احتیاج دارم.یعنی یه فریم ورکی که فقط از بخش های گرافیکیش استفاده میکنم.
کیوت رو تا حدودی یاد گرفتم.امافقط از ماژول gui استفاده میکنم و دیگر بخش هاش بی استفاده است.سوالم اینه که این فریم ورک نسبت به فریم ورکی مثل
gtk چه برتری هایی داره؟من کارهای غیر گرافیکی خودم رو از طریق c++ انجام میدم و فکر نکنم احتیاجی به کیوت داشته باشم.
کلا کیوت و gtk+ چه تفاوت هایی دارند و برای چه هدفی ساخته شدند؟

عمرا تونسته باشم منظورمو بگم

کامبیز اسدزاده
جمعه 23 خرداد 1393, 10:07 صبح
با عرض سلام.راستش میدونم از این تایپک ها زیاد داشتیم.ولی مجبور شدم.مجبور!!
راستش من الان دلفی رو یاد گرفتم.اما به شدت به زبان خانواده C مثل خود C یا C++‎‎‎‎‎‎‎‎‎‎ به خصوص C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎11 علاقه دارم.
سوالم در انتخواب با فریم ورک هستش.من به یه فریم ورک گرافیکی احتیاج دارم.یعنی یه فریم ورکی که فقط از بخش های گرافیکیش استفاده میکنم.
کیوت رو تا حدودی یاد گرفتم.امافقط از ماژول gui استفاده میکنم و دیگر بخش هاش بی استفاده است.سوالم اینه که این فریم ورک نسبت به فریم ورکی مثل
gtk چه برتری هایی داره؟من کارهای غیر گرافیکی خودم رو از طریق C++‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎ انجام میدم و فکر نکنم احتیاجی به کیوت داشته باشم.
کلا کیوت و gtk+ چه تفاوت هایی دارند و برای چه هدفی ساخته شدند؟

عمرا تونسته باشم منظورمو بگم


در رابطه باسوالتون باید یه توضیحاتی بدم شاید متوجه هدف کیوت و دلیل استفادش بشید.

ببینید به طور کلی همانطور که میدونید با دخالت های مایکروسافت د C++‎‎‎‎‎‎‎ کمی وضعیت رو تغییر داده همه رفتن سراغ Win32 / MFC و حتی CLR که روی دات نت هستش... خیلی ها فکر میکنن C++‎‎‎‎‎‎‎‎‎‎ یعنی این ! در حالی که چنین نیست C++‎‎‎‎‎‎‎‎‎‎ به صورت رسمی تحت کتابخانه های قدیمی و قدرتمندی چون GTK و SLT و همچنین Boost پشتیبانی میشود که توسط هریک از این موارد شما میتونید هم کارهای گرافیکی انجام دهید هم کارهای پردازشی خاص حالا اینکه یه محیط قدرتمند با سرعت خوبی در اختیار داشته باشید این به کنار... من روشی رو که میتونم براتون پیشنهاد بدم به صورت زیر خواهد بود :

کد نویسی C++‎‎‎‎‎‎‎ کاملا آزادانه هستش مثل زبان های Java یا مثلا C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎ نیستش که از هر روشی استفاده کردین تا آخر مجبورید از همون روش الگوبرداری کنید... خیر چنین نیست بر فرض مثال من دوست دارم کد نویسی C++‎‎‎‎‎‎‎‎‎‎ انجام بدم که علاقه خاصی به کتابخانه های قدرتمندی مانند Boost و جدیدا به POCO دارم من چکار کردم اومدم این کتابخانه هارو وارد برنامه کردم همراه با Qt یعنی هم کد نویسی استاندارد C++‎‎‎‎‎‎‎‎‎‎ و هم کد نویسی استاندارد با استفاده از چندین کتابخانه ر کنارهم ! که البته این یک روش و یا سلیقه بشمار میاد! و اصلا لزومی نداره من بیام چندین کتابخانه رو وارد برنامه کنم مثلا GTK رو بیارم همراه با Qt استفاده کنم هرچند امکان پذیر هستش ولی خب وقتی خود Qt امکاناتی رو که GTK فراهم میکنه چرا بیام خودمو با GTK درگیر کنم ؟

ببینید شما فرض کنید Qt همون GTK هست ! هیچ فرقی نداره به جز syntax که علاوه بر امکانات gtk حتی بیشتر از اون رو براتون فراهم میکنه مثلا شما در gtk به سختی میتونید یا شایدهم نتونید رابط گرافیکی خارق العاده ای که در Qt میشه ایجاد کرد رو اجرا و پیاده کنید اولش یکم سخته و آدم گمراه میشه ولی من توصیم اینه شما همین Qt رو از سرنخ بگیرید برید تا آخر حتما راضی خواهید شد فکر نمیکنم به اندازه من سختگیر و حساسیت نشون بدین با اینکه از کلمه Q متنفرم و از این محیط Qt به شدت ناراضی هستم ولی به خاطر امکاناتی که فراهم میکنه واقعا به دلم نشسته حتی جدیدا بیخیال VS شدم و کد نویسیرم در همین محیط انجام میدم.

پس هیچ جای نگرانی وجود نداره که شما فکر کنید امکاناتی رو که gtk فراهم میکرد رو Qt نتونه فراهم کنه...

من خودم شخصا کتابخانه های POCO و BOOST رو در بسیاری از موارد در کنار Qt استفاده میکنم چون ساختار کد نویسی این موارد رو بیشتر میپسندم دلیل اینکه زیاد با Qt سازگار نیستم ساده بودنشه واقعا مثل C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ‎‎‎‎‎‎‎‎‎‎‎‎‎ همه چیز رو فراهم میکنه و این بر خلاف دیدگاه بنده بسیار عالیه :)

حال با این وجود اگه بازهم به gtk علاقه خاصی دارید خب میتونید شما Dual Library کار کنید مثلا هم Qt هم gtk کد نویسی های مربوط به GUI رو با Qt بنویسید و کد نویسی های غیر گرافیکی رو با gtk این کار شدنیه ولی من توصیه نمیکنم دلیلش هم اینه که سرعت در توسعه رو کاهش خواهد داد ! منظور از کاهش سرعت چیه این وسط‌؟ منظورم اینه شما فرض کنید میخوای در درون رابط GU ساخته شده با Qt کد نویسی gtk انجام بدین باید در بسیاری از موارد نوع ها و همچنین Object هارو تبدیل به نوع Qt کنید و اینکار علاوه بر اضافه شدن تعداد خط های کدهای شما خواهد شد بلکه باعث کاهش سرعت در توسعه برنامه رو هم دربر خواهد داشت... ولی در کل شدنیه در C++‎‎‎‎ هیچ چیزی نشد نداره.

و درضمن سرعت و قدرت تمامی کتابخانه های زیر کاملا Native هستش فقط با این تفاوت که Qt در بین این ها ساده تر و روانتر و با امکانات بیشتری خودشو نشون داده.

به لیست کامل کتابخانه های موجود در C++‎ توجه کنید هدف هرکدومشون رو نوشته که کدام کتابخانه برای چه موردی توصیه میشه : http://en.cppreference.com/w/cpp/links/libs

حالا با توجه به لیست کتالبخانه های موجود شما شاید بخوای GUI رو با Qt بزنی و عملیات محاسباتی رو با Boost و شبکه رو با POCO خب در این حالت در داخل پروژه خودتون باید همه اینهارو External Library در نظر بگیرید به همین راحتی و هیچ ترسو دلهره ای هم نداره که اگه من Qt نویسی کنم باید کلا بیخیال gtk یا .. بشم ولی عقل سالم میگه دو نوع کتابخانه برای رابط کاربری در نظر نگیرید مثلا qt با gtk به نظر من درست نیست ولی qt با مثلا boost هیچ ایرادی نداره یا qt با poco هیچ ایرادی نداره چون شما قرار نیست با poco رابط گرافیکی کار کنید و تنها قراره موارد مربوط به شبکه رو پیاده سازی کنید.

alireza es
جمعه 23 خرداد 1393, 10:43 صبح
در رابطه باسوالتون باید یه توضیحاتی بدم شاید متوجه هدف کیوت و دلیل استفادش بشید.

ببینید به طور کلی همانطور که میدونید با دخالت های مایکروسافت در C++‎‎‎‎‎‎‎‎‎‎ کمی وضعیت رو تغییر داده همه رفتن سراغ Win32 / MFC و حتی CLR که روی دات نت هستش... خیلی ها فکر میکنن C++‎‎‎‎‎‎‎‎‎‎ یعنی این ! در حالی که چنین نیست C++‎‎‎‎‎‎‎‎‎‎ به صورت رسمی تحت کتابخانه های قدیمی و قدرتمندی چون GTK و SLT و همچنین Boost پشتیبانی میشود که توسط هریک از این موارد شما میتونید هم کارهای گرافیکی انجام دهید هم کارهای پردازشی خاص حالا اینکه یه محیط قدرتمند با سرعت خوبی در اختیار داشته باشید این به کنار... من روشی رو که میتونم براتون پیشنهاد بدم به صورت زیر خواهد بود :

کد نویسی C/C++‎‎‎‎‎‎‎‎‎‎ کاملا آزادانه هستش مثل زبان های Java یا مثلا C#‎‎‎‎‎‎‎‎‎‎ نیستش که از هر روشی استفاده کردین تا آخر مجبورید از همون روش الگوبرداری کنید... خیر چنین نیست بر فرض مثال من دوست دارم کد نویسی C++‎‎‎‎‎‎‎‎‎‎ انجام بدم که علاقه خاصی به کتابخانه های قدرتمندی مانند Boost و جدیدا به POCO دارم من چکار کردم اومدم این کتابخانه هارو وارد برنامه کردم همراه با Qt یعنی هم کد نویسی استاندارد C++‎‎‎‎‎‎‎‎‎‎ و هم کد نویسی استاندارد با استفاده از چندین کتابخانه ر کنارهم ! که البته این یک روش و یا سلیقه بشمار میاد! و اصلا لزومی نداره من بیام چندین کتابخانه رو وارد برنامه کنم مثلا GTK رو بیارم همراه با Qt استفاده کنم هرچند امکان پذیر هستش ولی خب وقتی خود Qt امکاناتی رو که GTK فراهم میکنه چرا بیام خودمو با GTK درگیر کنم ؟

ببینید شما فرض کنید Qt همون GTK هست ! هیچ فرقی نداره به جز syntax که علاوه بر امکانات gtk حتی بیشتر از اون رو براتون فراهم میکنه مثلا شما در gtk به سختی میتونید یا شایدهم نتونید رابط گرافیکی خارق العاده ای که در Qt میشه ایجاد کرد رو اجرا و پیاده کنید اولش یکم سخته و آدم گمراه میشه ولی من توصیم اینه شما همین Qt رو از سرنخ بگیرید برید تا آخر حتما راضی خواهید شد فکر نمیکنم به اندازه من سختگیر و حساسیت نشون بدین با اینکه از کلمه Q متنفرم و از این محیط Qt به شدت ناراضی هستم ولی به خاطر امکاناتی که فراهم میکنه واقعا به دلم نشسته حتی جدیدا بیخیال VS شدم و کد نویسیرم در همین محیط انجام میدم.

پس هیچ جای نگرانی وجود نداره که شما فکر کنید امکاناتی رو که gtk فراهم میکرد رو Qt نتونه فراهم کنه...

من خودم شخصا کتابخانه های POCO و BOOST رو در بسیاری از موارد در کنار Qt استفاده میکنم چون ساختار کد نویسی این موارد رو بیشتر میپسندم دلیل اینکه زیاد با Qt سازگار نیستم ساده بودنشه واقعا مثل C#‎‎‎‎‎‎‎‎‎‎ همه چیز رو فراهم میکنه و این بر خلاف دیدگاه بنده بسیار عالیه :)

حال با این وجود اگه بازهم به gtk علاقه خاصی دارید خب میتونید شما Dual Library کار کنید مثلا هم Qt هم gtk کد نویسی های مربوط به GUI رو با Qt بنویسید و کد نویسی های غیر گرافیکی رو با gtk این کار شدنیه ولی من توصیه نمیکنم دلیلش هم اینه که سرعت در توسعه رو کاهش خواهد داد ! منظور از کاهش سرعت چیه این وسط‌؟ منظورم اینه شما فرض کنید میخوای در درون رابط GU ساخته شده با Qt کد نویسی gtk انجام بدین باید در بسیاری از موارد نوع ها و همچنین Object هارو تبدیل به نوع Qt کنید و اینکار علاوه بر اضافه شدن تعداد خط های کدهای شما خواهد شد بلکه باعث کاهش سرعت در توسعه برنامه رو هم دربر خواهد داشت... ولی در کل شدنیه در C++‎‎‎‎‎‎‎‎‎‎ هیچ چیزی نشد نداره.

خیلی ممنون از پاسختون راستش من فقط برای گرافیک از فریم ورک استفاده میکنم و دیگر کارهام رو با استفاده از c++11 یا C انجام میدم.راستش من میخواستم gtk که فقط برای کارهای
گرافیکی هست رو با بخش گرافیکی Qt مقایسه کنم.چون اگه هدف من راحتی بود میرفتم C# البته الان دلفی که به مراتب راحت تر از C# است رو یاد گرفتم(در حقیقت لازاروس رو!!ولی با یاد گرفتن لازاروس دلفی رو هم یاد گرفتم)
و میخوام بیام c++11 من کارهایی مثل سوکت پروگرمینگ و پایگاه داده رو از خود c++11 و C انجام میدم و نمیخوام بیام کیوت چون برای هرکاری باید این Q لعنتی رو فشار بدم از این حرف متنفرم
اما حالا مشکل من کتاب خانه یا فریم ورک گرافیکی هست.در بخش گرافیکی Qt چه برتری هایی به gtk داره که بیام اونو یاد بگیرم؟
پرفومنس؟(که بعید میدونم چون gtk رو با C نوشتن)کامپوننت های بیشتری داره؟خوشگلتره؟!!

کامبیز اسدزاده
جمعه 23 خرداد 1393, 10:52 صبح
اما حالا مشکل من کتاب خانه یا فریم ورک گرافیکی هست.در بخش گرافیکی Qt چه برتری هایی به gtk داره که بیام اونو یاد بگیرم؟
پرفومنس؟(که بعید میدونم چون gtk رو با C نوشتن)کامپوننت های بیشتری داره؟خوشگلتره؟!!

شک نکنید Qt بهتر از Gtk هستش‌!

از لحاظ Preformance به توضیحات من دقت نکردین !!! من که اشاره کردم کارایی و سرعت کد ها در تمامی کتابخانه های Native برای C++‎‎‎ یکسان هستش همشون به یک اندازه پرقدرت و سرعتمند هستند.
همه این کتابخانه های با C/C++‎‎‎ نوشته شده اند.
من با کامپوننت های gtk آشنایی زیادی ندارم ولی در رابطه با این مورد هم میتونم بگم باز Qt یک قدم نه چندین قدم از gtk جلوتره.. رقیبه سرسخت Qt در بین کتابخانه های C++‎‎‎ اسمش هست wxWidgets که جولوی Qt هیچ حرفی نداره بزنه...البته علاقه خاصی هم من به اون دارم ولی خب برتری Qt در مقابل GTK و wxWidgets امکاناتی چون QML و طراحی بینظیرش هست که بهتراز بقیه عمل میکنه... اگه اینطور نبود سیستم عامل قدرتمند لینوکس Ubuntu رابطش رو به QML تغییر نمیداد و طبق خبرهایی که داده از این به بعد تمامی رابط های گرافیکی این سیستم عامل توسط QML پیاده سازی خواهد شد که این خبره خوبه برای Qt و زبان C++‎‎‎



اینجارم مطالعه کنید : http://developer.ubuntu.com/apps/qml/

در کل نه تنها لینوکس شما میتونید در ویندوز و مک و حتی سیستم های iOS و Android هم توسط QML رابط هایی رو پیاده سازی کنید که عمرا با کتابخانه های دیگه بشه همچین چیزی ایجاد کرد حالا به اینهم اشاره کنم که Qt در بازی سازی و موارد ۲ و ۳ بعدی هم کاربرد داره که حتی سرعت رندر و اجرای برنامه ها به ۶۰ فریم بر ثانیه میرسه این قردت و پرفرمنس این کتابخانه رو واقعا نشون میده.

alireza es
جمعه 23 خرداد 1393, 11:31 صبح
یونیتی از گنوم مشتق شده و گنوم هم با gtk ساخته شده!!اونا اگه بخوان با qml دسکتاپ بسازن یا باید از kde مشتق کنن یا از پایه یه دسکتاپ بسازن
دلیل اینکه من این همه به gtk علاقه دارم(که شما این علاقه رو از بین بردین!)هم همینه که رابط های کاربر زیادی رو باهاش نوشتن.در ضمن بازی سازی هم کلا یه مبحث جداست و الان بازی هایی با ۹۵ فریم تو play station ۴ دارن اجرا میشن که اگه یه روز بخوام برم بازی سازی میرم فریم ورک متخصصشو یاد میگیرم نه کیوت





همه این کتابخانه های با C/C++‎‎‎‎ نوشته شده اند.


کیوت با c++ و gtk با c نوشته شده است.این هم یه برتری دیگه برا gtk

خبره خوبه برای Qt و زبان C++‎‎‎‎
تو لینوکس وقتی میگن داریم میاییم کیوت منظورشون کیوت نیست کتاب خانه هایی مثل pyqt و pyside هستش.کلا لینوکسی ها عاشق پایتون هستند
پس خبر خوبیه برا کیوت و پایتون نه برا c++


عمرا با کتابخانه های دیگه بشه همچین چیزی ایجاد کرد
الان کتاب خونه هایی هستند که html5 و css3 رو به c++ میارن شندیم کیوت هم یه کارایی در این زمینه میکنه ولی کتاب خونه های دیگری هستند که این کارو میکنند مثل وبکیت
و با این کار شما دارین qml رو با ترکیبیه css3 و html5 مقایسه میکنید که بازنده قطعا و ۱۰۰٪ این جا qml هست

ببینید من نمیخوامم منکر قدرت ماورا الطبیعیه کیوت بشم واقعا قدرت محشری داره اما ۲ تا مشکل اساسی داره


من از حرف Q متنفرم(نبودم از وقتی کیوت کار میکنم شدم.)
اگه بخوام از qml استفاده کنم میرم html5 رو با css مخلوط کنم استفاده میکنم از هرچی wpf و qml و firemonky و gtk و ....... راحت میشم اما هدف من یاد گیری ساخت user interface با c++ هست که که میخواستم تو این بخش برم gtk چون با c نوشته شده و کلاس بیشتری داره(با کلاس تره!!)که نرفتم چون gtk دیگه آپدیت نمیشه و کیوت از تکنولوژی های بییشتری استفاده میکنه فکر کنم بیش از حد نگران پرفومنس بودم

دیگه پیر شدم و حال یاد گیری qml ندارم رفتم از html و css استفاده کنم!
خیلی ممنون از راهنماییتون

samanbank
چهارشنبه 28 خرداد 1393, 20:04 عصر
شما تو فروم ابونتو که گفتی میخوای بری gtk حالا کیوت چش بود مگه؟

alireza es
پنج شنبه 29 خرداد 1393, 00:43 صبح
شما تو فروم ابونتو که گفتی میخوای بری gtk حالا کیوت چش بود مگه؟

آیا این یک اسپم نیست؟
1- من میخوام بیام C و بعد c++11 و بعد Qt
2-من نمیخوام بیام gtk یه مدتی کلا گیج بودم و کلا نمیدونستم چه فریم ورکی انتخواب کنم برا همین در فروم های مختلف تایپک زدم و پرسیدم
3-بردن اسم یه فروم تو یه فروم دیگه کار شایسته ای نیست‌!