سی شارپ و دات‌نت چه تفاوت‌هایی با یکدیگر دارند؟

چه تفاوتی بین سی‌شارپ (C#) و دات‌نت (.Net) وجود دارد؟ این پرسشی است که خیلی وقت‌ها در ذهن علاقه‌مندان و دانشجویان رشته برنامه‌نویسی به وجود می‌آید. دانش‌پژوهان در کلاس‌های آموزشی برنامه‌نویسی به دفعات می‌شنوند که مریبان از دو اصطلاح سی شارپ و دات‌نت به جای یکدیگر استفاده می‌کنند و تصور می‌کنند این دو اصطلاح با هم یکسان هستند. حال این پرسش مطرح می‌شود که چگونه تفاوت این دو مفهوم را برای فردی که تازه یادگیری یک زبان برنامه‌نویسی را شروع کرده، شرح دهیم؟

پیشنهاد مقاله: الگوریتم چیست و چرا دانستن آن مهم است؟

اگر این سؤال را در گوگل جست‌وجو کنید، پاسخ‌های زیادی پیدا خواهید کرد، اما به نظر نمی‌رسد که آن‌ها اطلاعات روشن و دقیقی در اختیارتان قرار دهد. به عنوان مثال، اگر «تفاوت بین سی‌شارپ و دات‌نت» را در سایت معتبری مثل Stack Overflow جست‌وجو کنید، پاسخ زیر که بالاترین واکنش مثبت را دریافت کرده‌اند را پیدا می‌کنید:

سی شارپ یک زبان برنامه‌نویسی است، در حالی که دات‌نت یک اصطلاح عمومی است که .Net Framework (یک چارچوب کاربردی بزرگ) و زمان اجرای زبان مشترک (Common Language Runtime) را شامل می‌شود که زمان اجرا در اسمبلی‌های دات‌نت اجرا می‌شود.

این پاسخی جامع و فراگیر است، اما اگر دانش‌آموزی باشید که به‌تازگی دوره یادگیری برنامه‌نویسی را آغاز کرده، با دیدن این پاسخ، پرسش‌های دیگری به ذهن‌تان خطور می‌کند. به همین دلیل، تصمیم گرفتیم در این مقاله به بررسی تفاوت‌های این دو مفهوم بپردازیم.

محیط اجرا (RUNTIME ENVIRONMENT) چیست؟

مربیان بوتکمپ‌های ما پیش از شروع کار به مدت 40 ساعت جاوا اسکریپت را به دانشجوان آموزش می‌دهند. دانش‌آموزان بعد از شنیدن توضیحات مربی، تمرین‌ها را کامل می‌کنند. در نمونه جالبی که یکی از مربیان ما به آن اشاره کرد، یکی از دانشجوان که به جایی رسیده بود که خودش شروع به نوشتن کد کند، یک ویرایشگر متنی را نصب کرد و اولین برنامه جاوا اسکریپت ساده خود را نوشت که چند متغیر داشت و برخی از پیام‌ها را در کنسول ویرایشگر نشان می‌داد. در این زمان، وقتی برنامه خود را تکمیل کرد، پرسید “حالا چه طور این کد را اجرا کنم؟”

مجتمع دانش و فناوری بامداد ارائه می‌کند: بوتکمپ برنامه‌نویسی سی شارپ

او درک کرده بود که کد فقط متن است و چیزی که آن را به یک برنامه “جاوا اسکریپت” تبدیل می‌کند این است که یک پسوند .js روی آن دارد و ترکیب نحوی دستورات آن منطبق با قواعدی است که جاوا اسکریپت تعیین کرده است. هر زبان، ترکیب نحوی مخصوص به خودش را دارد. به طور مثال، برخی از دستورات در بلوک‌هایی داخل پرانتز نوشته می‌شوند یا نقل قول‌ها و کامنت‌ها هر کدام کاربرد خاص خود را دارند. کد بدون محیط زمان اجرا بی معنی است. محیط زمان اجرا، برنامه‌ای است که نحو را درک می‌کند و می‌فهمد چگونه آن را اجرا کند. این برنامه (یا “موتور”) در مرورگرها تعبیه شده است و به همین دلیل است که می‌توانیم جاوا اسکریپت را در همه مرورگرهای خود اجرا کنیم. با این حال، هر مرورگر موتور مخصوص به خود را برای اجرای دستورات دارد. به همین دلیل است که گاهی اوقات هنگام اجرای برنامه‌ها در مرورگرهای مختلف رفتار متفاوتی را تجربه می‌کنیم.

مدیریت زبان جاوا اسکریپت برعهده افراد خاصی است. هر چند وقت یک بار، این افراد تصمیم می‌گیرند که تغییراتی را ایجاد کنند. مثلا اگر سابقه کدنویسی در JS را داشته باشید، حتما به یاد دارید که در برنامه خود از «var» به جای «const» و «let» استفاده می‌کردید یا از کلمه کلیدی «function» به جای fat arrows یا همان => استفاده می‌کردید. اینها ویژگی‌های جدیدی هستند که به تازگی به این زبان اضافه شده‌اند. مهم است یادآوری کنیم که این ویژگی‌های جدید تا زمانی که محیط‌هایی که این کد در آن اجرا می‌شود به‌روزرسانی نشده‌اند تا نحوه تفسیر این نحو جدید را بدانند، بی‌معنی هستند.

پیشنهاد مقاله: با رعایت این 10 نکته جادویی در یادگیری برنامه‌نویسی موفق خواهید بود

کتابخانه اصلی و اشیاء و کلاس‌های از پیش ساخته شده جاوا اسکریپت

به طور معمول، زبان‌های برنامه‌نویسی مجهز به کلاس‌ها و متدهای از پیش ساخته شده هستند. قبل از آن‌که شروع به کدنویسی در جاوا اسکریپت کنیم، چند شی و کلاس داریم که به آن‌ها دسترسی داریم. از جمله این مولفه‌های از پیش ساخته می‌توان به Promises، متدهای ایستای «Math.random» و «JSON.parse»، آرایه‌ها و متدهای آرایه مانند map، filter، reduce، Etc و غیره اشاره کرد.

در همه زبان‌های برنامه‌نویسی، زمان اجرا و کتابخانه‌های اصلی به شکل یکپارچه در دسترس هستند. اگر کلاس‌هایی مانند رشته‌ها و آرایه‌ها قبلا پیاده‌سازی نشده بودند، نوشتن یک برنامه جاوا اسکریپت کار چندان ساده‌ای نبود، زیرا باید همه چیز را خودتان می‌نوشتید.

برگردیم به سؤال اصلی: تفاوت سی شارپ (#C) و دات‌نت (Net.) چیست؟

اکنون که درک بهتری از محیط‌های زمان اجرا و کتابخانه‌های اصلی به دست آورید، زمان آن رسیده تا پاسخ خود را دوباره بررسی کنیم.

سی شارپ یک زبان برنامه نویسی است، در حالی که دات نت یک اصطلاح عمومی است که هم .NET Framework (یک کتابخانه فریمورک برنامه کاربردی) و زمان اجرای زبان مشترک (Common Language Runtime) را شامل می‌شود که تمامی کدهای نوشته شده به زبان سی شارپ را کامپایل می‌کند.

سی شارپ یک زبان برنامه نویسی همه منظوره و کاربردی است. این زبان برنامه نویسی، قواعد  و کلمات کلیدی مخصوص به خود را دارد (به عنوان مثال “class”، “namesapce”، “return” و غیره)، آکولادهای باز و بسته، کلاس‌ها و اشیایی که همگی در ارتباط با یکدیگر کار می‌کنند.

زمان اجرای دات نت (Dot NET runtime) ابزاری است که در واقع می‌داند چگونه کد کامپایل شده ما را اجرا کند. دات نت به عنوان زمان اجرای زبان مشترک (CLR) نیز شناخته می‌شود. به همین دلیل است که زمان اچرای دات نت علاوه بر زبان سی شارپ، می‌تواند کدهای نوشته شده با اف شارپ (F#) و ویژوال بیسیک (VisualBasic) را نیز اجرا کند.

و در حالی که کتابخانه هسته جاوا اسکریپت تعداد انگشت شماری از عملکردهای داخلی را به ما ارائه می‌دهد، دات نت با هزاران کلاس به طور مستقیم در دسترس ماست تا به سرعت شروع به کدنویسی کنیم. به عنوان مثال، ما بلافاصله بعد از شروع کدنویسی در سی شارپ با کلاس `List` آشنا می‌شویم. کلاس List در حال حاضر برای استفاده ما در دسترس است و از قبل متدهایی مانند Add و Remove در آن پیاده‌سازی شده است. این کتابخانه‌های کلاس همان چیزی هستند که .NET Framework را شکل می‌دهند.

خب! اگر تصمیم دارید یادگیری سی شارپ را همراه با دات نت شروع کنید، خبر خوبی برای شما داریم. شما مالک این کتابخانه غنی هستید و قادرید از این کتابخانه و زبان برنامه نویسی برای نوشتن برنامه های ارزشمند استفاده کنید. در نهایت باید به این نکته اشاره کنیم که دات نت توانایی کامپایل کتابخانه‌های مایکروسافت و کدهایی که ما به زبان سی شارپ نوشته‌ایم را دارد.

نویسنده: حمیدرضا تائبی

ثبت ديدگاه