Различията между езиците за програмиране на високо и ниско ниво
Програмните езици
Език за програмиране е всеки език, с който хората могат да обучават компютри. Програмата е списък с инструкции, подготвени да бъдат доставени на компютър и изпълнени. По същество инструкциите съхраняват, преместват и променят стойности в паметта на компютъра. Тези стойности могат да бъдат интерпретирани от няколко устройства, като например монитори, високоговорители, клавиатури, натискащи тампони или мишки, които предоставят начини за комуникация с потребителя.
Кодът на машината
Езикът на ниско ниво е такъв, който е близо до основите на компютърен хардуер. Най-ниският език е машинният код, който хардуерът разбира директно и не изисква тълкуване или превод. Кодът на машината се състои изцяло от низове на двоични числа: известните нули и тези, Макар че може да направи всичко, което всеки друг език може да постигне (всъщност останалите езици трябва да бъдат преведени в машинен код от преводача), той не е предназначен да отговори на нуждите на програмиста и изисква задълбочено познаване на процесора и устройствата на компютъра, освен че е почти невъзможно човек да го прочете.
Езикът на монтажа
Следващият програмен език за "по-високо ниво" е асемблер, който е машинен код, чиито кодове за инструкции са заменени с по-интуитивни команди. Например, командата за поставяне на стойността 97 в регистър на паметта се нарича AL (в кода на машината ще е "10110000 01100001"), а на асемблер ще бъде "MOV AL, 97", което все още е загадъчна команда, но е много по-лесно да се чете. Макар че все още е неефективно да се пише и изисква програмистът да се справя директно с компютърен хардуер, той е по-високо ниво от машинния код, защото е по-абстрактен, т.е. е по-близо до програмиста.
Езици на високо ниво
Съвременните програмисти рядко пишат на асемблер. Вместо това те използват един от многото езици на високо ниво като C, Java или Python, чиито програми, наречени компилатори или преводачи, могат да се преведат в машинен код. Тези езици пречат на програмиста да се забърква с физическия свят на хардуера и да го отведе до логическа абстракция: вместо да премества шестнадесетични стойности от регистрите на паметта, програмистът работи с променливи, чието съдържание може да бъде променено, с цикли, които те могат да се повтарят, докато не бъде изпълнено условие, с логически изявления като IF, AND, THEN, OR, и ELSE, сред другите инструменти. Тези езици са предназначени за програмиста, които се грижат за начините, по които максималната мощност може да бъде постигната с най-малка трудност.
сравнения
Езиците на високо ниво не получават това име, защото са "по-добри" от езиците на ниско ниво. Понякога способността да комуникирате директно с процесора на компютъра на асемблер или дори машинен код може да реши проблемите, които слоевете на абстракция на език на високо ниво могат да затруднят. Езикът на много високо ниво може да се справи само с конкретна операционна система, като например Microsoft Visual Basic или с определена програма, като "макроси" на текстообработваща програма. Тези програми са много полезни за всеки, който иска да манипулира Windows или Word, без да се налага да знае как работи, но такъв език не би бил полезен за някой, който се опитва да напише собствена програма и се нуждае от език на по-ниско ниво. Следователно програмистът избира език в зависимост от работата, която трябва да извърши.