Programming languages
135 subscribers
202 photos
36 videos
49 files
249 links
A channel about all kind of programming languages, and their architectures and concepts.
Download Telegram
بسیاری از اعضا جزو مدیران کانال خواهند بود تا مباحث به صورت علمی تری باشد با این وجود تمام دوستانی که وقت کافی برای فعالیت ندارند در ترک کانال یا استعفای از مدیریت آزاد می باشند گرچه بودن در کانال وقتی از آنها تلف نخواهد کرد
بعضی قوانین ساده در گذاشتن مطالب:
مهم نیست مطلبی که میذارید از اطلاعات یا تجربیات خودتون هست یا نه اما باید نسبت به صحیح بودنش مطمین باشید، و مطلب مفیدی باشه
مطالب به هر دو صورت انگلیسی و فارسی میتونن باشن
مطالبی که بحث بر انگیز هست بهتره دارای منبع معتبر باشن
Top 10 C# 6.0 Language Features
10. Expression Bodied Methods
9. ?—Conditional Access Operator
8. Auto-Property Initializers
7. Primary Constructor
6. OUT Parameter Declaration During Method Call
5. Await in the Catch Block
4. Exception Filters
3. Using Is Allowed
2. String Interpolation
1. Roslyn—A New Compiler for C# and VB
Programming languages
1. Roslyn—A New Compiler for C# and VB
بد نیست این ویژگی رو دربارش بیشتر بدونید:
1. Roslyn—A New Compiler for C# and VB

Roslyn is the compiler for the C# 6 language; it has quite a bit of compiler improvements and, importantly, it is open source. Compiler Roslyn is also available as a service, in other words a "compiler as a service" because you can use the Roslyn API libraries to extend. This is just a scratch on the surface of Roslyn. I will leave it to the readers to explore it more.

https://en.wikipedia.org/wiki/.NET_Compiler_Platform
Roslyn چیست؟

به طور معمول کامپایلر ها برای ما black box هستند به این معنی که سورس کد از یک طرف وارد می شود و یک اتفاق جادویی رخ می دهد و فایل و اسمبلی از طرف دیگر خارج می شود.کامپایلر است که این کار جادویی را انجام می دهد.کامپایلر درک عمیقی از کدی دارد که در حال پردازش بر روی آن است ولی هیچ اطلاعاتی برای بقیه وجود ندارد.

برای ده ها سال این کار یک کار روتین کامپایلر بود.

به تازگی تکیه ما روی IDE بسیار زیاد شده و امکاناتی مثل :

IntelliSense ،refactoring،intelligent rename ، Find all references وGo to definition به شدت بهره برداری ما را از کد بالا برده .

ما تکیه بیشتری بر روی کد آنالیزر ها برای بهبود بخشیدن به کیفیت کد خود داریم و همچنین code generator ها باعث تولید راحتر برنامه می شوند.

این ابزار روز به روز باهوش تر می شوند و نیاز مند دسترسی بیشتر به اطلاعات کدی دارند که تا پیش از این فقط کامپایلر از آن آگاه بوده.این کارِ هسته اصلی Roslyn است:

باز کردن black box و اجازه دادن به ابزار و کاربران برای بدست آوردن اطلاعاتی از کامپایلر که درباره کد مااست .

در این حالت به جای اینکه ما یک کد به کامپایلر تحوبل دهیم و یک شی ترجمه شده را دریافت کنیم به وسیله پروژه Roslyn کامپایلر تبدیل به سرویس هایی می شود که از این API ها می توان به منظور انجام یک سری از عملیات که در بالا نام برد ه شد استفاده شوند.

تبدیل شدن کامپایلر ها به سرویس به طور چشمگیری کار نوشتن ابزار و کدهایی که روی meta-programming, code generation تمرکز دارند را راحت تر خواهد کرد.

پروژه Roslyn در کامپایلر سی شارپ و وی بی code analysis خود را به وسیله یک لایه API به دنیای بیرون منتشر می کند.
هر کدام از فاز هایی که در pipeline کامپایلر تا به قبل یکی بوده اند جدا شده و در کامپنیت های جدا گانه ای قرار گرفته اند.

در فاز اول سورس شکسته شده و سینتکس آن با توجه به اینکه با چه زبانی است پارس می شود.

در فاز دوم که فاز اعلامیه است ،اعلامیه ها و metadata های وارد شده تجزیه و تحلیل می شوند.

فاز بعدی فازی است که شناسه ها با symbols تطبیق داده می شوند.

در آخر هم اطلاعات ساخته شده در داخل اسمبلی گنجانده می شوند.
همانطور که در بالا مشاهده میکنید به ازای هر فازی که توضیج داده شد API متناظرش نیز به وجود آمده که این API ها هر کدام برای گرفتن یک سری از اطلاعات از کامپایلر در رابطه با کد مفید است . لیست کامل آن را در زیر مشاهده می کنید: