muzruno.com

Класификация на езиците за програмиране по нива

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

Взаимодействието между човека и машината

Важно е да разберете как хората комуникират с интелигентни механизми, преди да се пристъпи към класифицирането на езиците за програмиране.

Един ден човек си помислил, че машината може да направи физическа работа за него. Така се появи парата. След това предприемчивият човек реши да премине към колата и умствената работа. Така че имаше компютър.

За да постигнете някакъв резултат, трябва да разберете как да го направите. При програмирането можете да различите няколко етапа на решаване на всеки проблем:

  1. Официално логическо описание на самата задача.
  2. Изграждането на алгоритъм, описващ всички стъпки за постигане на целта, като се започне с обработката на входните данни и завършва с получаването на резултата.
  3. Кодиране - компилиране на програма на някой от езиците за програмиране, които могат да бъдат преведени на компютърен език.
  4. Преводът е директен превод.
  5. Сглобяване на работеща програма (изпълним модул) от всички компоненти.

Това е йерархична структура, в която по-високите нива се основават на по-ниските. Без ясна задача и компетентен алгоритъм е невъзможно да се създаде програма за качество.

Разнообразие от езици за програмиране

Структура на езиците за програмиране

Подреждането на всички системи за взаимодействие е сходно и в много отношения определя класификацията на езиците за програмиране.

Основните предмети на програмния език са постоянни и приличат на компонентите на системите за човешки езици:

  • Синтаксисът, който определя формалните правила за писане на програма, валидните типове и случаите на символи;
  • лексикон, който включва целия лексикон на езика: имената на променливите и функциите, константите, струните, операторите;
  • граматика, показваща как да се комбинират правилно единици на езика за формиране на комбинации от думи и изречения.

Речникът и граматиката заедно определят семантиката на езика. На това ниво специфични последователности от знаци придобиват специално значение, разбираемо за човека и компютъра. Например, думата, докато в много програмни системи се разглежда като начало на циклична операция.

Разбира се, компютрите не разбират обикновените думи, само по себе си комбинация от латински букви не означава нищо за тях. Машините се справят машинен код - нули и такива, описващи примитивните състояния на присъствието или отсъствието на сигнал. Ето защо програмните езици установяват ясни съвпадения на определени думи и последователности на инструкциите на нативната машина.

Първите примитивни системи за контрол на машината - перфорирани картички - бяха използвани за стадата на Жакард, които прехвърлиха на коприната модел от всякаква сложност. Пианото, което се играе самостоятелно, е програмирано по същия начин.

Има стотици системи за програмиране и всяка година има нови. Някои от тях са фундаментално различни един от друг, други са много сходни и имат само малки характеристики. Всяка от тях е предназначена да реши задачата си, широка или много специализирана.

Преглед на класификациите

Програмните езици могат да бъдат групирани по десетки различни знаци. Те са основно важни или от практическо значение.

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

Програмни езици

Основните класификации на езиците за програмиране по видове и механизъм на работа се основават на следните параметри:

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

Невъзможно е да се направи ясна класификация на езиците и системите за програмиране, но е възможно да се разделят и систематизират според съществено важни характеристики.

Удобство за човека

Инструкциите, написани на машинен език, са разбираеми за компютъра, но изключително неудобни за даден човек. Те са трудни за разбиране, почти невъзможно е бързо да се променят или да се състави с тях сложен алгоритъм. За да повишат ефективността, програмистите са се издигнали до нови нива на абстракция и са научили машината да приеме по-разбираеми от човека инструкции и да ги преведе самостоятелно в машинен код. Помислете за класификацията и характеристиките на езиците за програмиране на различни нива:

  • Машинен код. Това също е език за програмиране, на който с правилната подготовка можете да напишете инструкция.
  • Ниско ниво. Наистина ниско ниво асемблер езици, които използват нативни инструкции на машината, кодирани с мнемонични кодове.
  • Средното ниво. Системите за програмиране на тази група могат да се считат за ниско и високо ниво, в зависимост от конкретните идеи за степента на абстракция. Това включва C и C ++.
  • Високо ниво. Тези езици ви позволяват да създавате сложни алгоритми, но изисквате допълнителна обработка преди изпълнението, така че генерираният код е по-малко ефективен и по-бавен.
  • Ултра високо ниво. Тази малка група се характеризира с появата на свръхмощни екипи и оператори. Тук е възможно да се носи Algol-68.

