انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: چگونه برنامه نویسی کنم؟  (دفعات بازدید: 12183 بار)

0 کاربر و 4 مهمان درحال مشاهده موضوع.

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
چگونه برنامه نویسی کنم؟
« : 03 فروردین 1392، 01:48 ق‌ظ »
سلام. من چند ماهی میشه که از ویندوز به اوبونتو مهاجرت کردم و به شدت از اوبونتو راضی هستم و دارم به قول معروف حال میکنم  \\:D/
من توی ویندوز با دلفی برنامه نویسی میکردم. دلفی cross-platform نیست و تنها برای ویندوز هست. راستش وقتی مهاجرت کردم به لینوکس، خیلی گیج شدم توی برنامه نویسی!
همونطور که میدونید کاربر توی ویندوز زیاد از اتفاقاتی که دور و برش میفته خبر نداره، تمام کامپیوتر رو ویندوز میدونه  :o منم چون از ویندوز استفاده میکردم، تمام تصورم از برنامه نویسی این بود که، برنامه نویسی یه محیطی هست که داخلش آبجکت های مورد نظرت رو میذاری، و کدشون رو مینویسی! فقط همین. خیلی تصور بچگانه ای هست،
ولی خیلی از برنامه نویسای ویندوز، در همین حد فکر میکنن! ولی وقتی به اوبونتو مهاجرت کردم، چون قبلش با دلفی کار کرده بودم، و استعدادم توی زبان پاسکال بود، لازاروس رو برای برنامه نویسی انتخاب کردم. لازاروس هم زبانش پاسکاله، مثل دلفی! ولی من به این چیزا قانع نشدم، رفتم تو فکر برنامه های معروف! مرورگرها! پلیرها! گفتم این ها چطوری نوشته شدن؟ محاله که از لازاروس استفاده کرده باشن  ;D چون لازاروس فقط یه IDE ساده و جدید هست.
پس حتما اونا از یه چیز پیشرفته استفاده میکنن! با کمی تحقیق دریافتم که این ها با زبان هایی مثل C و C++ ساخته شدن. ولی همیشه برام سوال بود که اینا رو توی چه محیطی طراحی کردن؟ فرم رو چطوری طراحی کردن؟ دکمه ها رو کجا گذاشتن؟ اسم نرم افزارشون برای طراحی چی بوده؟؟؟ چطوری کامپایل میشن؟؟
مدت زیادی جستجو کردم توی گوگل، سایتای انگلیسی و فارسی. شاید چند روز همینطوری میگشتم. من فقط میخواستم یه برنامه با C++ بنویسم. و به سادگی هم این کار رو انجام دادم، ولی برنامه من GUI نبود.  :oops: با ترمینال اجرا میشد و یه متن ساده بهت میگفت و خلاص! شدیدا گشتم، توی سایتای خارجی برای برنامه نویسی GUI به من NetBeans و eclipse رو پیشنهاد کردن. ولی هنوز که هنوزه، موفق نشدم باشون برنامه نویسی بکنم! من از کجای این ها باید Button بذارم؟ اینا که همش کد هست! این ها رو توی نوت پد هم میشه نوشت و با یه ترمینال ساده کامپایلشون کرد.
بازم سرچ کردم، گفتن برای اینکه برنامه های GUI بنویسی حتما باید از GTK+ یا Qt یا wxWidgets استفاده کنی! من هرگز موفق به انجام این کار نشدم و الان دست به دامن شما شدم که راهنماییم کنید! چطوری باید برنامه GUI بنویسم؟؟
برنامه های معروفی مثل Firefox, VLC Media player چطوری نوشته شدن؟ توی چه محیطی؟ NetBeans؟ eclipse؟ دیگه دارم قاطی میکنم واقعا  ](*,)
کم مونده با لگد بیام تو مانیتور  \\:D/ دوستان لطفا راهنمایی کنید. من که واقعا گیج شدم! آرزو به دل موندم که با C++ برنامه بنویسم. و میخوام برنامم cross-platform باشه! بدجوری دنبالشم. منتظر جوابتون هستم! ممنون

