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

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

Съвременните езици за програмиране на високо ниво като Pascal, C, Ada, Java, C++, C# и други все още са най-разпространеният и мощен инструмент за програмисти, участващи в разработването както на системен, така и на приложен софтуер. С появата на нови задачи и нужди, функционалността на тези езици непрекъснато се разширява чрез създаване на все по-разширени версии.

Друга посока в развитието на езиците за програмиране е свързана със създаването на специализирани (проблемно ориентирани) софтуерни системи и среди за потребители, които не са програмисти (технолози, дизайнери, икономисти и др.). Примери за такива системи и среди са CAD за различни цели, автоматизирани системи за обучение, системи за дистанционно обучение, експертни и моделиращи системи в икономиката и др. Целта на съответните проблемно-ориентирани езици, използвани в такива системи, често се отразява в техните имена, например: „Език за описание на схемите на технологичното оборудване“, „Език за описание на сценария на обучение“, „Език за моделиране на ситуацията“ и т.н.

Както езиците за програмиране с общо предназначение, така и специфичните за домейн програмни езици имат едно общо нещо - те са

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

Изреченията се изграждат от думи, а думите от символи (букви). Множеството от всички допустими символи се нарича по азбучен редезик. В езиците за програмиране изреченията обикновено съответстват на оператори (или инструкции) и виждаме буквени знаци на клавиатурата на компютъра.

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

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

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

Има различни начини за описване на синтаксиса на формалните езици (втората глава на урока е посветена на начините за описанието му). Най-използваните в езиците за програмиране са backus форма - Наура(БНФ) и синтактични диаграми.

BNF е разработен от Backus и е използван за първи път за строго описание на езика ALGOL-60 през 1963 г. Тази форма се използва както за описание на структурата на езика като цяло, така и за описание на отделни езикови конструкции (подгрупи на езика) и неговите елементи – оператори, идентификатори, изрази, числа и др.

Следват примери за BNF, които дефинират синтаксиса за десетични цели числа и синтаксиса за аритметични изрази, съдържащи операторите "+" и "*".

BNF десетични цели числа:

= 0|1|...|9

БНФ на аритметични изрази:

:= () а

В горните изрази аозначава всеки идентификатор и се третира като знак от азбуката, от която е изграден изразът.

От лявата страна на BNF имената на дефинираните параметри са изписани в ъглови скоби. синтактични категории(понятия, единици), символът “:=” означава “е”, “това”, “е дефинирано като”, символът “|” означава "или".

Дясната част на BNF определя възможните опции за конструиране на специфични стойности на тези категории, в този случай стойностите на десетични числа и специфични аритметични изрази. BNF съдържа и азбуката на знаците, от които са съставени тези стойности. За десетичните цели числа азбуката е множеството (+,-, 0, 1,..., 9), а за изразите е множеството (а, *, +, (,)}.

Процесът на конструиране на значенията на една синтактична категория се състои в оттеглянетези стойности чрез последователни замествания на десните части на правилата на БНФ в левите. Следват изводите на числото "-320" и израза "а+а*а"използвайки съответния BNF:

БНФ са много подобни на формални граматикиизползвани в теорията на формалните езици (някои автори ги идентифицират).

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

Ако в разглежданата БНФ всяка синтактична категория от лявата страна на правилата се означава с А, Би ОТсъответно и вместо символа:= използвайте -тогава ще се получат следните форми:

За десетични цели числа:

A->B+B-B B^>CBC C->0 | 11... | 9

За аритметични изрази:

A^A+BB

B->B*SS

C^>(A)a

Така са написани правилата формални граматики.Символи, обозначаващи синтактични категории, в този случай, Б, Ввъв формалните граматики се наричат нетерминални символии знаците на азбуката са терминал.

