زبان برنامه نویسی C در اوایل دهه 1970 میلادی توسط دانشمند آمریکایی کامپیوتر یعنی دنیس ام ریچی ( Dennis M. Ritchie) در Bell Laboratories (پیشتر AT&T Bell Laboratories نامیده میشد) توسعه داده شد. C بهعنوان یک زبان برنامهنویسی مینیمالیستی طراحی شده بود تا جهت نوشتن سیستمعامل برای مینیکامپیوترهایی همانند DEC PDP 7 که در آن زمان در قیاس با کامپیوترهای مینفریم (Mainframe) حافظه بسیاری محدودتری داشتند، مورد استفاده قرار بگیرد.
این زبان در طول سالهای 1969 الی 1973؛ همزمان با روزهای اول توسعه سیستمعامل یونیکس (UNIX)، ابداع شد. زبان برنامهنویسی C مبتنی بر CPL یا همان زبان برنامهنویسی ترکیبی (که اولین بار در زبان برنامهنویسی B مورد استفاده قرار گرفت) بود. خود زبان B نیز یک زبان برنامهنویسی سادهتر بود که در سال 70-1969 توسط کن تامپسون (Ken Thompson)، دانشمند آمریکایی کامپیوتر و همکار ریچی توسعه داده شده بود. ریچی متعاقبا قابلیتهای CPL را بازنویسی و بازسازی کرد و بدین ترتیب زبان C را به وجود آورد. وی سرانجام سیستمعامل یونیکس را با همین زبان جدید، مجدد بازنویسی کرد.
از آنجایی که سیستمعامل یونیکس، تعدیل شده بود، پس طبیعی بود که تغییراتی نیز در مابین C سال 1977 و C سال 1979 به وجود آیند. در طول این زمان، توصیفی از این زبان بهصورت گسترده در کتابی تحت عنوان The C Programmin Language نوشته برایان دابلیو کرنیگان (Brian W. Kernighan) و ریچی در سال 1978، در دسترس قرار گرفت.
در میانههای دهه 1980 ضروری بود که استانداردی رسمی برای زبان برنامه نویسی C در نظر گرفته شود. دلیل این موضوع نیز این بود که این زبان در پروژههای تجاری و دولتی مختلفی مورد استفاده قرار میگرفت. در سال 1983، مؤسسه استانداردهای ملی آمریکا (ANSI)، کمیتهای را تشکیل داد تا به اصلاح و استانداردسازی این زبان بپردازد.
از آن زمان به بعد، C استاندارد شده توسط ANSI یا همان ANSI Standard C مورد استفاده قرار گرفته و این زبان همچنان در دنیای سیستمعاملهای شبه یونیکس، محبوب باقی مانده است. C همچنین یکی از رایجترین زبانهای برنامهنویسی جهت نوشتن سیستمهای نرمافزاری و اپلیکیشنها است. نوادگان C شامل Concurrent C ،Objective C، سی شارپ، *C و ++C میشوند. در سال 1994، زبان برنامهنویسی جاوا (Java) بهعنوان زیرمجموعهای ساده شده از C معرفی شد تا جهت برنامهنویسی بر بستر اینترنت و همچنین دستگاههای قابل حملی که دارای حافظه محدودی بوده و یا اینکه قابلیتهای پردازشی محدودی دارند، مورد استفاده قرار بگیرد.
قابلیتهای زبان برنامهنویسی C
- یک زبان رویهای است: در زبانهای برنامهنویسی رویهای (Procedural Language) همانند C، دستورات را میتوان بهصورت از پیش تعریف شده و گام به گام اجرا کرد. یک برنامه مبتنی بر C میتواند جهت انجام یک وظیفه خاص، بیش از یک عملکرد را در خود جای دهد. افرادی که تازه وارد حرفه برنامهنویسی میشوند، فکر میکنند که این تنها راه انجام کارها توسط یک زبان برنامهنویسی است. البته مؤلفههای دیگری نیز در دنیای برنامهنویسی وجود دارند که از رایجترین آنها میتوان به شیگرایی اشاره کرد.
- سریع و کارآمد است: زبانهای جدید همانند جاوا و پایتون، ویژگیهای بیشتری نسبت به زبانی همانند C دارند، اما به دلیل فرایندهای اضافی پردازش، سرعت اجرا و عملکرد آنها پایینتر است. زبان برنامهنویسی C یک زبان میان-رده بوده و بنابراین امکان دسترسی مستقیم به سختافزار را فراهم میکند. این در حالی است که زبانهای سطح بالا همانند پایتون، از چنین قابلیتی برخوردار نیستند. به همین دلیل است که بسیاری جهت شروع، زبان C را پیشنهاد میکنند. زبان C از نوع زبانهای نوع ایستا بوده و از این رو از زبانهای نوع پویا سریعتر است.
- ماژولار است: مفهوم ذخیره کردن کدهای زبان C در قالب کتابخانهها (Library) جهت استفاده در آینده، ماژولار بودن نامیده میشود. ربان برنامهنویسی C بهتنهایی کار چندانی را انجام نداده و در واقع قدرت آن به واسطه کتابخانههایش است. زبان C جهت حل مشکلات مختلف، کتابخانههای مخصوص به خود را دارد. مثلا از طریق یک فایل هدر ذخیره شده در یکی از کتابخانههای این زبان میتوانید از یک عملکرد مشخص استفاده کنید.
- از نوع ایستا است: زبان برنامهنویسی C از نوع ایستا است. این قضیه بدین معنا است که نوع متغیرها در هنگام کامپایل کردن چک میشود، نه در زمان اجرا. بدین ترتیب هر بار که برنامهنویس شروع به کد زدن میکند، آنگاه باید نوع متغیرهای مورد استفاده را نیز ذکر کند.
- یک زبان با اهداف عمومی است: زبان برنامه نویسی C در موارد مختلفی از برنامههای سیستمی گرفته تا طراحی نرمافزارهای ویرایش تصویر، مورد استفاده قرار گرفته است. از این زبان در طراحی سیستمعاملهای ویندوز، لینوکس، اندروید، iOS و OXS استفاده شده و پایگاههای اطلاعاتی همانند PostgreSQL ،Oracle ،MySQL و MS SQL Server نیز از این زبان استفاده کردهاند.
- به مجموعهای غنی از عملگرهای داخلی مجهز است: زبان برنامهنویسی C دارای عملگرهای داخلی متنوعی بوده که میتوان از آنها جهت نوشتن برنامههای ساده و پیچیده، استفاده کرد.
- کتابخانههای مجهز به عملکردهای غنی دارد: کتابخانهها و عملکردهای متنوع در زبان C، به افراد مختلف از جمله مبتدیها کمک میکنند که آسانتر اقدام به کد زدن کنند.
- یک زبان میان-رده است: C یک زبان میان-رده بوده و بنابراین هم از قابلیتهای زبان اسمبلی و هم از ویژگیهای یک زبان سطح بالا، برخوردار است.
- پرتابل است: برنامههایی که با استفاده از این زبان نوشته میشوند را میتوانند بدون هیچ تغییر و یا با اعمال تغییرات بسیار جزئی، بر روی هر سیستمی اجرا کرد.
- توسعه و بسط برنامهها را آسانتر میکند: این ویژگی بدین معنا است که اگر بخواهید، آنگاه در آینده میتوانید ویژگیها و عملکردهای بیشتری را به اپلیکیشن ساخته شده خود اضافه کنید.
موارد کاربرد زبان برنامه نویسی C
یکی از افسانههای رایجی که در میان مردم وجود دارد این است که زبان برنامهنویسی C منسوخ شده و دیگر کسی از آن استفاده نمیکند. مردم معمولا این تصور را دارند که تعداد اپلیکیشنهایی که با استفاده از این زبان نوشته شدهاند، روزبهروز در حال کاهش هستند، اما یک حقیقت اجتنابناپذیر وجود دارد و آن این است که C یک زبان بسیار قدیمی و پایهاست که هنوز هم در سرتاسر جهان مورد استفاده قرار میگیرد. دانش برنامهنویسی بدون وجود زبان C، ناقص است.
موارد کاربرد این زبان فقط به توسعه سیستمعاملهایی همانند ویندوز و یا لینوکس ختم نمیشود، بلکه در توسعه رابطهای کاربری گرافیکی (GUI) و محیطهای توسعه یکپارچه (IDE) نیز از زبان برنامهنویسی C استفاده میشود. در زیر به برخی از موارد کاربرد زبان C اشاره میکنیم.
- سیستمعاملها: اولین سیستمعاملی که با استفاده از یک زبان سطح بالا توسعه داده شد، یونیکس بود. این سیستمعامل با استفاده از زبان C توسعه داده شد. مدتی بعد نیز مایکروسافت ویندوز و برخی از اپلیکیشنهای اندرویدی، از این زبان استفاده کردند.
- سامانههای تعبیهشده (Embedded Systems): زبان برنامهنویسی C بسیار به سختافزار نزدیک است، بنابراین هنگامیکه بحث بر سر طراحی اپلیکیشن و درایور برای سامانههای تعبیهشده باشد، آنگاه این زبان، گزینهای ایدئال خواهد بود.
- رابط کاربری گرافیکی: ادوبی فتوشاپ را میتوان محبوبترین نرمافزار ویرایش تصویر به حساب آورد. این نرمافزار بهوسیله زبان برنامهنویسی C توسعه داده شده است. در ادامه نیز ادوبی پریمیر و Illustrator نیز از این زبان استفاده کردند.
- پلتفرمهای برنامهنویسی جدید: C نهتنها باعث تولد زبانهای دیگری از خانواده خود شد (همانند ++C که تمامی ویژگیهای C را دارد، به علاوه برنامهنویسی شیگرا)، بلکه سایر برنامههای دیگر همانند MATLAB و Mathematica نیز شاخههایی از این زبان هستند. زبان برنامهنویسی C در واقع پردازش و محاسبات سریعتر برنامهها را تسهیل میکند.
- گوگل: فایل سیستم گوگل و مرورگر کرومیوم گوگل با استفاده از ++C/C توسعه داده شدهاند. علاوه بر این، جامعه Google Open Source پروژههای زیادی دارد که با استفاده از ++C/C برنامهنویسی شدهاند.
- موزیلا فایرفاکس و Thunderbird: موزیلا فایرفاکس و Thunderbird، هر دو کلاینتهای ایمیل رایگانی بودند که با استفاده از زبان ++C/C توسعه داده شدهاند.
- MySQL :MySQL نیز که یک پروژه متن باز مورد استفاده در سیستمهای مدیریت پایگاه داده است، به واسطه زبان ++C/C طراحی شده است.
- طراحی کامپایلر: یکی از محبوبترین موارد کاربرد زبان C به مبحث ایجاد کامپایلرها مربوط میشود. کامپایلرهای مربوط به زبانهای دیگر با در نظر گرفتن ارتباط C با زبانهای سطح پایین طراحی شدهاند. فهم این زبان برای ماشینها، آسان است. از جمله این کامپایلرها میتوان به Bloodshed Dev-C ،Clang C و Apple C اشاره کرد.
- بازی و انیمیشن: از آنجایی که زبان برنامه نویسی C مبتنی بر کامپایلر بوده، پس سریعتر از مواردی همانند جاوا و یا یایتون است. به همین دلیل نیز از این زبان در حوزه بازیهای ویدیویی استفاده میشود. برخی از بازیهای ساده همانند Tic-Tac-Toe ،The Dino ،The Snake و بسیاری دیگر، از این زبان استفاده کردهاند. از بازیهای سطح بالا نیز میتوان به Doom3 ساخته id Software اشاره کرد که در سال 2004 برای مایکروسافت ویندوز منتشر شده و در ساخت آن از زبان C استفاده شده بود.