Ciemne zaułki translacji

Od lat już słyszymy, że różnica między kompilatorem a interpreterem polega na fakcie, że kompilator tłumaczy od razu cały program, zaś interpreter - linia po linii. Dopiero studia informatyczne systematyzują wiedzę na ten temat. Okazało się, że powszechna opinia jest dość daleka od prawdy. Ten artykuł jest więc dedykowany czytelnikom, dla których zasady translacji są nadal "czarną magią".

Od lat już słyszymy, że różnica między kompilatorem a interpreterem polega na fakcie, że kompilator tłumaczy od razu cały program, zaś interpreter - linia po linii. Dopiero studia informatyczne systematyzują wiedzę na ten temat. Okazało się, że powszechna opinia jest dość daleka od prawdy. Ten artykuł jest więc dedykowany czytelnikom, dla których zasady translacji są nadal "czarną magią".

Prawda jest następująca: interpreter wcale nie musi tłumaczyć kodu linia po linii, choć przy pewnych typach języków tak właśnie się dzieje. Jedyną różnicą między dwoma typami translatorów jest sposób wykorzystania kodu wewnętrznego maszyny i liczba wykorzystanych języków.

Kompilator wykorzystuje język wewnętrzny jedynie jako medium do tłumaczenia. Kod docelowy może być więc wygenerowany w zupełnie innym dialekcie (nawet całkowicie obcym danemu komputerowi). W większości przypadków, jest to jednak program w języku wewnętrznym (dla wygody - może on być potem bezpośrednio wykorzystany na danej maszynie). Kod docelowy tworzy się jednorazowo, a następnie przechowany na pliku, wykorzystuje wielokrotnie. Przy kompilacji mamy więc trzy języki (być może całkiem różne): źródłowy, docelowy i realizacji.

Interpreter korzysta z języka wewnętrznego jako bezpośredniego medium wykonania programu. Dlatego też po przetłumaczeniu pewnej partii programu (zazwyczaj jest to jedna instrukcja złożona, czasem kilka, ale nie istnieje żadne ograniczenie do jednej linii) wykonuje ją od razu w języku, w którym jest napisany. Jeśli potrzebujemy wykorzystać kod kilkakrotnie, musimy niestety tłumaczyć jeszcze raz. Przy interpretacji nie istnieje więc kopia kodu docelowego, ponieważ jest on tworzony w miarę rozwoju programu. Jak widać, mamy więc tu tylko dwa języki: źródłowy i realizacji.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200