Co to jest język średniozaawansowany?
W programowaniu komputerowym, gdy kod źródłowy czytelny dla człowieka jest analizowany przez kompilator, kompilator często tłumaczy polecenia źródłowe na sekwencję instrukcji, które nie są całkiem natywnym kodem maszynowym, ale mogą być dalej przetwarzane, optymalizowane lub kompilowane przez kompilator lub inne oprogramowanie przybory. Tworzone pliki zawierają instrukcje, które mówi się, że są w języku pośrednim, ponieważ język używany przez kompilator nie ma znaczenia dla większego systemu operacyjnego ani języka używanego przez programistę do pisania kodu, ale zamiast tego to język, który działa jak pomost między pisaniem a wykonywaniem programu. Czasami używa się języka pośredniego, aby umożliwić kompilatorowi dokonywanie bardzo precyzyjnych optymalizacji, dzięki czemu program działa wydajniej, ale można go również używać do tworzenia plików wyjściowych, które można przenosić między różnymi niekompatybilnymi systemami. Rzeczywista składnia języka może przypominać kod maszynowy lub inne typy kodu bajtowego nieczytelnego dla człowieka, lub język może być po prostu istniejącym międzyplatformowym językiem programowania komputerowego.
W przypadku optymalizacji kompilatora kompilator języka pobiera każdą instrukcję z pliku kodu źródłowego i dzieli polecenie na język pośredni. Pojedyncza instrukcja programowa czytelna dla człowieka może rozbić się na dziesiątki instrukcji w języku maszynowym, więc język pośredni tworzy poziom abstrakcji, którego kompilator może użyć do zidentyfikowania obszarów kodu, w których można dokonać optymalizacji bez konieczności uprzedniego powiązania kodu z wszelkie natywne implementacje lub biblioteki. Po zakończeniu pośredni plik kodu można następnie skompilować w celu utworzenia natywnego pliku binarnego lub można go uruchomić za pośrednictwem innego programu, znanego jako interpreter, który wykona kod, kompilując go w odpowiednie instrukcje natywne.
Niektóre języki, takie jak Java®, używają języka pośredniego do tworzenia skompilowanych plików, które są zoptymalizowane, ale także przenośne na inne systemy komputerowe. Ten typ kodu jest czasem znany jako kod bajtowy i przypomina kod maszynowy lub język asemblera. Kod bajtowy jest przechowywany w plikach w sposób niezależny od platformy, co oznacza, że można go przenieść do dowolnego systemu komputerowego lub urządzenia, które może obsługiwać interpreter. Gdy kod bajtowy znajduje się w systemie, można go uruchomić jako program zinterpretowany lub można go skompilować, aby działał natywnie w systemie docelowym.
W niektórych przypadkach język komputerowy został zaprojektowany w taki sposób, aby ułatwić programowanie do określonego celu, takiego jak interaktywna aplikacja internetowa, ale projektanci nie chcą uwzględniać niestandardowych kompilatorów, interpretatorów lub wtyczek dla różnych systemów. W takich przypadkach językiem pośrednim kompilatora może być istniejący język, który już ustanowił tłumaczy międzyplatformowych. Wynikowy język pośredni w tym przypadku jest czytelny dla człowieka. Jednym z przykładów języka programowania komputerowego, który jest również używany jako język pośredni, jest JavaScript®, który ma tę zaletę, że może działać w prawie każdej przeglądarce internetowej na dowolnej platformie, począwszy od 2011 roku.