Kompilator kontra interpreter: całkowita różnica między kompilatorem a tłumaczem

Spisie treści:

Anonim

Co to jest kompilator?

Kompilator to program komputerowy, który przekształca kod napisany w języku programowania wysokiego poziomu na kod maszynowy. Jest to program, który tłumaczy kod czytelny dla człowieka na język zrozumiały dla procesora komputera (binarne bity 1 i 0). Komputer przetwarza kod maszynowy, aby wykonać odpowiednie zadania.

Kompilator powinien być zgodny z regułą składni języka programowania, w którym został napisany. Jednak kompilator jest tylko programem i nie może naprawić błędów znalezionych w tym programie. Tak więc, jeśli popełnisz błąd, musisz wprowadzić zmiany w składni programu. W przeciwnym razie nie skompiluje się.

Co to jest tłumacz?

Interpreter to program komputerowy, który ukrywa każdą instrukcję programu wysokiego poziomu w kodzie maszynowym. Obejmuje to kod źródłowy, wstępnie skompilowany kod i skrypty. Zarówno kompilator, jak i interpretery wykonują to samo zadanie, czyli konwertowanie języka programowania wyższego poziomu na kod maszynowy. Jednak kompilator przekonwertuje kod na kod maszynowy (utworzy plik exe) przed uruchomieniem programu. Tłumacze konwertują kod na kod maszynowy podczas wykonywania programu.

KLUCZOWA RÓŻNICA

  • Kompilator przekształca kod napisany w języku programowania wysokiego poziomu na kod maszynowy od razu, przed uruchomieniem programu, podczas gdy interpreter ukrywa każdą instrukcję programu wysokiego poziomu, jedną po drugiej, w kodzie maszynowym podczas wykonywania programu.
  • Skompilowany kod działa szybciej, podczas gdy interpretowany kod działa wolniej.
  • Kompilator wyświetla wszystkie błędy po kompilacji, z drugiej strony Interpreter wyświetla błędy w każdym wierszu jeden po drugim.
  • Kompilator oparty jest na modelu tłumaczenia łącząco-wczytującego, podczas gdy Interpreter bazuje na metodzie interpretacji.
  • Kompilator pobiera cały program, podczas gdy Interpreter pobiera pojedynczą linię kodu.

Różnica między kompilatorem a interpretatorem

Podstawa różnicy Kompilator Interpretator
Kroki programowania
  • Utwórz program.
  • Compile przeanalizuje lub przeanalizuje wszystkie stwierdzenia językowe pod kątem poprawności. Jeśli jest niepoprawny, zgłasza błąd
  • Jeśli nie ma błędu, kompilator przekonwertuje kod źródłowy na kod maszynowy.
  • Łączy różne pliki kodu w uruchamialny program (znany jako exe)
  • Uruchom program
  • Utwórz program
  • Brak linkowania plików lub generowania kodu maszynowego
  • Instrukcje źródłowe wykonywane wiersz po wierszu W CZASIE wykonywania
