سیشارپ (#C) چیست؟
سیشارپ (#C) یک زبان برنامهنویسی مدرن، سطحبالا، چندمنظوره و شیءگرا است. این زبان از چندین پارادایم برنامهنویسی شامل دستوری (Imperative)، اعلانی (Declarative)، تابعی (Functional) و جنریک پشتیبانی میکند. سیشارپ با داشتن ویژگیهایی نظیر تایپینگ استاتیک و قوی (Strongly Typed)، یکی از محبوبترین انتخابها برای توسعه نرمافزارهای سازمانی و سیستمهای توزیعشده است.
تاریخچه سیشارپ
سیشارپ توسط تیمی به رهبری آندرس هایلسبرگ در شرکت مایکروسافت توسعه یافت. این زبان نخستین بار در سال ۲۰۰۰ معرفی شد و به سرعت به عنوان یک استاندارد بینالمللی توسط Ecma (استاندارد ECMA-334) و ISO/IEC تأیید گردید.
در ابتدا، سیشارپ بخشی از اکوسیستم بسته داتنتفریمورک (.NET Framework) بود. اما با ظهور پروژههای متنباز مانند Mono و سپس تغییر استراتژی مایکروسافت، اکنون این زبان در قالب پلتفرم مدرن داتنت، بهصورت کاملاً متنباز، رایگان و چندسکویی (Cross-platform) ارائه میشود. تا ژانویه ۲۰۲۵، جدیدترین نسخه پایدار آن #C 13.0 است که همراه با .NET 9.0 عرضه شده است.
اهداف طراحی سیشارپ
بر اساس مستندات Ecma، سیشارپ با اهداف زیر طراحی شده است:
- سادگی و کارایی: ارائه زبانی مدرن، چندمنظوره و شیءگرا.
- پایداری نرمافزار: پشتیبانی از اصول مهندسی نرمافزار شامل تایپینگ قوی، بررسی محدوده آرایهها، مدیریت خودکار حافظه (Garbage Collection) و شناسایی متغیرهای مقداردهی نشده.
- توسعه کامپوننتمحور: بهینهسازی برای استقرار در سیستمهای توزیعشده و سیستمهای تعبیهشده (Embedded).
- قابلیت انتقال: سهولت یادگیری برای برنامهنویسان آشنا به زبانهای C و ++C و پشتیبانی از بینالمللیسازی.
سینتکس و ساختار
سینتکس سیشارپ از خانواده زبانهای C-Style (مانند ++C و جاوا) پیروی میکند. ویژگیهای کلیدی آن عبارتند از:
- پایان دستورات: استفاده از سمیکالن (;) برای خاتمه دستورات.
- بلوکبندی: استفاده از آکولاد ({}) برای گروهبندی دستورات در کلاسها، متدها و نامفضاها (Namespaces).
- عملگرها: تفاوت میان عملگر انتساب (=) و مقایسه (==).
- آرایهها: استفاده از براکت ([]) برای تعریف و دسترسی به عناصر آرایه.
ویژگیهای متمایز سیشارپ
۱. قابلیت حمل (Portability):
سیشارپ با استاندارد CLI (Common Language Infrastructure) سازگاری کامل دارد. اگرچه اکثر کامپایلرهای سیشارپ خروجی CIL برای اجرا روی CLR تولید میکنند، اما این زبان محدودیتی برای خروجی ندارد و میتواند برای تولید کد ماشینِ بومی (Native Code) نیز بهینه شود.
۲. سیستم تایپینگ پیشرفته:
سیستم تایپ در این زبان به دو دسته تقسیم میشود:
- نوعهای مقداری (Value Types): مانند اعداد و Structها که در حافظه Stack نگهداری و بهصورت مقدار (By Value) منتقل میشوند.
- نوعهای ارجاعی (Reference Types): مانند کلاسها، آرایهها و رشتهها که در حافظه Heap نگهداری و با استفاده از یک اشارهگر منتقل میشوند.
- نکته: عملیات Boxing (تبدیل نوع مقداری به شیء) برای انتقال خودکار دادهها به حافظه Heap در مواقع ضروری انجام میشود.
۳. متدها:
متدها در سیشارپ اعضای کلاسها هستند. امضای متد شامل سطح دسترسی (مثل private)، نوع بازگشتی (مثل int یا void)، نام متد و پارامترهای ورودی است که از استانداردهای زبانهای مشابه پیروی میکند.