برنامه نویسی -
24 شهریور 1401
تاریخچه زبان C
زبان برنامه نویسی C توسط دنیس ریچی (Dennis Ritchie) بین سالهای ۱۹۶۹ تا ۱۹۷۳ در آزمایشگاه های بل (Bell) ساخته شد.
در اصل یکی از کارمندان آزمایشگاه های بل به نام کن تامپسون (Ken Thompson) به دنبال ساخت یک زبان برنامه نویسی برای سیستم عامل جدید یونیکس بود، وی با تغییر زبان BCPL، زبان B را ایجاد کرد.
زبان های BCPL و B مشکلاتی مانند ناسازگاری داده ها داشتند، علاوه بر این سرعت برنامه های B نسبت به برنامه های اسمبلی کمتر بود. این امر باعث شد تا دنیس ریچی زبان B را بهبود دهد و در ادامه زبان C را بسازد. در سال ۱۹۷۲ به طور رسمی اولین نسخه برنامه نویسی C منتشر شد. کم کم زبان C محبوبیت بیشتری پیدا کرد و در دهه ۱۹۸۰ به پرکاربردترین زبان برنامه نویسی تبدیل شد و روی بسیاری از زبان های دیگر تأثیر گذاشت.
کاربردهای زبان C
C ساده است اما یکی از قدرتمندترین زبان هایی است که تاکنون ایجاد شده و با وجود اینکه به عنوان یک زبان سطح بالا در نظر گرفته می شود اما نسبت به سایر زبان ها به سخت افزار نیز نزدیک است. به همین دلیل بسیاری از زبان ها از C برای کامپایل استفاده می کنند (مثل پایتون).
C اولین زبانی است که امکان نوشتن سیستم عامل با زبان “سطح بالا” و همچنین راه اندازی مجدد کامل سیستم عامل یونیکس را فراهم کرد و در توسعه برنامه نویسی شی گرا نیز نقش اساسی داشته است.
اما زبان C یک زبان همه کاره است و کاربردهای بسیار گسترده ای دارد. برخی از کاربردهای آن عبارتند از:.
طراحی و توسعه نرم افزارهای سیستم و برنامه های دسکتاپ
توسعه پایگاه داده ها (پایگاه داده های معروف مانند MySQL، PostgreSQL، SQLite به زبان C نوشته شده اند.)
توسعه برنامه های مرتبط با گرافیک مانند بازی های رایانه ای و موبایلی (کتابخانه های گرافیکی مانند OpenGL برای ارائه تصاویر گرافیکی دو بعدی و سه بعدی نیز به زبان C نوشته شده اند.)
ارزیابی انواع معادلات ریاضی
طراحی کامپایلرها، سیستم عامل ها و مفسرها
توسعه کامل هسته یونیکس
طراحی دستگاه های شبکه
طراحی برنامه های GUI. Adobe Photoshop
ساخت سیستم کنترل نسخه بسیار محبوب Git
توسعه نرم افزارهای کاربردی مانند صفحات گسترده
طراحی ابزارهایی مانند GTK و wxWidgets و …
در زمینه های دیگر نیز کاربرد دارد:
اسمبلرها
دستگاه و درایورها
اینترنت اشیا
تلفن های هوشمند
سیستم های تعبیه شده (embedded systems)
بهتر است C برای سیستم هایی استفاده شود:
که نیاز به دسترسی سریع و مستقیم به سخت افزار دارند.
منابع محدود (مانند حافظه) دارند.
کارایی مهمترین ویژگی آنها است.
هر جایی که فکر کنید از زبان C استفاده می شود، در یونیکس، لینوکس، ویندوز، فتوشاپ، وب سرور و ….
قابلیت های زبان C
نشانگرها
یکی از مهمترین قابلیتهای زبان C، امکان استفاده از اشارهگرهاست. اشارهگرها کارایی، قدرت و انعطافپذیری برنامه را بیشتر مینمایند. علاوه بر فراهم آوردن امکان نوشتن کدهای برنامهٔ کوتاهتر، غنیتر و کاراتر، گاهی مواردی پیش میآید که انجام محاسبات مورد نیاز برنامه تنها توسط اشاره گرها امکانپذیر میباشد. به همین دلیل، از این توانایی در برنامههای C زیاد استفاده میگردد. اگر چه در ظاهر کار با اشارهگرها مشکل است و درک برنامهای که از آنها استفاده شدهاست ساده نیست، اما در حقیقت اگر از آنها به درستی استفاده گردد، وضوح و سادگی برنامه افزایش مییابد.
اشارهگر چیست؟
روش مستقیم دسترسی به حافظه برای ذخیرهسازی مقداری در آن، یا بازیابی محتوای ذخیره شده، استفاده از نام متغیر است. همین که متغیری معرفی شد، سیستم بر اساس نوع اعلام شده، تعداد بایت لازم را به آن اختصاص میدهد و آدرس متغیر، شماره اولین بایت از مجموعهٔ اختصاص یافتهاست. پس از آن به راحتی از طریق نام متغیر به محل موردنظر دسترسی یافته، محتوای آن پردازش میگردد. اما گاهی لازم میشود به جای نام، آدرس متغیر در اختیار برنامهنویس قرار گیرد تا از طریق آن دستیابی به محل مربوط صورت گیرد. در زبان C، به راحتی میتوان آدرس یک متغیر را در اختیار داشت و مقدارش را در حافظه ذخیره نمود تا در زمان نیاز، توسط آن به صورت غیرمستقیم به محل موردنظر دست یافت. برای این منظور از متغیر اشارهگر استفاده میگردد. متغیر اشارهگر، متغیری است که محتوای آن آدرس یک متغیر دیگر است.
آرایهها
بسیاری از موارد پیش میآید که برنامهنویس نیاز به استفاده از تعداد زیادی متغیر پیدا میکند؛ مثلاً اگر بخواهیم جملات ۱ تا ۱۰۰ سری فیبوناچی را برای استفاده ذخیره کنیم، به صد متغیر نیاز داریم. تعریف این صد متغیر به صورت مستقل و با نامهای جداگانه کاری سخت و طاقتفرساست و البته معقول نیست. به همین خاطر در زبان C قابلیتی پیشبینی شده تا بتواند تعداد دلخواهی متغیر از یک نوع را به راحتی ایجاد کرد.
به این متغیرها که در حافظه پشت سر هم قرار میگیرند و همگی از یک نوع هستند آرایه (Array) میگویند. آرایهها کاربردهای بسیار زیادی دارند و همانند دنبالهها در ریاضی عمل میکنند. همانطور که در ریاضی برای مشخص کردن یک جمله از دنباله از اندیس استفاده میکنیم، در C نیز برای مشخص کردن یک متغیر خاص از اندیس استفاده میشود.
همانطور که گفته شد در حافظهٔ رایانه خانههای آرایه پشت سر هم قرار میگیرند. اندازهٔ هر خانه به اندازهٔ نوع تعریف شدهاست؛ مثلاً اگر قبل از int دو بایت اشغال کند آرایهٔ array، در کل ۲۰ بایت از حافظه اشغال خواهد کرد. این که خانهها پشت سر هم قرار میگیرند ویژگی کارایی است که در بحث اشارهگرها به کار میآید.
زبانهای مرتبط
در سالهای بعد و با ظهور روشهای برنامهنویسی شئگرا نسخه جدیدی از زبان C بنام ++C توسط بییارنه استراستروپ در اوایل ۱۹۸۰ در آزمایشگاههای بل توسعه یافت. در ++C علاوه بر امکانات جدید، خاصیت شئگرایی نیز به C اضافه شدهاست.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامههای آن بتوانند بر روی هر ماشین و هر سیستمعامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبان جاوا را برمبنای C و ++C ایجاد کرد که هماکنون از آن در سطح وسیعی استفاده میشود و برنامههای نوشته شده به آن بر روی هر کامپیوتری که از جاوا پشتیبانی کند (تقریباً تمام سیستمهای شناخته شده) قابل اجرا میباشد.