PDA

View Full Version : سوال: کتاب مناسب برای برنامه نویسی c++ در لینوکس



pckho0r
یک شنبه 03 آبان 1388, 11:58 صبح
برای اموزش برنامه نویسی C++‎ در لینوکس چه کتابی رو پیشنهاد می کنید ؟

نظرتون درباره این کتاب چیه : Sams Teach Yourself C++‎ for LINUX in 21 Days

برای برنامه نویسی در لینوکس بهتره از کجا و با چه کتاب و ابزاری شروع کنم ؟ ایا کتاب فارسی در این زمینه وجود داره ؟

Nima_NF
یک شنبه 03 آبان 1388, 12:42 عصر
باید مشخص کنید که از چه کتابخانه GUI می خواهید استفاده کنید،
Qt ، GTK و wxwidgets هر کدام در وب سایت خود یک کتاب رسمی تجاری دارند که بهترین منبع برای آن ها هست.
کلا منبع فارسی کم هست، در بخش Qt دوستان یک منبع فارسی قرار دادند.

ضمنا کتاب ذکر شده شما خیلی قدیمی هست.

pswin.pooya
یک شنبه 03 آبان 1388, 16:26 عصر
سلام

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

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

برای برنامه نویسی کرنل و مفاهیم سیستم عامل لینوکس کتاب

Beginning Linux Programming و Understanding the Linux Kernel, Third Edition

و به صورت پیشرفته کتاب

Advanced Linux Programming

پیشنهاد میشه. یه نکته دیگه اینه که اصلا سراغ منبع فارسی نگردید. اگر وجود داشته باشه بیشتر از سود براتون ضرر داره.

pckho0r
یک شنبه 03 آبان 1388, 19:26 عصر
باید مشخص کنید که از چه کتابخانه GUI می خواهید استفاده کنید،
Qt ، GTK و wxwidgets هر کدام در وب سایت خود یک کتاب رسمی تجاری دارند که بهترین منبع برای آن ها هست.
کلا منبع فارسی کم هست، در بخش Qt دوستان یک منبع فارسی قرار دادند.

ضمنا کتاب ذکر شده شما خیلی قدیمی هست.

خوب بهتره بگم که حدودآ چند ماهی با Visual c++ کار کردم و تا حدودی هم با برنامه نویسی win32 اشنایی پیدا کردم ولی تو این مدت به این نتیجه رسیدم که وابسته شدن به یک پلت فرم خاص (خصوصآ اگه مایکروسافتی باشه) در اینده میتونه دردسر ساز باشه ، علاقه شخصی خودم هم در زمینه برنامه نویسی هوش مصنوعی (دید ماشینی) و شبیه سازی رایانه ای است و تازه چند روزی هم هست که دارم با opengl کار می کنم ، اونطوری که من بررسی کردم به این نتیجه رسیدم که برای حوزه ای که من میخوام درش فعالیت کنم لینوکس گزینه بسیار مناسب تری هست تا ویندوز !

قبلآ با Code::Block در لینوکس کار کردم ولی خوب در حد برنامه های خیلی ساده که کمترین تراکنش رو با کرنل لینوکس داشتند ، فکر کنم برای اولین بار در این نرم افزار اسم های GTK و Wxwidgets به چشمم خورد ، گرچه نفهمیدم مربوط به چی میشن!


QT رو قبلآ دریافت و نصب کرده بودم (البته در ویندوز) ولی چندان ازش خوشم نیومد ، به نظر شما کدوم یکی از این کتابخانه جامعه برنامه نویسی گسترده تری داره و پشتیبانی مناسب تری ازش صورت می گیره ؟
(و البته استفاده از اون ساده تره !!)


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

در زمینه هوش مصنوعی یا شبیه سازی اغلب اوقات لازمه که نرم افزار مربوطه بر روی ماشینی اجرا بشه که امکان نصب ویندوز درش وجود نداشته باشه به همین دلیل گاهی اوقات لینوکس تنها گزینه قابل انتخابه !

ضمنآ ایا در لینوکس هم روال برنامه نویسی مشابه ویندوز هست ؟(API)

در مورد پرل هم ایا گزینه واجبیه ؟ پایتون چطوره ؟ (فکر کنم خیلی ساده تر از پرل باشه)