На практика, след получаване на граматиката на езика за програмиране в "първо приближение", е необходимо да се изследват неговите свойства и в някои случаи да се извършат някои трансформации. Това се дължи главно на необходимостта от привеждане на граматиката във вид, удобен за конструиране на съответния преводач. В процеса на извършване на тези трансформации, от формална гледна точка, няма значение какви конкретни синтактични категории и символи съдържа азбуката БНФ. Следователно на този етап обикновено се преминава към формалната граматика и се използват подходящите методи на теорията на формалните езици. В същото време БНФ не трябва да се отъждествява напълно с формалните граматики. Дефиницията на граматиката в теорията на формалните езици е по-обща. По-специално те могат да се използват за описание контекстни зависимости,които не винаги могат да бъдат избегнати при разработването на езици за програмиране и които не могат да бъдат описани с помощта на BNF.

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

Нека се спрем накратко на друг начин за описание на синтаксиса на езика, споменат по-горе, с помощта на синтактични диаграми. Някои автори, когато описват езиковия стандарт, предпочитат този метод поради по-голямата му яснота. Примери за синтактични диаграми могат да бъдат намерени в много книги по програмиране (например в ). Обърнете внимание, че и двата метода на описание - и BNF, и синтактичните диаграми са еквивалентни и винаги можете да превключвате от един метод на описание към друг.

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

тогава можете да изградите набор от изречения с различни значения. Например изреченията „колата кара“ и „колата мисли“ са правилни от гледна точка на синтаксиса. Първото изречение обаче има правилното значение; второто може да се каже, че е безсмислено. По този начин семантиката определя набора от значения и допустими съответствия между изречения (текстове) и значения.

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

По подобен начин в езиците за програмиране синтактично добре оформеният оператор за присвояване

ще бъде семантично неправилно, ако a е 10,5 (a = 10,5) и b е невярно (b = невярно).

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

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

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

Що се отнася до прогнозите за перспективите за по-нататъшното развитие на езиците за програмиране, има доста широк спектър от мнения, до диаметрално противоположни. Някои автори смятат, че всеки от езиците има свои собствени семантични характеристики, които го правят удобен и привлекателен за определена област на програмиране (например Prolog и Lisp са фокусирани върху решаването на проблеми с изкуствения интелект; Fortran е най-ефективният в решаване на изчислителни проблеми; Cobol - използва се за икономически изчисления и др.). Следователно трябва да създавате всички нови езици, които имат специфични функции или периодично да актуализирате съществуващите версии, а не да се опитвате да създавате универсален език. В подкрепа на тази гледна точка се изтъква аргументът, че всички амбициозни проекти за създаване на универсален език са се провалили (достатъчно е да си припомним несбъднатите надежди, свързани с развитието на езиците ADAiPL-1).

Друга част от авторите смятат, че от публикуването на стандартите на първите езици за програмиране - Fortran, Algol и др. - през 60-те години. През 20-ти век е имало „стабилизиране“ на езиците в смисъл, че езиковите конструкции, сходни по предназначение в различни езици, имат практически една и съща семантична основа, въпреки разликите в речника и синтаксиса. Следователно, веднага щом бъде възможно формално да се дефинира тази обща семантична база, ще бъде възможно да се започне създаването на универсален език, който вече няма да бъде език за програмиране в традиционния смисъл на думата, а заготовки от семантични структури. Програмата ще бъде представена като набор от тези конструкции, а текстовият редактор ще отстъпи място на структурния редактор. Като пример за частична реализация на този подход са дадени среди за визуално програмиране като Delphi, C++ Builder и др.

Край

Започнете

Повторете

Започнете

Псевдо кодове

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

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

Псевдокодът не приема строги синтактични правила за писане на команди, присъщи на формалните езици, което улеснява писането на алгоритъм на етапа на проектиране и прави възможно използването на по-широк набор от команди, предназначени за абстрактен изпълнител. В псевдокода обаче обикновено има някои конструкции, които са присъщи на формалните езици, което улеснява прехода от писане на псевдокод към писане на алгоритъм на формален език. По-специално, в псевдокода, както и във формалните езици, има спомагателни думи, чието значение се определя веднъж завинаги. Те са удебелени в печатен текст и подчертани в ръкописен текст. Няма единна или формална дефиниция на псевдокод, така че са възможни различни псевдокодове, различаващи се по набор от служебни думи и основни (базови) структури. Като пример даваме запис в един от псевдокодовете на алгоритъма:

