# سیستم عامل ها > سیستم عامل های آزاد > توسعه‌ی لینوکس و نرم افزارهای آزاد >  شروع برنامه نویسی لینوکس
می خواستم در مورد انواع محیط های برنامه نویسی در لینوکس به حصوص ویژوال آن توضیح دهید 
با تشکر

----------


## hosseinzadeh

با سلام
محیطهای برنامه نویسی مختلفی تحت لینوکس وجود دارند.اما چون خود کرنل با سی نوشته شده زبانهای مبتنی بر سی ارجحیت بیشتری دارند.
زبانهای برنامه نویسی معروف:
GCC:(Gnu C Compiler) در حقیقت کامپایلر اصلی لینوکس است.و به طور خود کار با لینوکس نصب می شود.فقط کافی است برنامه خود را در یک فایل متنی نوشته و در خط فرمان دستور کامپایل آن را صادر کنید.
Qt:کتابخانه های C++‎ هستند که توسط شرکت نروژی TrollTech توسعه داده شده اند.و برای ساخت محیطهای گرافیکی تحت لینوکس و ویندوز به کار می روند.مشخص ترین برنامه ای که با این زبان نوشته شده KDE است.
Kdevelop:محیط توسعه ویژوال KDE است که بر پایه Qt بنا شده است.
Kylix:در مورد این زبان به طور کامل در فروم تخصصی آن توضیح داده شده.
Gtk+:کامپایلر سی که محیط معروف GNOME با آن نوشته شده.از خاصیت شیء گرایی پشتیبانی نمی کند.      
Tcl/Tk :یکی از محیطهای توسعه ویژوال بر پایه سی است.
زبانهای دیگر همچون Java ،LISP  و پاسکال نیز کامپایلر مخصوص خود را دارند.
از موارد بالا نسخه های تجاری QtوKylix پولی هستند.

----------

و پیشنهاد شما؟

----------


## hosseinzadeh

والا من پیشنهاد خاصی ندارم.ولی مطمپن باشید هر برنامه ای در لینوکس با C و Perl در ارتباط است.پرل یک زبان برنامه نویسی قدرتمند برای وب است.همچنین برای وب PHP هم زبان خوبی است که نمونه آن را در این سایت می بینید.به هر صورت با نسخه لینوکس شما بسته ای به نام Books منتشر می شود که حاوی چند ککتاب مجانی برای لینوکس است.درآن کتابی به نام Programmers  Guide وجود دارد می توانید از آن استفاده کنید.من هم سعی می کنم چند نمونه برنامه از هر زبان برایتان بگذارم.
با تشکر

----------


## hosseinzadeh

این هم نمونه برنامه ها:
GTK:
main &#40;int argc, char *argv&#91;&#93;&#41;
&#123;
        GtkWidget *window;
        GtkWidget *button;
        gtk_init &#40;&amp;argc, &amp;argv&#41;;

        window = gtk_window_new &#40;GTK_WINDOW_TOPLEVEL&#41;;

        gtk_signal_connect &#40;GTK_OBJECT &#40;window&#41;, "delete_event",
                            GTK_SIGNAL_FUNC &#40;delete_event&#41;, NULL&#41;;

        gtk_signal_connect &#40;GTK_OBJECT &#40;window&#41;, "destroy",
                            GTK_SIGNAL_FUNC &#40;destroy&#41;, NULL&#41;;

        gtk_container_border_width &#40;GTK_CONTAINER &#40;window&#41;, 10&#41;;

       button = gtk_button_new_with_label &#40;"Hello World"&#41;;

        gtk_signal_connect &#40;GTK_OBJECT &#40;button&#41;, "clicked",
                           GTK_SIGNAL_FUNC &#40;hello&#41;, NULL&#41;;
        gtk_signal_connect_object &#40;GTK_OBJECT &#40;button&#41;, "clicked",
                                   GTK_SIGNAL_FUNC &#40;gtk_widget_destroy&#41;,
                                   GTK_OBJECT &#40;window&#41;&#41;;
        gtk_container_add &#40;GTK_CONTAINER &#40;window&#41;, button&#41;;

        gtk_widget_show &#40;button&#41;;

        gtk_widget_show &#40;window&#41;;

        gtk_main &#40;&#41;;

        return 0;
&#125;
Qt
#include &lt;qapplication.h>
#include &lt;qpushbutton.h>


int main&#40; int argc, char **argv &#41;
&#123;
    QApplication a&#40; argc, argv &#41;;

    QPushButton hello&#40; "Hello world!", 0 &#41;;
    hello.resize&#40; 100, 30 &#41;;

    a.setMainWidget&#40; &amp;hello &#41;;
    hello.show&#40;&#41;;
    return a.exec&#40;&#41;;
&#125;
Python:

from Tkinter import *

