PDA

View Full Version : سوال: برای یادگیری زبانهای خانوادهC باید از کدام شروع کرد؟



Omid707
دوشنبه 04 آبان 1388, 00:51 صبح
با سلام خدمت اساتید
سوالی داشتم که احتمالا به نظرتون تکراریه من به تازگی به برنامه نویسی علاقه مند شدم و برای انتخاب یک زبان مناسب کلی تحقیق کردم
تا جاییکه دیدم و خوندم اکثرا با هم کل کل میکنند:بامزه:هرکس در باره زبانی که بهش مسلطه تعصب داره و بقیه زبان ها رو رد میکنه با اینکه شناختی ازشون نداره
ولی با همه انها یه چیز مهمی دستگیرم شدکه انتخاب زبان به کاربردو نیازبستگی داره:تشویق:
با توجه به هدفم که یادگیره برنامه نویسی در حد طراحی یه سیستم عامل یا نوشتن یه موتور گرافیکی و خلاصه کارای اساسی ومشکل از این دست هستش زبان هایC رو انتخاب کردم:خجالت:
اما باید از کدومشون شروع کنم C یا ++C ؟
شاید چون زبان Cسطح میانی و نزدیک به زبان ماشینه سختتر باشه:اشتباه:
پیشاپیش از پاسخ سبزتون سپاس گذارم

pswin.pooya
دوشنبه 04 آبان 1388, 22:35 عصر
توی بحث زبانهای برنامه نویسی، زبانها به نسلها و دسته های خاص تقسیم بندی میشن. هر زبان با هدف خاصی به وجود اومده و برای کاربرد خاصی طراحی شده، توی این مورد زبانهای نسل چهارم ( اگه اشتباه نکم) زبانهایی هستند که به صورت همه منظوره طراحی شدن از جمله این زبانها میشه به C و پاسکال اشاره کرد. این دو زبان رو میشه برای تمامی کاربرها استفاده کرد. زبان C بر خلاف پاسکال که هدف آموزشی و آسونی رو دنبال می کرد. زبانی بود که از طرف برنامه نویسها برای برنامه نویسها طراحی شده بود. این زبان به جای مفوم های کلی مثل رشته، گرافیک، اینترفیس بیشتر به مفاهیم سیستمی و برنامه نویسی تاکید داره همین مطلب هم موجب میشه برای افرادی که از سیستم کامپیوتری چیزی نمی دونن و یا اطلاعات سیستمی اونها کمه این زبان بسیار دشوار به نظر برسه.

خب. با گذشت زمان زبانی دیگه ای به نام C++ به صورت یک super set و یک لابه به زبان سی افزوده شد. C++ رفتاری مشابه زبانهای شی گرا رو مطرح میکرد. از اونجا که شی گرایی ما بین مفاهیم سیستمی ( معماری کامپیوتر ) جایی نداشت این زبان از طرف عده زیادی از برنامه نویسان حرفه ای C رد میشد. اما با گذشت زمان این مساله رنگ کمتری رو به خودش گرفت.

زبان C وC++ کاملا به سیستم و مفاهیم اون نزدیک هستند و هر چه قدر شما به این مطالب آگاهی داشته باشین موجب میشه که این دو تا زبون براتون آشناتر و بهتر جلوه کنن تا جایی که متوجه میشین برای کارهای خاص تنها راه استفاده از اونها هستش. به طور کلی وقت یه برنامه نویس صحبت از زبان میکنه باید زبانی رو انتخاب کنه که بیشترین قدرت رو بهش میده. این مواردی هستش که میشه گفت فقط با C و یا فقط به طور اصولی با C وC++ قابل پیاده سازی هستش:

1- ساخت سیستم عامل ها ( هم با اسمبلی و هم با C میشه ساخت)
2- ساخت درایورها ( نمیشه گفت فقط با C/C++ ولی 99.99% اونها با این زبونها ساخته میشن)
3 - ساخت موتورهای بازی ( موتورهای بازی اصولی سرعت زیاد رو میخوان و لازمه اینکار استفاده از تمامی امکانات سیستم lمثل SSE هستش که برای کار با اون به اسمبلی نیار هست که فقط میشه گفت زبان C/C++ این قابلیت رو به برنامه نویس میده که اسمبلی رو هم کنار کدش داشته باشه)

