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

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

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




نویسنده موضوع: آموزش برنامه نویسی c  (دفعات بازدید: 10021 بار)

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

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: آموزش برنامه نویسی c
« پاسخ #15 : 28 تیر 1389، 10:45 ب‌ظ »
آدم وقتی می خواد یه زبان برنامه نویسی یاد بگیره بهتره قوی ترینش رو یاد بگیره . وقتی c++ هست دیگه واسه چی c
قویترین؟ علتش چیه؟ هر کدوم مزایایی دارن. مثلا استعداد C++ توی باگ پروری :)‌ بینظیره. در حقیقت مثلا قابلیت سربارگذاری اپراتورها چیزیه که من بهش میگم تبدیل اپراتورها به باگ.
این مصاحبه انگلیسیه. ولی بخونیدش حتما واجبه، مصاحبه ای با آقای استراستوپ (درست نوشتم؟) درباره دلایل اینکه C++ رو ایجاد کرد.
http://harmful.cat-v.org/software/c++/I_did_it_for_you_all

خصوصا اینجا رو :
# Stroustrup: Well, one day, when I was sitting in my office, I thought of this little scheme, which would redress the balance a little. I thought 'I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers? Actually, I got some of the ideas from X10, you know, X windows. That was such a bitch of a graphics system, that it only just ran on those Sun 3/60 things.. They had all the ingredients for what I wanted. A really ridiculously complex syntax, obscure functions, and pseudo-OO structure. Even now, nobody writes raw X-windows code. Motif is the only way to go if you want to retain your sanity..
# Interviewer: You're kidding...?
# Stroustrup: Not a bit of it. In fact, there was another problem.. Unix was written in 'C', which meant that any 'C' programmer could very easily become a systems programmer. Remember what a mainframe systems programmer used to earn?

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: آموزش برنامه نویسی c
« پاسخ #16 : 28 تیر 1389، 10:49 ب‌ظ »
ببینید c++ توی شی گرایی واقعا قویه و c این قابلیت رو نداره . بعد این overloading اپراتورها واقعا جزو مزایای این زبان هست و نشان دهنده انعطاف پذیر بودن این زبانه . یکی از مهمترین دلایل برتری یک زبان انعطاف پذیری اونه .
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: آموزش برنامه نویسی c
« پاسخ #17 : 28 تیر 1389، 11:06 ب‌ظ »
قبول، قرار بود این قابلیت بینظیر C++ باشه. ولی خوب، مثلا گوگل چی درباره این قابلیت میگه؟ اینجا رو بخونید (این صفحه قواعد کدنویسی در گوگل رو توضیح میده)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Operator_Overloading#Operator_Overloading

چون از اونطرف ممنوعه دیدنش (مگه فیل کش داشته باشید)‌ اینه متنش :

نقل‌قول
Operator Overloading
link ▽
Do not overload operators except in rare, special circumstances.

Definition: A class can define that operators such as + and / operate on the class as if it were a built-in type.

Pros: Can make code appear more intuitive because a class will behave in the same way as built-in types (such as int). Overloaded operators are more playful names for functions that are less-colorfully named, such as Equals() or Add(). For some template functions to work correctly, you may need to define operators.

Cons: While operator overloading can make code more intuitive, it has several drawbacks:

    * It can fool our intuition into thinking that expensive operations are cheap, built-in operations.
    * It is much harder to find the call sites for overloaded operators. Searching for Equals() is much easier than searching for relevant invocations of ==.
    * Some operators work on pointers too, making it easy to introduce bugs. Foo + 4 may do one thing, while &Foo + 4 does something totally different. The compiler does not complain for either of these, making this very hard to debug.

Overloading also has surprising ramifications. For instance, if a class overloads unary operator&, it cannot safely be forward-declared.

Decision:

In general, do not overload operators. The assignment operator (operator=), in particular, is insidious and should be avoided. You can define functions like Equals() and CopyFrom() if you need them. Likewise, avoid the dangerous unary operator& at all costs, if there's any possibility the class might be forward-declared.

However, there may be rare cases where you need to overload an operator to interoperate with templates or "standard" C++ classes (such as operator<<(ostream&, const T&) for logging). These are acceptable if fully justified, but you should try to avoid these whenever possible. In particular, do not overload operator== or operator< just so that your class can be used as a key in an STL container; instead, you should create equality and comparison functor types when declaring the container.

Some of the STL algorithms do require you to overload operator==, and you may do so in these cases, provided you document why.

See also Copy Constructors and Function Overloading.

اون تیکه اولش رو که بولد کردم ببینید (البته من خودم c++ کار میکنم. ولی این حرف رو قبول ندارم که چون C++ بعد از C اومده از C بهتره. امروز دو ساعت داشتم با یکی بحث میکردم که GIT دلیل نمیشه که SVN رو بگذاریم کنار. هر کدوم یه جایی کاربرد داره، در خیلی موارد SVN بهتر هم هست الانم گویا دچار همین بحث شدم برای C و C++ )

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: آموزش برنامه نویسی c
« پاسخ #18 : 28 تیر 1389، 11:12 ب‌ظ »
+1

