از کد تا اجرا
برای تولید یک پروژۀ برنامهنویسی قوی با C#، میتوان از پلتفرمهای توسعه مانند .Net استفاده کرد که توسط مایکروسافت ارائه شده است .Net یک چارچوب نرمافزاری متنباز است که شامل کتابخانههای کد، ابزارها و خدمات مختلفی است که به برنامهنویسان در ساخت انواع برنامهها، از جمله برنامههای وب، برنامههای دسکتاپ، برنامههای موبایل و بازیها کمک میکند.
این پلتفرم به گونهای طراحی شده که برنامههای نوشته شده با آن سریع و کارآمد باشند.
به زبان ساده، .Net مانند یک جعبه ابزار بزرگ است که شامل ابزارهایی است که برای ساخت برنامههای مختلف نیاز دارید
استفاده از .Net چهارچوب و راه استانداردی برای برنامهنویسی ارائه میدهد و توسعۀ نرمافزار را سادهتر میکند. این کار باعث میشود تا تمرکز برنامهنویس روی الگوریتمها و موارد خاص هر پروژه متمرکز شود.
ما در این کتاب از C# 10 و .Net 6 استفاده میکنیم. در واقع، برنامههایی که با C# مینویسیم ترکیبی از زبان C# و .Net هستند. در ادامه مسیر، بیشتر با .Net آشنا میشویم.
پردازش کد
پروژۀ C# از متد Main شروع میشود. بهصورت پیشفرض کدها خط به خط اجرا میشوند که با استفاده از دستورات شرطی باعث میشویم که در قسمتی از کد، بنا بر درستی شرط، بخشی از کد اجرا شود و بقیۀ کدها نادیده گرفته شوند. همچنین، با استفاده از حلقهها میتوانیم بخشی از کد را به دفعات تکرار کنیم. در صورتی که یک متد را صدا کنیم، اجرای کد به درون متد رفته و کدهای درون متد اجرا میشوند. سپس به همان جایی که متد صدا زده شده است، باز میگردد و اجرای کد ادامه مییابد.
چگونگی ترجمه زبان انسان به زبان کامپیوتر
زبان کامپیوتر زبان صفر و یک است، اما فهمیدن صفر و یک برای انسان کار سادهای نیست. برای همین زبانهای برنامهنویسی مانند C# به وجود آمدهاند تا با یک دستور زبان (Syntax)، که برای انسان قابلفهم است، برنامهنویسی کنیم. کامپایلر (Compiler) کدی که نوشتهایم به زبان کامپیوتر تبدیل میکند و به این کار کامپایل (Compile) کردن میگوییم (کامپایل کردن را همان ترجمه کردن از زبان برنامه نویسی به زبان کامپیوتر در نظر بگیرید).
برای مثال، برای گفتن اینکه اگر یک شرط برقرار بود، فلان کار را انجام بده و در غیر این صورت کار دیگری را انجام بده، در دستور زبان C# از دستور if-else استفاده میکنیم. یا برای تکرار به تعداد مشخص از دستور for استفاده میکنیم.
هر برنامهای که تولید میکنیم دو مرحلۀ زمان کامپایل (CompileTime) و زمان اجرای برنامه (Runtime)را برای قابل استفاده شدن پشت سر میگذارد. بعضی از کدهایی که مینویسیم در زمان کامپایل ارزیابی میشوند و برخی دیگر در زمان اجرای برنامه.
زمان کامپایل
کدها در زمان کامپایل بررسی میشوند و در صورتی که هیچ خطایی در دستورات زبان C# وجود نداشته باشد، کامپایل میشوند و در غیر این صورت تا رفع این خطاها امکان کامپایل موفقیتآمیز وجود ندارد. در برخی حالتها، کامپایلر بهینهسازیهایی را روی کد و یا منابع مصرفی انجام میدهد تا پروژۀ کارامدتری داشته باشیم.
کامپایلر کدی را که نوشتهایم به یک زبان میانی (IL = Intermediate language) تبدیل میکند و این IL را در یک اسمبلی ذخیره میکند (اسمبلی را بهعنوان یک فایل با پسوند exe یا dll در نظر بگیرید).
زمان اجرا
کد IL، که در اسمبلی ذخیره شده است، در زمان اجرای پروژه از طریق برنامهای به نام CLR لود میشود. در این مرحله CLR کد IL را به زبان ماشین کامپایل میکند و درنهایت اجرا میشود.