• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Translacja programu w języku interpretowanym, a kompilowanym

0 głosów
44 wizyt
pytanie zadane 4 dni temu w Rozwój zawodowy, nauka, szkoła, praca przez maxkolanko1998 Użytkownik (560 p.)
Mam pytanie. Otóż dlaczego tak jest że w przypadku języków kompilowanych program jest na bieżąco tłumaczony, a w przypadku interpretowanych musi być interpretowany komenda za komendą i to na dodatek w gdy program zostanie ponownie uruchomiony, a nie jest tak jak w przypadku kompilowanych że po uruchomieniu programu jest on tłumaczony w całości na rozkazy procesora?

1 odpowiedź

+1 głos
odpowiedź 4 dni temu przez adrian17 Ekspert (302,720 p.)

Chyba pomieszałeś.

 w przypadku języków kompilowanych program jest na bieżąco tłumaczony

Nie jest "na bieżąco tłumaczony". Skompilowany program, napisany np w C i skompilowany na x86, to już gotowy ciąg instrukcji dla procesora. Po uruchomieniu (załadowaniu kodu do pamięci i innych krokach inicjalizacji), "na bieżąco" nie jest robiona żadna dodatkowa praca.

a w przypadku interpretowanych musi być interpretowany komenda za komendą

No... bo programista dostarcza interpreterowi kod w postaci tekstu, więc nie ma wielkiego wyboru :)

(natomiast w praktyce 99% języków interpretowanych nie są interpretowane tekstowo "linia po linii", tylko dzieje się jakaś wstępna konwersja na pośredni bytecode który jest interpretowana - a czasem nawet na żywo kompilowana na kod procesora ("JIT"))

komentarz 4 dni temu przez maxkolanko1998 Użytkownik (560 p.)
Ok dzięki
komentarz 3 dni temu przez tkz Nałogowiec (40,800 p.)

@adrian17, 

Po uruchomieniu (załadowaniu kodu do pamięci i innych krokach inicjalizacji), "na bieżąco" nie jest robiona żadna dodatkowa praca.

Imo to zbyt duże uproszczenie. W przypadku C/C++ mamy rozróżniene na compile time i run time. Fakt, nie jest to związane stricte z surową wersją programu, ale warto to zaznaczyć, że dane, które nie są za hardcodowane są "interpretowane" na bieżąco. 

komentarz 3 dni temu przez adrian17 Ekspert (302,720 p.)
...nie, niezbyt rozumiem co przez to masz na myśli.
komentarz 3 dni temu przez tkz Nałogowiec (40,800 p.)
Istnieje możliwość załadowania dllki w locie, to tak bardziej na marginesie. Tworzenie szablonowych rzeczy. Generalnie nie jest to prawda, że po załadowaniu kończy.
1
komentarz 3 dni temu przez adrian17 Ekspert (302,720 p.)

Istnieje możliwość załadowania dllki w locie

OK, ale moim głównym przekazem było że nawet po takim załadowaniu, nie jest wykonywane żadne "tłumaczenie na bieżąco"* kodu wykonywalnego, tylko jest od razu traktowany jako instrukcje wczytywane przez procesor.

(* przynajmniej nie jestem takich świadom - linkowanie jedynie pracuje na tablicach symboli, nie?)

Podobne pytania

0 głosów
2 odpowiedzi 275 wizyt
pytanie zadane 8 sierpnia 2018 w Python przez Łukasz Bogucki Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 562 wizyt
pytanie zadane 8 listopada 2015 w Python przez Devero Początkujący (300 p.)
+1 głos
2 odpowiedzi 99 wizyt
pytanie zadane 6 dni temu w C i C++ przez Raven2221 Nowicjusz (130 p.)
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

85,708 zapytań

134,503 odpowiedzi

298,528 komentarzy

56,629 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...