زبان C جز زبانهایی است که یادگیریاش مشکل است؛ اگر اینگونه است، پس چرا باید زحمت یادگیری آن را به خودمان بدهیم؟ با نگاه کردن به شاخص TIOBE که هر ماه زبانهای برنامهنویسی محبوب را معرفی میکند، میتوان به این نکته پی برد که زبانهایی همچون R روند صعودی داشتهاند و این در حالی است که زبان برنامهنویسی C در این جدول گاهیاوقات سیر نزولی شدیدی پیدا میکند! در دنیای امروز، دولوپرها ترجیح میدهند تا برای توسعهٔ اپلیکیشنهای مختلف، به جای استفاده از زبانی قدیمی مانند C که تقریباً از رده خارج نیز محسوب میشود، از زبانی استفاده کنند که هم یادگیریاش راحتتر باشد و هم دیباگ کردنش؛ اما آیا این بدان معنا است که زبان C دیگر ارزش یادگیری ندارد؟ جواب این سؤال آنقدرها هم ساده نیست اما برای یافتن پاسخ این سؤال، در ادامه با سکان آکادمی همراه باشید.
پیش از هرچیز، بهتر است با خواندن مقالهٔ آیا میدانستید وجه تسمیهٔ زبان برنامهنویسی C چیست؟ ببینیم که چرا سومین حرف الفبای انگلیسی به عنوان نام این زبان انتخاب شده است!
عرضه و تقاضای زبانهای برنامهنویسی
زبان C در صنعت آیتی هنوز هم پرطرفدار است اما این روند ممکن است در آیندهای نزدیک تغییر کند؛ به گفتهٔ مارک درایور، مدیر تحقیقات شرکت Gartner، زبانهای سی و سیپلاسپلاس هنوز هم جزو زبانهای مورد استفاده در برنامهنویسی System Level هستند و میتوانید با داشتن این دو زبان در رزومهٔ خود، متفاوت بودن خود را به رخ کارفرمایان و سایر برنامهنویسان بکشید؛ اما حتماً به خاطر داشته باشید که در آیندهای نه چندان دور، جای خود را به زبانهای دیگری همچون Go خواهند داد (در مقالهٔ چرا زبان برنامهنویسی C در حال از دست دادن محبوبیتاش است؟ به تفصیل در مورد دلایل از دست رفتن محبوبیت این زبان صحبت کردهایم).
به گفتهٔ آقای درایور، در حال حاضر هیچ تقاضایی از سوی مشتریان برای زبانهای سی وسیپلاسپلاس وجود ندارد و زبان جاوا چیزی است که اکثر مشتریان به دنبال آن هستند (برای یادگیری این زبان، به دورهٔ آموزش رایگان زبان جاوا در سکان آکادمی مراجعه نمایید). شاید دلیل اصلی چنین رویکردی این باشد که با استفاده از آنها، امکان بهره بردن از فیچرهای مدرن وجود ندارد و این در حالی است که زبانهایی همچون جاوا، سیشارپ و غیره، این کمبود را تا حد زیادی جبران کردهاند. وی همچنین ادعا میکند که در حیطهٔ IoT، برای زبان سی و برنامهنویسانی که به این زبان مسلط هستند تقاضای رو به رشدی وجود دارد. با رونق گرفتن اینترنت اشیاء، نیاز به زبانهایی که بیشترین نزدیکی را با سختافزار دارند بیشتر میشود و این نیاز مرتفع نمیگردد مگر با استفاده از زبان C. برای اپلیکیشنهای قدیمی، شمردن بیتها چندان اهمیتی نداشت اما زمانی که پای اینترنت اشیاء به میان میآید، داستان متفاوت است و زبان سی باز هم خودی نشان خواهد داد.
با C یا بدون C، مساله این است!
در بررسی زبانهای برنامهنویسی، یادگیری زبان سی را شبیه به زبان لاتین میدانند؛ ممکن است شما زبان لاتین را یاد بگیرید و هیچگاه از آن استفاده نکنید، اما بدون شک این زبان به شما کمک میکند تا در فراگیری زبانهای دیگر به مشکلات کمتری برخورید؛ یک مدرس زبان جاوااسکریپت به نام آزریل فاستن بر این باور است که این زبان بدون شک راه را برای یادگیریهای بعدی هموار میکند. او میگوید:
همونطور که یک مدرک در تاریخ یا هنر میتونه شما رو قویتر کنه و روزی به کارتون بیاد، زبان سی رو هم باید یاد گرفت چون یه روزی در یه جایی میتونه به شما کمک کنه!
به گفتهٔ آقای فاستن، این زبان لزوماً پیشنیازی برای سایر زبانها محسوب نمیشود؛ استدلال فاستن این است که از آنجایی که زبانهای دیگر باگهای خود را تا حد زیادی رفع کردهاند و جلوی خطای شما را تا حدود 80٪ گرفتهاند، قدرت تفکر الگوریتمی و حل مسأله را نیز از شما میگیرند! در حالی که زبان سی این فرصت را برای کدآموز فراهم کرده است که با عمیقتر فکر کردن در حین کدنویسی به خاطر ذات این زبان، ذهنی قویتر برای خود بسازد.
افرادی که بدون داشتن علم کافی در زمینهٔ برنامهنویسی علاقمند به وارد شدن به این حیطه هستند، همواره به دنبال راهی برای فرار از زبان سی میباشند بنابراین در تلاش هستند تا در زمینهٔ وب یا تولید اپلیکیشن موبایل فعالیت کنند در حالی که زبان سی بیشتر برای اپلیکیشنهای پیشرفتهای مانند داده پردازها، کِرنِلها و درایورهای سیستمعامل مورد استفاده قرار میگیرد.
یکی از افرادی که معتقد است زبان سی بدون شک در تبدیل او به یک برنامهنویس حرفهای نقش بزرگی بازی کرده است، میگول موالز است؛ وی مهندس نرمافزار است و تاکنون در شرکتهای معتبری چون At&T ،HPE و Cisco موقعیتهای شغلی خوبی داشته است. او بر این باور است که دانستن سی به طور غیرمستقیم او را به برنامهنویس بهتری تبدیل کرده است زیرا حتی اگر از سی استفاده نکنید، دانستن اینکه یک سیستم چگونه کار میکند و یا به چه شکل دادهها را ذخیره میکند، میتواند کمک بزرگی برای شما باشد.
اما چگونه؟
با یادگیری زبان C، شما نسبت به متغیرهای تولید شده متعهدتر میشوید، سعی میکنید از بهترین الگوریتمهای موجود استفاده کنید و بهکارگیری کامندهای مناسب را در رأس کار خود قرار میدهید. بدون تردید زبانهای برنامهنویسی جدید فیچرهای مدرن و کارآمدتری دارند اما آنچه شما را نسبت به داشتن کدهای بهینه متعهدتر میکند، زبان سی است.
با این تفاسیر، به نظر میرسد که یادگیری زبان سی هنوز هم ارزش زمان گذاشتن دارد اما فقط به عنوان یک زبان جانبی. ریموند فان، مهندس کامپیوتر شرکت Zebra Technologies، کسی است که باور دارد بهتر است زبان مورد نظر خود را یاد بگیرید و سپس برای بهره بردن از ذهن الگوریتمیک و درک عمیقتر، یادگیری سی را در اولویت دوم خود قرار دهیم.
آقای فان هم شباهت زبان سی به لاتین را تأیید میکند و بر این باور است که یادگیری این زبان به مدیریت حافظهٔ ما کمک میکند اما اگر زیاد از حد در این زبان غرق شوید، ممکن است شما را گیج کند! به اعتقاد وی، با اینکه دانستن این زبان میتواند نقطهٔ قوت یک رزومهٔ کاری باشد، اما لزوماً منجر به استخدام شما نخواهد شد (برای آشنایی با تکنیکهای نوشتن یک رزومهٔ خوب به عنوان برنامهنویس، به مقالهٔ چگونه یک روزمهٔ خوب به عنوان برنامهنویس یا توسعهدهنده بنویسیم؟ مراجعه نمایید).
در عین حال فراموش نکنیم که این زبان دستاورهای ارزشمندی را به صنعت فناوری دنیا تقدیم کرده است به طوری که در مقالهٔ اگر زبان برنامهنویسی C نبود، چه بلایی سر دنیای نرمافزار میآمد! توضیح دادهایم که اگر این زبان نبود، صنعت آیتی با چه چالشهایی مواجه میشد.
حال نوبت به نظرات شما میرسد. آیا با زبان C آشنایی دارید و اگر اینطور است، آیا با این جمله که «یادگیری زبان C ذهن شما را الگوریتمیک میکند» موافقید؟ نظرات و دیدگاههای خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.