واقعا توجیه شدم . ممنون از توضیحاتتون . بله هر کدوم در جای خود کاربردهایی دارند و هر کی متناسب با کاری که از زبان می خواد اونو یاد می گیره . ولی در کل c++ قابلیت هایی داره که c در مقابلشون حرفی برای گفتن نداره از جمله شی گرایی و ...
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین eMan

  • High Hero Member
  • *
  • ارسال: 1366
  • جنسیت : پسر
پاسخ به: آموزش برنامه نویسی c
« پاسخ #19 : 29 تیر 1389، 12:10 ق‌ظ »
شما برای کسی که میخواد برنامه نویسی رو یاد بگیره
حالا برای کنجکاوی و اینکه مثلا از لینوکس بیشتر سر در بیاره و خلاصه برای یه کاربر عادی کدوم رو پیشنهاد میکنید ؟
منتظر نظراتتون هستم مخصوصا نظر دو دوست خوبم فرود جان و علی جان
جهت تماس با بنده یا از طریق فروم آرچ و یا از طریق وبلاگ آرچ بوک و یا از طریق ایمیل با بنده تماس بگیرید

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: آموزش برنامه نویسی c
« پاسخ #20 : 29 تیر 1389، 12:55 ق‌ظ »
اگه برای کنجکاویه، یه زبون سطح بالاتر بهتره. تو ایران پایتون زیاد طرفدار داره (ولی من هنوز نفرت دارم از اینکه فاصله خالی جزئی از قواعد زبان باشه) و اگه راستشو بخواید بدجوری شیفته Ruby شدم.
به هر حال Perl, Python , Ruby به نظر من خیلی بهترن برای اینطور کارها. خیلی سریع به نتیجه میرسی، کاملا از سیستم عامل مستقل هستن و ....

آفلاین the-light

  • Jr. Member
  • *
  • ارسال: 71
پاسخ به: آموزش برنامه نویسی c
« پاسخ #21 : 29 تیر 1389، 01:15 ق‌ظ »
پیشنهاد من کتاب « زبان برنامه نویسی C »
نویسنده: ریچی

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

داستان نویس مباش، آنچنان باش کز تو داستان‌ها خلق کنند!

آفلاین مهدی...

  • Hero Member
  • *
  • ارسال: 997
  • جنسیت : پسر
  • http://Mearaji.ir
    • وبلاگم
پاسخ به: آموزش برنامه نویسی c
« پاسخ #22 : 29 تیر 1389، 06:49 ق‌ظ »
دوست عزیز آقای یعقوبی! پیشنهاد میکنم این متن رو از وبلاگ امیرضای عزیز بخونی...
چرا ++C جایگزین C نشد؟

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: آموزش برنامه نویسی c
« پاسخ #23 : 29 تیر 1389، 03:11 ب‌ظ »
ممنون آقا " مهدی... "  واقعا به اطلاعاتم اضافه شد . ببینید مثلا شما می خواید برنامه نویسی یه پروژه عظیم رو رهبری کنید . مطمعنا شما خودتون تنهایی اینکار رو نمی کنید ، چند نفر برنامه نویس استخدام می کنید . حالا شما توی برنامه نویسی c راحت تر تقسیم کار می کنید یا توی c++ . شما توی c++  می تونید به راحتی به هر کی یه کلاس بدید و هر کی عملیات هاش رو توی اون انجام بده . و در جواب اون آقا که گفتند private به چه دردی می خوره باید بگم که توی همین مثال قبل برنامه نویس A توی برنامه اش از متغیر X استفاده میکنه . بعد دقیقا برنامه نویس B هم از همون اسم برای یکی از متغیرهاش استفاده میکنه به همین دلیل ....
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: آموزش برنامه نویسی c
« پاسخ #24 : 29 تیر 1389، 03:46 ب‌ظ »
ممنون آقا " مهدی... "  واقعا به اطلاعاتم اضافه شد . ببینید مثلا شما می خواید برنامه نویسی یه پروژه عظیم رو رهبری کنید . مطمعنا شما خودتون تنهایی اینکار رو نمی کنید ، چند نفر برنامه نویس استخدام می کنید . حالا شما توی برنامه نویسی c راحت تر تقسیم کار می کنید یا توی c++ . شما توی c++  می تونید به راحتی به هر کی یه کلاس بدید و هر کی عملیات هاش رو توی اون انجام بده . و در جواب اون آقا که گفتند private به چه دردی می خوره باید بگم که توی همین مثال قبل برنامه نویس A توی برنامه اش از متغیر X استفاده میکنه . بعد دقیقا برنامه نویس B هم از همون اسم برای یکی از متغیرهاش استفاده میکنه به همین دلیل ....
الان چند نفر دارن روی پروژه ای مثل هسته لینوکس کار میکنن؟ اونهم C هستش. کار تیمی سختی های خودشو داره اما نشدنی نیست.

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: آموزش برنامه نویسی c
« پاسخ #25 : 29 تیر 1389، 03:51 ب‌ظ »
خوب من که نگفتم کار گروهی رو نمیشه با c انجام داد میگم اگه با c++ انجام بشه خیلی راحت تره . حالا دوباره نگید خوب برنامه نویسای حرفه ای چرا سختی میکشن ولی از c استفاده می کنن چونکه اتفاقا این سوال منم هست و هنوز به جوابش نرسیدم ولی باز میگم که کار گروهی با c++ راحت تره .
ولی اصلا ما چرا داریم بحث می کنیم خود کسی که می خواست برنامه نویسی یاد بگیره باید بیاد یکی رو انتخاب کنه . چون فکر کنم دعوای بین c و c++ منتهی میشه به آیا اول مرغ بود یا تخم مرغ ؟!!
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین مهدی...

  • Hero Member
  • *
  • ارسال: 997
  • جنسیت : پسر
  • http://Mearaji.ir
    • وبلاگم