алгоритъм Алгоритъм на Евклид;

чаопървото число не е равно на второто

акочислата са равни

тогаваСпри се всичко;

в противен случайопределяне на по-голямото от две числа;

чПроменете по-голямото число на разликата между по-голямото и по-малкото число

край;

вземете първото число като отговор

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

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

На практика обаче като изпълнители на алгоритми се използват специални автомати - електронни компютри (компютри). Следователно алгоритъмът, предназначен за изпълнение на компютър, трябва да бъде написан на език, "разбираем" от компютъра. И тук на преден план излиза необходимостта от точен запис на командите, без да се оставя място за произволно тълкуване от техния изпълнител. Следователно езикът за писане на алгоритъма трябва да бъде формализиран. Такъв език се нарича програмен език , и записът на алгоритъма на този език е програма за компютър.


Програмен езике формализиран език, който е комбинация от азбуката, правилата за писане на конструкции (синтаксис) и правилата за интерпретиране на конструкции (семантика).

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

Програмирането е цяла наука, която ви позволява да създавате компютърни програми. Той включва огромен брой различни операции и алгоритми, които образуват един език за програмиране. И така, какво е това и какви са езиците за програмиране? Статията предоставя отговори, както и прегледен списък на езиците за програмиране.

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

Първият машинен език е изобретен през 1941 г. от Конрад Цузе, който е изобретателят на аналитичната машина. Малко по-късно, през 1943 г., Хауърд Айкен създава машината Mark-1, способна да чете инструкции на ниво машинен код.

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

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

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

  • Аспектно ориентиран (основната идея е разделянето на функционалността за повишаване на ефективността на програмните модули).
  • Структурен (въз основа на идеята за създаване на йерархична структура на отделни блокове на програмата).
  • Логически (въз основа на теорията на апарата на математическата логика и правилата за разрешаване).
  • Обектно-ориентиран (при такова програмиране вече не се използват алгоритми, а обекти, които принадлежат към определен клас).
  • Мултипарадигма (комбинирайте няколко парадигми и самият програмист решава кой език да използва в този или онзи случай).
  • Функционални (основните елементи са функции, които променят стойността си в зависимост от резултатите от изчисленията на първоначалните данни).

Програмиране за начинаещи

Много хора питат какво е програмиране? По принцип това е начин за комуникация с компютър. Благодарение на езиците за програмиране можем да задаваме конкретни задачи за различни устройства, като създаваме специални приложения или програми. Когато изучавате тази наука в началния етап, най-важното е да изберете подходящи (интересни за вас) езици за програмиране. Списъкът за начинаещи е по-долу:

  • Basic е изобретен през 1964 г., принадлежи към семейството на езиците от високо ниво и се използва за писане на приложни програми.
  • Python ("Python") е доста лесен за научаване поради простия си, четим синтаксис, но предимството е, че може да се използва за създаване както на обикновени десктоп програми, така и на уеб приложения.
  • Паскал ("Паскал") - един от най-старите езици (1969 г.), създаден за обучение на студенти. Съвременната му модификация има строг тип и структура, но "Паскал" е напълно логичен език, който е разбираем на интуитивно ниво.

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

Начинаещите имат възможност да ускорят изучаването на програмирането и неговите основи благодарение на специални инструменти. Основният помощник е интегрираната среда за разработка на програми и приложения Visual Basic ("Visual Basic" също е език за програмиране, наследил стила на езика Basic от 70-те години).

Езикови нива за програмиране

Всички формализирани езици, предназначени да създават, описват програми и алгоритми за решаване на проблеми на компютри, са разделени на две основни категории: езици за програмиране на ниско ниво (списъкът е даден по-долу) и такива на високо ниво. Нека поговорим за всеки от тях поотделно.

