۱.نگاهی به C#
C# یک زبان برنامهنویسی شی گرا، ساده و مدرن است که توسط شرکت Microsoft عرضه شده است. .NET Foundation این پروژهی متنباز (Open Source) را مدیریت میکند.
C# یک زبان برنامهنویسی شی گرا و کامل است که به برنامهنویسان این امکان را میدهد اپلیکیشنهایی کراسپلفترم (cross-platform) برای پلتفرمهای ویندوز، تحت وب و موبایل بنویسند. میتوانیم برنامههای C# را در سیستمعاملهای لینوکس، ویندوز، iOS و اندروید بنویسیم.
C# یک زبان برنامهنویسی مدرن است. می توانیم از آن برای نوشتن برنامههای نرمافزاری مدرن امروزی استفاده کنیم.
از C# میتوانیم برای توسعهی انواع مختلف اپلیکیشنها استفاده کنیم: برنامههای کلاینت ویندوز، کامپوننتها (component) و کتابخانهها (library)، سرویسها (service) و APIها، اپلیکیشنهای تحت وب، برنامههای موبایل، اپلیکیشنهای ابری و بازیهای ویدیوئی.
Microsoft از دو فریمورک توسعهی نرمافزار پشتیبانی میکند، فریمورک .NET و .NET Core. فریمورک .NET برای توسعهی اپلیکیشنهای ویندوز و تحت وب در سال ۲۰۰۱ منتشر شد.
اما با فراگیر شدن مفهوم متنباز، شرکت Microsoft نیز کامپایلرهای زبان و .NET را متنباز کرد و این .NET جدید .NET Core نامیده میشود.
در آینده تنها یک نسخه از .NET وجود خواهد داشت، که همان .NET خواهد بود. نسخهی بعدی .NET در سال ۲۰۲۰ و با نام .NET 5 منتشر خواهد شد.
۲. آمادگی برای شروع آموزش سی شارپ
قبل از اینکه اولین اپلیکیشن C# را شروع کنید، باید یک ویرایشگر متن (Editor) یا محیط یکپارچهی توسعهی نرمافزار (IDE) داشته باشید، که بتوانید در آن کدهایتان را بنویسید و کامپایل کنید.
بهترین IDE موجود برای برنامهنویسان C#، Visual Studio شرکت Microsoft است. نسخهی کنونی آن Visual Studio 2019 است.
Visual Studio 2019 به سه صورت مختلف عرضه میشود: Visual Studio 2019 Enterprise، Visual Studio 2019 Professional و Visual Studio 2019 Community
Visual Studio 2019 Community رایگان است. در این آموزش از Visual Studio 2017 Community استفاده خواهیم کرد.
همینطور میتوانید از Visual Studio Code هم استفاده کنید.
Visual Studio Code یک ویرایشگر کدِ رایگان، سبک و متن باز است که میتوانید از آن برای نوشتن و دیباگ کردن (Debug) کدهایتان استفاده کنید. VS Code از بیشتر زبانهای برنامهنویسی پشتیبانی میکند.
۳. تفاوت IDE، زبان و فریمورک
قبل از نوشتن اولین برنامه، میخواهیم تفاوتهای IDE، زبان برنامهنویسی و فریمورک را بررسی کنیم. نمیتوانیم C#، .NET و ویژوال استودیو (Visual Studio) را یکی درنظر بگیریم، چون با هم فرق دارند.
ویژوال استودیو (Visual Studio) یک IDE (محیط یکپارچهی توسعهی نرمافزار) است، C# و VB.NET زبانهای برنامهنویسی هستند و .NET یک فریمورک است.
فریمورک .NET مجموعهای عظیم از کامپوننتها و کتابخانههاست. اگر به آدرس زیر در سیستمتان بروید:
C:\Windows\Microsoft.NET\Framework
نسخههایی مختلف از فریمورک .NET را خواهید دید. اگر به هریک از پوشههای مربوط به نسخههای.NET بروید، فایلهای مختلفی را میبینید که با کلمهی “System” شروع میشوند و از نوع “Dll” هستند.
DLL مخفف کلمهی Dynamic Link Library است.
این فایلها دارای کدهایی با قابلیت استفادهی مجدد (reusable code ) هستند که کاری خاص را انجام میدهند.
مثلاً، فایل “System.Data.dll” به ذخیرهی داده در RDBMS کمک میکند یا فایل “System.Drawing.Dll” برای اهداف GUI (واسط کاربری گرافیکی) و نمایش است.
پس به زبانی ساده، فریمورک .NET مجموعهای بزرگ از کامپوننتهایی با قابلیت استفادهی مجدد است.
حالا برای نوشتن یک برنامه، باید منطق برنامه را بنویسیم و این کامپوننتها را فراخوانی کنیم.
برای این کار به زبان برنامهنویسی نیاز داریم. C# و VB.NET زبانهای برنامهنویسی هستند. این زبانها میتوانند این کامپوننتها را فراخوانی و از آنها استفاده کنند.
در اپلیکیشنهای حرفهای، سایز برنامه بسیار بزرگ است و برای مدیریت بهتر اتوماسیون موارد زیر لازم است:
- پیدا کردن و ارجاع به کامپوننت فریمورک .NET در کد C#
- کمک به پشتیبانی از کامپوننتهای .NET در زمان کدنویسی
- چک کردن سینتکس C# و کامپایل آن
به طور خلاصه، ابزاری لازم داریم که در مدیریت کد C# و ارجاع کامپوننتهای فریمورک .NET در شرایط مختلف کمکمان کند. میتوانیم این ابزار را یک محیط یکپارچهی توسعهی نرمافزار بنامیم. (VS IDE (Visual Studio IDE تمامی این کارها را برایمان انجام میدهد.
طور خلاصه، C# یک زبان برنامهنویسی است و از کامپوننتهای فریمورک .NET برای نوشتن یک اپلیکیشن استفاده میکند.
برای توسعهی یک نرمافزار، باید کارهایی را انجام دهیم، مثلاً کامپایل کردن برنامه، ارجاع به کامپوننتهای فریمورک .NET، چک کردن سینتکس و غیره، که VS IDE همهی این کارها را انجام میدهد. پس VS IDE یک ابزار است.
۴. اولین اپلیکیشن C#
بیایید اولین اپلیکیشنمان را در C# بنویسیم: برنامهی “Hello World”. این سادهترین برنامهای است که میتوانید در C# بنویسید.
این برنامه در خروجی کنسول مینویسید: “Hello, C# world!”
۵. درک بهتر فرایند کامپایل برنامه (کدهای IL و JIT)
برای اجرای کد نرمافزار در یک ماشین، باید فرایندی به نام کامپایل را انجام دهیم.
به زبانهای برنامهنویسیای که برای انسان قابل فهماند، زبان برنامهنویسی سطح بالا (higher level language) میگویند، مثل جاوا و C#.
برای اجرای کد این زبانها در سختافزار، باید آنها را به زبان ماشین (باینری) تبدیل کنیم.
به فرایند تبدیل یک زبان سطح بالا به یک زبان ماشین کامپایل کردن میگویند.
برای کامپایل کردن کد C#، روی Build کلیک کنید و سپس Build solution را انتخاب کنید.
این گزینه تمامی پروژههای موجود در solution را بیلد میکند. برای build کردن یک پروژهی خاص، گزینهی مورد نظر به آن را انتخاب کنید. احتمالاً متوجهی دو پوشهی “obj” و “bin” شدهاید. پوشهی “obj” دارای فایلهای باینری است که به هم لینک نشدهاند. پوشهی “bin” فایلهای باینری کامپایلشدهی نهایی را دارد.
پس حالا حتماً فکر میکنید که کد ماشین نهایی در پوشهی “bin” است. هم بله و هم خیر.
وقتی build را میزنیم، کامپایلر .NET کد برنامه را به یک زبان میانی تبدیل میکند که به آن کدIL میگوییم. کد IL یک کد نیمه کامپایل شده است.
برای دیدن این کد روی برنامه کلیک کنید و developer command prompt را باز کنید و دستور ILDASM را اجرا کنید.
برای نوشتن دیدگاه باید وارد بشوید.