پاسخ به: آموزش برنامه نویسی c
« پاسخ #26 : 29 تیر 1389، 04:50 ب‌ظ »
دوستان منو چه به برنامه نویسی!! واسه اطلاعات عمومیتون معرفی کردم ;)

آفلاین fzerorubigd

  • Hero Member
  • *
  • ارسال: 758
  • جنسیت : پسر
  • گوگل دوست خوبیه، فقط باید ازش بپرسی
    • یادداشتهای بیت نیمسوز
پاسخ به: آموزش برنامه نویسی c
« پاسخ #27 : 29 تیر 1389، 05:44 ب‌ظ »
خوب من که نگفتم کار گروهی رو نمیشه با c انجام داد میگم اگه با c++ انجام بشه خیلی راحت تره . حالا دوباره نگید خوب برنامه نویسای حرفه ای چرا سختی میکشن ولی از c استفاده می کنن چونکه اتفاقا این سوال منم هست و هنوز به جوابش نرسیدم ولی باز میگم که کار گروهی با c++ راحت تره .
ولی اصلا ما چرا داریم بحث می کنیم خود کسی که می خواست برنامه نویسی یاد بگیره باید بیاد یکی رو انتخاب کنه . چون فکر کنم دعوای بین c و c++ منتهی میشه به آیا اول مرغ بود یا تخم مرغ ؟!!
تقریبا ۱ هزارم درصد مشکلات درباره این چیزهاست. بیشترین مشکلات چیزای دیگست. استیل مشترک برای کد نویسی منو فقط تو همین پروژه تا به حال سه مرتبه تا مرز جنون برده. حتی مشکل Indent گذاری برای کد عذاب آوره که با یه نفر کار کنی که این چیزا رو بلد نیست. وگرنه کد نویسی اصلا مشکلی نیست، البته اگه افرادی که باهاشون کار میکنی قبلا برنامه نویسی یا دست کم کارای خودشونو بلد بوده باشن.
من برای اینکه پروژه هام متمرکزن و معمولا یه تیم متمرکز دارم از SVN استفاده میکنم. یه جوجه تازه به دوران رسیده تازه اومده تو گروه، گیر داده که SVN قدیمیه ۲ روز تیم رو از پروژه انداخته عقب با بحثهای بیخود در صورتی که حتی قواعد نام گذاری اولیه متغیرها رو بلد نیست. بدیشم اینه که خواهرزاده دوستمه و  این کلی بدتر از اونیه که شما میگید.

آفلاین RCLord

  • Sr. Member
  • *
  • ارسال: 411
  • جنسیت : پسر
    • پشت یک لحظه سکوت
پاسخ به: آموزش برنامه نویسی c
« پاسخ #28 : 29 تیر 1389، 09:10 ب‌ظ »
منم با چنین افرادی یه زمانی سر کله میزدم . اون فکر می کرد خیلی بارشه ولی .... . بیخیال کلا از بحث تاپیک دور شدیم به هر حال " صلاح مملکت خویش خسروان دانند "  باید برنامه یاد گیرنده ببینه با چه برنامه ای حال میکنه . ما خوبی ها ، بدی ها و برابری های این دو زبان رو گفتیم حالا .......... << اما شاکرا ، اما کفورا >>
« هرگونه انتقاد سازنده ای را با کمال میل قبول میکنم »

آفلاین eMan

  • High Hero Member
  • *
  • ارسال: 1366
  • جنسیت : پسر
پاسخ به: آموزش برنامه نویسی c
« پاسخ #29 : 30 تیر 1389، 12:37 ق‌ظ »
از این بحث شما بنده خیلی استفاده کردم
ممنون
جهت تماس با بنده یا از طریق فروم آرچ و یا از طریق وبلاگ آرچ بوک و یا از طریق ایمیل با بنده تماس بگیرید