Езиците на ниско ниво са предназначени да създават машинни инструкции за процесори. Основното им предимство е, че използват мнемоничен запис, тоест вместо поредица от нули и единици (от двоичната бройна система), компютърът запомня смислена съкратена дума от английския език. Най-известните езици на ниско ниво са "Assembler" (има няколко подвида на този език, всеки от които има много общо, но се различава само в набор от допълнителни директиви и макроси), CIL (достъпен в .Net платформа) и JAVA байт код.

Езици за програмиране на високо ниво: списък

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

Следният списък от езици за програмиране: C ("C"), C # ("C-sharp"), "Fortran", "Pascal", Java ("Java") - е сред най-използваните синтаксиси на високо ниво. Той има следните свойства: тези езици работят със сложни структури, поддържат низови типове данни и файлови I/O операции и също така имат предимството, че са много по-лесни за работа поради четимост и разбираем синтаксис.

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

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

  • ООП езици: Java, C++, Python, PHP, VisualBasic и JavaScript;
  • група структурни езици: Basic, Fortran и Pascal;
  • мулти-парадигма: C#, Delphi, Curry и Scala.

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

Изборът на езика, на който е написана тази или онази програма, зависи до голяма степен от областта на нейното приложение. Така например, за да работите със самия компютърен хардуер (писане на драйвери и поддържащи програми), най-добрият вариант би бил C ("C") или C ++, които са включени в основните езици за програмиране (вижте списъка по-горе). А за разработването на мобилни приложения, включително игри, трябва да изберете Java или C # ("C-sharp").

Ако все още не сте решили в коя посока да работите, препоръчваме ви да започнете да учите с C или C ++. Те имат много ясен синтаксис, ясно структурно разделение на класове и функции. Освен това, познавайки C или C ++, можете лесно да научите всеки друг език за програмиране.

За железопътния език „Влакът ще премине платформата „Красные зори“, без да спира. Обърнете внимание, че шофьорът е използвал съществителното „стоп“, а не глагола „стоп“. Спирането е много важно понятие за железопътните работници. Един влак може да "спира", но не и "да има спирки". Турчин [Турчин 2000], давайки подобен пример, посочва формализирането на езика, използван за тясно професионални цели.

Формализираният език може да се дефинира по следния начин [Turchin 2000]. Да разгледаме двуетажен езиков модел на реалността (фиг. 4. 4). Ситуацията si е кодирана от езиковия обект Li. Обектът L1 е името на si. Известно време по-късно ситуация S1 е заменена от ситуация S2. Извършвайки някаква езикова дейност, ние трансформираме L1 в друг обект - L2. Ако нашият модел е правилен, тогава L2 е името на S2. В резултат на това, без да знаем реалната ситуация S2, можем да добием представа за нея чрез декодиране на езиковия обект L2. Извършването на трансформацията L1->L2 определя дали езикът ще бъде формализиран.

    За формализиран език трансформацията L1->L2 се определя изключително от езиковите обекти Li, които участват в нея и не зависи от езиковите представяния si, съответстващи им в семантиката на езика.

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

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

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

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

Езици за моделиране

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

    елементи на модела - основни понятия на моделирането и тяхната семантика;

    нотация - визуално представяне на моделиращи елементи;

    ръководство за използване - правила за използване на елементи в рамките на изграждане на модели на домейн.