Характеристика на езиците от ниско ниво е тяхната компютърна зависимост. Те са тясно свързани със спецификата на организацията на определен тип компютър, но като цяло са еднакви един с друг. Те осигуряват:

  • висока скорост на изпълнение и максимална компактност на създадените програми;
  • директно взаимодействие с хардуерни ресурси;
  • пълен контрол над паметта.

Основни недостатъци на езиците на ниско ниво:

  • за всеки тип компютър е необходимо да се използва определена командна система в зависимост от характеристиките на машината;
  • сложността и ниската скорост на процеса на програмиране;
  • голяма вероятност от грешки, които са трудни за проследяване;
  • липсата на мобилност на програмите, невъзможността да бъдат стартирани на друг компютър.

Системите за програмиране на високо ниво не са свързани със специфична машинна командна система и могат да бъдат изпълнявани на всеки компютър. Поради високото ниво на абстракция, те могат да си позволят да използват различни понятия и методологии при съставянето на инструкции. Следователно класификацията на езиците за програмиране на високо ниво е много широка и сложна.

Обработка на програмата по машина

За да изпълни сложна инструкция, компютърът първо трябва да намали абстрактността и да го преведе на език, който е разбираем за себе си. Начинът, по който се прави това, се нарича модел на изпълнение. Има два основни модела и един хибрид:

  • Компилация - еднократен превод на цялата програма в машинен код.
  • Тълкуване - последователно изпълнение на всеки израз.
  • Transcopation - превод на език на по-ниско ниво, например C или асемблер, и последващото му компилиране.

За да преведете, ви е необходима специална програма за компилиране или интерпретация, без която не можете да работите с езика.

Съставяне и тълкуване

Тълкувателят работи поотделно с всеки ред на програмата, анализира и незабавно изпълнява. Неговото присъствие е необходимо от самото начало до самия край на програмата.

Основните недостатъци на тълкувателния модел са:

  • постоянно намиране на преводача в паметта на компютъра;
  • повтаряща се обработка на повтарящи се команди.

Въпреки това, тълкуваните езици са много удобни за циклично разработване и отстраняване на грешки, тъй като ви позволяват бързо да правите промени в програмата.



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

Основните недостатъци на компилационния модел са:

  • голяма трудност.

Преди да преведе програмата на машинно разбираем език, преводачът преминава през първоначалната инструкция многократно, анализира и тества.

Съставяне на програмата

Няма ясна демаркация на системите, тъй като традиционно интерпретираните езици могат да бъдат съставени и обратно.

Класификация на езиците за програмиране на високо ниво по модел на изпълнение:

  • Интерпретиран - Python, Haskell, PHP, jаvascript.
  • Съставен директно в кода на машината: C, C ++, Fortran, ASM.
  • Съставен в bytecode: Python, Java.
  • Преобразувано: Haskell, Fortran, C, C ++.

Обработка на данни

Всеки програмен език работи с информация, която трябва да бъде манипулирана по някакъв начин, проверена за коректност и променена. Данните могат да бъдат много разнородни - числа, линии или сложни структури. Разбира се, всеки тип трябва да работи по различен начин, но за да се определи точно как, първо е необходимо да се разбере какъв вид данни се справя с компютъра.

Въз основа на метода за определяне на разнообразието от данни се конструира класификация на езиците за програмиране по типовата система.

  • Непознати езици.
  • Въведени езици с различна степен на строгост.

Не са настроени асемблер езици, които могат директно да обработват бинарни данни. Типът данни няма никакво значение.

За написаните езици е важно какъв вид данни работят. Някои операции са дефинирани само за номера, например разделяне, други са само за низове. Някои системи обаче позволяват на програмиста определени свободи. Например, те могат самостоятелно да дефинират и "имплицитно" да конвертират един тип данни в друг, въз основа на семантиката на командата. Това е много удобно, но усложнява отстраняването на грешки, тъй като може да доведе до неприятна грешка. Ярък пример за несправедливо набиране е jаvascript.

Строго написаните езици, например Java, не позволяват тази свобода и изискват посочване на типовете и тяхното изрично преобразуване, ако е необходимо.

Също така има класификация на езиците за програмиране на високо ниво по време на проверката на типа данни:

  • статичните езици обикновено са компилирани. Проверката на типа се извършва, когато програмата бъде анализирана, преди да бъде преведена на езика на машината.
  • Динамичните езици проверяват типовете данни по време на изпълнение.

Основен начин на взаимодействие

