TAHA
06-30-2009, 10:24 PM
نگاهي به مجموعه كتابخانهاي Qt
جعبه ابزار بامزه
اگر بخواهيم كل مطلب را در يك جمله لو بدهيم، ميگوييم Qt(كه كيوت تلفظ ميشود) بستره توسعه نرمافزار چندبستره است كه براي توسعه برنامههاي رابط كاربري استفاده ميشود، كه بسياري آن را جعبهابزار ويجت، مينامند. ويجت در واقع تمامي المانهاي بصري است كه براي ايجاد يك رابط كاربر كنار يكديگر قرار ميگيرد. دكمهها، منوها، سبكها و اسكرولبارها همه مثالي از ويجت هستند.
كيوتهمچنين در نرمافزارهاي معروفي چون كيديئي، گوگل ارث، اسكايپ، ادوب فوتوشاپ آلبوم، ويرچوال باكس و اوپرا استفاده شده است و توسط يك شركت نروژي بهنام Qt Software توسعه مييابد، كه قبلا با عنوان Trolltech فعاليت ميكرد، اما پس از فروختن كل شركت به نوكيا در 17ژوئن سال گذشته ميلادي، به اسم جديدش تغيير نام داد.
تاريخچه
كيوت از سال 1991 توسط هاوارد نورد (Haavard Nord) و آيريك چامبهانگ (Eirik Chambe-Eng) آغاز به توسعه كرد و بارها اسم خود را تغييرداد.
واژه Qt داراي ريشه خاصي نيست، و دليل اصلي نامگذاري آن، زيبا بودن شكل حرف Q در نرمافزار emacs هاوارد بوده است و بعد t را با الهام از Xt)The X toolkit) به آن اضافه كردهاند.
مشخصات فني
منبع اصلي كدهاي كيوت از++ C است، ضمن آنكه اين بستره ابزاري از چندتايي گسترشدهنده غيراستاندارد و چندتايي پيشپردازنده استفاده ميكند تا كد استاندارد++ C را قبل از كامپايل توليد كند. كيوت همچنين با زبانهاي ديگر برنامهنويسي هم كار ميكند. تاكنون برنامهنويسان منبعباز، كيوت را براي زبانهاي Ada، C#، جاوا، پاسكال، پرل، پياچپي، روبي و پايتون توسعه دادهاند. كيوت را در تمام پلتفرمهاي مطرح ميتوان اجرا كرد و پشتيباني خوبي از بابت چندزبانه بودن دارد و حتي شامل ويژگيهايي غيرگرافيكي همچون كتابخانههايي براي دسترسي سادهتر به پايگاه داده، پارس كردن فايلهاي XML، مديريت Threadها و پشتيباني از شبكه و يك رابط كاربري برنامهنويسي براي مديريت فايل را در خود دارد.
محيط هاي اجرا
كيوت روي اين بسترها اجرا ميشود:
- 11Qt/X براي سيستم پنجره X، (يونيكس، لينوكس)
- Qt/Mac براي اپل، (Mac Os X)
- Qt/Windows براي ويندوز مايكروسافت
- Qt/Embedded براي تلفنهاي همراه، دستيارهاي جيبي و...
- Qt/WinCE براي ويندوز CE
- Qt Jambi براي جاوا
- Qt Extended براي موبايلهاي مبتني بر لينوكس.
همچنين در 20 اكتبر 2008، براي سيمبيان 60S نيز نسخه خاصي عرضه شد. روي هر كدام از بسترهاي توسعه، چهار نسخه مختلف براي دريافت آماده شده است:
- Qt Console نسخه توسعه بدون رابط كاربري
- Qt Desktop Light نسخه ورود داده گرافيكي، بدون پشتيباني از شبكه يا پايگاه داده
- Qt Desktop نسخه كامل
- Qt Open Source Edition نسخه كامل، با چند استثنا براي توسعه دهندگان نرمافزارهاي باز و آزاد.
تا پيش از عرضه نسخه 5/4، كيوت تحت دو مجوز منتشر ميشد، يكي مجوز نرمافزارهاي تجاري كه روي تمام بسترها عرضه ميشد و ديگري مجوز آزاد LGPL كه نرمافزارهاي توليد شده تحت اين ليسانس حق فروش نداشتند. با توسعه نسخه 5/4، كيوتاعلام كرد كه از اين بهبعد ميتوانند تحت مجوز LGPL كيوت را عرضه كنند. (براي اطلاع از تفاوتهاي GPL و LGPL به وبسايت ويكيپديا مراجعه كنيد.)
تمامي نسخهها از كامپايلرهاي مختلفي پشتيباني ميكنند و چه در ويژوال استوديو و چه در GCC ميتوان به توسعه نرمافزارهاي مبتني بر كيوت پرداخت.
ترولتك در سال 2005 كيوت 4 را عرضه كرد و پنج فناوري جديد در بستره نرمافزاري معرفي كرد:
- Tulip، مجموعهاي از الگوهاي كلاسهاي حامي
- Interview، معمارياي بر اساس مدل و ظاهر براي نمايش آيتمها
- Arthur، بستره رنگآميزي دو بعدي
- Scribe، راندوكنندهمتن يونيكد و وجود APIاي آزاد براي دسترسي به متون سطح پايين
- MainWindow پنجرهاي وابسته به اكشنها، منوها و معماري چسبانكي.
در نسخه 1/4 پشتيباني از PDF و SVG به كيوت اضافه شد و در نسخههاي بعدي، پشتيباني از OpenGL و QtScript نيز به مجموعه ابزار همهكاره كيوت اضافه گشت. همچنين در نسخه آخر، از چند نخي پشتيباني كرد و با موتور پردازشي™راندوي WebKit نيز يكپارچه شد.
عرفو قانون
همانطور كه قبلا گفتيم، كدنويسي بهروش كيوت كدنويسي استاندارد++ C نيست و در واقع تركيبي از ماكروها و پيشپردازندههاست براي رسيدن به زباني پوياتر كه بيشتر به جاوا يا پايتون نزديك است تا++ C. در حقيقت براي استفاده كامل و مفيد از قدرت و سادگي كيوت، بهطور كل كتابخانههاي استاندارد را فراموش خواهيم كرد. براي برنامهنويسي بهسبك كيوت، روشها و ديدگاههاي مختلف و طول و درازي وجود دارد. ما آنها را اينجا خلاصهكردهايم، براي اطلاعات بيشتر، به مستندات وبسايت كيوت مراجعه كنيد.
– نام كلاسها با حرف بزرگ شروع ميشود، مانند: .class Customer
– نام توابع با حرف كوچك شروع ميشود.
– هر چند كه كامپايلر استفاده از نقطه، خط زير، خط تيره و كاراكترهاي بامزه را آزاد گذاشته است، اما بهتر است از آنها اجتناب گردد.
– ثابتها همه با حروف بزرگند.
– اسم كلاسها بايد اسم يا عبارت اسمي باشد.
– براي عضوهاي دادهاي از يك m_ استفاده كنيد.
– براي عضوهاي استاتيك دادهاي از sm_ استفاده كنيد. و...
نرمافزارهاي جانبي
همچنينبههمراهكيوتنرمافز �� �رجانبيQtDesigner عرضه ميشود كه توسعه نرمافزار را براي برنامهنويسان سادهتر ميكند: ابزاري كه به كمك آن ميتوان بهسادگي فرمهاي مورد نظر را طراحي و سيگنالدهي كرد. كيوت قابليت اتصال به پايگاههاي داده ODBC، MySQL، PSQL، SQLite، ibase، Oracle، Sybase و 2DB را داراست.
جمعبندي
بهنظر ميرسد بسياري از كاربران اين راهحل براي توسعه نرمافزار را نسبت به ديگر راههاي حل ترجيح دهند. از طرفي، سرعت اجراي برنامههاي كامپايل شده، نسبت به برنامههاي ماشين مجازي سريعتر است و از طرف ديگر، اينكه بدون نياز به تغيير كد، ميتوان يك نرمافزار را براي چندين سيستمعامل كامپايل و آماده استفاده كرد، خود يكي ديگر از دلايل گرويدن برنامهنويسان، چه كوچك و چه بزرگ به اين بستره نرمافزاري است.
نوكيا طي اقداماتي كه با آزادسازي مجوز سيستم عامل خود و همچنين خريد كيوت بهعنوان بستري همهكاره براي توليد نرمافزار در هر كجا انجام داد؛ بهنظر ميرسد بهدنبال كسب سهم مهمي از بازار نرمافزار نيز باشد.
جعبه ابزار بامزه
اگر بخواهيم كل مطلب را در يك جمله لو بدهيم، ميگوييم Qt(كه كيوت تلفظ ميشود) بستره توسعه نرمافزار چندبستره است كه براي توسعه برنامههاي رابط كاربري استفاده ميشود، كه بسياري آن را جعبهابزار ويجت، مينامند. ويجت در واقع تمامي المانهاي بصري است كه براي ايجاد يك رابط كاربر كنار يكديگر قرار ميگيرد. دكمهها، منوها، سبكها و اسكرولبارها همه مثالي از ويجت هستند.
كيوتهمچنين در نرمافزارهاي معروفي چون كيديئي، گوگل ارث، اسكايپ، ادوب فوتوشاپ آلبوم، ويرچوال باكس و اوپرا استفاده شده است و توسط يك شركت نروژي بهنام Qt Software توسعه مييابد، كه قبلا با عنوان Trolltech فعاليت ميكرد، اما پس از فروختن كل شركت به نوكيا در 17ژوئن سال گذشته ميلادي، به اسم جديدش تغيير نام داد.
تاريخچه
كيوت از سال 1991 توسط هاوارد نورد (Haavard Nord) و آيريك چامبهانگ (Eirik Chambe-Eng) آغاز به توسعه كرد و بارها اسم خود را تغييرداد.
واژه Qt داراي ريشه خاصي نيست، و دليل اصلي نامگذاري آن، زيبا بودن شكل حرف Q در نرمافزار emacs هاوارد بوده است و بعد t را با الهام از Xt)The X toolkit) به آن اضافه كردهاند.
مشخصات فني
منبع اصلي كدهاي كيوت از++ C است، ضمن آنكه اين بستره ابزاري از چندتايي گسترشدهنده غيراستاندارد و چندتايي پيشپردازنده استفاده ميكند تا كد استاندارد++ C را قبل از كامپايل توليد كند. كيوت همچنين با زبانهاي ديگر برنامهنويسي هم كار ميكند. تاكنون برنامهنويسان منبعباز، كيوت را براي زبانهاي Ada، C#، جاوا، پاسكال، پرل، پياچپي، روبي و پايتون توسعه دادهاند. كيوت را در تمام پلتفرمهاي مطرح ميتوان اجرا كرد و پشتيباني خوبي از بابت چندزبانه بودن دارد و حتي شامل ويژگيهايي غيرگرافيكي همچون كتابخانههايي براي دسترسي سادهتر به پايگاه داده، پارس كردن فايلهاي XML، مديريت Threadها و پشتيباني از شبكه و يك رابط كاربري برنامهنويسي براي مديريت فايل را در خود دارد.
محيط هاي اجرا
كيوت روي اين بسترها اجرا ميشود:
- 11Qt/X براي سيستم پنجره X، (يونيكس، لينوكس)
- Qt/Mac براي اپل، (Mac Os X)
- Qt/Windows براي ويندوز مايكروسافت
- Qt/Embedded براي تلفنهاي همراه، دستيارهاي جيبي و...
- Qt/WinCE براي ويندوز CE
- Qt Jambi براي جاوا
- Qt Extended براي موبايلهاي مبتني بر لينوكس.
همچنين در 20 اكتبر 2008، براي سيمبيان 60S نيز نسخه خاصي عرضه شد. روي هر كدام از بسترهاي توسعه، چهار نسخه مختلف براي دريافت آماده شده است:
- Qt Console نسخه توسعه بدون رابط كاربري
- Qt Desktop Light نسخه ورود داده گرافيكي، بدون پشتيباني از شبكه يا پايگاه داده
- Qt Desktop نسخه كامل
- Qt Open Source Edition نسخه كامل، با چند استثنا براي توسعه دهندگان نرمافزارهاي باز و آزاد.
تا پيش از عرضه نسخه 5/4، كيوت تحت دو مجوز منتشر ميشد، يكي مجوز نرمافزارهاي تجاري كه روي تمام بسترها عرضه ميشد و ديگري مجوز آزاد LGPL كه نرمافزارهاي توليد شده تحت اين ليسانس حق فروش نداشتند. با توسعه نسخه 5/4، كيوتاعلام كرد كه از اين بهبعد ميتوانند تحت مجوز LGPL كيوت را عرضه كنند. (براي اطلاع از تفاوتهاي GPL و LGPL به وبسايت ويكيپديا مراجعه كنيد.)
تمامي نسخهها از كامپايلرهاي مختلفي پشتيباني ميكنند و چه در ويژوال استوديو و چه در GCC ميتوان به توسعه نرمافزارهاي مبتني بر كيوت پرداخت.
ترولتك در سال 2005 كيوت 4 را عرضه كرد و پنج فناوري جديد در بستره نرمافزاري معرفي كرد:
- Tulip، مجموعهاي از الگوهاي كلاسهاي حامي
- Interview، معمارياي بر اساس مدل و ظاهر براي نمايش آيتمها
- Arthur، بستره رنگآميزي دو بعدي
- Scribe، راندوكنندهمتن يونيكد و وجود APIاي آزاد براي دسترسي به متون سطح پايين
- MainWindow پنجرهاي وابسته به اكشنها، منوها و معماري چسبانكي.
در نسخه 1/4 پشتيباني از PDF و SVG به كيوت اضافه شد و در نسخههاي بعدي، پشتيباني از OpenGL و QtScript نيز به مجموعه ابزار همهكاره كيوت اضافه گشت. همچنين در نسخه آخر، از چند نخي پشتيباني كرد و با موتور پردازشي™راندوي WebKit نيز يكپارچه شد.
عرفو قانون
همانطور كه قبلا گفتيم، كدنويسي بهروش كيوت كدنويسي استاندارد++ C نيست و در واقع تركيبي از ماكروها و پيشپردازندههاست براي رسيدن به زباني پوياتر كه بيشتر به جاوا يا پايتون نزديك است تا++ C. در حقيقت براي استفاده كامل و مفيد از قدرت و سادگي كيوت، بهطور كل كتابخانههاي استاندارد را فراموش خواهيم كرد. براي برنامهنويسي بهسبك كيوت، روشها و ديدگاههاي مختلف و طول و درازي وجود دارد. ما آنها را اينجا خلاصهكردهايم، براي اطلاعات بيشتر، به مستندات وبسايت كيوت مراجعه كنيد.
– نام كلاسها با حرف بزرگ شروع ميشود، مانند: .class Customer
– نام توابع با حرف كوچك شروع ميشود.
– هر چند كه كامپايلر استفاده از نقطه، خط زير، خط تيره و كاراكترهاي بامزه را آزاد گذاشته است، اما بهتر است از آنها اجتناب گردد.
– ثابتها همه با حروف بزرگند.
– اسم كلاسها بايد اسم يا عبارت اسمي باشد.
– براي عضوهاي دادهاي از يك m_ استفاده كنيد.
– براي عضوهاي استاتيك دادهاي از sm_ استفاده كنيد. و...
نرمافزارهاي جانبي
همچنينبههمراهكيوتنرمافز �� �رجانبيQtDesigner عرضه ميشود كه توسعه نرمافزار را براي برنامهنويسان سادهتر ميكند: ابزاري كه به كمك آن ميتوان بهسادگي فرمهاي مورد نظر را طراحي و سيگنالدهي كرد. كيوت قابليت اتصال به پايگاههاي داده ODBC، MySQL، PSQL، SQLite، ibase، Oracle، Sybase و 2DB را داراست.
جمعبندي
بهنظر ميرسد بسياري از كاربران اين راهحل براي توسعه نرمافزار را نسبت به ديگر راههاي حل ترجيح دهند. از طرفي، سرعت اجراي برنامههاي كامپايل شده، نسبت به برنامههاي ماشين مجازي سريعتر است و از طرف ديگر، اينكه بدون نياز به تغيير كد، ميتوان يك نرمافزار را براي چندين سيستمعامل كامپايل و آماده استفاده كرد، خود يكي ديگر از دلايل گرويدن برنامهنويسان، چه كوچك و چه بزرگ به اين بستره نرمافزاري است.
نوكيا طي اقداماتي كه با آزادسازي مجوز سيستم عامل خود و همچنين خريد كيوت بهعنوان بستري همهكاره براي توليد نرمافزار در هر كجا انجام داد؛ بهنظر ميرسد بهدنبال كسب سهم مهمي از بازار نرمافزار نيز باشد.