تمامی پروژههایی که در بالا یادآور شدیم به چندین دههٔ قبل باز میگردند اما جالب است بدانیم که زبان برنامهنویسی C صرفاً به پروژههای قدیمی برنمیگردد و امروزه شاهد پروژههای بزرگ و مهمی هستیم که علیرغم وجود زبانهای برنامهنویسی سطح بالای بسیاری که در میان توسعهدهندگان از محبوبت بسیاری نیز برخوردارند، باز هم با زبان C نوشته میشوند!
سورسکد سیستمعامل یونیکس در سال 1972 با این زبان نوشته شد. در واقع، زبان برنامهنویسی C ابداع شد تا کِرنِل سیستمعامل یونیکس از زبان Assembly به یک زبان سطح بالاتر با تعداد خطوط کد کمتری بازنویسی شود.
توسعهٔ دیتابیس اوراکل در سال 1977 شروع شد و در سال 1983 سورسکد این دیتابیس از زبان Assembly به زبان C تغییر پیدا کرد و از آن زمان به بعد به عنوان یکی از معروفترین و پرطرفدارترین دیتابیسهای دنیای نرمافزار مبدل شد (نیاز به توضیح است که رَدپای زبان C در دیتابیسهای مشهور دنیا همچون MySQL ،MS SQL Server و PostgreSQL هم دیده میشود.)
در سال 1985، اولین نسخهٔ ویندوز ریلیس شد و اگرچه که سورسکد سیستمعامل ویندوز در دسترس عموم قرار ندارد، اما گفته میشود که بخش قابلتوجهی از این سیستمعامل با زبان C نوشته شده است. همچنین توسعهٔ کِرنِل لینوکس در سال 1991 شروع شد که این هسته با زبان برنامهنویسی C نوشته شد و در سال 1992، کِرنِل لینوکس تحت مجوز GNU عرضه شد و این هسته به عنوان بخشی از سیستمعامل گنو/لینوکس نیز مورد استفاده قرار گرفت.
کاربرد زبان C در طراحی سیستمعاملها
بخش قابلتوجهی از سیستمعامل ویندوز با زبان C نوشته شده است، تقریباً میتوان گفت که تمامی اَبَرکامپیوترهای دنیا بر پایهٔ لینوکس هستند که بخش قابلتوجهی از آن نیز با زبان C نوشته شده است و بخش قابلتوجهی از کِرنِل OS X نیز با زبان C نوشته شده است. در زمینهٔ ابزارهای هوشمندی همچون موبایل و تبلت هم ما نیازمند زبان C هستیم چرا که بخشهایی از کِرنِل سیستمعاملهای iOS ،Android و Windows Phone با زبان C نوشته شده است.
کاربرد زبان C در نرمافزارهای گرافیکی
فیلمها و انیمیشنهای سهبُعدی نیز با نرمافزارهایی ساخته میشوند که همگی با زبانهای C و ++C نوشته شدهاند. نرمافزارهای گرافیکی و انیمیشنسازی جزو اپلیکیشنهایی هستند که پرفورمنس در آنها از اهمیت بسزایی برخوردار است چرا که این دست نرمافزارها باید در کسری از ثانیه حجم قابلتوجهی از دادهها را رِندر کنند و شاید به همین دلیل هم باشد که از زبانهایی همچون C و ++C در توسعهٔ آنها استفاده میشود (همچنین بخش اصلی بسیاری از گیمها با زبانهای C و ++C توسعه مییابد.)
کاربرد زبان C در سیستمهای اِمبدد
بسیاری از سیستمهای به اصطلاح Embedded همچون مایکروفر، یخچال، سیستمهای صوتی و تصویری، ساعت دیجیتال، سیستم ضد قفل خودرو، کروز کنترل، ایربگ و غیره هستند که کِرنِل آنها با استفاده از زبان C نوشته شده است. تمامی این دیوایسها، کامپیوترهای کوچکی دارند که داخل آنها پردازندههای کوچکی تعبیه شده که روی آنها یک نرمافزار نصب است که عمدتاً با زبان C نوشته شده است.
چرا کاربرد زبان C بسیار زیاد است؟
در پاسخ به این پرسش که چرا کماکان از زبان برنامهنویسی C استفاده میشود، میتوان گفت که امروزه زبانهای برنامهنویسی گوناگونی وجود دارند که دست دولوپرها را به مراتب بازتر از زبانی همچون سی میگذارند و بسیاری از این زبانهای سطح بالا دارای لایبرریهای از پیش نوشته شدهای هستند که کار برنامهنویس را تا حد قابلتوجهی آسان میسازند اما به نظر میرسد یکسری دلایل منطقی وجود دارد که زبان برنامهنویسی سی کماکان قابلاستفاده است که برخی از مهمترین آنها عبارتند از:
- پرتابل بودن: زبان برنامهنویسی C را به نوعی میتوان نسخهای پرتابل (قابلحمل) از زبان برنامهنویسی Assembly قلمداد کرد. این زبان ارتباط تنگاتنگی با زبان ماشین (صفر و یک) دارا است و بسیاری از پردازندهها به خوبی میتوانند با کدهای نوشتهشده با این زبان ارتباط برقرار سازند.
- مادر سایر زبانها: زبانهای تفسیری همچون پایتون، روبی و پیاچپی با استفاده از زبان سی طراحی شدهاند و از همین روی میتوان گفت که کامپایلرها، لایبرریها و مفسرهای بسیاری از دیگر زبانها بر پایهٔ این زبان هستند. علاوه بر این، از آنجا که زبان برنامهنویسی سی مادر بسیاری از زبانهای سطح بالای دیگر مثل جاوا، سیپلاسپلاس، پیاچپی، سیشارپ، روبی و … قلمداد میشود، از این زبان میتوان به عنوان یک زبان مشترک مابین توسعهدهندگان یاد کرد که با استفاده از آن به راحتی خواهند توانست به تبادل ایدههای خود بپردازند.
- استفادهٔ بهینه از حافظه: یکی از دلایلی که از زبان برنامهنویسی C در طراحی سیستمعاملها استفاده میشود این است که این زبان ارتباط خوبی با مموری سیستم دارا است به طوری که این امکان را به دولوپر میدهد تا به خوبی بتواند کنترل حافظهٔ سیستم را در دست گیرد. یکی از مهمترین محدودیتهایی که سیستمهای Embedded با آن دست و پنجه نرم میکنند، وجود حافظهٔ محدود است لذا مدیریت حافظه در اینگونه سیستمها به بهینهترین شکل ممکن از اهمیت بسزایی برخوردار است و ساختاری که C دارا است، این زبان را برای اینگونه سیستمها به یکی از بهترین کاندیداها مبدل میسازد.
- حجم سورسکد: کدهای نوشته شده با زبان C در زمان بسیار اندکی اجرا میشوند و این زمان نسبت به بسیاری از دیگر زبانها کم است. برای مثال، زمانی که سورسکدی که با این زبان نوشته شده را با سورسکد نوشتهشده با زبان سیپلاسپلاس مقایسه میکنیم، خواهیم دید که حجم سورسکد نوشته شده با زبان C چیزی در حدود نصف سورسکد نوشتهشده با این زبان است.
جمعبندی
به نظر میرسد که زبان برنامهنویسی C تاریخ انقضاء نخواهد داشت. ارتباط تنگاتنگ با سختافزار، پرتابل بودن، قابلیت مدیریت حافظه و بسیاری ویژگیهای دیگر منجر به این گشته تا زبان C به عنوان انتخاب اول بسیاری از شرکتهای برنامهنویسی برای توسعهٔ سرویسهای کلیدی خود گردد.
نیاز به توضیح نیست که امروزه زبانهای بسیاری هستند که یادگیری آنها هم از زبان سی راحتتر است و هم کاربردیتر میباشند، اما زمانی که پرفرومنس مد نظر باشد، دولوپرها گزینهای به غیر از این زبان پیش روی نخواهند داشت. دیوایسهایی که ما هر روزه با آنها سروکار داریم با استفاده از این زبان برنامهریزی شدهاند و به نظر میرسد که این زبان نیازهای گذشته، حال و آیندهٔ دنیای فناوری را برآورده خواهد ساخت.