Właśnie czytałem niektóre białe księgi i przykłady z Microsoft „Roslyn” i koncepcja wydaje się bardzo interesująca. Z tego, co mogę powiedzieć, otwiera czarną skrzynkę, która jest kompilatorem i zapewnia interfejs, którego możemy użyć do uzyskania informacji i metryk dotyczących kodu napisanego w Visual Studio.
Wydaje się, że Roslyn ma także możliwość „skryptowania” kodu i kompilowania / wykonywania go w locie (podobnie jak CodeDom), ale z mojego doświadczenia spotkałem się tylko w ograniczonym zakresie dla tego rodzaju funkcjonalności.
Chociaż element analizy i metryk kodu jest interesującą przestrzenią ... istnieje już od bardzo dawna i istnieje wielu dostawców, którzy zainwestowali już dużo pieniędzy w narzędzia do analizy i refaktoryzacji kodu (np. ReSharper, CodeRush , nCover, itp.) i robią to całkiem nieźle!
Dlaczego którakolwiek firma miałaby się starać wdrożyć coś, co można by zaoferować za ułamek kosztów, kupując licencję na jedno z istniejących narzędzi?
Może przegapiłem kluczową funkcjonalność projektu Roslyn, która umieszcza go poza domeną wspomnianych narzędzi ...
źródło
Odpowiedzi:
Kompilacja i wykonywanie w locie to podstawowa zaleta Roslyn. Myślę, że możesz nie doceniać korzyści płynących z tej funkcji, ponieważ nigdy nie spotkałeś się z przypadkiem użycia, w którym naprawdę świeci. I to ma sens; potrzeba dynamicznej kompilacji jest prawdopodobnie niszową funkcją, ale posiadanie jej zapewnia pewne zaawansowane aplikacje, które bez niej byłyby znacznie trudniejsze.
Oto kilka przykładów z mojej głowy, w których kompilacja dynamiczna byłaby całkiem przydatna. Są inne sposoby na osiągnięcie tych wszystkich celów, ale Roslyn je ułatwia.
Podsumowując, możesz nigdy nie znaleźć zastosowania dla Roslyn, w zależności od oprogramowania, które spędzasz na pisaniu. Istnieje jednak wiele przypadków użycia, w których Roslyn wnosi wiele do stołu. Żadne z wymienionych narzędzi nie udostępnia tej funkcji. Nie mogli też opierać się na swojej architekturze i celu.
źródło
Jestem pewien, że firmy dostarczające narzędzia (np. JetBrains *) są bardzo zainteresowane Roslyn. Microsoft chce ułatwić tworzenie narzędzi, ponieważ dobre narzędzia zachęcają do korzystania z ekosystemu Microsoft.
* Na blogu JetBrains ( ten wpis ) JetBrians ogłosił, że nie będzie używać Roslyn. Wyobrażam sobie jednak, że każdy nowy konkurent JetBrains (który nie ma wcześniejszej bazy kodu do pracy) użyje Roslyn; daje im to przewagę.
Pytanie 6 na 10 pytań, 10 odpowiedzi na Roslyn :
źródło
Z niecierpliwością czekam na dzień, w którym wszystkie kompilatory rutynowo oferują Compiler as a Service (CaaS). Musimy przestać myśleć, że kompilatory emitują tylko kod wstępnego linkera i zacząć myśleć, że kompilatory emitują drzewa, które można przekształcić w wiele celów. Wszystkie kompilatory powinny mieć funkcję do emitowania drzew i opcjonalnie JSON / XML. Dane wyjściowe można następnie przekształcić w wiele typów obiektów docelowych, takich jak upiększony ten sam język, C, źródło IL, IL binarny, Java, JavaScript, LLVM, plik wykonywalny PIC, a nawet kod pre-linkera.
Piszę kompilatory na życie. Moi klienci są sprzedawani na CaaS, ponieważ otwiera to drogę do fantastycznej elastyczności, przenośności i analizy.
Jestem naprawdę rozczarowany, że Microsoft nie wdrożył CaaS dawno temu. Na przykład można go użyć jako ścieżki migracji dla VB6 do czegoś innego lub .Net do C ++.
źródło
Prosta odpowiedź na pytanie, dlaczego MSFT inwestuje w Roslyn, polega na tym, że ich obecna baza kodu dla kompilatora C # ma teraz 5 wersji - 11 lat. To długi czas na zarządzanie bazami kodu. Ponadto, ponieważ przepisują tekst, postanowili zainwestować w to, aby wszystkie jego elementy wewnętrzne były widoczne jako interfejsy API.
źródło