Високо абстрактните езици могат да бъдат разделени според основната парадигма на програмиране. Съществуват десетки методологии за програмиране, някои от които са много сходни един с друг, така че е невъзможно да се създаде ясна система от различия. Кратката класификация на езиците за програмиране изглежда така:

  • алгоритмичен, императивен, процедурен. Изисква изрично последователно описание на алгоритъма за решаване на проблема. Операторите в същото време се комбинират в процедурни групи, отделени от самите данни. Примери за процедурни езици са Pascal, Basic;
  • логично, декларативно. Максимално оформените описват самата задача и необходимия резултат. Решението трябва да следва логически от това описание;
  • обектно-ориентиран, структуриран. Те се основават на концепцията за обект, който съчетава данните и методите за тяхното обработване.

Обекти в програмирането

Езиците от последната група описват всички обекти под формата на независими обекти, които крият сложна механика. Основните понятия на OOP (обектно-ориентираното програмиране) са:

  • капсулиране - скриване на функционалността вътре в обекта;
  • наследяване от някои обекти на методите на другите;
  • полиморфизъм - промяна на същността с запазването на външния интерфейс.
Обектно-ориентирано програмиране

Можете също така да класифицирате езиците на обектно-ориентираното програмиране чрез прилагане на основните понятия на този подход - наследяване, капсулиране и полиморфизъм. В допълнение към класическите механизми има и други, като например прототипа, използван в jаvascript.

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

Поколения езици за програмиране

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

В опитите за свързване на класификацията и еволюцията на езиците за програмиране се отличават няколко големи групи, наречени поколения:

  • Първото поколение - езици на ниско ниво, свързани с внедряването на конкретен компютър. "Програмите" на тези езици приличаха на редици от превключватели, поставени на желаната позиция, или на ударни карти (перфорирани ленти). По този начин всички команди са последователност от нули и от тях - двоичен код. Пример: езикът на ARM процесора.
  • Във второто поколение езиците станаха малко по-разбираеми за един човек, но не успяха да ги развърнат от определен апарат. Това е времето на асемблер с мнемонични кодове и недвусмислено монтиране в машинно четима форма. Пример: Макроасемблер.
  • Езиците на третото поколение премахнаха от програмиста грижата за непринципни подробности за изготвяне на инструкции, като превод на програмата в машинен код. Сега компютърът се е научил да го прави сам. Синтаксисът и речникът се приближиха до човека, станаха по-ясни. В това поколение се раждат почти всички съвременни езици на високо ниво с широко поле на приложение, независимо от тяхната парадигма: PHP, Fortran.
  • В четвъртото поколение нивото на абстракция се увеличава още повече, като рязко намалява обхвата на използване. Тази група включва такива специфични езици като FoxPro, Simulink, SQL. Визуални езици за програмиране се появиха: CAD пакети, системи RAD.
  • И накрая, петото поколение езици трябваше да пише сами програми, получавайки само описание от програмиста. Тази идея не е напълно приложена, тъй като за компилирането на ефективен алгоритъм понякога не е достатъчно директна компютърна логика, а все още се изисква интуиция и разбирателство. Примери за пети поколение езици са MathCAD, Prolog и Mercury.
Поколения езици за програмиране

Всъщност поколенията езици отговарят точно на етапите на програмиране, обсъдени в началото на статията, изброени в обратен ред. Първоначално програмистът извърши всички операции и машината изпълни само определената последователност от действия. Сега компютърът може да произведе резултата според официалното описание на проблема.

Лекотата на работата на програмиста е съпроводена с увеличаване на товара на машината, програмата е по-бавна и изисква повече ресурси.

Въпреки факта, че технологичният прогрес се движи с бързи темпове, езиците от първите поколения изобщо не изчезват. Те се използват в зони, изискващи максимална простота и ефективност.

Обхват на приложение

Всеки програмен език е добър в своята област, за която е създаден. Така че, за програмирането на микроконтролери, асемблерите се използват, а с Java няма нищо общо. Програмата за ниско ниво на драйверите е ефективна с C, което ви позволява да контролирате стриктно ресурсите на паметта. За уеб програмирането си струва да изберете скриптови езици PHP и jаvascript, чийто преводач е вграден във всеки съвременен браузър. Важни банкови програми са написани в Java, които осигуряват контрол на грешките. Аерокосмичеството - също в Java или Pascal, което дори събирането на отпадъци дава контрол на програмиста.

Всички езици са добри, просто трябва да изберете подходящата задача.

Най-популярните езици за програмиране

Значението на класификацията

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

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

Споделяне в социалните мрежи:

сроден