زبان های برنامه نویسی، دنیای ما را تغییر داده اند، از تلفن های هوشمند گرفته تا نرم افزارهای شرکت های هواپیمایی، تقریباً همه دستگاه های مدرن به نوعی از کد استفاده می کنند. اینکه کدام زبان برنامه نویسی تأثیر بیشتری داشته است، همیشه مورد بحث می باشد اما مدعی اصلی زبان C است.
زبان برنامه نویسی C یکی از پر کاربردترین زبان های برنامه نویسی است و اهمیت زیادی در علوم کامپیوتر دارد. زبان C را مادر همه زبان ها می دانند زیرا ریشه و اساس زبان های زیادی است، زبان هایC++ ، Objective-C، C#، جاوا، جاوا اسکریپت، پرل، PHP، پایتون و ….
ابتدا برای کار روی سیستم عامل ها برای کامپیوترهای کوچک توسعه داده شد اما در سال های اخیر در همه زمینه ها اهمیت زیادی پیدا کرده است. زبان C یک زبان برنامه نویسی سطح بالا، چندمنظوره، قابل حمل با کاربرد آسان است که با توجه به اینکه حدود ۵۰ سال پیش ساخته شده اما هنوز هم به شدت مورد استقبال قرار می گیرد و اغلب بین ۵ یا ۱۰ زبان محبوب و پرطرفدار جهان قرار می گیرد.
تاریخچه زبان C
زبان برنامه نویسی C توسط دنیس ریچی (Dennis Ritchie) بین سالهای ۱۹۶۹ تا ۱۹۷۳ در آزمایشگاه های بل (Bell) ساخته شد.
در اصل یکی از کارمندان آزمایشگاه های بل به نام کن تامپسون (Ken Thompson) به دنبال ساخت یک زبان برنامه نویسی برای سیستم عامل جدید یونیکس بود، وی با تغییر زبان BCPL، زبان B را ایجاد کرد.
زبان های BCPL و B مشکلاتی مانند ناسازگاری داده ها داشتند، علاوه بر این سرعت برنامه های B نسبت به برنامه های اسمبلی کمتر بود. این امر باعث شد تا دنیس ریچی زبان B را بهبود دهد و در ادامه زبان C را بسازد. در سال ۱۹۷۲ به طور رسمی اولین نسخه برنامه نویسی C منتشر شد. کم کم زبان C محبوبیت بیشتری پیدا کرد و در دهه ۱۹۸۰ به پرکاربردترین زبان برنامه نویسی تبدیل شد و روی بسیاری از زبان های دیگر تأثیر گذاشت.
آخرین استاندارد C: ISO/IEC 9899:2018 استاندارد فعلی زبان C است که با نام C18 شناخته می شود و در ژوئن ۲۰۱۸ منتشر و جایگزین C11 شد (ISO/IEC 9899:2011). استاندارد C18 بدون اضافه کردن ویژگی های جدید به بررسی و رفع نقص های استاندارد C11 می پردازد.
کاربردهای زبان C
C ساده است اما یکی از قدرتمندترین زبان هایی است که تاکنون ایجاد شده و با وجود اینکه به عنوان یک زبان سطح بالا در نظر گرفته می شود اما نسبت به سایر زبان ها به سخت افزار نیز نزدیک است. به همین دلیل بسیاری از زبان ها از C برای کامپایل استفاده می کنند (مثل پایتون).
C اولین زبانی است که امکان نوشتن سیستم عامل با زبان “سطح بالا” و همچنین راه اندازی مجدد کامل سیستم عامل یونیکس را فراهم کرد و در توسعه برنامه نویسی شی گرا نیز نقش اساسی داشته است.
اما زبان C یک زبان همه کاره است و کاربردهای بسیار گسترده ای دارد. برخی از کاربردهای آن عبارتند از:.
- طراحی و توسعه نرم افزارهای سیستم و برنامه های دسکتاپ
- توسعه پایگاه داده ها (پایگاه داده های معروف مانند MySQL، PostgreSQL، SQLite به زبان C نوشته شده اند.)
- توسعه برنامه های مرتبط با گرافیک مانند بازی های رایانه ای و موبایلی (کتابخانه های گرافیکی مانند OpenGL برای ارائه تصاویر گرافیکی دو بعدی و سه بعدی نیز به زبان C نوشته شده اند.)
- ارزیابی انواع معادلات ریاضی
- طراحی کامپایلرها، سیستم عامل ها و مفسرها
- توسعه کامل هسته یونیکس
- طراحی دستگاه های شبکه
- طراحی برنامه های GUI. Adobe Photoshop
- ساخت سیستم کنترل نسخه بسیار محبوب Git
- توسعه نرم افزارهای کاربردی مانند صفحات گسترده
- طراحی ابزارهایی مانند GTK و wxWidgets و …
در زمینه های دیگر نیز کاربرد دارد:
- اسمبلرها
- دستگاه و درایورها
- اینترنت اشیا
- تلفن های هوشمند
- سیستم های تعبیه شده (embedded systems)
بهتر است C برای سیستم هایی استفاده شود:
- که نیاز به دسترسی سریع و مستقیم به سخت افزار دارند.
- منابع محدود (مانند حافظه) دارند.
- کارایی مهمترین ویژگی آنها است.
هر جایی که فکر کنید از زبان C استفاده می شود، در یونیکس، لینوکس، ویندوز، فتوشاپ، وب سرور و ….
تفاوت بین زبان هایC ، C++، Objective-C و C#
این چهار زبان برنامه نویسی مختلف نام های مشابهی دارند اما تفاوت هایی در نحوه عملکرد و شیوه استفاده از آنها وجود دارد.
- C قدیمی ترین زبان است که تقریباً در همه سیستم ها برای اجرای کامپایلرها و کنترل عملکردهای اصلی یک سیستم عامل مورد استفاده قرار می گیرد.
- ++C در سال ۱۹۷۹ ساخته شد، برنامه نویسی شی گرا با کلاس را معرفی کرد که مهمترین تفاوت آن با زبان C است. از گرامر و سینتکس زبان C استفاده می کند.
- Objective-C در سال ۱۹۸۳ شروع به کار کرد اما در سال های اخیر محبوب شده است. نیروی محرکی برای برنامه های Mac و iPhone می باشد و بالاتر از زبان C قرار می گیرد. شی گرا و محدود به سخت افزار اپل است.
- C# (سی شارپ) توسط مایکروسافت در سال ۲۰۰۱ ساخته شد، اصلی ترین زبان شی گرا برای پلتفرم .NET است. در واقع اشتراک زیادی با C ندارد و بیشتر رقیب پلتفرم جاوا است. در آن زمان مایکروسافت زبان ها را با برچسب # نامگذاری می کرد، مانند A#، F#. علاوه بر این قالب بندی و مدیریت کتابخانه ها در آن بسیار متفاوت تر از زبان C است. C# مانند C به کد ماشین نزدیک به نیست (گرچه می تواند کد ماشین را به صورت محدود از طریق MSIL مدیریت کند).
چرا از زبان برنامه نویسی C استفاده می شود؟
امروزه زبان های برنامه نویسی سطح بالاتر امکانات بسیاری برای توسعه دهندگان فراهم می کنند اما دلایل زیادی وجود دارد که باور کنید برنامه نویسی C هنوز هم زنده است و مدت طولانی فعال خواهد ماند. در اینجا برخی از ویژگی ها و دلایل شکست ناپذیری زبان C آورده شده است:
انعطاف پذیری: زبان C ترکیبی از ویژگی های هر دو زبان سطح بالا و سطح پایین است. از یک طرف در برنامه نویسی سطح پایین مانند اسکریپت نویسی درایورها و هسته ها استفاده می شود و از طرف دیگر از عملکرد زبان های برنامه نویسی سطح بالا مانند اسکریپت نویسی برای برنامه های نرم افزاری و … پشتیبانی می کند.
ساختار گرامری ساده: C یک زبان ساده و آسان است و برای درک واضح و دقیق مفاهیم اساسی برنامه نویسی مانند انواع داده، عملگرها، دستورات کنترلی و بسیاری موارد دیگر بسیار مناسب است. ساختار تابعی، انواع داده ها و مجموعه ای غنی از توابع کتابخانه ای، آن را کارآمد و قدرتمند کرده است.
زبان رویه ای و ساخت یافته: برنامه نویسی C یک زبان رویه ای است که دستورات آن مرحله به مرحله اجرا می شود. یک برنامه C ممکنه شامل چند تابع برای انجام یک کار خاص باشد. C یک زبان برنامه نویسی ساخت یافته است. یعنی می توان برنامه را با استفاده از توابع به قسمت ها و بلوک ها کوچکتر تقسیم کرد تا درک و خوانایی آن آسان تر شود. یک زبان ساخت یافته زیرمجموعه ای از زبان رویه ای است.
سازگاری:ویژگی های مختلف C مانند: دسترسی مستقیم به APIهای سخت افزاری سطح ماشین، کامپایلرهای C، استفاده از منابع قطعی و تخصیص حافظه پویا باعث شده تا این زبان به یک گزینه ای ایده آل برای برنامه های اسکریپتی و درایورهای سیستم های نهفته یا تعبیه شده تبدیل شود.
قابلیت حمل: C یک زبان با قابلیت حمل بالا و مستقل از سخت افزار است. برنامه های C را می توان با کمی تغییر یا بدون تغییر در بسیاری از سیستم ها اجرا کرد.کامپایلرهای C برای همه سیستم عامل ها و سخت افزارها در دسترس است و به راحتی می توانید روی یک سیستم کد بنویسید و آن را به سیستم دیگری (با سیستم عامل یکسان) منتقل کنید.
زبان کامپایلری: C یک زبان کامپایلری است. کامپایلر برنامه ای است که زبان سطح بالا یا زبان سطح متوسط را به زبان ماشین، قابل فهم برای کامپیوتر تبدیل می کند.
سریع و قوی: C یک زبان بسیار کارآمد است و کامپایل و اجرای برنامه های آن نسبت به بیشتر زبان های دیگر بسیار سریعتر است. به دلیل اینکه C برای برنامه نویسی سیستم عامل یونیکس طراحی شده است و بسیار مهم است که برنامه بتواند با حافظه محدود به سرعت اجرا شود. یکی از قدرتمندترین و سریعترین زبان ها است و هنوز هم برای ساخت کامپایلرها و مفسرها از C استفاده می شود.
ادغام با یونیکس: C با سیستم عامل یونیکس و لینوکس ارتباط نزدیکی دارد. سیستم UNIX و Linux با کامپایلر C به نام GCC همراه است. در واقع در برخی از ابزارها کاربر باید با زبان C آشنا باشد.
بازگشت: در برنامه نویسی C، بازگشت یکی از پرکاربردترین تکنیک های رایج است که در آن یک تابع بارها و بارها می تواند خود را فرا خوانی کند.
کتابخانه غنی: C مجموعه ای غنی از توابع کتابخانه ای و توابع داخلی زیادی دارد و همچنین از برنامه نویسی گرافیکی نیز پشتیبانی می کند. به همین دلیل نوشتن و توسعه نرم فزار با زبان C بسیار سریع انجام می شود.
قابل توسعه: زبان C قابل توسعه است زیرا می تواند به راحتی ویژگی های جدید را تطبیق دهد.
آیا زبان برنامه نویسی C مستقل از سیستم عامل است؟
برنامه های C مستقل از بسترهای نرم افزاری هستند اما فایل های اجرایی آن وابسته به سیستم عامل می باشند. یعنی وقتی فایلهای اجرایی برنامه روی یک سیستم عامل خاص ساخته می شوند نمی توانید آن فایل ها را روی سیستم عامل دیگری اجرا کنید. به عنوان مثال اگر فایل های اجرایی در ویندوز تولید می شوند، فقط می توانند روی ویندوز اجرا شوند و در لینوکس یا هر سیستم عامل دیگری قابل اجرا نیستند.
برای دریافت فایل های اجرایی مخصوص هر سیستم عامل باید برنامه را در همان سیستم عامل دوباره کامپایل کنید.
برنامه Hello World به زبان C
“Hello World” برای هر برنامه نویس نقطه شروع یادگیری زبان است. این برنامه پیام “Hello World” را نمایش می دهد.
#include <stdio.h>
/* اولین برنامه من */
int main() {
printf(“Hello, World!”);
return 0;
}
توضیح برنامه
- خط اول، دستور پیش پردازنده <include <stdio.h# است. این دستور یک سری توابع از پیش نوشته شده را وارد برنامه میکند. به عنوان مثال تابع print() در این فایل پیش پردازنده تعریف شده است.
- همه برنامه های زبان C با تابع ()main شروع می شوند. این نقطه شروع اجرای برنامه است.
- دستور (!printf(“Hello, World”، متن !Hello, World را چاپ می کند. از printf برای نمایش متن در کنسول صفحه استفاده می شود. این یک تابع داخلی زبان C است.
- ;return 0 به کامپایلر می گوید که اجرای برنامه پایان یافته است.
در زبان C، نظرات در / * * / قرار می گیرند. نظرات یا کامنت ها قسمتی از کد هستند که کامپایل و اجرا نمی شوند و برای توضیح و مستندسازی برنامه استفاده می شوند. برای نوشتن نظرات می توانید از زبان فارسی نیز استفاده کنید. مثل، /*اولین برنامه من*/
کدهای C در فایلی با پسوند .c ذخیره می شوند. مثل: start.c
کامپایل برنامه C
هنگام نوشتن کد به زبان C مهمترین مرحله کامپایل خواهد بود زیرا کد فقط پس از آن قابل اجرا است. در واقع برنامه باید به زبان ماشین (زبان باینری) تبدیل شود تا کامپیوتر بتواند آن را درک و اجرا کند. کامپایلر یک زبان سطح بالا را به زبان قابل درک برای ماشین (سطح پایین) تبدیل و ترجمه می کند.
برای نوشتن و کامپایل برنامه C از IDE (محیط توسعه یکپارچه) استفاده می شود. IDE از یک ویرایشگر متن و یک کامپایلر تشکیل شده است. برنامه را در ویرایشگر متنی تایپ می کنیم سپس توسط کامپایلر کامپایل می شود.
اگرچه IDEهای زیادی برای ویرایش و کامپایل برنامه های C وجود دارد اما برخی از پرکاربردترین آنها عبارتند از:
- Dev-C++
- Eclipse C Compiler
- Code Blocks Compiler
- Borland Turbo C
- Digital Mars
- Turbo C++
- Microsoft Visual Studio C++
- MinGW
- Lcc win
- Bloodshed
- C++ compilers
- Pelles C
توجه به این نکته مهم است که C++ به عنوان نسخه توسعه یافته C شامل تمام توابع آن می باشد. بنابراین اگر یک کامپایلر بتواند C++ را اجرا کند پس می تواند به راحتی برنامه C را نیز اجرا کند.
کامپایلرهای آنلاین نیز به شما امکان می دهند کدهای برنامه نویسی خود را به صورت آنلاین کامپایل و اجرا کنید. بهترین کامپایلرهای آنلاین برای برنامه نویسی C عبارتند از:
- https://www.jdoodle.com/
- https://www.onlinegdb.com/
- https://www.codechef.com/ide
- https://jsfiddle.net/
- https://ideone.com/
مانند اغلب بزرگترین اختراعات جهان، زبان C نیز از روی ضرورت ایجاد شد و شرایط و مشکلات الهام بخش بودند. با این حال برخلاف بسیاری از زبان های برنامه نویسی که منسوخ شدند، C آزمون های زیادی را در طی این سال ها پشت سر گذاشت و پیشرفت کرد.
حتی فناوری های قدرتمند مانند اینترنت اشیا، هوش مصنوعی و اتوماسیون نیز نتوانستند C را از جایگاه برجسته خود خارج کنند. بنابراین به نظر می رسد که این زبان در آینده نیز با ما خواهد بود. در نتیجه یادگیری C به عنوان زبان اصلی هنگام مطالعه سایر زبان های برنامه نویسی اهمیت زیادی دارد.