معرفی فریمورک اپلیکیشن نویسی Qt – توضیحات بیشتر

بهتر دیدم ابتدا از مقالهء ویکیپدیا دربارهء کیوت شروع کنم و بخشهایی از این مقاله بعلاوهء مقداری اطلاعات شخصی خودم رو نقل کنم.

از جمله نرم افزارهای معروفی که در اونها از کیوت استفاده شده KDE (یکی از دو محیط دسکتاپ اصلی برای توزیعهای مختلف گنو/لینوکس که خودش شامل نرم افزارهای مهم متعددی هم میشه)، مرورگر وب اپرا، Google Earth، Skype، Adobe Photoshop Album، VirtualBox، و OPIE هستن.
مسلما تعداد نامحدودی اپلیکیشنهای پراکنده و شخصی هم تاکنون با کیوت نوشته شدن و استفاده از این فریمورک بعد از ابزارهای پلتفرم ویندوز (بعلت غلبهء بازاری مایکروسافت)، خیلی فراگیر هست. ضمنا کیوت یکی از مهمترین و معروف ترین ها درمیان معدود کتابخانه ها و فریمورک های قدرتمند و کامل آزادی که وجود دارن هست.
البته در دنیای نرم افزار آزاد تنوع و تکثر معمولا زیاد و گاهی گیج کننده هست (که این اثر طبیعی آزادی و تعدد تولیدکنندگان هست) اما تنها چند کتابخانهء معدود در سطح اول رقابت هستن که اینقدر کامل، قوی و مستقل از پلتفرم هم باشن (یکی دیگه که خیلی معروفه GTK نامیده میشه).

کیوت تا June 17, 2008 که شرکت تولید کنندش توسط کمپانی نوکیا خریداری شد به یک کمپانی نروژی بنام Trolltech تعلق داشت، و الان با وارد کردن نام سایت شرکت Trolltech بصورت trolltech.com به بخش مربوط به کیوت شرکت نوکیا (Qt Software) با آدرس qtsoftware.com هدایت میشیم.

کیوت از زبان سی++ به اضافهء چندین توسعهء غیراستاندارد استفاده میکنه (نترسید! این توسعه ها مشکلی در برنامه نویسی پیش نمیارن و برای راحت کردن کارها ایجاد شدن). این توسعه ها و امکانات بوسیلهء یک پیش پردازندهء سی++ که نهایتا قبل از کامپایل نهایی، کدهای خالص سی++ استاندارد رو تولید میکنه پیاده سازی شدن.

شما برنامه هاتون رو با کیوت به زبان سی++ مینویسید، اما عملا خیلی کم نیاز به استفادهء مستقیم از کتابخانه ها و توابع استاندارد خود سی++ دارید و فریمورک وسیع کیوت رنج وسیعی از کلاسها و توابع لازم برای اپلیکیشن نویسی رو دراختیار شما قرار میده و کار کردن باهاش هم به نحو چشمگیری راحتتر و سریعتر و کم حجمتر و ضمنا امن تر (از نظر خطاهای منطقی برنامه نویسی) از توابع سطح پایینتر سی++ هست. خب البته این کاری هست که فریمورک ها و کتابخانه های سطح بالاتر معمولا کم و بیش انجام میدن و یکی از اهداف و تعاریف اونهاست، اما کیوت یک فریمورک اپلیکیشن نویسی با امکانات کامل GUI (رابط گرافیکی برای کاربر برنامه) هم هست ضمن اینکه امکان برنامه نویسیهای دیگر مثل سرور و خط فرمان رو هم همینطور فراهم کرده و ارتقا میده.

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

امکانات مفید دیگری که کیوت داره و جزو لازم برای یک کتابخانهء رابط گرافیکی نیستن شامل کتابخانهء دسترسی و کار با دیتابیس های مختلف مثل MySQL و SQLITE و ODBC، کار با XML، کار و مدیریت thread ها (اصطلاحا برنامه های چندریسمانی یا چندنخی)، کتابخانهء شبکه برای کار با شبکه و اینترنت، و یک رابط یکپارچه مستقل از پلتفرم برای کار با فایلها هستن.
همه اینها خیلی مفید و کارا هستن و مثلا برنامهء شما میتونه سریعا تبدیل به یک برنامه ای که با دیتابیس خودش یا دیتابیسی روی سیستم کار میکنه بشه.
کتابخانهء مربوط به thread هم کمبود کتابخانهء استاندارد thread رو در سی++ بطور کامل برطرف میکنه و کار کردن باهاش هم خیلی راحته. با برنامه نویسی چند ریسمانی ما میتونیم برنامه هایی بنویسیم که ویژگیهای مفید و جالبی دارن مثل پردازش موازی و استفادهء بهینه تر از منابع سیستم و وقت و انرژی کاربر و همچنین جاهایی که نیاز داریم برای داشتن یک برنامهء خوب اون رو بصورت چند ریسمانی پیاده کنیم.

