2011-12-14 17 views
7

Na tej stronie często widzę ludzi odpowiadających na pytania z takimi odpowiedziami jak "to działa tak, ponieważ kompilator zamienia [rzecz] na [inne rzeczy]", więc moje pytanie brzmi: jak ludzie to wiedzą/uczą się? Gdzie mogę się tego nauczyć?Gdzie mogę przeczytać, co robi kompilator C#?

+11

Musisz znać tajny uścisk dłoni. – ChaosPandion

+0

http://www.dotnetperls.com/compiler –

+3

[Specyfikacja języka C#] (http://msdn.microsoft.com/en-us/library/ms228593.aspx) i [Reflektory] (http: // stackoverflow. com/questions/2425973/open-source-alternatives-to-reflector) –

Odpowiedz

13

Najbardziej definitywnym źródłem interpretacji kodu kompilatora C# jest specyfikacja języka C#.

także następujące blogi dostarczyć dużo więcej wgląd w języku C#. Obowiązkowa lektura dla każdego, kto chce stać się ekspertem w języku

+6

Dodałbym [bloga Erica Lipperta] (http: // blogs. msdn.com/b/ericlippert/) do tego. – GSerg

+3

@GSerg Często myślę o specyfikacji C# Lang jako o "tym, co robi kompilator", a blogu Erica o "dlaczego kompilator robi to, co robi" – JaredPar

2

Jedną z technik jest skompilować kod, a następnie dekompilacji za pomocą narzędzi takich jak ILSpy. Za pomocą takiego narzędzia można wyświetlić surowe IL i przekonać się, co produkuje kompilator.

0

Oprócz sprawdzenia języka pośredniego i zapoznania się ze specyfikacją językową, proszę pozwolić mi dodać "CLR przez C#" autorstwa Jeffrey Richter. Numer kontrolny kongresu Microsoft Press Library: 2009943026. Ta wzmianka jest niesamowita i zawiera szczegółowe informacje na temat tego, co dzieje się pod kołdrą.

0

Książka Niklausa Wirtha Compiler Construction (PDF) jest wprowadzeniem do teorii i technik konstruowania kompilatorów. Daje ogólne pojęcie o tym, czym jest kompilator i co robi.

1

Oprócz innych odpowiedzi, chciałbym wspomnieć, że LINQPad jest moim ulubionym narzędziem do inspekcji IL dla szybkich fragmentów.

Możesz wpisać fragment kodu i natychmiast zobaczyć IL.
Jest to zdecydowanie najłatwiejsze w użyciu narzędzie, które można natychmiast wprowadzać i wyświetlać.