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
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
Wikipedia
.NET Compiler Platform
.NET Compiler Platform, better known by its codename "Roslyn", is a set of open-source compilers and code analysis APIs for C# and Visual Basic .NET languages from Microsoft.
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 به دنیای بیرون منتشر می کند.
به طور معمول کامپایلر ها برای ما 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 تطبیق داده می شوند.
در آخر هم اطلاعات ساخته شده در داخل اسمبلی گنجانده می شوند.
در فاز اول سورس شکسته شده و سینتکس آن با توجه به اینکه با چه زبانی است پارس می شود.
در فاز دوم که فاز اعلامیه است ،اعلامیه ها و metadata های وارد شده تجزیه و تحلیل می شوند.
فاز بعدی فازی است که شناسه ها با symbols تطبیق داده می شوند.
در آخر هم اطلاعات ساخته شده در داخل اسمبلی گنجانده می شوند.
همانطور که در بالا مشاهده میکنید به ازای هر فازی که توضیج داده شد API متناظرش نیز به وجود آمده که این API ها هر کدام برای گرفتن یک سری از اطلاعات از کامپایلر در رابطه با کد مفید است . لیست کامل آن را در زیر مشاهده می کنید: