سي از جمله زبان‌هاي بسيار قديمي است كه هم به منظور برنامه‌نويسي‌هاي سيستمي و هم براي برنامه‌هاي كاربردي به كار مي‌رفته است. همچنين در بسياري از مراكز نيز به عنوان يك زبان آموزشي به كار گرفته مي‌شود. البته اين زبان به منظور تامين اهداف آموزشي طراحي نشده است. اما به دليل توان بالا و كاربرد وسيع آن در امور مختلف آن را براي آموزش انتخاب مي‌كنند. شايد دليل ديگري كه از اين زبان به عنوان يك زبان آموزشي استفاده مي‌كنند اين باشد كه سي تمامي مفاهيم مربوط به يك زبان را در بر دارد و از اين نظر يك زبان كامل به شمار مي‌رود.

زبان و كامپايلر

مي‌دانيم كه برنامه‌هاي نوشته شده به يك زبان بايد با استفاده از نرم‌افزاري به نام كامپايلر به زبان قابل فهم ماشين تبديل شود. يك زبان مستقل از كامپايلر طراحي و استانداردسازي مي‌شود. سپس شركت‌ها و اشخاص مختلف با در نظر گرفتن آن استانداردها، اقدام به طراحي كامپايلر خود مي‌كنند. سپس براي برتري دادن محصول خود به ساير محصولات. امكانات و تسهيلاتي براي كاربران در نظر مي‌گيرند كه آن ديگر مربوط به زبان نيست. براي سي هم از ابتداي پيدايش تاكنون ده‌ها كامپايلر از سوي شركت‌ها و افراد مختلف ارائه شده است. دو شركت مايكروسافت و بورلند(Borland)  از بزرگ‌ترين شركت‌هايي هستند كه توانمندترين و كامل‌ترين ابزارهاي مربوط به اين زبان را از ابتدا تاكنون عرضه كرده‌اند.

پس ازC، زباني به نام ++C (سي‌پلاس‌پلاس)‌ با تغييرات و افزودگي‌هاي بنيادي معرفي شد كه يكي از اين مفاهيم، شيء‌گرايي است. در حال حاضر كمتر به زبان سي برنامه نوشته مي‌شود و اكثر ابزارها و كامپايلرهاي جديد مربوط به زبان++C است. دو كامپايلر وIDE معروف و قدرتمند براي اين زبان كه از طرف دو شركت مايكروسافت و بورلند ارائه شده‌اند++ Microsoft Visual C  و ++ Buidler Borland C  است.

اين ابزارها همچنان توسط شركت‌هايشان پشتيباني شده و نسخه‌هاي جديد آنها عرضه مي‌شود. خوب است بدانيم كه كامپايلر يك نرم‌افزار كوچك است كه حجم آن معمولا كمتر از يك مگابايت است. تمام حجم اين ابزارها كه در قالب يكCD  يا DVD  عرضه مي‌شوند مربوط به IDE ، ابزارها و امكاناتي است كه براي راحتي كار برنامه‌نويس در نظر گرفته شده است. امروزه با استفاده از اين ابزارها، كار برنامه‌نويسي بسيار ساده شده و فاصله زبان‌ها با كاربران بسيار كم شده است.

ساده يا دشوار؟

C  و++ C يكي از توانمندترين زبان‌هاي دنيا هستند كه تقريبا هر برنامه‌اي را مي‌توان با آن نوشت. بسياري افراد اين زبان را برادر سطح بالاي اسمبلي مي‌دانند و برخي از آن به عنوان زباني دشوار ياد مي‌كنند، اما حقيقت اين است كه در زبان‌هاي سطح بالا بهتر است از واژه‌هاي راحت و راحت‌تر استفاده كرد بويژه با عرضه ابزارهاي پيشرفته امروزي، مي‌توان در عرض چند دقيقه برنامه‌هايي توليد كرد كه اگر قرار بود به روش قديمي در 10 سال پيش با ابزارهاي آن زمان نوشته شود شايد ماه‌ها به طول مي‌انجاميد و شايد بخوبي برنامه امروز هم نمي‌شد.

كاربردها

اگر C  و ++  Cيك زبان كامل و توانمند هستند پس چرا همه به سراغ اين زبان نمي‌روند و چرا زبان‌هاي ديگر معرفي مي‌شوند؟ واقعيت آن است كه هر زبان با در نظر گرفتن يك هدف اصلي طراحي مي‌شود. بنابراين به‌خوبي پاسخگوي نيازهاي آن هدف خواهد بود.

