سی از جمله زبانهای بسیار قدیمی است که هم به منظور برنامهنویسیهای سیستمی و هم برای برنامههای کاربردی به کار میرفته است. همچنین در بسیاری از مراکز نیز به عنوان یک زبان آموزشی به کار گرفته میشود. البته این زبان به منظور تامین اهداف آموزشی طراحی نشده است. اما به دلیل توان بالا و کاربرد وسیع آن در امور مختلف آن را برای آموزش انتخاب میکنند. شاید دلیل دیگری که از این زبان به عنوان یک زبان آموزشی استفاده میکنند این باشد که سی تمامی مفاهیم مربوط به یک زبان را در بر دارد و از این نظر یک زبان کامل به شمار میرود.
زبان و کامپایلر
میدانیم که برنامههای نوشته شده به یک زبان باید با استفاده از نرمافزاری به نام کامپایلر به زبان قابل فهم ماشین تبدیل شود. یک زبان مستقل از کامپایلر طراحی و استانداردسازی میشود. سپس شرکتها و اشخاص مختلف با در نظر گرفتن آن استانداردها، اقدام به طراحی کامپایلر خود میکنند. سپس برای برتری دادن محصول خود به سایر محصولات. امکانات و تسهیلاتی برای کاربران در نظر میگیرند که آن دیگر مربوط به زبان نیست. برای سی هم از ابتدای پیدایش تاکنون دهها کامپایلر از سوی شرکتها و افراد مختلف ارائه شده است. دو شرکت مایکروسافت و بورلند(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 انجام دهیم، کاری بسیار طاقت فرسا خواهد بود.
پارسا ستودهنیا
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم