دوره‌ها / آموزش برنامه‌نویسی C / خانه (C Home)

خانه (C Home)

20 دقیقه Article

خوش‌آمدید به دنیایِ زبانِ C: مادرِ زبان‌هایِ برنامه‌نویسی 🏰🏛️

زبانِ C یکی از قدیمی‌ترین، قدرتمندترین و تاثیرگذارترین زبان‌هایِ تاریخ است. اگر به درونِ هر سیستم‌عامل، مرورگر، دیتابیس یا کنسولِ بازی نفوذ کنید، محال است که اثری از کدهایِ C پیدا نکنید.

چرا زبانِ C را یاد بگیریم؟

  • کنترلِ کامل: شما به حافظه‌یِ سیستم و پردازنده دسترسیِ مستقیم دارید.
  • سرعتِ بی‌نظیر: برنامه‌هایِ نوشته شده با C بسیار سریع هستند و کمترین مصرفِ منابع را دارند.
  • پایه و اساس: مفاهیمی که در C یاد می‌گیرید (مثل اشاره‌گرها و مدیریت حافظه) درکِ شما را از تمامِ زبان‌هایِ مدرن مثل C++, Java و Python دگرگون می‌کند.

جایگاهِ C در صنعتِ امروز

با وجودِ گذشتِ دهه‌ها، C همچنان زبانِ اول در حوزه‌هایِ حساس است:

  • سیستم‌هایِ نهفته (Embedded Systems): بردهایِ الکترونیکی، یخچال‌هایِ هوشمند و پهپادها.
  • هسته‌یِ سیستم‌عامل‌ها: لینوکس، ویندوز و macOS همگی با C نوشته شده‌اند.
  • اینترنتِ اشیاء (IoT): دستگاه‌هایِ کوچکی که به اینترنت وصل می‌شوند.
شعارِ زبان C: "با C، شما رئیس هستید!" بر خلافِ زبان‌هایِ سطحِ بالا که کارهایِ پس‌زمینه را از شما مخفی می‌کنند، C همه چیز را به شما نشان می‌دهد.

نقشِ تاریخی C:

زبان C در اوایلِ دهه‌یِ ۷۰ میلادی در آزمایشگاه‌هایِ AT&T Bell توسطِ دنیس ریچی ساخته شد تا سیستم‌عامل یونیکس (Unix) را بازنویسی کنند. از آن زمان به بعد، دنیایِ دیجیتال به این زبان مدیون است.

مسیرِ یادگیری: در این دوره، ما از الفبایِ C شروع می‌کنیم و تا مدیریتِ پیشرفته‌یِ حافظه و فایل‌ها همراهِ شما هستیم. آماده‌یِ یک چالشِ واقعی باشید!
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافیِ اجرایِ یک برنامه C 🛠️⚙️⚡

زبانِ C زبانِ نزدیک به سخت‌افزار است. درکِ اینکه چطور کدهایِ متنیِ شما به سیگنال‌هایِ الکتریکی در CPU تبدیل می‌شوند، اولین قدم برایِ تبدیل شدن به یک مهندسِ حرفه‌ای است.

۱. خطِ لوله (Pipeline) کامپایل

فرایندِ تبدیل کدِ C به فایلِ اجرایی (Executable) چهار مرحله‌یِ حیاتی دارد:

  • پیش‌پردازش (Preprocessing): دستوراتی که با # شروع می‌شوند (مثل #include) پردازش می‌شوند. کدهایِ هدر به فایلِ اصلی چسبانده می‌شوند.
  • کامپایل (Compilation): کدهایِ سطحِ بالایِ C به زبانِ اسمبلی (Assembly) تبدیل می‌شوند که برایِ معماریِ آن CPU خاص (مثل x86 یا ARM) قابل فهم باشد.
  • اسمبلی (Assembly): کدهایِ اسمبلی به کدهایِ ماشین (Binary) تبدیل می‌شوند. نتیجه یک فایلِ .obj یا .o است.
  • لینک کردن (Linking): تمامِ فایل‌هایِ آبجکت و کتابخانه‌هایِ استاندارد (مثل stdio.h) به هم متصل می‌شوند تا یک فایلِ نهایی (مثل .exe) ساخته شود.

۲. ساختارِ حافظه در زمانِ اجرا (Runtime Memory)

وقتی برنامه‌یِ شما اجرا می‌شود، از چهار بخشِ اصلی در حافظه استفاده می‌کند:

  1. Text Segment: محلِ نگهداریِ دستوراتِ اجراییِ برنامه (کدهای ماشین).
  2. Data Segment: برایِ نگهداریِ متغیرهایِ سراسری (Global) و استاتیک.
  3. Stack: برایِ نگهداریِ متغیرهایِ محلی و پارامترهایِ توابع مدیریت می‌شود. این بخش سریع است اما فضایِ محدودی دارد.
  4. Heap: برایِ مدیریتِ حافظه‌یِ داینامیک (که با malloc رزرو می‌کنید). این بزرگترین بخشِ حافظه‌یِ در دسترس است.
نکته مهندسی: در C هیچ "Garbage Collector"ای وجود ندارد! برخلافِ پایتون یا جاوا، مدیریتِ هر بیت از حافظه بر عهده‌یِ شماست. این قدرتِ مطلق، مسئولیتِ بزرگی هم به همراه دارد (جلوگیری از Memory Leak).

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

اولین چاپ Easy
سوال تمرین

در زبان C، برای چاپ یک رشته از تابع printf استفاده می‌شود. برنامه‌ای بنویسید که عبارت Hello C را چاپ کند. (فراموش نکنید که به #include <stdio.h> نیاز دارید)

پاسخ تمرین
C
#include <stdio.h>

int main() {
  printf("Hello C");
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.