• 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
58 wizyt
pytanie zadane 23 listopada 2021 w Rozwój zawodowy, nauka, szkoła, praca przez maxkolanko1998 Obywatel (1,120 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ź 23 listopada 2021 przez adrian17 Ekspert (306,980 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 23 listopada 2021 przez maxkolanko1998 Obywatel (1,120 p.)
Ok dzięki
komentarz 24 listopada 2021 przez tkz Nałogowiec (41,840 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 24 listopada 2021 przez adrian17 Ekspert (306,980 p.)
...nie, niezbyt rozumiem co przez to masz na myśli.
komentarz 24 listopada 2021 przez tkz Nałogowiec (41,840 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 24 listopada 2021 przez adrian17 Ekspert (306,980 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 320 wizyt
pytanie zadane 8 sierpnia 2018 w Python przez Łukasz Bogucki Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 593 wizyt
pytanie zadane 8 listopada 2015 w Python przez Devero Początkujący (300 p.)
+1 głos
2 odpowiedzi 134 wizyt
pytanie zadane 21 listopada 2021 w C i C++ przez Raven2221 Nowicjusz (180 p.)

86,526 zapytań

135,279 odpowiedzi

300,596 komentarzy

57,276 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.

...