آفلاین MHA152

  • High Hero Member
  • *
  • ارسال: 2745
  • جنسیت : پسر
  • من عاشق یونیکسی ها هستم
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #1 : 03 فروردین 1392، 09:11 ق‌ظ »
همونطور که خودتون فرمودید در اکلیپس فقط میشه کد زد ولی برای شما رفع خطا را آسان تر می کنه فریم ورک های خوبی وجود داره مثل qt یا anjuta اگه از اوبونتو استفاده می کنید سافتویر سنتر را باز کنید و توش بنویسید c++ هر چیزی که در این رابطه باشه(کامپایلر, ویرایشگر, فریم ورک)براتون میاره و می تونید از اونجا نصب کنید درضمن تمامی نرم افزار های اوبونتو را با c نمینویسند بلکه از پایتون و پرل هم کمک گرفته میشه که آموزش های خوبی در باره ی این زبان ها در این فروم موجود می باشد
بهتون پیشنهاد می کنم به دنیای بزرگ شبه−یونیکس وارد بشید و از پیشرفت لذت ببرید
جیمیلم

آفلاین mohsen-rashidi

  • High Sr. Member
  • *
  • ارسال: 646
  • جنسیت : پسر
  • Hacker`s Emblem
    • اینجا خانه محسن است
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #2 : 03 فروردین 1392، 10:03 ق‌ظ »
ببین دوست من کیوت،جی تی کی + و امثالهم یک سری کتابخانه هستند که در اونها ماژول هایی برای تولید GUI وجود داره و این کار فقط با کد زدن صورت می گیره.
به این معنی که مثلا برای ساخت یه دکمه به جای استفاده از ماوس برای کشیدن او در یه فرم گرافیکی از یه دستور برای این کار استفاده می کنید.
برای مثال کد زیر به زبان پایتون و با استفاده از کتابخانه PyQt نوشته شده:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Here we provide the necessary imports.
# The basic GUI widgets are located in QtGui module.
import sys
from PyQt4.QtGui import *
 
# Every PyQt4 application must create an application object.
# The application object is located in the QtGui module.
a = QApplication(sys.argv)
 
# The QWidget widget is the base class of all user interface objects in PyQt4.
# We provide the default constructor for QWidget. The default constructor has no parent.
# A widget with no parent is called a window.
w = QWidget()
 
w.resize(320, 240)  # The resize() method resizes the widget.
w.setWindowTitle("Hello, World!")  # Here we set the title for our window.
w.show()  # The show() method displays the widget on the screen.
 
sys.exit(a.exec_())  # Finally, we enter the mainloop of the application.

که بعد از اجرا پنجره ی زیر ساخته میشه:


نرم افزار هایی هم مثل گوگل کروم،فایرفاکس،3d max و غیره کتابخانه های گرافیکی مخصوص به خودشون رو دارن :)
« آخرین ویرایش: 03 فروردین 1392، 10:05 ق‌ظ توسط mohsen-rashidi »

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #3 : 03 فروردین 1392، 12:11 ب‌ظ »
امان از دست ویندوز که برنامه نویسها رو به drag & drop عادت داده  >:(
شما qt creator رو نصب کن. یه IDE برای فریمورک Qt هست که با C++ میشه توش برنامه نوشت. اون قابلیت drag & drop برای برنامه های visual رو هم داره.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #4 : 03 فروردین 1392، 12:56 ب‌ظ »
بازم نفهمیدم  ::)
ببینید الان vlc player با چی نوشته شده؟ از Qt استفاده کرده؟ تمام کارهاش رو توی نوت پد انجام دادن؟ یعنی اصلا drag & drop نداشتن؟ خب اینطوری که خیلی خیلی کار سخت میشه. یعنی باید اندازه، top، left هر آبجکت رو با کد تعیین کنیم؟ چقدر سخت  \\:D/
نه من میخوام بصورت پیشرفته برنامه نویسی بکنم، آیا یک برنامه نویس حرفه ای،‌از qt creator استفاده میکنه؟ فکر نکنم اینطوری باشه، پس من هم قید qt creator رو میزنم  \\:D/
به این نتیجه رسیدم که کدها رو باید توی نوت پد بزنم. فقط یک سوال! از کدوم فریم ورک استفاده کنم؟ از GTK+ خوشم نمیاد بنا به دلایلی. از Qt استفاده کنم یا wxWidgets؟ فرقشون چیه در ظاهر؟ کار به لایسنسش ندارم. فقط تفاوت های ظاهریش رو میخوام بدونم!

خب الان من چیزایی که فهمیدم رو میگم، ببینید درست میگم؟
برای برنامه نویسی GUI توی سی پلاس پلاس باید یکی از فریم ورک ها رو نصب بکنم، و کامپایلر C++ رو هم نصب بکنم. فایل پروژم رو با فرمت cpp میسازم و اون رو با gedit ویرایش میدم. درسته؟ داخلش فریم ورک مورد نظرم رو فراخوانی میکنم و فرم رو ایجاد میکنم. (چقدر سخت)
بعد با این دستور:
gcc file.cppکامپایلش میکنم. همین! خب بعد چطوری برای ویندوز کامپایلش کنم؟  \\:D/
منتظر جوابم

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #5 : 03 فروردین 1392، 01:26 ب‌ظ »
بازم نفهمیدم  ::)
ببینید الان vlc player با چی نوشته شده؟ از Qt استفاده کرده؟ تمام کارهاش رو توی نوت پد انجام دادن؟ یعنی اصلا drag & drop نداشتن؟ خب اینطوری که خیلی خیلی کار سخت میشه. یعنی باید اندازه، top، left هر آبجکت رو با کد تعیین کنیم؟ چقدر سخت  \\:D/
نه من میخوام بصورت پیشرفته برنامه نویسی بکنم، آیا یک برنامه نویس حرفه ای،‌از qt creator استفاده میکنه؟ فکر نکنم اینطوری باشه، پس من هم قید qt creator رو میزنم  \\:D/
به این نتیجه رسیدم که کدها رو باید توی نوت پد بزنم. فقط یک سوال! از کدوم فریم ورک استفاده کنم؟ از GTK+ خوشم نمیاد بنا به دلایلی. از Qt استفاده کنم یا wxWidgets؟ فرقشون چیه در ظاهر؟ کار به لایسنسش ندارم. فقط تفاوت های ظاهریش رو میخوام بدونم!

خب الان من چیزایی که فهمیدم رو میگم، ببینید درست میگم؟
برای برنامه نویسی GUI توی سی پلاس پلاس باید یکی از فریم ورک ها رو نصب بکنم، و کامپایلر C++ رو هم نصب بکنم. فایل پروژم رو با فرمت cpp میسازم و اون رو با gedit ویرایش میدم. درسته؟ داخلش فریم ورک مورد نظرم رو فراخوانی میکنم و فرم رو ایجاد میکنم. (چقدر سخت)
بعد با این دستور:
gcc file.cppکامپایلش میکنم. همین! خب بعد چطوری برای ویندوز کامپایلش کنم؟  \\:D/
منتظر جوابم
اتقافا برنامه نویسی حرفه ای، اینه که همه چیز توی کد باشه. اگه برنامه نویس بیاد با drag & drop همه چیز رو قرار بده شمای کاربر نمیتونی (یا سخته) که بیای و واسط گرافیکی رو برای خودت شخصی سازی کنی یا در حد کم میتونی همچین کاری کنی. واسه برنامه نویس هم سخته که واسه همه این تنظیمات کد بزنه. اما اگه مثلا بیاد و کانفیگ واسط گرافیکی رو از یه فایل بخونه و با توجه به اطلاعات اون، واسط گرافیکی رو به صورت پویا بسازه، هم کار خودش راحتتر میشه هم دست شمای کاربر واسه تغییر GUI بازه و تغییرات شما در واقع توی همون فایل ذخیره میشه.

در حالت کلی Qt بهتره چون هم کتابخونه GUI داره هم کلی کتابخونه دیگه مثل اتصال به دیتابیس ، شبکه و... . Qt دقیقا مثل net. توی ویندوز میمونه ولی خوبیش اینه که همه سیستم عاملها ساپورت میشه. اما wxwidgets فقط یه کتابخونه واسط گرافیکی هست.

C++ یه زبون write once, compile everywhere هست. یعنی اگه شما توی برنامه خودت از توابع سیستم عامل استفاده نکنی، همون کد رو دقیقا میتونی ببری و روی یه سیستم عامل دیگه کامپایل کنی. بدون هیچگونه تغییر توی کد. یعنی شما این برنامه Qt رو ببر روی ویندوز و روی اون Qt و کامپایلر C++ نصب کن، بعد اونجا کامپایلش کن. میشه واسه ویندوز.

در ضمن اون کدی که واسه کامپایل برنامه نوشتی هم به این راحتی ها نیست. پیچیده تره.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #6 : 03 فروردین 1392، 01:58 ب‌ظ »
ایول. حالا گرفتم چطور شد  :D ولی یه سوال دیگه، من توی ویندوز با Qt creator کار کردم، پروژه رو وقتی کامپایل میکردم، موقع اجرا ارور میداد و احتیاج به تعداد زیادی dll داشت. یعنی برای اجرای برنامه های Qt باید توی سیستم کاربر حتما Qt نصب باشه؟

یه درخواست هم دارم که بعد از گرفتن جواب میگمش  :-X

آفلاین AmirrezaGhaderi

  • Jr. Member
  • *
  • ارسال: 90
  • جنسیت : پسر
    • حساب تویتر من
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #7 : 03 فروردین 1392، 02:25 ب‌ظ »
شما قبل از هر چیزی باید دید خودت رو نسبت برنامه نویسی عوض کنی.
عنصر اصلی برنامه‌نویسی «کد» هست. کد هم صرفا یک تیکه نوشته‌ هستش که برای زبان مورد نظر شما معنی خاصی داره.
هر چیزی به غیر از کد (مثلا محیط گرافیکی، دکمه، منو،...) جزو برنامه نویسی محسوب نمیشن. اینها قابلیت ها
جانبی هستن که می تونن استفاده بشن، میتونن هم استفاده نشن. اصلا ربطی به زبان یا کلا برنامه‌نویسی ندارن.

شما تا دید خودت رو عوض نکنی، دوستان هر چقدر هم که برات توضیح بدن شما درست متوجه نمیشی. وقتی هم دنبال منبع برای
مطالعه‌ات میگردی نمی تونی چیز به درد بخوری پیدا کنی. برای اینکه دنبایل چیز غلطی میگردی.


آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #8 : 03 فروردین 1392، 03:01 ب‌ظ »
درسته، ولی متأسفانه ویندوز دید برنامه نویسا رو خیلی تغییر داده. من الان دارم مفهومش رو میفهمم. ممنون که راهنمایی کردید.
ولی حالا من میخوام برنامه ای بنویسم که GUI باشه. و برای این کار ظاهرا باید از یک فریم ورک استفاده کنم. من هم بین این فریم ورک ها، میخوام اول Qt رو امتحان کنم. ولی یک سوال دارم که پرسیدمش. آیا باید روی سیستم کاربر چیز خاصی نصب بشه برای اجرای برنامه؟ باید فایل dll همراهش بذاریم؟

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #9 : 03 فروردین 1392، 03:02 ب‌ظ »
درسته، ولی متأسفانه ویندوز دید برنامه نویسا رو خیلی تغییر داده. من الان دارم مفهومش رو میفهمم. ممنون که راهنمایی کردید.
ولی حالا من میخوام برنامه ای بنویسم که GUI باشه. و برای این کار ظاهرا باید از یک فریم ورک استفاده کنم. من هم بین این فریم ورک ها، میخوام اول Qt رو امتحان کنم. ولی یک سوال دارم که پرسیدمش. آیا باید روی سیستم کاربر چیز خاصی نصب بشه برای اجرای برنامه؟ باید فایل dll همراهش بذاریم؟

نه عزیز نیاز نیست خودتون چیزی همراهش بزارید. وقتی که بسته deb تهیه میکنید ، میبینید که یه قسمت هست به نام depends و اون رو باید متناسب با لایبرری های برنامه بنویسید.
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #10 : 03 فروردین 1392، 03:08 ب‌ظ »
توی ویندوز چطور؟ اونجا که بسته deb نداریم! من باید به Installer بگم که لایبری Qt رو توی پوشه ویندوز کپی کنه؟

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #11 : 03 فروردین 1392، 03:12 ب‌ظ »
توی ویندوز هر برنامه dll هایی که نیاز داره همراه خودش میاره. مثلا به خاطر همین اکثر بازیها directX همراهشون هست.
برنامه شما هم چون نیاز به dll های Qt داره باید موقع نصب برنامه اونها همراه برنامه نصب بشن.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین علی هردان

  • Full Member
  • *
  • ارسال: 243
  • جنسیت : پسر
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #12 : 03 فروردین 1392، 03:19 ب‌ظ »
عجب. پس چرا دلفی اینطوری نیست؟ برنامه هایی که با دلفی نوشته میشن حجمی معادل ۱.۵ مگابایت دارن و احتیاج به هیچ dll جانبی ندارن. همش توی یک فایله! لازاروس هم همینطوره. راهی نیست که از Qt استفاده کنم بدون گذاشتن فایل dll همراه برنامه؟

آفلاین AmirrezaGhaderi

  • Jr. Member
  • *
  • ارسال: 90
  • جنسیت : پسر
    • حساب تویتر من
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #13 : 03 فروردین 1392، 03:46 ب‌ظ »
چون توی دلفی خروجی به صورت پیش فرض «استاتیک» کامپایل میشه. یعنی اگه پکیج های جانبی
نیاز باشه، به فایل خروجی پیوست میشه و در غالب یه فایل واحد به شما تحویل داده میشه. که خیلی هم
روش خوبیه اتفاقا.
شما میتونی برنامه‌های C و ++C رو هم به شکل استاتیک کامپایل کنید. اما در مورد پکیج Qt اطلاعی ندارم. دوستانی
که کار کردن باهاش باید نظر بدن.

آفلاین r_m1232002

  • Full Member
  • *
  • ارسال: 143
پاسخ : چگونه برنامه نویسی کنم؟
« پاسخ #14 : 03 فروردین 1392، 04:07 ب‌ظ »
با سلام

شوق و تمایل شما برای دانستن بیشتر قابل تحسینه. سعی می کنم کلیت رو برات شرح بدم تا بتونی دید بهتری نسبت به موضوع داشته باشی.

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

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

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

حال برای اینکه سایر نرم افزار ها بتوانند یک رابط گرافیکی داشته باشند می باید از طریق مجموعه ای از توابع که توسط سیستم عامل ارایه می شود (API) با سیستم عامل ارتباط برقرار کنند و خواسته های گرافیکی خود را بیان کنند. به طور مثال در سیستم عامل ویندوز تعدادی فایل سرآیند (Header) به زبان ++C وجود دارند که حاوی تعاریف این توابع هستند. برنامه شما می تواند این فایل ها را include کند و سپس با فراخوانی آن توابع در برنامه درخواست های خود از سیستم عامل را بیان کنید. مثلا توابعی برای اعمالی نظیر اختصاص یک پنجره به برنامه شما ، قرار دادن یک دکمه در مختصات خاصی از پنجره و ... در این فایل های سرایند به چشم می خورند. مجموعه این فایل های سرایند و توابعی که در اختیار شما قرار می گیرند بخشی از Win32 API در ویندوز را تشکیل می دهند. جالب است بدانید که معمولا کار با این توابع دشوار و زمانبر است به همین دلیل کتابخانه های دیگری به عنوان واسطه میان نرم افزار های خارجی و این API وجود دارند که استفاده از آن‌ها کار را برای شما ساده‌تر می کند.  کتابخانه MFC از مایکروسافت و VCL از بورلند نمونه‌ای از کتابخانه‌های گرافیکی هستند که برای سهولت کار برنامه نویسان طراحی شده‌اند اما با این حال این کتابخانه ها باز هم اعمال اصلی خود را توسط Win32 API به انجام می رسانند. حتی کتابخانه‌های NET. نیز بر همین اساس کار می کنند.

در سیستم عامل لینوکس نیز با ساختار مشابهی مواجه هستیم. اما متن باز بودن  این سیستم عامل و وجود تنوع در کتابخانه‌ها ممکن است در آغاز کمی گیج‌کننده به نظر رسد. لینوکس در‌ واقع نام کرنل  سیستم عامل است. کرنل اساسی‌ترین بخش از سیستم عامل است که استفاده از سخت‌افزار را برای سایر نرم‌افزار ها امکان پذیر می کند. بر روی کرنل بخش دیگری که وظیفه نمایش گرافیکی را بر عهده دارد قرار دارد که با نام X Window System شناخته می شود. تقریباً تمامی توزیع‌های لینوکس دارای این دو بخش هستند. اما بخش بعدی که بر روی این دو بخش قرار می‌گیرد محیط دسکتاپ است. همان‌طور که احتمالاً در توزیع‌های متفاوت دیده‌اید در سیستم عامل های مبتنی بر لینوکس محیط های دسکتاپ متنوعی مانند Gnome ، KDE ، ,Unity و … وجود دارند که هر کدام شکل و طراحی های خاص خود را دارا می باشند.

برنامه نویسی رابط گرافیکی در لینوکس نیز ساختاری مشابه دارد. شما می‌توانید از کتابخانه Xlib برای  نوشتن برنامه‌هایی با رابط گرافیکی X Window System استفاده کنید. اما طراحی رابط گرافیکی زیبا با این کتابخانه بسیار دشوار و زمان بر است به همین دلیل استفاده از کتابخانه‌های واسطه که  بسیاری از کارها را برای شما انجام می‌دهند  مناسب‌تر می باشد. کتابخانه‌هایی چون Qt (که محیط KDE نیز توسط آن ساخته شده) ، +GTK ( که محیط Gnome به کمک آن پیاده‌سازی شده) و یا WxWidgets می‌تواند پیاده‌سازی رابط گرافیکی نرم‌افزار شما را بسیار ساده‌تر کند.

به این ترتیب یک نرم‌افزار که دارای رابط گرافیکی می‌باشد از دو بخش اصلی تشکیل می‌شود که بهتر است تا حد امکان مستقل از یکدیگر حفظ شوند. یک قسمت هسته اصلی برنامه شما است که وظایف اصلی برنامه را پیاده‌سازی می‌کند و قسمت دیگر رابط کاربری آن است که می‌تواند با استفاده از هر کتابخانه گرافیکی که مناسب است پیاده‌سازی شود. مزیت مستقل بودن این دو قسمت از هم این است که شما می‌توانید تنها یک بار هسته اصلی برنامه خود را بنویسید و سپس بخش رابط گرافیکی را متناس به محیطی که باید در آن اجرا شود انتخاب کنید. بسیاری از برنامه‌هایی که بر روی چند سیستم عامل اجرا می‌شوند به همین شکل کار می کنند. یک هسته وجود دارد که رابط های گرافیکی مختلفی برای آن طراحی شده است. مثلاً یک برنامه حسابداری می‌تواند یک هسته اصلی داشته باشد که رابط MFC برای ویندوز ، رابط +GTK برای گنوم روی لینوکس ، رابط Modern UI برای اجرا روی تبلت های Windows RT و یا حتی رابط HTML5 برای استفاده بر روی وب داشته باشد.  البته  برخی کتابخانه‌ها مانند Qt به شما اجازه می‌دهند تا با استفاده از یک کتابخانه برنامه‌ای بنویسید که بر روی ویندوز ، لینوکس ، برخی موبایل ها و حتی وب قابل اجرا باشد.

وقتی کتابخانه گرافیکی خود را انتخاب کردید برای نوشتن چنین برنامه‌هایی ابتدا کتابخانه مورد نظر خود را نصب می کنید. سپس فایل‌های مورد نیاز را در برنامه خود include می‌کنید و آنگاه با استفاده از توابع و کلاس‌هایی که در اختیار شما قرار می‌دهند رابط گرافیکی خود را طراحی می کنید. تمامی این‌ کارها می‌تواند توسط یک ویرایشگر متن برای نوشتن کد ها صورت گیرد. اما همان‌طور که می‌دانید طراحی یک رابط گرافیکی و تعیین مختصات و رنگ‌های بخش‌های مختلف به این شکل کمی دشوار است. بنابراین می‌توان از نرم‌افزار های کمکی که برای کار با این کتابخانه‌ها ارایه می‌شود استفاده کرد. به طور مثال نرم‌افزار Qt Creator یا Anjuta به شما اجازه می‌دهند تا به صورت گرافیکی رابط مورد نظر خود را طراحی کنید. سپس این نرم‌افزار ها بر اساس رابطی که شما طراحی کرده‌اید کدی را تولید می‌کنند که کامپایل کردن آن دقیقاً رابط مورد نظر شما را ایجاد می کند. به این صورت به جای آنکه خودتان به صورت دستی توابع مورد نیاز ، مختصات ، کد رنگ‌ها و سایر موارد مورد نیاز را در برنامه خود کد نویسی کنید از کد تولید شده توسط این نرم‌افزار ها استفاده می کنید.

در کتابخانه Qt حتی می‌توان به جای نوشتن کدهای ++C برای طراحی رابط کاربری از زبان QML استفاده کرد که بسیار ساده‌تر نیز می باشد. به این ترتیب پیشنهاد شخصی من به شما این است که با استفاده از کتابخانه Qt و IDE Qt Creator رابط گرافیکی برنامه‌های خود را پیاده‌سازی کنید و در طول توسعه برنامه خود همواره سعی کنید هسته اصلی برنامه شما هیچگونه وابستگی به رابط کاربری نداشته باشد.

امیدوارم توضیحات فوق مفید واقع گردد. در صورت داشتن هرگونه سؤال خوشحال خواهم شد در صورت توان پاسخ دهم.
موفق باشید.
« آخرین ویرایش: 03 فروردین 1392، 04:12 ب‌ظ توسط r_m1232002 »