از نظر لایسنس یا مجوز قانونی، کیوت تحت چند مجوز منجمله GNU LGPL ارایه میشه که این مجوز یک مجوز رسمی و معروف نرم افزار آزاد هست و این امکان رو هم میده که برنامه هایی داشته باشیم که لزوما همهء بخشهای اونها آزاد نیست و مجبور نیستیم سورس کدهای خودمون رو همراه برنامه و تحت مجوز آزاد دراختیار دریافت کنندگان برنامه قرار بدیم. البته اصولا چنین قابلیتی برای کسانی که به فلسفهء نرم افزار آزاد علاقه و اعتقاد دارن چندان جذاب نیست یا بی ارزش و حتی در مواردی مضر تلقی میشه، ولی بهرحال خیلی افراد هم کم و بیش طور دیگری فکر میکنن و چنین امکانی رو میخوان.
اگر بیش از این بخوایم امکان انحصاری کردن برنامه رو داشته باشیم و حتی LGPL هم شرایط مورد نظر رو به ما نده، میتونیم کیوت رو با لایسنس انحصاری که باید بابت بدست آوردنش هزینهء لازم رو بپردازیم خریداری کنیم. م: تاجایی که میدونم نسخهء انحصاری کیوت یکی دو مورد امکانات خاصی رو هم بیشتر از نسخهء آزاد داره که البته نبودن اونها در نسخهء آزاد چندان مهم و مشکل ساز بنظر نمیرسن و اونها تنها یکی دو مورد اجزای ویژه ای مثلا مربوط و مختص به سیستم عامل ویندوز هستن (مثل اکتیوایکس) که ارتباط مستقیمی هم با بخشهای اصلی مثل رابط گرافیکی ما ندارن و اونها رو ناقص نمیکنن؛ ضمنا اگر نیاز ضروری در برنامهء خودتون داشته باشید و بخواید از کتابخانه های آزاد یا مجانی استفاده کنید بنظرم میتونید از کتابخانه های دیگر در این زمینه یا کتابخانه های خود میکروسافت برای چنین امکاناتی در کنار کیوت استفاده کنید.

م: راستی از اینکه ممکنه کیوت زمانی انحصاری بشه هم زیاد نگران نباشید چون وجود KDE که جزو عمده و مهمی از گنو/لینوکس و دنیای نرم افزار آزاد هست پشتوانهء خوبی برای اون بحساب میاد. سالهاست که کیوت یکی از اجزای اصلی پروژه های بزرگی در نرم افزار آزاد بوده و به مرور حتی آزادتر و سازگارتر با مجوزهای رسمی نرم افزار آزاد هم شده، در کنار اینکه از نظر فنی هم واقعا رشد کرده.