Езици за програмиране и интегрирани среди

    Според създателя на първата интегрирана среда FRAMEWORK, интегрираната среда е такова приложение, че потребителят, след като го стартира в началото на работния ден, намира всички ресурси, необходими за работа в него и следователно не излиза от интегрираната среда до самия край на работния ден. Разбира се, това определение не е много правилно и донякъде идеализира ситуацията, но общият му смисъл е достатъчно ясен. Основната характеристика на интегрираните среди е високата степен на интерактивност. Постига се чрез интегриране на различни софтуерни ресурси в едно цяло, откъдето идва и името. И така, интегрираната среда на компилатор на език за програмиране (програма, която създава изпълнима програма от текста на този език за програмиране) обикновено съдържа текстов редактор и самия компилатор със система за диагностика на грешки при компилация. Освен това обикновено има и дебъгер - интерпретатор на този език, който изпълнява програмата ред по ред и има редица други специални функции. Една от активно развиващите се области, визуалният дизайн, се основава изцяло на използването на възможностите на интегрирана среда. Потребителят интерактивно избира обектите на езика за програмиране, необходими за неговата програма и установява връзки между тях. Популярността на такива езици като Visual BASIC (Microsoft), както и Object PASCAL (Delphi и Kylix, Borland среди) не е случайна. Дори неопитен програмист, който не знае други езици за програмиране освен BASIC и никога не е програмирал под Windows, може да създаде приложна програма, работеща под Windows, използвайки Visual BASIC за два или три дни. Но програмист от висок клас, който преди не е програмирал под Windows, използвайки C ++, често трябва да прекара седмици или дори месеци, за да създаде същата програма. Вярно е, че Visual BASIC има редица значителни ограничения. С помощта на среди за визуален дизайн можете да създавате много сложни програми, без да въвеждате нито един ред код на клавиатурата. Въпреки това, всички програми, базирани на традиционни процедурни езици за програмиране, страдат от същия недостатък. За тях изпълнимият код е едно, а данните, обработвани от програмата, съвсем друго. Наистина, програмният код се съдържа във файл с разширение EXE, а данните са или в специални файлове с данни (обикновено в текстова или двоична форма във вътрешното представяне на компютъра), или се въвеждат от клавиатурата или от друг външно устройство. А сега нека зададем въпроса: какво ще стане, ако потребителят трябва да даде на изпълнимата програма информация, която може да се счита за „добавка“ към текста на програмата? Например, искаме да се изгради функционална графика на екрана и в такава програма предоставяме всички необходими възможности за обслужване. Формулата за функцията обаче трябва да бъде зададена от самия потребител и не се знае предварително каква ще бъде. Съвсем очевидно е, че такива задачи могат да бъдат решени само с помощта на система за превод. Но „трябва да платите за всичко“. Компилаторът превежда текста на програмата в изпълним код, който може да работи без компилираща програма. Програмите, създадени на базата на езици от интерпретиращ тип, могат да се изпълняват само под контрола на програма за интерпретатор. Освен това са по-бавни от компилираните, защото им отнема допълнително време за интерпретация. В много случаи обаче това не е съществено.

Дата на създаване: 1963 Повлиян:ПЕЧАЛБА Въвеждане:нетипизиран Диалекти:

    Applesoft BASIC

    Commodore BASIC

    Microsoft BASIC

Реализации и версии:

  • Интерпретатор на Applesoft BASIC в Javascript

    Atari Microsoft BASIC I/II

  • Commodore BASIC

    Galaxy BASIC

    Microsoft Visual Basic

  • Visual Basic за приложения