class Application&#40;Frame&#41;&#58;
    def say_hi&#40;self&#41;&#58;
        print "hi there, everyone!"

    def createWidgets&#40;self&#41;&#58;
        self.QUIT = Button&#40;self&#41;
        self.QUIT&#91;"text"&#93; = "QUIT"
        self.QUIT&#91;"fg"&#93;   = "red"
        self.QUIT&#91;"command"&#93; =  self.quit

        self.QUIT.pack&#40;&#123;"side"&#58; "left"&#125;&#41;

        self.hi_there = Button&#40;self&#41;
        self.hi_there&#91;"text"&#93; = "Hello",
        self.hi_there&#91;"command"&#93; = self.say_hi

        self.hi_there.pack&#40;&#123;"side"&#58; "left"&#125;&#41;

    def __init__&#40;self, master=None&#41;&#58;
        Frame.__init__&#40;self, master&#41;
        self.pack&#40;&#41;
        self.createWidgets&#40;&#41;

app = Application&#40;&#41;
app.mainloop&#40;&#41;

----------

دست شما درد نکنه ردهت 9 هم کتاب داره؟

----------


## hosseinzadeh

دقیقا نمی دانم.
من از SuSE 8.0 استفاده می کنم.

----------


## kia1349

بله یک کتاب داره به فارسی(ترجمه شده با cd)
قیمت 35000 ریال
میدان انقلاب دومین مغازه در خیابان اردیبهشت
البته طبق اخبار جدید پلاتفرم linux redhat داره کلا تغییر میکنه
اخبار جدید را از سایتهای www.redhat.com و www.linuxiran.org بگیرید

----------


## hosseinzadeh

یکی از تغییرات اساسی در RH باز نویسی موتور گرافیکی آن با استفاده از Fedora است.و از این به بعد ردهت به جای SawFish از Fedora استفاده خواهد کرد.
آدرس:fedora.redhat.com

http://www.dark-hill.co.uk/fedora/screenshot-5.html

----------

دو سوال
1)اقای کیا کتابه در مورد ردهته یا برنامه نویسیش
2)آقای حسین زاده یکی از دوستانم می گوید کتاب Linux Advanced Programming  در اینترنت مجانی موجود است
شما دیده اید؟
در ضمن من لینوکس رو نصب کردم و تا حالا که دیدم از ویندوز راحت تر بوده حالا چرا می گن سخته؟

----------


## shaniaki

> دو سوال
> ... یکی از دوستانم می گوید کتاب Linux Advanced Programming  در اینترنت مجانی موجود است
> شما دیده اید؟


http://www.advancedlinuxprogramming.com
یک جمله از من: بسیار کتاب توپی است. 8) 




> در ضمن من لینوکس رو نصب کردم و تا حالا که دیدم از ویندوز راحت تر بوده حالا چرا می گن سخته؟


اگر نصب نسخه های 6 به قبل را انجام می دادید اینقدر ها هم راحت نبود. :wink: 

یه عشق برنامه نویسی خفن

----------

خوب کم کم بزرگ شدن دیگه :D

----------

ببخشید باید هر فصلش جدا جدا بیاره دان لود نمیشه کرد همشو با هم؟

----------


## hosseinzadeh

در مورد کتابها که آقای Shaniaki فرمودند.اما در مورد لینوکس بعد از شناخته شدن لینوکس به عنوان یک سیستم عامل پایدار تلاشهای زیادی برای آسان سازی مراحل نصب آن شد.شرکت ردهت که از قدیمی ترین تولید کننده های لینوکس است در ابتدا با ارائه نرم افزار DiskDriud گام بلندی برداشت.شرکت SuSE هم بعد از نسخه 7 ابزاری به نام YaST (Yet Another Installer ) عرضه کرد که به وسیله آن نصب لینوکس بسیار آسان شد.مخصوصا این که ابزار AutoPartition در آن گنجانده شد که از آخرین پارتیشن منطقی ویندوز پارتیشنهای Root وswap را جدا می کرد و آنها را فرمت می کرد.همچنین Mandrake هم نصب بسیار ساده ای دارد .البته تمام اینها (همانطور که آقای Shaniaki  فرمودند) از نسخه های سال 2001 به بعد انجام شد.و بیشتر  تلاشها صرف ساده ساختن پارتیشن بندی بود. :lol:

----------


## hosseinzadeh

کتابهایی که گفتم در سایت Rpmfind موجود است:
http://www.rpmfind.net/linux/rpm2htm...&system=&arch=

----------

آقا ببخشید من جواب سوال قبلیمو نگرفتم
این کتاب linux advanced programming  رو باید هر فصلش جدا بگیرم نمیشه با هم دان لودش کرد؟

----------


## shaniaki

با عرض ادب:
قبلا جدا جدا نبود ولی مثل اینکه الان فقط اینجوریش هست.
اینطوری بهتره نیست؟ همش 10-12 تا فایل هم نمیشه همشونم کوچیک.

یه عشق برنامه نویسی خفن

----------


## SSP_Software_team

آره اینطوری خیلی بهتره :wink:

----------


## M0TR!X

سلام.

فارسی این کتاب موجورد نیست ؟  Linux Advanced Programming

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

----------


## vangelis_persian

من خودم تا به حال این کتاب رو مطالعه نکردم،

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

----------