مورد دیگه که شخصا میخوام بگم این هست که کیوت دارای برنامه و محیط ویژوال برای طراحی رابط کاربری هم هست و این مژدهء خوبی برای برنامه نویسانی که عادت و علاقه ای به کد نوشتن دستی ندارن و احتمالا تنها یا عمدهء موارد برنامه هاشون رو با ابزارهای ویژوال محیط ویندوز و مایکروسافت کار کردن هست. البته من چون اصولا با محیطهای ویژوال دیگر کار نکردم و کلا هم 99.9% موارد کد نویسی دستی میکنم متاسفانه نمیتونم میزان امکانات و شباهت طراحی ویژوال کیوت رو با مثلا ویژوال استودیوی میکروسافت مقایسه کنم.
علاقه به کد نوشتن دستی و آگاهی و کنترل کامل نسبت به تک تک اجزا و کدهای برنامه و احساس عدم نیاز به محیطهای ویژوال ویژگی ای هست که درمیان خیلی از برنامه نویسان نرم افزار آزاد وجود داره و مسلما دلایل منطقی ای هم داره.
بنظر من یک برنامه نویس واقعی باید اول کدنویسی دستی رو بطور کامل و با تسلط کافی بلد باشه و بعد تنها برای صرفه جویی در وقت و انرژی از محیطهای ویژوال درجایی که کفایت میکنه و واقعا تاثیر مثبت چشمگیری در این زمینه ها داره استفاده کنه، وگرنه برنامه نویسی که نتونه دوتا کد درست برای رابط گرافیکی بنویسه اصولا برنامه نویس بحساب نمیاد و نمیتونه بخشهای اصلی دیگر برنامه و کدهای عملیات داخلی رو که نیاز به کدنویسی دستی دارن بقدر کافی خوب طراحی کنه. از طرف دیگه طبق تجربه و مطالعه ای که شخصا با ابزار ویژوال کیوت داشتم (همچنین در زمینهء طراحی و برنامه نویسی وب با فرانت پیج میکروسافت) و اون رو با کدنویسی دستی مقایسه کردم، اولا قدرت و امکانات با کدنویسی دستی به نحو چشمگیری بیشتر هست و اصولا نمیشه با محیط ویژوال هرکاری رو انجام داد و خیلی کارها با کدنویسی دستی بهتر و قویتر و کاملتر ایجاد میشن و دوما بنظرم اگر برنامهء ما کمی پیشرفته و گسترده باشه و کدنویسی داخلی قابل توجهی داشته باشه، وقت و انرژی اضافه ای که صرف مطالعه و تطبیق و ترکیب کدهای ایجاد شده بصورت خودکار با کدهای خودمون میشه مزیت استفاده از محیط ویژوال رو زیر سوال میبره. مزیت دیگر کدنویسی دستی، آپدیت و مستقل بودن همیشگی برنامه نویس هست و چنین برنامه نویسی به حداقل امکانات برای انجام کار خودش نیاز داره و میتونه روی هرکدی از هرجایی هم کار کنه. البته از مزایای طراحی رابط کاربر با محیط ویژوال هم میشه عمدتا به صرفه جویی در وقت و انرژی اشاره کرد که مسلما وقتی زیاد باشه مهم هست و خب این بخصوص در کارهای تجاری و بازار کار ممکنه خیلی مهمتر بشه. یکی از خواص محیط ویژوال که میتونه باعث تفاوت چشمگیر در زمان صرف شده بشه، اینه که نیاز نیست برنامه برای دیدن و تست و تغییر ظاهرش بارها کامپایل بشه (این کامپایل و اجرا کردن به کرات، در مجموع زمان قابل توجهی میبره بخصوص که بخوایم جزییات ظاهری کوچک و متعددی رو مدام تست کنیم و تغییر بدیم).
این توضیحات رو برای این دادم که اگر محیط کیوت به اندازهء ویژوال استودیو با زبانهای میکروسافتی براتون جذاب نبود بدونید که لزوما هر زبان و ابزار و کتابخانه برای همه نوع و همه سطحی از برنامه نویسی و برنامه نویسان نیست.
انشاا… سعی میکنیم در این تاپیک مقداری به چگونگی استفاده از رابطهای گرافیکی تولید شده با محیط ویژاول کیوت هم بپردازیم. منتها متاسفانه بعلت کمبود وقت و انرژی و امکانات، امکان آموزش تصویری و حتی درج تصاویری مقدماتی از بخشهای مختلف کیوت وجود نداره (مگر اینکه یکی دو مورد رو تصادفا بذاریم) و برای دیدن تصویر در زمینه های مختلف بهتره در گوگل جستجو کنید و ضمنا در مستندات خود کیوت هم توضیحات و تصاویری وجود دارن (نمونه برنامه های کیوت و مثالها و دموها هم به همین ترتیب).
ما در اینجا مسلما قصد داریم کدهایی از برنامه نویسی رو هم بعنوان نمونه ارایه کنیم تا بتونید آشنا بشید و مقایسه ای با زبانها و فریمورک های دیگه انجام بدید.

==========================

منبع بخشهای مربوط به ویکی پدیا: http://en.wikipedia.org/wiki/Qt_toolkit

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>