سیزده پاسخ به اینکه «چرا سی نحس نیست؟»

Screenshot from 2015-11-08 10-03-33

سوال امروزمون اینه:

جادی من این ترم برنامه نویس گرفتم ++C ولی خیلی سخته و یه سوال این زبان برنامه نویسی به چه دردی میخوره وقتی مثلا #C هست چرا باید برنامه نویسی با اون یاد گرفت

اولین جواب که اینه «چون استادتون گفته» (: به هرحال یک جایی هستی که پذیرفتی اونجا باشی و استاد هم داره یک چیزی درس می ده و تو هم باید بخونی و امتحانش بد‌ی (: اما این همه جواب نیست و خیلی‌های دیگه که اصولا تو مدرسه و دانشگاه نیستن هم می‌پرسن که «چرا باید سی /سی پلاس پلاس یاد گرفت». بذار در چندین نگاه مختلف جواب بدم، البته با تکیه بر سی. منم خیلی سی پلاس پلاس کار نیستم.

  1. سی یک زبان پایه‌ است. پسرخاله من گیتار می‌زنه و دخترهای اطرافش حسابی از این مساله خوشحالن. بسیار هم خوب می‌زنه و خیلی هم سریع آهنگ‌های جدید رو یاد میگیره. اون یکی پسر خاله‌ام هم علاقمند شد همین مهارت رو داشته باشه و با تبلچرهای گیتار شروع به تمرین کرد ولی هیچ وقت خیلی خوب نشد. فرقشون چیه؟ اولی مدت‌ها گیتار کلاسیک زده و نت خونی و غیره بلده و دومی فقط با هدف کارهای باحال و نتیجه گرفتن سریع، با تبلچر پیش می ره. این فرق بین کسی که پایه‌ای مثل سی رو بلده و بعد با پایتون برنامه می‌نویسه و کسی که سعی می‌کنه با یاد گرفتن جانگو یک سایت باحال بسازه دیده می‌شه چه برسه به کسی که سی بلده و سی شارپ می‌نویسه و کسی که فقط سی شارپ بلده.
  2. سی زبانی سطح پایینتر از جاوا و پایتون و سی شارپ است که به شما یاد می‌ده سخت‌افزار و سی پی یو چطوری کار می‌کنن و حافظه به چه شکلی مدیریت می‌شه. اگر قراره از برنامه نویسی درک خوبی داشته باشین، دونستن این چیزها کمک بسیار زیادی بهتون می‌کنه.
  3. بعضی معتقد هستند اگر قراره توی برنامه نویسی پیشرفت کنین، لازمه آبسترکشنی یک لایه پایین‌تر از زبان اصلی‌تون رو درک کنین. مثلا اگر پایتون و جاوا و سی پلاس پلاس می نویسین خوبه سی بدونین. اگر سی شارپ می نویسین باید سی پلاس پلاس رو بلد باشین و اگر سی می‌نویسین باید اسمبلی بدونین. اینجوری شیوه کارکرد زبان برنامه نویسی خودتون رو درک می‌کنین. درست مثل کسی که اگر قراره رانندگی حرفه ای کنه باید بدونه کلیت موتور چطوری کار می‌کنه و اگر قراره طراح موتور باشه باید از فیزیک مکانیک هم درک داشته باشه و اگر قراره فیزیک مکانیک رو پیش ببره، لازمه در مورد لایه پایینی (مثلا کوانتوم) اطلاعات داشته باشه.
  4. سی سریع است. برنامه خوبی که به سی نوشته بشه تقریبا از نظر سرعت همه زبان‌های سطح بالاتر رو پشت سر می‌ذاره. اگر قراره چیزی بنویسیم که اولویت اصلی‌اش سرعت باشه، سی یک گزینه بسیار خوبه.
  5. سی بهینه است. اگر قراره برای یک یخچال، تلویزیون و … برنامه نویسی کنیم یا از سیستم‌های امبد استفاده کنیم یا میکروپروسسور‌ها رو کنترل کنیم، سی یکی از بهترین گزینه‌ها است. تقریبا هیچ زبون دیگه ای (به جز اسمبلی) نیست که بتونه با محدودیت‌هایی مثل «حافظه چهار کیلوبایت» کنار بیاد.
  6. سی تقریبا در همه جا حاضره. در حال حاضر محبوب‌ترین زبان‌ها به ترتیب جاوا، سی، سی پلاس پلاس و بعدش سی شارپ هستن. این شاخص هر ماهه آپدیت می‌شه و سی در طول پونزده سال گذشته رتبه‌اش هر ماه یا اول بوده یا دوم.
  7. هر چقدر کار جدی‌تر باشه، حضور سی پر رنگ‌تر است. بحث نوشتن یک سیستم عامل است؟ لینوکس، ویندوز و مک هر سه بیشترین کد سی رو دارن. بحث استک‌های اینترنت است؟ بسیاری از اونها با سی پیاده سازی شدن. حجم عظیمی از مهمترین برنامه‌ها، با سی هستن؛ همینطوره خیلی از بازی‌ها. یاد گرفتن سی به شما فرصت کار روی چیزهایی بیشتر از برنامه حسابداری فلان و برنامه حضور غیاب بهمان رو می ده.
  8. سی یک زبان مبتنی بر بلاک و فانکشن است بدون اینکه شما رو درگیر شی گرایی کنه. نظر شخصی من است ولی آبجکت اورینت پروگرمینگ بیشتر از اونی که لازم بود احاطه پیدا کرد و دنیای آینده ازش دورتر خواهد شد. البته این مساله رو در حال حاضر هم با زبان‌های جدید می‌بینیم.
  9. سی یک زبان سطح متوسط است. تقریبا هیچ زبان دیگه ای در این سطح نیست. شما یا با زبان‌های سطح پایین (مثل اسمبلی) درگیر هستین یا با زبان‌های سطح بالا که سخت افزار رو از شما پنهان می‌کنن. به همین دلیل شروع به نوشتن چیزی مثل یک درایور سخت افزاری با چیزی به جز سی به دلایل خیلی خوبی نیاز داره.
  10. سی پورتابل است. یک برنامه رو با سی بنویسین و تقریبا هر جایی که دوست دارین اجراش کنین.
  11. سی خیلی کم تغییر می‌کنه. یک برنامه رو به سی بنویسین و دهه‌ها اجراش کنین.
  12. سی قشنگ است. سینتکس سی بسیار ساده است و برنامه‌های نوشته به سی بسیار خوانا.
  13. سی در این روزها برنامه‌نویس‌های خوب کمی داره. بازار پر است از سی‌شارپ‌کارهای متوسط و اگر شما علاقمند هستین به یک ارتش ذخیره کار چند ده هزاری بپیوندین، سی شارپ یا دات نت بهترین گزینه است. در مقابل اگر شما حرفه‌ای در سی باشین فرصت‌های کاری بسیار جالبتری پیش روی شماست. فکر می‌کنین وقتی یک شرکت دنبال یک برنامه نویس حرفه‌ای سی می‌گرده چند نفر بهش مراجعه می‌کنن یا اصولا چند نفر هستن که به یک پروژه نوشته شده به سی کامیت‌های مثبت کنن و در سطح جهان دیده بشن؟

معلومه که نمی‌گیم زبان‌های دیگه خوب نیستن. نظر من همیشه اینه که توی هر چیزی خوب باشین وضعتون خوبه و این رو هم می‌پذیرم که خیلی‌ها دنبال یک شغل معمول و مرسوم هستن که خب معمول‌ترین و مرسوم‌ترین زبان برنامه بازار براش بهترین چیزه (: ولی خب.. اگر سوالتون اینه که «چرا سی» جواب‌های من اینها بودن. معلومه که دوستان می‌تونن در کامنت‌ها تکمیلش کنن.