БЕЙСИК (BASIC - съкратено от Beginner's All-purpose Symbolic Instruction Code - универсален код за символни инструкции за начинаещи; англ. basic - основен, основен) - семейство езици за програмиране от високо ниво.

BASIC е замислен през 1963 г. от професорите от Dartmouth College Джон Кемени и Томас Курц и е внедрен под тяхно ръководство от екип от студенти. С течение на времето, когато започнаха да се появяват други диалекти, този "оригинален" диалект стана известен като Dartmouth BASIC.

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

При проектирането на езика са използвани следните осем принципа:

    да е лесен за използване от начинаещи;

    да е език за програмиране с общо предназначение;

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

    бъдете интерактивни;

    предоставяне на ясни съобщения за грешки;

    работи бързо върху малки програми;

    не изискват разбиране на работата на хардуера;

    да бъде посредник между потребителя и операционната система.

Езикът беше базиран отчасти на Fortran II и отчасти на Algol-60, с добавки, които да го направят подходящ за споделяне на времето, обработка на текст и матрична аритметика. BASIC първоначално беше внедрен на GE-265 с поддръжка за множество терминали. Противно на общоприетото схващане, по времето на създаването си той е бил компилиран език. Езикът придоби обща популярност от появата си на микрокомпютъра Altair 8800. Много езици за програмиране бяха твърде тромави, за да се поберат в малка памет. За машини с бавна медия като хартиена лента, аудио касета и без подходящ текстов редактор малък език като BASIC беше божи дар. През 1975 г. Microsoft (тогава бяха само двама - Бил Гейтс и Пол Алън, с участието на Монте Давидов) пусна Altair BASIC. За операционната система CP / M е създаден диалектът BASIC-80, който определя развитието на езика за дълго време. През този период бяха създадени няколко нови версии на BASIC. Microsoft продаде няколко версии на BASIC за MS-DOS/PC-DOS, включително BASICA, GWBASIC и Quick BASIC (QBASIC).Borland пусна Turbo BASIC 1.0 през 1985 г. (неговите наследници впоследствие бяха продадени от друга компания под името PowerBASIC). На домашните компютри се появиха различни BASIC разширения, обикновено включващи инструменти за работа с графика, звук, изпълнение на DOS команди, както и инструменти за структурирано програмиране. Някои други езици използват добре познатия синтаксис BASIC като основа, върху която е изградена напълно различна система (вижте например GRASS). От края на 80-те обаче новите компютри станаха много по-сложни и предоставиха функции (като графичен потребителски интерфейс), които направиха BASIC вече не толкова удобен за програмиране. BASIC започна да губи позиции, въпреки факта, че огромен брой от неговите версии все още се използват и продават. BASIC получи втори живот с появата на Visual Basic на Microsoft. Той се превърна в един от най-използваните езици на платформата Microsoft Windows. По-късно беше създаден вариант, наречен WordBasic, използван в MS Word до Word 97. Вариантът на Visual Basic за приложения (VBA) беше вграден в Excel 5.0 през 1993 г., след това в Access 95 през 1995 г. и след това във всички други инструменти. , включен в пакет Office - през 1997г. Internet Explorer 3.0 и по-нова версия, както и Microsoft Outlook включват езиков интерпретатор VBScript. Пълната версия на пакета OpenOffice.org включва също BASIC интерпретатор.

Здравей, свят!: Пример за QBasic 1.1, QuickBasic 4.50

ПЕЧАТАЙТЕ " Здравейте , Свят !"

Факториал: Пример за QBasic 1.1, QuickBasic 4.50

Използва се итеративна дефиниция на факториела. При изчисляване 13! възниква аритметично препълване и тук поведението на различните реализации се различава: QBasic отчита препълване, докато QuickBasic просто отпечатва отрицателни стойности. Освен това командата PRINT отпечатва по подразбиране един интервал преди и след число.

DIM f AS LONG f = 1 PRINT "0 !="; f ЗА i = 1 ДО 16:

f = f*i:

PRINTi; "!="; f

ФОРМАЛИЗИРАН ЕЗИК- изкуствена знакова система, предназначена да представи някаква теория. Формализираният език се различава от естествените (национални) езици на човешката комуникация и мислене, от изкуствените езици като есперанто, от "техническите" езици на науката, които съчетават средствата на определена част от естествения език със съответните научни символи (езикът на химията, езикът на обикновената математика и др.), от алгоритмичен език общ тип програмиране и др. на първо място, поради факта, че неговата задача е да служи като средство за фиксиране (формализиране) на определено логическо съдържание, което позволява да се въведе отношението на логическата последица и концепцията за доказуемост (или техни аналози). Исторически първият формализиран език беше силогистичен Аристотел, реализиран с помощта на стандартизиран естествен (гръцки) езиков фрагмент. Общата идея за формализиран език е формулирана от Лайбниц (characteristica universalis), който предвижда разширяването му до "изводите на изводите" - calculus ratiocinator. В съвремието са разработени различни варианти на формализирани езици въз основа на аналогията между логика и алгебра. Крайъгълният камък тук беше работата Моргана , Бул и особено техните последователи Шрьодер и Порецки . Съвременните формализирани езици - в техните най-често срещани форми - се връщат към труда. Фреге „Begriffsschrift“ – „Записване в понятия“ (1879), откъдето идва основната линия на развитие на езика на пропозиционалната логика и (обхващайки я) логиката на (множеството) предикати, както и приложението на тези логически езикови средства към проблемите на обосноваването на математиката.

Характерната структура на такива формализирани езици: задаването на азбуката на началните знаци, индуктивното определяне на (добре оформена) формула на езика, т.нар. задаване на правилата за образуване, задаване на правилата за умозаключение, т.нар. правила за трансформация, които запазват избраната логическа характеристика на формулите (истина, доказуемост и др.). Добавянето на правила за трансформация превръща формализирания език в логическо смятане. Има много видове формализирани езици: това са преди всичко езици на дедуктивно-аксиоматични конструкции, системи за естествени („естествени“) изводи и последователни конструкции, аналитични таблици, системи „аргументна логика“ и много други.

Формализираните езици се различават по своята логическа сила от "класическите" езици (в които аристотелевите закони за идентичност, противоречие и изключена среда, както и принципът на логическата двусмисленост са в пълна сила) и завършващи с множество езици ​​на некласически логики, които позволяват отслабване на определени принципи, въвеждат многозначност на оценките на формули или техните модалности. Разработени са езици, в които логическите средства са сведени до минимум в един или друг смисъл. Такива са езиците на минималната и позитивната логика или езикът на пропозиционалната логика, който използва една единствена логическа операция, например. Инсулт на Шефер (вж Логически връзки ).

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

Формализираният език може да бъде "чиста форма", т.е. не носят екстралогична информация; ако го носи, то той се превръща в приложен формализиран език, чиято специфика е наличието на константни предикати и термини (описания) – напр. аритметика - отразяваща свойствата на областта на приложение. За да се формализират теории с високо ниво на абстракция, формализираният език може да бъде модифициран, разширен или „надграден“ по различни начини; пример: формализиране на класическото смятане като аритметика от втори ред (т.е. с квантори над предикатни променливи). В редица случаи формализираният език съдържа логически структури от много - дори безкрайно много - порядъци (като например "кулата на езиците" на А. А. Марков, която служи за формализиране на конструктивната математика или интерпретацията на модалности във формата на йерархия от „възможни светове“). Семантичната основа на формализиран език на логиката може да бъде теоретико-множествена, алгебрична, вероятностна, теоретико-игрова и т.н. Може да има и такива нейни „отслабвания“, които са сходни само с вероятностната семантика – така напр. възниква формализиран език на „неясна логика“ (в смисъл Заде). Тогава езикът придобива специфична прагматика, отчитайки фактора на носителя на езика (давайки оценка на „функцията на принадлежност” на субекта към обхвата на това понятие). Това е мястото, където се проявява нарастващата тенденция да се вземе предвид „човешкият фактор“ във формализираните езици, под една или друга форма, което се проявява ясно в някои формализирани езици на логиката на квантовата механика. В друга посока е развитието на формализирани езици, чиято семантика предполага отхвърляне на екзистенциални допускания или определени онтологични предпоставки – допустимост на правила с безкраен брой предпоставки, „многовидност“ на предметни области, дори противоречиви. такива и т.н.

Незаменима характеристика на формализирания език е "възможността" за тълкуване на правилата за извод; например, на определена стъпка сме свободни да използваме или да не използваме, да речем, правилото modus ponens. Тази функция е лишена от алгоритмичните езици, които имат "предписващ" характер. Но с развитието на компютърната логика и разработването на програми от типа "описващ" тази разлика започва да се изглажда. Развитието на формализирани езици, фокусирани върху решаването на евристични проблеми, също действа в същата посока.

Литература:

1. църква А.Въведение в математическата логика, том 1. М., 1960;

2. Клийн С.К.Въведение в метаматематиката. М., 1957;

3. Къри Х.Основи на математическата логика. М., 1969;

4. Фройдентал Х.Езикът на логиката. М., 1969;

5. Смирнова Е.Д.Формализирани езици и проблеми на логическата семантика. М., 1982.