Kompilator to program, który konwertuje kod programowania komputerowego napisany przez programistę na kod binarny (kod maszynowy), który może być zrozumiany i wykonany przez określony procesor. Akt transformacji kod źródłowy w kod maszynowy nazywa się „kompilacją”. Gdy cały kod jest transformowany jednocześnie, zanim dotrze do platform, na których jest uruchomiony, proces ten nazywany jest kompilacją z wyprzedzeniem (AOT).
Które języki programowania używają kompilatora AOT?
Wiele znanych języków programowania wymaga kompilatora, w tym:
- Fortran
- Pascal
- Język programowania
- do
- C ++
- Szybki
Przed Java i C # wszystkie programy komputerowe były albo kompilowane, albo interpretowane.
Co z interpretowanym kodem?
Interpretowany kod wykonuje instrukcje w programie bez kompilacji ich na język maszynowy. Zinterpretowany kod bezpośrednio analizuje kod źródłowy, jest sparowany z maszyną wirtualną, która tłumaczy kod dla maszyny w czasie wykonywania lub korzysta ze wstępnie skompilowanego kodu. JavaScript jest zwykle interpretowane.
Skompilowany kod działa szybciej niż kod zinterpretowany, ponieważ nie musi wykonywać żadnej pracy w momencie wykonywania akcji. Praca jest już wykonana.
Które języki programowania używają kompilatora JIT?
Jawa i C # używają kompilatorów just-in-time. Kompilatory just-in-time to połączenie kompilatorów AOT i interpreterów. Po napisaniu programu Java kompilator JIT przekształca kod w kod bajtowy, a nie w kod zawierający instrukcje dla procesora konkretnej platformy sprzętowej. Kod bajtowy jest niezależny od platformy i może być wysyłany i uruchamiany na dowolnej platformie obsługującej Javę. W pewnym sensie program jest kompilowany w dwuetapowym procesie.
Podobnie, C # używa kompilatora JIT, który jest częścią środowiska uruchomieniowego języka wspólnego, który zarządza wykonywaniem wszystkich aplikacji .NET. Każda platforma docelowa ma kompilator JIT. Dopóki platforma zrozumie konwersję języka pośredniego kodu bajtowego, program będzie działał.
Plusy i minusy kompilacji AOT i JIT
Kompilacja z wyprzedzeniem czasu (AOT) zapewnia szybszy czas uruchamiania, szczególnie gdy duża część kodu jest wykonywana podczas uruchamiania. Wymaga to jednak więcej pamięci i więcej miejsca na dysku. Kompilacja JOT musi być skierowana do najmniej zdolnych ze wszystkich możliwych platform wykonawczych.
Kompilacja just-in-time (JIT) profiluje platformę docelową podczas działania i ponownie kompiluje w locie, aby zapewnić lepszą wydajność. JIT generuje ulepszony kod, ponieważ jest ukierunkowany na bieżącą platformę, chociaż zwykle zajmuje więcej czasu niż kod skompilowany AOT.