Wiele osób, w szczególności tych chcących rozpocząć swoją przygodę z programowaniem i poszukujących odpowiedniego dla siebie języka programowania, często spotyka się z dwoma terminami – programowanie niskopoziomowe i wysokopoziomowe. Język niskopoziomowy to język nie posiadający w zdecydowanej większości przypadków (czasem może się zdarzyć, że posiada ich tylko minimalną ilość) warstw abstrakcji. Co oznacza to w praktyce? Otóż chodzi tu o to, że posługując się tym właśnie językiem w programowaniu nie stosujemy w nim nic, co musiałoby zostać przekazane do procesora w nieco zmienionej formie. Bardzo często więc można się spotkać ze stwierdzeniem, że język niskopoziomowy jest zdecydowanie bardziej przyjazny sprzętowi komputerowemu, na którym przeprowadzane jest wszelkiego rodzaju programowanie z wykorzystaniem rożnych dostępnych do tego celu języków. Tu jednak wszystko odbywa się tak naprawdę kosztem wygody programowania i szybkości rozwijania aplikacji. Zaawansowani programiści używający przynajmniej czasami w swojej pracy programowania niskopoziomowego, są w stanie osiągnąć bardzo wysoką wydajność pracy oraz przyspieszenie działania aplikacji. Jednak tu programiści korzystający z tego języka, a nie mający zbyt wielkich umiejętności i doświadczenia mogą z programowaniem mieć wielu problemów. Język niskopoziomowy w programowaniu sprawdzi się jedynie w przypadku osób o bardzo dużych umiejętnościach. Natomiast jeśli chodzi o wysokopoziomowy język programowania, to jego charakterystyczną cechą jest obecność znaczącej ilość już gotowych wbudowanych funkcjonalności. Można wręcz powiedzieć, że jest to język, który w wielu kwestiach wręcz wyręcza programistę w pracy. Programista w tym przypadku często nie musi się martwić np. o ustawienia automatycznego zarządzania pamięcią. W przeciwieństwie do języka niskopoziomowego, ten wysokopoziomowy charakteryzuje się obecnością bardzo wielu poziomów abstrakcji. W tym przypadku to właśnie one odpowiedzialne są za oddalanie od dewelopera rzeczywistej postaci instrukcji, jaką dostaje w tym przypadku procesor. Wiele osób zgodnie twierdzi, że jest to bardzo przyjazny (w przeciwieństwie do tych ”maszynowych” języków) język dla wielu, nawet mniej zaawansowanych programistów. Podział na języki niskopoziomowe i wysokopoziomowe w programowaniu tak naprawdę jest dość elastycznym pojęciem, dlatego też nie zawsze da się bardzo konkretnie sprecyzować kryteria klasyfikacji danego języka programowania właśnie do tej, a nie innej grupy. Jeśli chodzi o języki niskopoziomowe, tu nie ma żadnych wątpliwości, że do tej grupy zakwalifikować można śmiało przede wszystkim Assembler oraz COBOL. Natomiast z całą pewnością do programowania wysokopoziomowego można zaliczyć jeden z najpopularniejszych, ale też i najbardziej złożonych języków programowania – C++. Choć to jest temat często sporny, bowiem są głosy, że tak naprawdę przez swoje cechy charakterystyczne język C++ znajduje się na stylu dwóch światów – łączy w sobie umiejętnie elementy zarówno programowania wysokopoziomowego jak i niskopoziomowego.