W programowaniu komputerowym, gdy czytelny dla człowieka kod źródłowy jest analizowany przez kompilator, kompilator często tłumaczy polecenia źródłowe na sekwencję instrukcji, które nie są do końca natywnym kodem maszynowym, ale mogą być dalej przetwarzane, optymalizowane lub kompilowane przez kompilator lub inne oprogramowanie narzędzia. Tworzone pliki zawierają instrukcje, o których 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 w pierwszej kolejności, ale zamiast tego to język, który działa jako pomost między pisaniem a wykonaniem programu. Język pośredni jest czasami używany, aby umożliwić kompilatorowi dokonywanie bardzo precyzyjnych optymalizacji, dzięki czemu program działa wydajniej, ale może być również używany 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 rodzaje nieczytelnego dla człowieka kodu bajtowego lub język może być po prostu istniejącym wieloplatformowym językiem programowania komputerowego.
Kiedy jest używany do optymalizacji kompilatora, kompilator języka pobiera każdą instrukcję w pliku kodu źródłowego i dzieli polecenie na język pośredni. Pojedyncza instrukcja programowania czytelna dla człowieka może podzielić się na dziesiątki instrukcji języka maszynowego, 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 wcześniejszego wiązania kodu z wszelkie natywne implementacje lub biblioteki. Po zakończeniu plik kodu pośredniczącego może być dalej kompilowany w celu utworzenia natywnego pliku binarnego lub może być uruchamiany za pomocą innego programu, znanego jako interpreter, który wykona kod, kompilując go w natywne instrukcje w razie potrzeby.
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 do innych systemów komputerowych. Ten typ kodu jest czasami nazywany kodem bajtowym 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, na którym można uruchomić interpreter. Gdy kod bajtowy znajdzie się w systemie, można go uruchomić jako program zinterpretowany lub skompilować, aby działał natywnie w systemie docelowym.
W niektórych przypadkach język komputerowy jest zaprojektowany tak, aby ułatwić programowanie w określonym celu, takim jak interaktywna aplikacja internetowa, ale projektanci nie chcą dołączać niestandardowych kompilatorów, interpreterów ani wtyczek dla różnych systemów. W takich przypadkach językiem pośrednim kompilatora może być istniejący język, który ma już ustanowione interpretery międzyplatformowe. 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 od 2011 roku.