Korzyść Kod programu został już przetłumaczony na kod maszynowy. W ten sposób czas wykonania kodu jest krótszy. Tłumacze są łatwiejsi w użyciu, szczególnie dla początkujących.
Niekorzyść Nie możesz zmienić programu bez powrotu do kodu źródłowego. Programy zinterpretowane mogą być uruchamiane na komputerach wyposażonych w odpowiedni interpreter.
Kod maszynowy Przechowuj język maszynowy jako kod maszynowy na dysku W ogóle nie zapisuje kodu maszynowego.
Czas trwania Skompilowany kod działa szybciej Zinterpretowany kod działa wolniej
Model Opiera się na modelu tłumaczenia językowego - linkowanie-ładowanie. Opiera się na Metodzie Interpretacji.
Generowanie programu Generuje program wyjściowy (w postaci exe), który można uruchomić niezależnie od programu oryginalnego. Nie generuj programu wyjściowego. Dlatego oceniają program źródłowy za każdym razem podczas wykonywania.
Wykonanie Wykonywanie programu jest niezależne od kompilacji. Wykonywany dopiero po skompilowaniu całego programu wyjściowego. Wykonanie programu jest częścią procesu interpretacji, więc jest wykonywane wiersz po wierszu.
Wymagana pamięć Program docelowy jest wykonywany niezależnie i nie wymaga kompilatora w pamięci. Tłumacz istnieje w pamięci podczas tłumaczenia.
Najlepiej nadaje się do Ograniczony do określonej maszyny docelowej i nie można go przenieść. C i C ++ to najpopularniejsze języki programowania, które wykorzystują model kompilacji. W środowiskach internetowych, w których ważne są czasy ładowania. Ponieważ przeprowadzana jest cała wyczerpująca analiza, kompilacje zajmują stosunkowo więcej czasu, aby skompilować nawet mały kod, który może nie być uruchamiany wielokrotnie. W takich przypadkach lepsi są tłumacze.
Optymalizacja kodu Kompilator widzi cały kod z góry. Dlatego wykonują wiele optymalizacji, które sprawiają, że kod działa szybciej Interpretatorzy widzą kod wiersz po wierszu, a zatem optymalizacje nie są tak niezawodne, jak kompilatory
Dynamiczne wpisywanie Trudne do zaimplementowania, ponieważ kompilatory nie są w stanie przewidzieć, co się stanie w momencie przejścia. Języki interpretowane obsługują dynamiczne pisanie
Stosowanie Najlepiej nadaje się do środowiska produkcyjnego Najlepiej nadaje się do programu i środowiska programistycznego.
Wykonanie błędu Kompilator wyświetla wszystkie błędy i ostrzeżenia w czasie kompilacji. Dlatego nie możesz uruchomić programu bez naprawy błędów Interpreter odczytuje pojedynczą instrukcję i wyświetla błąd, jeśli występuje. Musisz poprawić błąd, aby zinterpretować następny wiersz.
Wejście Zajmuje cały program Zajmuje jedną linię kodu.
Wynik Compliers generuje pośredni kod maszynowy. Tłumacz nigdy nie generuje żadnego pośredniego kodu maszynowego.
Błędy Wyświetlaj wszystkie błędy po kompilacji w tym samym czasie. Wyświetla po kolei wszystkie błędy w każdym wierszu.
Odnośne języki programowania C, C ++, C #, Scala, Java - wszystkie używają kompilatorów. PHP, Perl, Ruby używa interpretera.

Rola kompilatora

  • Compliers czyta kod źródłowy, generuje kod wykonywalny
  • Tłumaczy oprogramowanie napisane w języku wyższego poziomu na instrukcje zrozumiałe dla komputera. Konwertuje tekst zapisany przez programistę na format zrozumiały dla procesora.
  • Proces kompilacji jest stosunkowo skomplikowany. Spędza dużo czasu na analizowaniu i przetwarzaniu programu.
  • Wynik wykonywalny to pewna forma kodu binarnego specyficznego dla maszyny.

Rola tłumacza

  • Interpreter konwertuje kod źródłowy wiersz po wierszu w czasie RUN Time.
  • Interpret całkowicie tłumaczy program napisany w języku wysokiego poziomu na język maszynowy.
  • Interpreter umożliwia ocenę i modyfikację programu podczas jego wykonywania.
  • Relatywnie mniej czasu poświęconego na analizę i przetwarzanie programu
  • Wykonywanie programu jest stosunkowo powolne w porównaniu z kompilatorem

JĘZYKI WYSOKIEGO POZIOMU

Języki wysokiego poziomu, takie jak C, C ++, JAVA itp., Są bardzo zbliżone do angielskiego. Ułatwia proces programowania. Jednak przed wykonaniem musi zostać przetłumaczony na język maszynowy. Ten proces tłumaczenia jest przeprowadzany przez kompilator lub interpreter. Znany również jako kod źródłowy.

KOD MASZYNOWY

Języki maszynowe są bardzo zbliżone do sprzętu. Każdy komputer ma swój język maszynowy. Programy w języku maszynowym składają się z serii binarnych wzorców. (Np. 110110) Przedstawia proste operacje, które powinien wykonać komputer. Programy w języku maszynowym są wykonywalne, dzięki czemu można je uruchamiać bezpośrednio.

KOD OBIEKTU

Podczas kompilacji kodu źródłowego kod maszynowy wygenerowany dla różnych procesorów, takich jak Intel, AMD, ARM, jest inny. Aby uczynić kod przenośnym, kod źródłowy jest najpierw konwertowany na kod obiektowy. Jest to kod pośredniczący (podobny do kodu maszynowego), którego żaden procesor nie zrozumie. W czasie wykonywania kod obiektowy jest konwertowany na kod maszynowy platformy bazowej.

Java jest zarówno kompilowana, jak i interpretowana.

Aby wykorzystać względne zalety kompilatorów, są interpretery, które kompilują i interpretują niektóre języki programowania, takie jak Java. Sam kod Java jest kompilowany do kodu obiektowego. W czasie wykonywania maszyna JVM interpretuje kod obiektu na kod maszynowy komputera docelowego.