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