در مورد پرل هم باید بگم که واقعآ زبان چغر و بدسینتکسی هست !

__Genius__
یک شنبه 03 آبان 1388, 21:23 عصر
شخصاً برنامه نویسی ویندوز رو بیشتر از برنامه نویسی سیستمهای posix میپسندم .
ولی پیشنهاد میکنم برای لینوکس ++C و Python رو دنبال کنید ، python عالیه ، پروژه های بزرگی باهاش انجام شده ، هر روز پیشرفت میکنه و چیزی از زبانهای دیگه کم نداره .
از نظر قدرت python از جاوا هم یه سر و گردن بالاتره ، کلاً python عالیه ، دنبالشو بگیرید .
Kernel Module Programming و برنامه نویسی هسته هم باید عاشقش باشید وگر نه توی مباحثش هنگ میکنید ، چون مباحث درکشون بسیار مشکل هست.
کلاً ببینید علاقتون روی چی هست .

MIDOSE
یک شنبه 03 آبان 1388, 21:40 عصر
بهترین جواب:

قبل از اینکه به برنامه نویسی روی یک محیط فکر کنی باید بدونی کی هستی و قرار هست روی اون محیط چه کاری انجام بدی . بر اساس تصویری که از خودت و کارهات داری میتونی انتخاب کنیمتن (http://barnamenevis.org/forum/showpost.php?p=368813&postcount=2)

با توجه به جمله ی بالا قسمت هایی از مسئله برای شما گنگ هست، از این رو پیشنهاد می کنم بیشتر در مورد کارتون(به زبان اصلی) جستجو کنید و برای موارد نهایی مراجعه کنید و گرنه هرکسی(یکی مثل من) نظر شخصی خودش را ارائه می ده.

موفق باشید

PC2st
یک شنبه 03 آبان 1388, 21:44 عصر
بطور کلی در شرایطی باید بخوایین از لینوکس استفاده کنید که بخوایین از قدرت اون بحره خواصی رو بگیرید که نیازمندی این عمل هم آشنایی با زبانهایی مثل سی، سی++ و پرل هستش و باید تسلط کاملی رو کرنل و مفاهیم داشته باشد که به مشکل بر نخورید.آشنایی با کرنل لینوکس بسیار خوب است ولی برای برنامه‌نویسی در لینوکس، احتیاجی به آشنایی با آن نیست.


ضمنآ ایا در لینوکس هم روال برنامه نویسی مشابه ویندوز هست ؟(API)بله ولی کسی بطور مستقیم با API های سطح پایین سروکله نمی‌زند! در واقع Linux API سطح پایین‌تر از Win32 API است. کتابخانه X11 که بر روی اکثر توزیع‌ها نصب است و توسط بیشتر محیط‌های رومیزی (Desktop Environments) استفاده می‌شود هم به عنوان یک لایه‌ی سطح پایین‌تر از Win32 API در نظر گرفته می‌شود، سختی کار با X11 را تاحدودی می‌توانید مشابه استفاده از +GDI برای طراحی پنجره و دکمه و ... در ویندوز فرض کنید. بهترین حالت استفاده از کتابخانه‌هایی همچون Qt یا +Gtk یا غیره است که این کتابخانه‌ها را می‌توان یک لایه بالاتر از Win32 API در نظر گرفت و مشابه کتابخانه‌ای همچون MFC هستند.

اگر در جستجوی یک کتابخانه‌ی پر امکانات و ساده هستید، Qt بهترین گزینه است در غیر اینصورت، +Gtk گزینه‌ی خوبی است (من +Gtk را ترجیح می‌دهم زیرا به نظرم ساختار آن بهتر است). +Gtk در واقع برای زبان C است اما در ++C هم می‌توانید از آن استفاده کنید (البته باید به طریقی کد بزنید که بیش از حد ظاهر کدهای برنامه‌ی ++C را شبیه به ظاهر کدهای یک برنامه‌ی C نکند).


در مورد پرل هم ایا گزینه واجبیه ؟ پایتون چطوره ؟ (فکر کنم خیلی ساده تر از پرل باشه)یکی از مزیت‌های پرل در تفسیر و پردازش رشته‌ها و متن است ولی یادگرفتن آن واجب نیست. پایتون طیف وسیع‌تری را در بر می‌گیرد، شاید بتوان گفت که پایتون از پرل بهتر است.


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

اگر از استاندارد زبان ++C و از کتابخانه‌های Standard Library و STL به همراه سایر کتابخانه‌های cross-platform استفاده کنید، کدهای شما با تغییرات کم، بر روی اکثر سیستم‌عامل‌ها کامپایل و اجرا خواهد شد. برای داشتن یک برنامه که به راحتی بر روی هر سیستم‌عاملی کامپایل یا اجرا شود، می‌توانید از GNU Autotools هم استفاده کنید.

pswin.pooya
دوشنبه 04 آبان 1388, 00:06 صبح
خوب بهتره بگم که حدودآ چند ماهی با Visual C++‎ کار کردم و تا حدودی هم با برنامه نویسی win32 اشنایی پیدا کردم ولی تو این مدت به این نتیجه رسیدم که وابسته شدن به یک پلت فرم خاص (خصوصآ اگه مایکروسافتی باشه) در اینده میتونه دردسر ساز باشه ، علاقه شخصی خودم هم در زمینه برنامه نویسی هوش مصنوعی (دید ماشینی) و شبیه سازی رایانه ای است و تازه چند روزی هم هست که دارم با opengl کار می کنم ، اونطوری که من بررسی کردم به این نتیجه رسیدم که برای حوزه ای که من میخوام درش فعالیت کنم لینوکس گزینه بسیار مناسب تری هست تا ویندوز !

قبلآ با Code::Block در لینوکس کار کردم ولی خوب در حد برنامه های خیلی ساده که کمترین تراکنش رو با کرنل لینوکس داشتند ، فکر کنم برای اولین بار در این نرم افزار اسم های GTK و Wxwidgets به چشمم خورد ، گرچه نفهمیدم مربوط به چی میشن!


QT رو قبلآ دریافت و نصب کرده بودم (البته در ویندوز) ولی چندان ازش خوشم نیومد ، به نظر شما کدوم یکی از این کتابخانه جامعه برنامه نویسی گسترده تری داره و پشتیبانی مناسب تری ازش صورت می گیره ؟
(و البته استفاده از اون ساده تره !!)



در زمینه هوش مصنوعی یا شبیه سازی اغلب اوقات لازمه که نرم افزار مربوطه بر روی ماشینی اجرا بشه که امکان نصب ویندوز درش وجود نداشته باشه به همین دلیل گاهی اوقات لینوکس تنها گزینه قابل انتخابه !

ضمنآ ایا در لینوکس هم روال برنامه نویسی مشابه ویندوز هست ؟(API)

در مورد پرل هم ایا گزینه واجبیه ؟ پایتون چطوره ؟ (فکر کنم خیلی ساده تر از پرل باشه)


در مورد هوش مصنوعی: اگر کار شما تحقیقاتی هستش و با توجه به هوش مصنوعی بدون اون بهتره که از یک زبان استفاده کنید که مثل سی با نوع داده حساس نباشه. که نمونه های اون زبانهای اسکریپت و امثال آن هستش.

در مورد OpenGL: این API بهترین گزینه سه بعدی برای کارهای صنعتی هستش. OpenGL سازگاری بسیار خوبی با انواع دستگاه ها داره و دقت بسیاز بیشتری رو نسبت به DX داره. به نظر من یه انتخاب خوب به شمار میره.

در مورد کراس پلتفرم: اگر به امکانات سیستم عامل نیاز چندانی نداری و تنهابه یه مجموعه مثل فایالها، منوها و تایمر ها نیاز داری میتونی از کتابخانه های کراس پلت فرم مثل GTK، SDL، Boost و ... استفاده کنی. در کل استفاده از Boost رو به شدت پیشنهاد می کنم. در مورد GTK ,SDL هم هر دو سازگاری خوبی با OpenGL دارن.

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

pckho0r
دوشنبه 04 آبان 1388, 10:50 صبح
با راهنمایی هایی که دوستان کردند تقریبآ متوجه شدم که باید چه مسیری رو انتخاب کنم ، البته فعلآ ترجیح میدم که مدتی رو با این کتابخانه ها اجمالآ کار کنم تا نقاط قوت و ضعف هر کدوم رو شخصآ تجربه کنم.

ممنون و موفق باشید