یادتون باشه که هر و اما هر برنامه ای رو که با دات نت و زبانهای دیگه مثل دلفی بشه نوشت میشه به کمک C وC++ نوشت ولی هر برنامه ای رو که با C و C++ بشه نوشت به کمک دات نت و یا دلفی و یا جاوا نمیشه نوشت.

برای نوشتن سیستم عامل شما باید ( بهتره و توصیه میشه ) که از C استفاده کنین.
برای نوشتن بازی و موتور بازی شما باید ( بهتره و توصیه میشه ) که از C++ استفاده کنین.

نکته دیگه ای که در مورد C++ هستش اینه که اون شما رو مجبور به نوشتن برنامه با یه قاعده خاص نمیکنه و شما میتونین طرز خودتون رو بر دارید. حتی میتونید اصاصی ترین قسمت یعنی اسم تابع main رو هم عوض کنید و یا حتی نحوه ورود به برنامه رو تغییر بدین. شما میتونین کاملا ساختار یافته، کاملا شی گرا، کامپوننت گرا ( این یکی دیگه صوتی هستش ولی یه حالت شی گرایی هست) و یا ترکیبی از اونها رو استفاده کنید. شما میتونید اون رو روی هر سخت افزارهای مختلف مثل میکروهای AVR و ARM استفاده کنید.

این مفهوم قدرت هستش.

اما....

pswin.pooya
دوشنبه 04 آبان 1388, 22:41 عصر
اما در مورد زبانهای دات نت مثل C# قضیه فرق میکنه. این زبون به طرز قابل ملاحضه ای برای تولید برنامه های کاربردی مثل پایگاه های داده طراحی شده که تو این مورد هم کاملا موفق هستش اما در مورد مواردی مثل بازی و یا موارد سیستمی بدترین تجربه ها و پیشینه ها رو داره و قابلیتهای اون رو میشه به قابلیتهای زبانهای Qbasic و یا کوبول در زمان خودشون تشبیه کرد. با تمام تلاشهای مایکروسافت این زبان ها نتونستن توی عرصه بازی سازی حرفه ای و حتی توی عرصه ساخت برنامه های کاربردی کاملا حرفه ای وارد شن. چون اونها محکوم به ویندز ( یعنی اشتباه بزرگ) شدن.

اگر میخوایین برنامه کاربردی بنویسین به سراغ دات نت برین ولی اگر میخواین کار سیستمی، کار گرافیکی و یا ساخت بازی و موارد مثل اون رو انجام بدید بدون تردید به سراغ C++ برین و به هیچ مورد دیگه ای فکر نکنین.

Omid707
سه شنبه 05 آبان 1388, 12:53 عصر
pswin.pooya (http://barnamenevis.org/forum/member.php?u=34511) عزیز
خیلی ممنون از توضیحاتی که دادین:لبخندساده:
البته من هم بعد از یک ماه تحقیق به همین نتایج رسیده بودم اما گیرم اینجاست که از کدومشون شروع کنم چون برای اهدافم باید چند تا زبان یاد بگیرم به همین علت میخوام ترتیب یادگیری رو بدونم که کارم آسون تر بشه و الا میشه از یه طرف شروع کرد و هرسه تا رو یاد بگیرم:متفکر:

pswin.pooya
سه شنبه 05 آبان 1388, 13:23 عصر
گفتم که به زمینه کاریت بستگی داره. اگر میخوای بری تو خط بازی C++ و اگر میخوای بری تو خط سیستم عامل باید C کار کنی.

من خودم اول C رو خوندم اما چندان نرفتم دنبالش و فقط خود زبان و کتابخونه sdio و کار با فایلها رو داخل اون یاد گرفتم و بعدش هم رفتم سراغ C++ و بر عکس C، C++ رو دارم با جزئیات کامل یاد میگیرم. الان تقریبا 4 سال میشه که دارم با CPP کار می کنم و میتونم بگم که واقعا از این زبون لذت میبرم.

کلا جالبه. تعداد خیلی زیادی از برنامه نویسان سیستم عامل به بازی سازی و تعداد زیادی از برنامه نویسهای بازی به ساخت سیستم عامل علاقه دارن!!!!