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 ها هر کدام برای گرفتن یک سری از اطلاعات از کامپایلر در رابطه با کد مفید است . لیست کامل آن را در زیر مشاهده می کنید:
نگاهی به Roslyn
همانطور که در این پست اشاره کردم Roslyn نگاهی جدید به کامپایلر است.مایکروسافت کد نوشته شده با C++ را در کامپایلر دات نت با managed code جایگزین و با سی شارپ و ویژوال بیسیک باز نویسی کرده است.حالا بعد از پنح سال Roslyn انتشار یافته آن هم به صورت سورس باز.
کامپایلر ها عموما بسیار پیچیده طراحی شده اند و کوچکترین تغییرات زبانی نیاز به کارهای بسیار زیادی دارد. کامپایلرها در C# و VB از ریشه با هم تفاوت های اساسی داشتند و این باعث بوجود آمدن و پیاده سازی business های پیچیده در IDE و همچنین باعث بروز رفتار های متفاوت درIDE های C# و VB می شد.
مزایای Roslyn چیست؟
سورس باز است.شما می توانید از این جا سورس کدش را مطالعه کنید.
همانطور که در این پست اشاره کردم Roslyn نگاهی جدید به کامپایلر است.مایکروسافت کد نوشته شده با C++ را در کامپایلر دات نت با managed code جایگزین و با سی شارپ و ویژوال بیسیک باز نویسی کرده است.حالا بعد از پنح سال Roslyn انتشار یافته آن هم به صورت سورس باز.
کامپایلر ها عموما بسیار پیچیده طراحی شده اند و کوچکترین تغییرات زبانی نیاز به کارهای بسیار زیادی دارد. کامپایلرها در C# و VB از ریشه با هم تفاوت های اساسی داشتند و این باعث بوجود آمدن و پیاده سازی business های پیچیده در IDE و همچنین باعث بروز رفتار های متفاوت درIDE های C# و VB می شد.
مزایای Roslyn چیست؟
سورس باز است.شما می توانید از این جا سورس کدش را مطالعه کنید.
با مدلی زبانی که بوجود آورده می توان به راحتی یک سری ابزار برای analyze کد نوشت.
می توان یک سری ابزار refactorings و حتی هشدارهای اختصاصی نوشت.
این نکته قابل توجه است که کامپایلر زبان با خود آن زبان نوشته شده است.
البته در این بین واکنش jetbrains هم برای استفاده از Roslyn در ریشارپر جالب بود.که آنها معتقدند که از Roslyn استفاده نکنند.یکی به این دلیل که نوشتن ،تست کردن و پایدار کردن فرایندی زمان گیر است و همچنین آنها ده سال است که روی ریشارپر کار کرده اند.علاوه بر آن معماری که در ریشارپر استفاده شده با Roslyn سازگار نیست.
حالا سوالی که ممکن است برای همه پیش بیاید این است که واقعا کد نوشته شده C++ که بسیار سریعتر است چگونه با کد های C# و VB جایگزین شده اند و آیا از لحاظ سرعت افت کرده اند یا نه.
می توان یک سری ابزار refactorings و حتی هشدارهای اختصاصی نوشت.
این نکته قابل توجه است که کامپایلر زبان با خود آن زبان نوشته شده است.
البته در این بین واکنش jetbrains هم برای استفاده از Roslyn در ریشارپر جالب بود.که آنها معتقدند که از Roslyn استفاده نکنند.یکی به این دلیل که نوشتن ،تست کردن و پایدار کردن فرایندی زمان گیر است و همچنین آنها ده سال است که روی ریشارپر کار کرده اند.علاوه بر آن معماری که در ریشارپر استفاده شده با Roslyn سازگار نیست.
حالا سوالی که ممکن است برای همه پیش بیاید این است که واقعا کد نوشته شده C++ که بسیار سریعتر است چگونه با کد های C# و VB جایگزین شده اند و آیا از لحاظ سرعت افت کرده اند یا نه.
linke channel baraye erjae mataleb:
https://telegram.me/Programminglanguages
https://telegram.me/Programminglanguages