زبان برنامه نویسی C یک زبان رویه ای (Procedural) و همه منظوره (General-Purpose) است که به وسیلهی آن امکان دسترسی به حافظهی سیستم به صورت سطح پایین یا Low-Level وجود دارد. برنامهای که به زبان C نوشته شده است میبایست توسط یک کامپایلر (Compiler)کامپایلر چیست و چگونه کار میکند و چرا از آن استفاده میشود؟کامپایلر (Compiler) یک برنامهی خاص برای ترجمه سورس کدهای (Source Code) یک زبان برنامه نویسی، به زبان ماشین یا بایت کد و یا یک زبان برنامه نویسی دیگر است زبان C اجرا شود تا به یک برنامهی قابل اجرا (Executable) تبدیل شود و کامپیوتر ها قادر به اجرا کردن آن باشند. بسیاری از نرم افزار ها و سیستم عامل ها مانند سیستم عامل هایی که بر پایه ی یونیکس هستند (Unix-Based) به وسیلهی زبان برنامه نویسی C نوشته شدهاند. امروزه زبان برنامه نویسی C بر روی بسیاری از پلتفرم های سخت افزاری و سیستم عامل ها مانند Microsoft Windows و Linux قابلیت اجرا دارند.
مزایا و معایب زبان C
زبان برنامه نویسی C دارای ویژگیها و مشخصههای زیادی است، به همین خاطر این زبان به پر استفاده ترین زبان برنامه نویسی در تمامی زمانها تبدیل شده است. از جمله مزایای مهم زبان C به قرار زیر است:
- ساختار یافته (Structured): زبان برنامه نویسی C، رویکرد ساختار یافته دارد، به این معنا که یک مسئله را به ماژولها و مسئلههای کوچکتر تقسیم میکند تا علاوه بر فهم راحت تر آن، تغییر در ساختار برنامه نویسی نیز راحت تر شود.
- قابل حمل (Portable): زبان C یک زبان مستقل از ماشین یا Machine-Independent است و برنامههای نوشته شده به این زبان بر روی ماشین های مختلف قابلیت اجرا دارند.
- زبان برنامه نویسی سطح میانی (Mid-Level Programming Language): زبان C یک زبان سطح میانی است. به همین علت، هم از ویژگی زبان های سطح بالا و هم از ویژگی زبان های سطح پایین بهرهمند میشود.
- کتابخانه های فراوان (Rich Library): زبان C دارای کتابخانه های داخلی (Built-in Library) زیادی است که سرعت روند توسعهی نرم افزار را بیشتر میکند.
- تخصیص حافظه به صورت پویا (Dynamic memory allocation): زبان C از تخصیص حافظهحافظه در کامپیوتر، همه چیز در مورد حافظه در معماری کامپیوتردر این مقاله به بررسی کامل حافظه در کامپیوتر، انواع حافظه در کامپیوتر، کش، روشهای آدرس دهی کش، نگاشت آدرس و موارد دیگر میپردازیم به صورت پویا پشتیبانی میکند. همچنین با استفاده از تابع ()free میتوان در هر زمان دلخواه، حافظههای تخصیص داده شده را خالی کرد.
- سرعت (Speed): زبان C یک زبان برنامه نویسی کامپایلری یا Compiler-Based است، که باعث میشود زمان اجرای یک کد سریعتر انجام شود (نسبت به زبان های تحت مفسر مثل پایتونزبان برنامه نویسی پایتون چیست؟ – نحوه شروع و دلایل محبوبیتزبان برنامه نویسی پایتون (Python) چیست؟ این مقاله عالی به بررسی دلایل محبوبیت پایتون، موارد استفاده از پایتون و نحوه شروع به برنامه نویسی پایتون پرداخته)، همچنین به دلیل نداشتن گاربج کالکشن (Garbage Collection) و دیگر سربار های اضافی، قدرت پردازش ذخیره شده و در نهایت سرعت را افزایش میدهد.
- اشاره گرها (Pointers): یکی از ویژگی های زبان C، داشتن اشاره گر ها است. به وسیلهی اشاره گر ها میتوان به طور مستقیم با حافظهی سیستمی در تعامل بود، همین خاصیت باعث افزایش کارایی (Performance) برنامههای نوشته شده به زبان C میشود.
- قابل توسعه (Extensible): برنامههای نوشته شده به زبان C به راحتی قابل توسعه هستند. برای اضافه کردن ویژگی جدید به کدی که نوشته شده است، تنها نیاز به تغییرات کوچکی در کد است.
- ویژگی شی گرایی (OOP Features): زبان C به زبان شی گراییبرنامه نویسی شی گرا چیست؟ شی گرایی چیست؟این صفحه عالی به معرفی برنامه نویسی شی گرا پرداخته و توضیح داده شی گرایی یا همان object oriented یا OPP چیست؟ همچنین مزایای برنامه نویسی شی گرا را بیان کرده ارتقاء نیافته است. برخلاف زبانهایی همچون جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است، پایتون و سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده نمیتوانیم در کد هایمان از خاصیت OOP مانند ارث بری از کلاس والد، وراثت چندگانه و ... استفاده کنیم، که این کار باعث شده تا قابلیت استفاده ی مجدد از کد (Reusable Code) از برنامه نویسان زبان C گرفته شود.
- ویژگی فضای نام (Namespace feature): زبان C دارای ویژگی Namespace یا فضای نام نمیباشد، به همین علت نمیتوان در یک Scope از یک نام متغیر استفادهی مجدد کرد. بدون Namespace، تعریف دو متغیر با نام یکسان غیر ممکن است.
- بررسی در زمان اجرا (Run-time checking): زبان C، خطاهای کد را هنگام نوشتن هر خط کد، مشخص نمیکند. در عوض، تمامی خطاهای بوجود آمده، بعد از کامپایل کردن و نوشتن تمامی کد ها مشخص میشوند. این امر باعث میشود تا بررسی کد به یک چالش تبدیل شود، مخصوصا وقتی با برنامهی بزرگ سروکار داریم.
- مدیریت استثنا (Exception handling): زبان C قابلیت مدیریت کردن استثنا (Exception Handling) را ندارد. بنابراین قادر به مدیریت ناهنجاریها و باگهایی که حین نوشتن سورس کد (Source Code)سورس کد چیست؟ آیا سورس کد یا سورس برنامه قابلیت اجرا دارند؟این مقاله عالی به سورس کد یا سورس برنامه پرداخته؛ همچنین به بررسی اهداف سورس کد، نحوه ساخت سورس کد و اینکه آیا سورس کد ها قابلیت اجرا دارند پرداخته بوجود میآید نمیباشد.
- سازنده و مخرب (Constructor and destructor): از آنجایی که زبان C یک زبان شی گرا نیست، در نتیجه توابع سازنده و مخرب در آن وجود ندارد. در واقع ساختن و تخریب کردن یک متغیر در زبان C میبایست به صورت دستی انجام شود.
- گاربج کالکشن (Garbage collection): گاربج کالکشن که در بعضی از متون فارسی به آن زباله رویی هم میگویند، فرآیندی است که در آن به طور اتوماتیک و بدون دخالت برنامه نویس، آبجکتهایی که خیلی وقت است مورد استفاده قرار نگرفتهاند از حافظه پاک میشود. این ویژگی در اکثر زبان های برنامه نویسی (به ویژه زبان های سطح بالا) وجود دارد اما زبان C فاقد این ویژگی است.
اگرچه زبان C با توجه به سینتکس ها، الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی دارد ها و ماژول های کم و سادهای که دارد برای برنامه نویسان تازه کار گزینهی خوبی است، اما این زبان یکسری کاستی هایی نیز دارد که در لیست زیر به برخی از آنها اشاره کردهایم:
کاربردهای زبان C
زبان C تنها محدود به ساخت سیستم عاملها نیست. نرم افزار های کاربردی زیادی در دنیای واقعی توسط این زبان ساخته شدهاند. همچنین زبان C برای ساخت رابط های کاربری گرافیکی (GUI) و IDE ها نیز مورد استفاده قرار میگیرد.
لیست زیر نمونه هایی از کاربرد های زبان برنامه نویسی C است:
- انواع سیستم عاملها مانند Unix و تمامی نرم افزار های یونیکس
- قسمت عظیمی از پایگاه دادههایی مانند پایگاه دادهی Oracle، MySQL، Microsoft SQL Server و PostgreSQL با زبان C ساخته شده اند.
- کامپایلر های زبان های برنامه نویسی مختلف از جمله خود زبان C
- تکست ادیتور ها (Text Editors)
- اسمبلر ها
- راه انداز های شبکه
- نرم افزار های مدرن مثل Git و FreeBSD
- ساخت مفسر های زبان
- انواع راه انداز ها (Drivers) مانند راه انداز موس، کیبورد و...
چه تفاوتی بین C و ++C وجود دارد؟
زبان C و ++C به نظر شبیه به یکدیگر هستند اما در موارد استفاده و ویژگی های این دو زبان برنامه نویسی تفاوتهای نسبتا زیادی وجود دارد. زبان برنامه نویسی زبان سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده بعد از زبان C ساخته شد و امکانات زیادی را به این زبان اضافه کرد. همچنین مفاهیم استفاده شده برای برنامه نویسی به زبان ++C کاملا متفاوت از C است. زبان C یک زبان رویه ای یا Procedural است در حالی که زبان ++C یک زبان شی گرا است که از تمامی امکانات OOP پشتیبانی میکند.
در لیست زیر تفاوت های زبان C و ++C را مشاهده میکنید:
- زبان C یک زبان رویه ای است و از شی یا کلاسها پشتیبانی نمیکند. اما زبان ++C ادغامی از OOP و زبان رویه ای است (با هر دو رویکرد میتوان کد نوشت).
- تعداد کلید واژه های (Keyword) زبان C برابر 32 عدد است در حالی که زبان ++C دارای 63 کلید واژه میباشد.
- زبان C از نوع های داده ای داخلی یا Built-in Data Types استفاده میکند، در حالی که زبان ++C هم از نوع های داده ای داخلی پشتیبانی میکند و هم از نوع های دادهای تعریف شده توسط کاربر
- زبان C دارای Access Modifiers نمیباشد اما زبان ++C دارای این خاصیت است.
- زبان C از فایل هدر <stdio.h> برای عملیات ورودی و خروجی استفاده میکند، در حالی که زبان ++C از فایل هدر <iostream.h> برای اینکار استفاده میکند.
- زبان C قادر به مخفی کردن دادهها نیست اما ++C امنیت را به وسیلهی رمزنگاری تامین میکند.
- در حالی که زبان ++C دارای ویژگی مدیریت استثنا به صورت مستقیم است، زبان C فاقد این قابلیت میباشد.
- در زبان C نمیتوان تابع ها و عملگر ها را Overload کرد اما در ++C امکان این کار وجود دارد.
- متغیر های Reference یا به اصطلاح Reference Variable ها توسط زبان C پشتیبانی نمیشوند، در حالی که زبان ++C از این متغیر ها پشتیبانی میکند.
تاریخچه ی زبان C
زبان C در اوایل سال 1970 توسط دانشمند کامپیوتری با نام Dennis Ritchie در AT&T Bell Laboratories سابق توسعه داده شد. در واقع این زبان، جانشین زبان B بود. هدف از توسعهی این زبان در ابتدا نوشتن کد برای سیستم عامل Unix بود. قبل از توسعهی این زبان، نوشتن کد های سیستم عامل (Operating System)سیستم عامل چیست به زبان ساده، چرا باید از OS استفاده کنیم؟این مقاله عالی به معرفی سیستم عامل (Operating System|OS) به زبان ساده پرداخته، همچنین بررسی کرده که چرا باید از سیستم عامل استفاده کنیم به زبان اسمبلی بود که توسعه دهندگان در آن به صورت مستقیم با سخت افزار کامپیوترسخت افزار چیست - بررسی اجزای اصلی سخت افزار کامپیوتردر این صفحه بررسی شده که سخت افزار چیست و سخت افزار کامپیوتر به زبان ساده معرفی شده است، همچنین به بررسی اجزای اصلی سخت افزار کامپیوتر پرداخته شده است در تعامل بودند. کد های نوشته شده به زبان اسمبلی بسیار پیچیده و طولانی بود. به همین دلیل، برنامه نویسان در آن زمان نیاز به یک زبان کاربر پسندتر داشتند. زبان برنامه نویسی C در آن زمان توسعه داده شد تا علاوه بر غلبه بر این مشکلات، بر چالش های موجود در زبان های BASIC و B نیز غلبه کند.
با توجه به محبوب شدن، انعطاف پذیری و ویژگی های فراوانی که این زبان داشت، خیلی زود به یک زبان Cross-Platform تبدیل شد و در همان زمان به صورت تجاری درآمد. زبان C همچنان به طور متداول برای پروژههای تحت وب مورد استفاده قرار میگیرد. بسیاری از زبان های محبوب کنونی مانند جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است، PHP و جاوا اسکریپتجاوا اسکریپت چیست؟ معرفی زبان برنامه نویسی java scriptزبان برنامه نویسی جاوا اسکریپت چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای JavaScript پرداخته و مبانی برنامه نویسی جاوا اسکریپت را آموزش داده به طور مستقیم یا غیر مستقیم از ویژگی های زبان C و یا سینتکس های C استفاده میکنند. در حالی که زبان C در طول سالها دستخوش تغییراتی شد، اما هنوز برای برنامه های سطح پایین مانند برنامه نویسی کرنل مورد استفاده واقع میشود.
جمع بندی
بعد از گذشت بیش از 50 سال از ساخته شدن زبان برنامه نویسی C توسط دنیس ریچی، هنوز این زبان معروف ترین و پرکاربردترین زبان برنامه نویسی سطح پایین است که برای ساخت سیستم عامل ها و برنامه نویسی های سطح پایین مانند راه انداز های سخت افزاری مورد استفاده قرار میگیرد. در این مقاله به طور خلاصه به بررسی این زبان و همچنین مزایا و معایب این زبان پرداختیم و این زبان را با زبان محبوب ++C مقایسه کردیم.
زبان برنامه نویسی C چیست؟
به طور خلاصه زبان برنامه نویسی C یک زبان رویه ای (Procedural) و همه منظوره (General-Purpose) است که به وسیلهی آن امکان دسترسی به حافظهی سیستم به صورت سطح پایین یا Low-Level وجود دارد.
سازنده ی زبان C چه کسی است؟
دنیس ریچی (Dennis Ritchie) در اوایل سال 1970 در AT&T Bell Laboratories زبان برنامه نویسی C را توسعه داد تا یک زبان کاربر پسندی باشد که جایگزین زبان اسمبلی برای نوشتن سیستم عامل شود.
کاربرد های زبان C چیست؟
با توجه به سطح پایین بودن، همه منظوره بودن، ساده بودن سینتکس و در نتیجه سریع بودن زبان C، این زبان در بسیاری از حوزه های نرم افزاری مانند نرم افزار های تعبیه شده، سیستم عامل ها و برنامه نویسی شبکه مورد استفاده قرار میگیرد.