زبان برنامه‌نویسی سی یک زبان سطح میانی همه منظوره‌است، یعنی هم امکانات زباهای سطح بالا را پشتیبانی می‌کند و هم امکانات زبانهای سطح پایین ولی در اصل یک زبان سطح بالا است. این زبان به صورت بسیار نزدیکی در ارتباط با سیستم عامل یونیکس(Unix) قرار داشته و در این محیط توسعه و تکامل یافته‌است، زیرا سیستم عامل یونیکس و بیشتر برنامه‌هایی که روی این سیستم اجرا می‌شود به زبان C نوشته شده‌اند.
با این وجود، این زبان به هیچ سیستم عامل یا ماشین خاصی وابستگی ندارد، و می‌توان از آن برای نوشتن برنامه برای ریزکنترلرها، انواع سی‌پی‌یوها و سیستم عاملها استفاده کرد. اگرچه این زبان، 'زبان برنامه نویسی سیستم' نامیده شده‌است چرا که برای نوشتن برنامه‌های مترجم (کامپایلرها) و سیستم‌های عامل بسیار مفید است، با این وجود این زبان، برای نوشتن برنامه‌های اصلی در بسیاری از زمینه‌ها، زبانی کاملاً مناسب و مطلوب است.
بسیاری از ایده‌های مهم و ریشه‌ای زبان C از زبان BCPL گرفته شده‌است که توسط مارتین ریچاردز (Martin Richards) طراحی و توسعه یافت. از طریق زبان B، زبان BCPL به صورت غیر مستقیم بر روی زبان C اثر گذاشت که به نوبهٔ خود در سال ۱۹۷۰ توسط کن تامپسون (Ken Tampson) روی رایانه DEC PDP-۷ برای اولین سیستم عامل UNIX نوشته شد.
فهرست مندرجات

[نهفتن]


[ویرایش] ویژگی‌ها


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


BCPL و B، زبان‌های بدون نوع داده‌ای هستند. اما در مقابل آن، در زبان C انواع مختلفی از نوع‌های داده‌ای تدارک دیده شده‌است. نوع‌های اصلی و پایه‌ای انواع کارکتری و اعشاری اعداد با اندازه‌های مختلف هستند. علاوه بر این، سلسله مراتبی از انواع داده‌ای فرعی در زبان C وجود دارد که می‌توان آن‌ها را به همراه اشاره‌گرها (Pointers)، آرایه، ساختار (Structuers) و Union‌ها ایجاد کرد.
عبارت‌ها، از عملگرها و عملوندها ساخته می‌شوند. هر عبارت از جمله، یک جایگزینی یا احضار یک تابع می‌تواند یک دستور باشد. اشاره گرها برای محاسبات روی آدرس‌ها، که مستقل از ماشین هستند در نظر گرفته شده‌اند.
C، یک زبان نسبتاً سطح پایین به‌شمار می‌آید، این یک توصیف تحقیرآمیز نبوده، و صرفاً به این معنی است که C با همین نوع از اشیائی سروکار دارد که بیشتر کامپیوترها با آن سروکار دارند، نظیر کارکترها، اعداد و آدرس‌ها. این اشیا را می‌توان با هم ترکیب کرد و می‌توان روی آنها همان عملیات محاسباتی و منطقی را انجام داد که توسط یک کامپیوتر حقیقی پیاده سازی کرد.
سیستم عامل سیمبیان (symbian) با زبان C نوشته شده و بهمین دلیل این زبان به‌عنوان زبان اولیه برای برنامه نویسی در آن انتخاب شده‌است.C بیشترین امکان دسترسی به API‌های سیستم عامل سیمبیان را فراهم می‌کند و بهترین کارکرد در حافظه و سرعت اجرا را داراست. برای مثال این زبان قدرتمند را می‌توان در زمینه‌های زیر بکار گرفت:

  • برنامه‌هایی که مانند سرور عمل می‌کنند. برای نمونه برنامه‌هایی که در پشت صحنه کار می‌کنند و یکی از بخش‌های سیستم- به عنوان مثال درگاه‌های COM - را مدیریت می‌کنند.
  • PLUG in‌ها که محیطی را بر پایه سیستم عامل ایجاد می‌کنند. بطور مثال برنامه‌ای که فایل‌های html را به فایل‌های word سیمبیان تبدیل می‌کند از کتابخانه مبدل سیستم عامل استفاده می‌کند.
  • درایورهای دستگاه که با Kernel کار متعامل می‌کنند و...

استفاده از زبان C در سیستم عامل سیمبیان بر روی مناسب بودن کارکرد گوشی‌ها متمرکز شده‌است، که بدین معناست که چند تا از عملگرهای استاندارد زبان C مانند مدیریت استثناها قابل استفاده در برنامه نویسی سیمبیان نیستند.
[ویرایش] مدیریت حافظه

یکی از مهمترین توابع زبان‌های برنامه نویسی فراهم آوردن ابزاری جهت ادارهٔ حافظه و اشیا ذخیره شده در حافظه می‌باشد. سی دو راه اصلی برای تخصیص حافظه به اشیا را فراهم می‌کند.

  • تخصیص حافظه به صورت اتوماتیک: اشیا موقتی می‌توانند بر روی پشته ذخیره شوند، این فضای اختصاص داده شده به اشیا به صورت اتوماتیک پس از خارج شدن از بلاکی که شیا در آنها تعریف شده‌اند، آزاد و مجددا قابل استفاده خواهد بود.
  • تخصیص حافظه به صورت دینامیک : اندازه‌های اختیاری از بلاک‌های حافظه می‌توانند توسط توابع کتابخانه‌ای همانند تابع malloc از ناحیه‌ای از رم موسوم به هیپ در هنگام اجرای برنامه درخواست بشود. این بلاک‌های حافظه تا زمانیکه متعاقبا توسط تابع free به سیستم باز گردانده نشوند در حافظه باقی می‌مانند. برای تخصیص حافظه به صورت پویا(دینامیک) باید آدرس بلوک حافظه‌ای که توسط تابع malloc گرفته می‌شود را در یک اشاره گر ذخیره کنیم.

[ویرایش] کلمات کلیدی


auto , double , int , struct , break , else , long , switch , case , enum , register , typedef , char , extern , return , union , const , float , short , unsigned , continue , for , signed , void , default , goto , sizeof , volatile , do , if , static , while