• 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 (570 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 (570 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
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

85,709 zapytań

134,503 odpowiedzi

298,532 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.

...