В терминологията на компютърното програмиране езиците за програмиране често се разделят на езици от "високо ниво" и "ниско ниво". Разликата между двете е въпрос на хардуерно взаимодействие. Просто казано, езиците на ниско ниво се намират "по-ниско" в компютърната система, по-близо до реалното хардуерно взаимодействие. Езиците от високо ниво се абстрахират далеч от хардуера. Резултатът от това абстракция може да доведе до по-бърз и по-четлив код, но по-ниски предимства на скоростта и по-малък достъп до системните ресурси.
Абстракция
Това, което прави езиците на високо ниво различни от езиците на ниско ниво, е нивото на абстракция на езика от системните ресурси. Ежедневното справяне със системните ресурси може да стане бавно и болезнено. Създадени са езици от високо ниво, за да се справят с този проблем, като обработват системата за програмиста, освобождавайки тя да изпълнява по-напреднала задача, като същевременно игнорира дребните детайли на системата, като паметта управление. Това обаче има недостатък в това, че програмист може да се окаже в ситуация, в която се изисква достъп до системата, а езикът на високо ниво не може да даде този достъп. Езикът на високо ниво обикновено не е подходящ за системно програмиране.
Видео на деня
Скорост
Езиците на високо ниво обикновено са "интерпретирани" езици, а не "компилирани" езици от ниско ниво. „Интерпретиран“ просто означава, че езикът използва интерпретатор, който изпълнява изходния код един ред в даден момент, вместо да компилира двоичен файл. Въпреки това, интерпретаторите често са програми, написани на компилирани езици. Поради това интерпретираният език - Python, като пример - работи само върху интерпретатора на Python, който е написан на C. Това увеличава паметта и времевите разходи за интерпретираните програми и те често се изпълняват по-бавно.
Системни особености
Привидна сила на кода от високо ниво е неговата преносимост. Кодът от високо ниво може да работи на всяка система, която има инсталиран подходящ интерпретатор. Въпреки това, когато една програма се компилира за компютър, тя взема предвид цялата среда на тази система при нейното компилиране. Интерпретираният език вече е абстрахиран от системата до такава степен, че интерпретираната програма не знае нищо за системата, освен това, което интерпретаторът може да й предостави.
Ограничения за програмиране
Поради естеството на езиците на високо ниво, има определени задачи, за които те не са подходящи или поне все още не са подходящи. Без достъп до системни ресурси разработването на бързи приложения, които са родни за OS, е трудно. Освен това дори разработването на операционна система става проблематично. Тъй като повече софтуер се движи онлайн, този факт става по-малко тревожен, но за търговска и индустриална употреба интерпретираните езици може да работят твърде бавно или твърде далеч от хардуерното взаимодействие.