ضمن آن‌كه ممكن است بتواند اهداف ديگر را نيز تامين كند. هدف طراحيC++,C بوجود آوردن يك زبان همه منظوره بوده است. شايد زبان‌هايي باشند كه بسياري از كارها را خيلي راحت‌تر از‌ C انجام مي‌دهند. به‌طوري‌كه يك خط كه در آن زبان معادل 100 خط كه در زبان C باشد. اما ممكن است آن زبان در انجام برخي امور ناتوان باشد. در حالي كه در C  آن امور هم قابل انجام است. بنابراين بهتر است هدف از انتخاب زبان و هدف از برنامه‌نويسي از پيش تعيين ‌شود.

معمولا براي اشخاصي كه مي‌‌خواهند برنامه‌هاي سيستمي بنويسند و يا براي سخت‌افزارها نرم‌افزارها راه‌انداز طراحي كنند. انتخاب اول‌ C است. (توجه داشته باشيد كه‌ C++ هم كليه توانايي‌هاي‌ C  را در بردارد)‌ جالب است بدانيم كه سيستم عامل‌هايي نظير يونيكس‌ (UNIX) و لينكس به زبان‌ C نوشته شده‌‌اند و اين بيانگر توانايي‌ اين زبان در نوشتن برنامه‌هاي سيستمي است. البته بايد توجه داشت كه اين مساله بدان معنا نيست كه ساير زبان‌ها در اين كار ناتوانند و يا‌ C از ساير زبان‌ها قوي‌تر است. قدرت يك زبان را بايد به دور از تعصب، در توانايي انجام هدفي بيان كرد كه براي آن در نظر گرفته شده است.

زباني با وسعت بالاي كاربرد

كساني كه فكر مي‌كنند در آينده قرار است هرگونه برنامه‌اي در هر زمينه‌اي بنويسند، برايشان C  يا‌ C++ گزينه مناسبي است. البته شايد در برخي زمينه‌ها كارشان مشكل‌تر از كسي باشد كه با زباني مختص آن زمينه برنامه مي‌نويسد. اما مي‌داند كه با تسلط كافي به آن مي‌تواند برنامه‌هاي لازم را بنويسد‌C . زباني است كه در مقياس كوچك مي‌توان با آن به طراحي يك نرم‌افزار پخش فيلم و موسيقي و در مقياس‌هاي بزرگ به طراحي سيستم عامل و حتي يك زبان سطح بالاي ديگر پرداخت.

اشخاصي كه مي‌خواهند براي ميكروكنترلرها و ريز پردازنده‌هاي ديگر غير از پردازنده‌هاي رايانه‌هاي شخصي، برنامه بنويسند، مي‌توانند با اين زبان از عهده چنين كاري نيز بربيايند. راه ديگر براي اين اشخاص، دانستن زبان اسمبلي مخصوص همان ريز‌پردازنده است كه اين كار در صورت وجود يك كامپايلر مناسب‌ C براي آن ريز پردازنده، به هيچ عنوان توصيه نمي‌شود (مگر در موارد خاص)‌ در ساخت روبوت‌ها، سيستم عامل‌هاي كوچك مربوط به دستگاه‌هاي الكترونيكي مثل يخچال‌هاي پيشرفته امروزي، خودروهاي جديد، برخي سازهاي موسيقي الكترونيكي و حتي در برخي موشك‌ها مي‌توان از قابليت‌ها و توانايي‌هاي زبان ‌ C بهره گرفت.

برنامه‌هاي نوشته شده به زبانC++,C  سرعت بسيار خوبي دارند و تا حد زيادي به اسمبلي نزديك هستند. اما نمي‌توان انتظار داشت كه با آن هر برنامه‌اي به سرعت نوشته شود. گاهي نوشتن برخي برنامه‌ها با اين زبان هم به زمان بيشتري نياز دارد و هم در صورت بروز اشكال در برنامه، اشكال‌زدايي آن دشوارتر خواهد بود.

براي نوشتن برنامه‌هاي محاسباتي و رياضي نيز‌ C زبان مناسبي است. افرادي كه در زمينه‌هاي رياضي و محاسبات و شبيه‌سازي فعاليت داشته‌اند حتما با نرم‌افزار قدرتمندMatlab آشنايي دارند. اين نرم‌افزار تمامي توانايي و قدرت خود را از ‌ C دارد زيرا اين ابزار با‌ C طراحي شده است. اما حقيقتا اگر قرار باشد هر يك از اموري را كه باMatlab  انجام مي‌شود، مستقيما با‌ C انجام دهيم، كاري بسيار طاقت‌ فرسا خواهد بود.

اما نظر خود من این است که بلد بودن چند زبان برنامه نویسی خیلی کمک حال برنامه نویس است و هم ایده های خوبی به او می دهد.