Skocz do zawartości
Czarny Ass

Język kompilowany, a interpretowany

Rekomendowane odpowiedzi

Języki interpretowane działają z interpreterem, tzn są wczytywane z pliku, interpretowane przez interpereter i dopiero wykonywane. Bez

interpretera nic nie zrobimy.

Języki kompilowane - kod jest kompilowany i odpalany samodzielnie.

 

Ja mam pytanie - kiedy ta różnica się zaciera? Dość filozoficzne pytanie (filozofia programistyczna :D).

 

Kiedy kod źródłowy jest dodawany do lauchera w postaci pojedyńczego exeka - według mnie mamy język interpretowany.

Jednak z drugiej strony jest samodzielnym exekiem. W zasadzie takie "czyste" exeki też są interpretowane, tyle że przez procesor (no chyba, że nie rozumiem idei języka interpretowanego)

No i wytłumaczcie mi jak to jest z tymi exekami dla Windows NT.

Da się je odpalić tylko na systemach z tej rodziny, ponieważ... co?

 

A jakbym zrobił nowy typ plików wykonywalnych - dałbym im rozszerzenie np .ferrari4 i stworzył specjalnie dla systemu operacyjnego (który bym nazwał np. Ferrari4OS) interpreter, który by automatycznie odpalał te pliki z tym rozszerzeniem (może tak jest w Windows NT, nie znam się - dlatego się pytam). Wszystko wyglądało by standardowo - plik wykonywalny, klikam na niego, odpala się, cały system tak działa. Czy to nadal nazwę językiem interpretowanym czy już kompilowany - specjalnie dla nowego OSa, wszystko mogłoby wygladac identycznie jak na Windowsie czy Linuxie.

 

Wytumaczie mi to czego nie wiem, albo to co źle wiem. Podzielcie się opinią. :)

 

Zainspirował mnie temat z języiem DM+. :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Interpretowany - polecenie jest ładowane, i wykonywane przez interpreter, i nie zawszę równa się jednemu rozkazowi procesora.

Kompilowany( Kod maszynowy ) - jedna instrukcja = jeden rozkaz procesora.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Procesor nie interpretuje kodu maszynowego. On go wykonuje.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie wydaje mi się, aby było tak do końca jak mówi ediepl

 

Interpretowany czyli interpreter czyta dane i je wykonuje

Kompilowany, czyli kod został wcześniej skompilowany - czyli przełożony z kodu "ludzkiego" na maszynowy

 

Fervi

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
No i wytłumaczcie mi jak to jest z tymi exekami dla Windows NT.

Da się je odpalić tylko na systemach z tej rodziny, ponieważ... co?

NT? A nie chodzi ci przypadkiem o RT?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Kompilacja ? kod źródłowy jest tłumaczony do postaci języka maszynowego, czyli sekwencji elementarnych operacji gotowych do bezpośredniego przetworzenia przez procesor komputera. Jeżeli dany język programowania podlega kompilacji, określany jest mianem kompilowanego języka programowania.

 

Interpretacja ? kod źródłowy jest na bieżąco tłumaczony i wykonywany przez dodatkowy program zwany interpreterem. Jeżeli język podlega interpretacji, nazywany jest interpretowanym językiem programowania.

 

Tylko pytanie jeśli funkcja jest naprawdę paskudna, w zasadzie nie powinna być wykonywana przez 1 cykl zegara procesora.

 

Słyszałem, że tylko ARM jest w stanie w ciągu jednego cyklu wykonać jedną funkcję, ale o to proszę raczej obeznanych ludzi

 

Fervi

 

PS. NT przynajmniej częściowo jest chyba kompatybilne z chociażby ME, aczkolwiek od Visty usunięto sporą część kodu 98, więc nie wiem czy jest kompatybilny z tą linią (przez to wiele gier ucierpiało).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Panowie!

 

Język interpretowany jest interpretowany przez interpreter. Oznacza to, że kod maszynowy kreowany jest dynamicznie, dopiero po uruchomieniu.

Interpreter musi zachować się jak taki wirtualny procesor.

 

Język kompilowany jest tłumaczony na instrukcje x86 (w przypadku win/lin). Teraz uwaga.

Po kliknięciu dwa razy na plik exe, cały plik jest ładowany do pamięci.

Dla nas cały plik to krzaki.

Każdy krzak ma swój kod ASCII. Ten kod to ID komendy procesora.

Przykład:

GML
05 40 00 0F 00

. @ . . .

Co to oznacza?

add eax,000F0040

 

Pliki Exe nie są kompatybilne wstecz tylko z tego względu że funkcję które wywołują z bibliotek systemowych dawno już nie ma.

I tak naprawdę czyste pliki binarne bez żadnych wywołań bibliotek i różnicy nagłówków ELF/PE działały by na każdym komputerze z prockiem x86

 

 

Tak więc kompilacja to nic innego jak tłumaczenie źródła na kod maszynowy, a interpretacja to wykonywanie pośrednie przez rezydentny program.

Kompilacja:

zmienna:=zmienna+5 -> INC 0xWSKAŹNIK_ZMIENNEJ, 5

Interpretacja

zmienna:=zmienna+5 -> zmienna:=zmienna+5

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×