| کانال توسعه‌دهندگان سی‌شارپ |
1.03K subscribers
19 photos
3 videos
21 links
⭕️ کانال توسعه‌دهندگان سی‌شارپ دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
معرفی و نحوه کارکرد دات‌نت

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

1.Languages: C#, F#, Vb, Q# ...etc
2.Runtimes: CLR
3.Libraries: BCL, packages ...etc

اولین نسخه در سال 2002~ تحت عنوان dotnet framework 1.0 منتشر شد که مخصوص توسعه اپلیکیشن‌های ویندوز بود؛ تا حدود سال 2016، یک successor با عنوان dotnet core 1.0 معرفی شد. (توسعه نسخه framework همچنان ادامه داره و اخرین نسخه، 4.8.1 حوالی سال 2022 منتشر شده)
این نسخه برخلاف نسخه‌های قبلی، open-source و cross-platform بود که تحول نسبتاً بزرگی به حساب میومد.

نحوه کارکرد

زمانی که یک کد سی‌شارپ (یا F# ,vb و بقیه زبان‌های دات‌نت) می‌نویسید، کد شما برعکس زبان‌هایی مثل C/CPP و Rust و ... به زبان ماشین تبدیل نمی‌شن.
وقتی کدتون رو compile می‌کنید، کدهای شما توسط CLR (در ادامه راجبش صحبت می‌کنیم) به یک زبان میانی به اسم MSIL یا همون CIL تبدیل می‌شن.
MS-IL: Microsoft Intermediate Language.
CIL : Common Intermediate Lanauge.
(هردو یکی هستن که به طور خلاصه بهشون IL میگیم، نامگذاری‌های مایکروسافته دیگه)

بعد از تبدیل کدهای شما به IL، در زمان اجرا تمامی این کدها توسط یک compiler دیگه به اسم JIT به کدهای native یا کدهای قابل فهم machine تبدیل می‌شن.

‏----

به زبان ساده، کدهای شما در زمان compile به یک زبان دیگه تبدیل و وقتی برنامتون رو اجرا می‌کنید، در لحظه اجرا، اون کدها به زبان ماشین تبدیل و اجرا می‌شن.

توی قسمت‌های بعدی جزئیات این فرایند و CLR رو بررسی می‌کنیم.
#CLR

👤 QWxp

💎 Channel: @DevelopixCSharp
👍81🔥1
بررسی CLR - قسمت اول

CLR: Common Language Runtime
(JVM in Java)

کدهای سی‌شارپ مثل جاوا، روی یک virtual machine اجرا میشن، یک محیط ایزوله و managed شده که وظیفه کنترل و مانیتور کد هارو به عهده داره. CLR از اجزای مختلفی تشکیل شده،
مهمترین اونها:
JIT, CL, CTS, CLS, Memory Manager, GC, Security Manager, Thread Manager, Exception Manager
هستن.

که البته سعی میکنم راجب همشون صحبت کنم ولی قبلش باید دقیقا متوجه بشیم که چه اتفاقی برای کد های ما میوفته؛ بعد از تبدیل کد های ما به IL ، چالش اصلی، محیطی هست که کد های ما قراره داخلش اجرا بشن، یکی از دلایل وجود CLR و JIT هم همینه؛ کد های IL ای که برای ما تولید شدن، مربوط به هیچ سیستم عامل به‌خصوصی نیستن، درواقع IL ساخته شده قابلیت اینو داره که روی تمام سیستم ها اجرا بشه ، چیزی که توی زبان های native طبیعتا امکان پذیر نیست.

زمانی که شما یک کد C/CPP رو Compile میکنید، کد های شما مخصوص یک محیط، یک CPU و معماری هستن، کد های تولید شده امکان اجرا روی محیط های دیگه رو ندارن، اگه برای ویندوز کد نوشتید، کد شما روی لینوکس اجرا نمیشه و برعکس ...

اما برای زبان های دات‌نتی و به طور کلی زبان هایی که روی VM اجرا میشن اینطور نیست.

به طور خلاصه، CLR به ما کمک میکنه که کدهامون رو توی محیط های مختلف اجرا کنیم

1. نقش JIT
JIT: Just-In-Time Compiler

با درنظر گرفتن تمام این موارد، چطور کد های IL روی سیستم های مختلف قابل اجرا هستن؟
در مرحله اول، کد های IL شما به وسیله JIT، به کد های native تبدیل میشن، اگر برنامه شما روی لینوکس اجرا میشه ، JIT کد های IL رو برای لینوکس compile میکنه، و اگر روی ویندوز اجرا بشه ، برای ویندوز؛ به این فرایند اصطلاحا JIT'ing گفته میشه.
توجه داشته باشید که JIT فقط کد هایی رو تبدیل به native میکنه که CL اونهارو Load کرده باشه.

2. وظیفه CL
CL: Class Loader

احتمالا خودتون میتونید حدس بزنید که نقش CL چیه، وظیفه مدیریت و load کردن کلاس ها به عهده CL هست، زمانی که یک کلاس رو توی کد استفاده میکنید، تا زمانی که برنامه به اون قسمت از کد نرسه، کلاس رو Load نمیکنه، به محض نیاز، کلاس توسط CL توی حافظه load میشه و بعد از استفاده هم طبیعتا از بین میره.

#CLR #JIT

👤 QWxp

💎 Channel: @DevelopixCSharp
👍5🔥2