Каква е разликата между език на високо и ниско ниво?


Отговор 1:

Същата е разликата като между:

„Върни ми вестник.“

и

„Преместете левия крак пред себе си, след това десния, повтаряйте, докато стигнете до вратата. След това активирайте ръката си и посегнете към дръжката на вратата. Преместете пръстите си и затворете ръката си около него. Издърпайте го, докато чуете щракване и дръжката сякаш дава малко. дръпнете вратата към себе си. Преместете левия крак назад и направете място за вратата. Когато има достатъчно място, за да се поберат, преминете през рамката на вратата. Обърнете се на 180 градуса. Активирайте ръката си и протегнете ръка към външната дръжка. Преместете пръстите си и затворете ръката си около него. Дръпнете го към себе си, докато почувствате, че е заключен. Завъртете на 90 градуса по посока на часовниковата стрелка. Преместете единия крак след другия, докато стигнете до вестникарския вестник. Поискайте вестник. Влезте в джоба си за пари и заплатете $ 2. Хванете вестника. Обърнете на 180 градуса. Преместете краката си един пред друг ... ”

Разбирате как върви песента.

Обърнете внимание, че в един момент се отегчих и започнах да използвам „сложни“ глаголи за движение, представляващи съвкупност от други действия, като „вземете“, които на свой ред биха могли да се разделят на „Движете ръката си, докато дрън…“.

Всъщност дори „движете ръката си“ би могло да се раздели на по-прости действия и всеки път, когато се разделите, вие губите сбитост, т.е. трябва да използвате по-многословен език, но печелите в точност, тъй като бихте могли да определите какъв е всеки мускул прави, точно.

В крайна сметка, ако продължите надолу, ще получите описание на електрическите сигнали, които нервите трябва да предават на мускулите. Бих казал, че това последно описание би било подобно на така наречения „машинен език“, резултат от компилация и предишните твърдения са - в тази метафора - програмните езици от по-високо до по-ниско ниво.

TL; DR:

  • Езикът за програмиране на високо ниво е кратък, но разчита на някой друг софтуер за разширяване на кратки команди в подробни инструкции за сметка на това колко подробна и съобразена може да бъде всяка ваша команда. Езикът на ниско ниво ви позволява да обработвате изрично всеки детайл от операцията се изпълнява, за сметка на размера на изходния код и-възможностите за четене.

Ако искате примери, Python идва на ум за високото ниво: той абстрахира от вас много подробности, напр. управление на паметта (можете просто да инициализирате променлива и да я използвате, а когато вече не е необходима, някой ще я подреди, няма нужда да се притеснявате), поради което е добър език да научите за алгоритмите: можете да внедрите логиката си, без да се притеснявате за някои подробности за внедряването.

От друга страна, C е доста ниско ниво, тъй като не ви абстрахира от някои детайли (отново най-добрият пример е управлението на паметта и наличието на указатели) и това е причината да е добре да научите, ако целта ви е да разберете вътрешно работещите компютри. Разбира се, можете да слезете малко преди да натиснете машинен код и електронна физика с Assembly.