• 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
87 wizyt
pytanie zadane 23 listopada 2021 w Rozwój zawodowy, nauka, szkoła, praca przez maxkolanko1998 Obywatel (1,930 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 (322,420 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,930 p.)
Ok dzięki
komentarz 24 listopada 2021 przez tkz Nałogowiec (41,900 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 (322,420 p.)
...nie, niezbyt rozumiem co przez to masz na myśli.
komentarz 24 listopada 2021 przez tkz Nałogowiec (41,900 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 (322,420 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 609 wizyt
pytanie zadane 8 sierpnia 2018 w Python przez Łukasz Bogucki Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 681 wizyt
pytanie zadane 8 listopada 2015 w Python przez Devero Początkujący (300 p.)
0 głosów
0 odpowiedzi 47 wizyt

88,701 zapytań

137,307 odpowiedzi

306,729 komentarzy

58,891 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...