آیا می‌دانید اگر زبان برنامه‌نویسی C نبود، چه بلایی سر دنیای نرم‌‌افزار می‌آمد!

آیا می‌دانید اگر زبان برنامه‌نویسی C نبود، چه بلایی سر دنیای نرم‌‌افزار می‌آمد!

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

توسعهٔ دیتابیس اوراکل در سال 1977 شروع شد و در سال 1983 سورس‌کد این دیتابیس از زبان Assembly به زبان C تغییر پیدا کرد و از آن زمان به بعد به عنوان یکی از معروف‌ترین و پرطرفدارترین دیتابیس‌های دنیای نرم‌افزار مبدل شد. در سال 1985، ویندوز نسخهٔ 1.0 ریلیس شد؛ اگرچه سورس‌کد سیستم‌عامل ویندوز در دسترس عموم قرار ندارد، اما گفته می‌شود که بخش قابل‌توجهی از سورس‌کد این سیستم‌عامل با زبان C نوشته شده است. همچنین توسعهٔ کِرنِل لینوکس در سال 1991 شروع شد که این هسته با زبان برنامه‌نویسی C نوشته شد و در سال 1992، کِرنِل لینوکس تحت مجوز GNU عرضه شد و این هسته به عنوان بخشی از سیستم‌عامل گنو/لینوکس نیز مورد استفاده قرار گرفت.

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

کاربرد زبان C در طراحی سیستم‌عامل‌ها
بخش قابل‌توجهی از سیستم‌عامل ویندوز با زبان C نوشته شده است. چیزی در حدود 97٪ از اَبَرکامپیوترهای دنیا بر پایهٔ هستهٔ لینوکس هستند که بخش قابل‌توجهی از این هسته نیز با زبان C نوشته شده است. سیستم‌عامل مک نیز از زبان C قدرت گرفته است به طوری که بخش قابل‌توجهی از کِرنِل OS X با زبان C نوشته شده است.

در زمینهٔ ابزارهای هوشمندی همچون موبایل و تبلت هم ما نیازمند زبان C هستیم چرا که کِرنِل سیستم‌عامل‌های iOS ،Android و Windows Phone با زبان C نوشته شده‌اند. در واقع اگر زبان C نبود، نمی‌توانستیم به این راحتی که امروزه از موبایل‌های خود استفاده می‌کنیم، از این دیوایس‌های هوشمند و کاربردی استفاده نماییم (لازم به ذکر است که رَد پای زبان سی در دیتابیس‌های مشهور دنیا همچون Oracle ،MySQL ،MS SQL Server و PostgreSQL هم دیده می‌شود).

کاربرد زبان C در نرم‌افزارهای گرافیکی
فیلم‌ها و انیمیشن‌های سه‌بعدی نیز با نرم‌افزارهایی ساخته می‌شوند که همگی با زبان C و ++C نوشته شده‌اند (زبان ++C نسخهٔ پیشرفتهٔ زبان C محسوب می‌شود). نرم‌افزارهای گرافیکی و انیمیشن‌سازی جزو نرم‌افزارهایی هستند که پرفورمنس در آنها از اهمیت بسزایی برخوردار است چرا که این دست نرم‌افزارها می‌بایست در کسری از ثانیه، حجم قابل‌توجهی از داده‌ها را رِندر کنند و شاید به همین دلیل هم باشد که از زبان‌هایی همچون C و ++C در توسعهٔ آنها استفاده می‌شود (همچنین بخش اصلی بسیاری از گیم‌ها با زبان‌های C و ++C توسعه می‌یابد).

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

در پاسخ به این سؤال که چرا کماکان از زبان برنامه‌نویسی C در دنیای کنونی استفاده می‌شود بایستی گفت که امروزه زبان‌های برنامه‌نویسی گوناگونی وجود دارند که دست دولوپرها را به مراتب بازتر از زبانی همچون C می‌گذارند؛ بسیاری از این زبان‌های سطح بالا دارای لایبرری‌های از پیش نوشته شده‌ای هستند که کار برنامه‌نویس را تا حد قابل‌توجهی آسان و بدون دردسر می‌سازند اما به نظر می‌رسد یکسری دلایل منطقی وجود دارد که زبان برنامه‌نویسی C کماکان قابل استفاده است که در ادامه برخی از مهم‌ترین این دلایل را برخواهیم شمرد.

پرتابل بودن و اثربخشی
زبان برنامه‌نویسی C را به نوعی می‌توان نسخه‌ای پرتابل (قابل‌حمل) از زبان برنامه‌نویسی Assembly قلمداد کرد. این زبان ارتباط تنگاتنگی با زبان ماشین -یا همان صفر و یک- دارا است و بسیاری از پردازنده ها به خوبی می‌توانند با کدهای نوشته شده با این زبان ارتباط برقرار سازند. 

زبان‌های تفسیری همچون پایتون، روبی و پی‌اچ‌پی با استفاده از زبان C طراحی شده‌اند؛ لذا می‌توان گفت که کامپایلرها، لایبرری‌ها و مفسرهای بسیاری از دیگر زبان‌ها بر پایهٔ این زبان هستند. علاوه بر این، از آنجا که زبان برنامه‌نویسی C مادر بسیاری از زبان‌های سطح بالای دیگر مثل جاوا، سی‌پلاس‌پلاس، پی‌اچ‌پی، پایتون، سی‌شارپ، روبی و … قلمداد می‌شود، از این زبان می‌توان به عنوان یک زبان مشترک مابین توسعه‌دهندگان یاد کرد که با استفاده از آن به راحتی خواهند توانست به تبادل ایده‌های خود بپردازند.

نوع استفاده از حافظه
یکی از دلایلی که از زبان برنامه‌نویسی C در طراحی سیستم‌عامل‌ها استفاده می‌شود این است که این زبان ارتباط خوبی با مموری سیستم دارا است. زبان C این امکان را به دولوپر می‌دهد تا به خوبی بتواند کنترل حافظهٔ سیستم را در دست گیرد. یکی از مهم‌ترین محدودیت‌هایی که سیستم‌های Embedded با آن دست و پنجه نرم می‌کنند، وجود حافظهٔ محدود است لذا مدیریت حافظه در این‌گونه سیستم‌ها به نحو احسن از اهمیت بسزایی برخوردار است و ساختاری که زبان C دارا است، این زبان را برای این‌گونه سیستم‌ها به بهترین کاندیدا مبدل می‌سازد.

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

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

نیاز به توضیح نیست که امروزه زبان‌های بسیاری هستند که هم از زبان C راحت‌تر هستند و هم کاربردی‌تر، اما زمانی که پرفرومنس مد نظر باشد، دولوپرها گزینه‌ای به غیر از این زبان پیش روی نخواهند داشت! دیوایس‌هایی که ما هر روزه با آنها سر و کار داریم با استفاده از این زبان برنامه‌ریزی شده‌اند و به نظر می‌رسد که این زبان نیازهای گذشته، حال و آیندهٔ دنیای فناوری را برآورده خواهد ساخت.

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

منبع