Wprowadzenie do kompilatorów C #

W artykule C # Compiler, Compiler to program konwertujący kod źródłowy (kod napisany przez dowolnego programistę w dowolnym języku) na język uczenia maszynowego, aby mógł być zrozumiany przez procesor. Procesor jest najważniejszą częścią komputera, która rozumie tylko kody maszynowe. Dlatego konwersja dowolnego kodu języka na kody maszynowe jest obowiązkowa.

W C # uruchamiamy kompilatory, pobiera kod jako parametr wejściowy i wykonuje pewne przetwarzanie, po przetworzeniu dostarcza dane wyjściowe w języku pośrednim. Dane wyjściowe są zapisywane w plikach * .dll lub * .exe

Tak więc po wygenerowaniu języka pośredniego musieliśmy przekonwertować tę IL na kody maszynowe, ponieważ procesor rozumiał tylko kody maszynowe. Więc użyliśmy CLR (Common Language Runtime) do tej konwersji. CLR to program działający na komputerze i zmieniający kod IL na kody maszynowe za pomocą Just-In-Time (powszechnie nazywanej JIT). Po dwukrotnym kliknięciu pliku .exe wywoływany jest kompilator JIT, który w tym czasie kompiluje kod IL, dlatego nazywa się JUST-IN-TIME (JIT).

Kompilacja może odbywać się w sposób domniemany lub jawny. Kompilacja niejawna jest kompilacją podwójną, w której najpierw jest kompilowana IS, a następnie kompilowana do języka maszynowego. Ten proces nazywa się kompilacją JIT lub kompilacją JUST-In-Time. JIT obsługuje wiele platform i przyspiesza wykonanie kodu.

Rodzaje kompilatora Just-In-Time

Istnieją trzy różne kompilatory Just-In-Time

1. Kompilator Pre JIT

W tym kompilatorze jest tylko jeden proces kompilacji, ponieważ cały kod źródłowy jest kompilowany do kodu natywnego.

2. Normalny kompilator JIT

W tym kompilatorze tylko te metody są kompilowane do kodu maszynowego, który jest wymagany w czasie wykonywania. Kompilator kompiluje te metody, przechowuje je w pamięci podręcznej i ponownie użył tej samej metody.

3. Kompilator Econo JIT

W tym kompilatorze tylko te metody są kompilowane do kodu maszynowego, który jest wymagany w czasie wykonywania, jednak metody te są usuwane, jeśli nie są wymagane. W JIT w czasie wykonywania kompilowana jest tylko wymagana metoda, dlatego wymaga mniejszego użycia pamięci.

Na powyższym schemacie

W czasie kompilacji zostaną wykonane 1-3 kroki

W czasie wykonywania zostaną wykonane 3-5 kroków.

Kiedy uruchamiamy te dwa rodzaje błędów, występują.

Błędy czasu wykonywania i błędy kompilatora

  • Błędy kompilatora: ten typ błędu występuje w samym kompilatorze C #. Zapobiega kompilacji kodu C # do formatu .exe. Błędy te występują w zasadzie z powodu błędu składniowego. Kiedy źle napisaliśmy jakąś składnię lub brakuje nam przecinka lub średnika, kompilator nie zrozumiał tego, więc zatrzymuje przetwarzanie i generuje błąd czasu kompilacji. Możemy zobaczyć te błędy w oknie wyjściowym IDE. Tak więc, badając te błędy, możemy naprawić nasz kod.
  • Błędy czasu wykonania: są to błędy w czasie rzeczywistym. Występują one po pomyślnym skompilowaniu kodu, ale podczas działania napotkają problemy. Wpływa to na zachowanie kodu. Na przykład możemy powiedzieć, kiedy próbujemy podzielić dowolną liczbę na zero, w tym czasie pojawia się błąd czasu wykonania. Błędy te są bardziej nużące niż błędy kompilatora, ponieważ w takim przypadku musimy poprawić zachowanie kodu.

Typ kompilatorów C #

Wcześniej kompilatory Microsoft zostały nazwane jako .Net Framework, takie jak kompilator C # 2.0, kompilator C # 3.5, kompilator C # 4.x itp. Kompilatory te nie zostały napisane w języku C # lub możemy powiedzieć, że C # nie został skompilowany przez C #. Inne kompilatory, które powstały po tym, to:

1. Roslyn

Wcześniej kompilator został napisany w C / C ++. Roslyn to kompilator .Net typu open source, w którym zastąpiono kod C ++. Pobiera typy elementów w kodzie, ich wzajemne relacje. Ponieważ zespoły C # i VB napisały kompilator, szablony Visual Studio są dostępne dla obu. Pozwala nam pisać kod, który analizuje plik źródłowy, a modyfikowanie kodu źródłowego jest łatwe.

Oto cztery warstwy API Roslyn

  • Skryptowy interfejs API: ta warstwa zapewnia kontekst wykonania środowiska wykonawczego i pozwala nam używać języka C # jako języka skryptowego i nie ma zależności od komponentów Visual Studio.
  • Interfejs API kompilatora: ta warstwa jest używana do składni i zawiera odwołania do zestawów i plików kodu źródłowego. Ta warstwa nie ma również zależności od komponentów studia wizualnego.
  • Service API: Ta warstwa zapewnia IntelliSense, formatowanie, Znajdź wszystkie referencje itp. Na górze SDK. Pomaga również w zarządzaniu informacjami o projekcie i zarządzaniu zależnościami projektu.
  • Workspace API: Ta warstwa służy głównie do analizy kodu i refaktoryzacji poprzez IDE. Roslyn ułatwia kod i składa się z zestawu interfejsów API, takich jak kompilator i usługa, które zapewniają wiele funkcji, takich jak formatowanie, Intellisense itp. Zapewnia obsługę wielu języków. Interfejsy API Workspace dostarczają szczegółowych informacji o kodzie źródłowym.

2. Kompilatory mono

Kompilator Mono C # oparty na standardach ECMA dla C #. Ma wiele wersji z frameworkiem takim jak C # 1.0, 2.0, 3.0, 4.0. Kompilator mono mcs target framework Framework 1.1, gmcs target framework 2.0, natomiast smcs i dmcs target framework 2.1 i 4.0.

  • mcs: Obsługuje wszystkie funkcje C # 1.1, takie jak metody anonimowe, typy zerowalne, stałe bufory, modyfikatory dostępu do właściwości, klasy statyczne itp.
  • gmcs : Obsługuje funkcje C # 2.0, takie jak wyrażenia zapytań, inicjalizatory obiektów, metody częściowe, wyrażenia lambda, właściwości automatycznie implementowane itp.
  • dmcs : Obsługuje funkcje C # 4.0, które obejmują nazwane argumenty, wariancję typu ogólnego, powiązanie dynamiki itp.

Drugi kompilator, taki jak RemObjects C #, który jest zgodny ze standardem C # zgodnie ze specyfikacją EMCA i inny niż ten, że istnieją kompilatory GNU C #, które implementują C # i .Net.

Wniosek

Kompilator C # jest jak każdy inny kompilator, który kompiluje kod w kod maszynowy, aby procesor mógł zrozumieć proces.

Polecany artykuł

To był przewodnik po narzędziu Data Mining Tool. Tutaj omawiamy wprowadzenie do kompilatorów C # i różnych typów kompilatorów Just-In-Time i kompilatorów C #. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Kompilatory Python
  2. Kompilatory Java
  3. Najlepsze kompilatory C.
  4. Najlepsze kompilatory Java
  5. Przewodnik po kompilatorze PHP
  6. Dostęp do modyfikatorów w PHP