Limbaje și gramatici formale. Software și suport matematic Exemple de limbaje de programare formalizate

Limbaj de programare- un limbaj artificial (formal) conceput pentru a scrie programe pentru interpret (de exemplu, un computer sau o mașină controlată numeric). Limbajul de programare este definit de descrierea sa. O descriere a limbajului de programare este un document care specifică capacitățile unui limbaj algoritmic. De obicei, descrierea conține:

· Alfabet de simboluri acceptabile și cuvinte de serviciu (cheie);

· Reguli sintactice pentru construirea de construcții de limbaj admisibile din alfabet;

· Semantică care explică sensul și scopul construcțiilor de limbaj.

Limbajele de programare sunt folosite pentru a reprezenta soluția problemelor într-o astfel de formă încât să poată fi efectuate pe un computer.

Un limbaj de mașină, care constă din instrucțiuni de procesare a computerului, este, de asemenea, un limbaj de programare. Dar algoritmii redactați într-un limbaj mașină sunt greu de citit chiar și pentru un programator-dezvoltator, în plus, lucrul cu un astfel de limbaj necesită cunoașterea arhitecturii unui anumit computer, prin urmare, programarea este de obicei utilizată în limbaje de un nivel superior decât limbajele mașinii. Limbaj la nivel înalt este un limbaj de programare, ale cărui concepte și structură sunt convenabile pentru percepția umană și nu depind de computerul specific pe care va fi executat programul.

Pentru ca un program scris într-un limbaj de programare de nivel înalt să fie executat pe un computer, acesta trebuie tradus într-un limbaj de mașină. Instrumentul software care îndeplinește această funcție se numește traducător.

Traducător este un program care citește textul unui program scris într-o limbă și îl traduce (traduce) într-un text echivalent într-o altă limbă (de obicei limbajul mașinii). Există două tipuri principale de traducători: compilatoareși interpreți.

Compilator convertește textul programului sursă într-un set de instrucțiuni pentru un anumit tip de procesor (codul mașinii) și apoi îl scrie într-un fișier executabil (fișier exe), care poate fi lansat pentru executare ca program separat. Cu alte cuvinte, compilatorul traduce programul dintr-un limbaj de nivel înalt într-un limbaj de nivel scăzut.

Interpret ca urmare a traducerii, efectuează operațiile specificate în programul original. În acest caz, programul rămâne în limba originală și nu poate fi lansat pentru executare fără un interpret.

Împărțirea în limbi compilate și interpretate este oarecum arbitrară. Deci, pentru orice limbaj compilat în mod tradițional, cum ar fi Pascal, puteți scrie un interpret, iar pentru orice limbaj interpretat, puteți crea un compilator - de exemplu, limbajul BASIC, interpretat inițial, poate fi compilat fără restricții.

Unele limbi, cum ar fi Java și C #, se încadrează între limbile compilate și interpretate. Și anume, programul nu este compilat în limbajul mașinii, ci într-un cod de nivel scăzut independent de mașină, cod byt. Apoi, bytecode-ul este executat de mașina virtuală. Interpretarea este de obicei utilizată pentru a executa bytecode. Această abordare, într-un anumit sens, vă permite să utilizați atât avantajele interpretilor, cât și ale compilatorilor.

De la crearea primelor mașini programabile, omenirea a inventat deja mai mult de două mii și jumătate de limbaje de programare. Numărul limbajelor de programare este în continuă creștere, deși acest proces a încetinit în mod clar. Unele limbi sunt folosite doar de un număr mic de programatori, altele sunt cunoscute de milioane de oameni. Unele dintre ele sunt extrem de specializate (concepute pentru a rezolva o anumită clasă de probleme), iar altele sunt universale. Programatorii profesioniști folosesc uneori mai mult de o duzină de limbaje de programare diferite în munca lor.

Clasificarea limbajelor de programare poate fi realizată în funcție de mai multe criterii: orientate către mașini (asamblori) și independente de mașini, specializate și universale.

Limbile specializate includ limba ART ( A utomatic P rogramat T uleiuri) este primul limbaj de programare specializat pentru mașini-unelte controlate numeric. Limba a fost dezvoltată de un grup de specialiști americani în 1956-1959. sub îndrumarea matematicianului Douglas T. Ross. Limbajul COBOL ( Co mmon B usiness– O rientat L angoasă), creată în Statele Unite sub conducerea lui Grace Murray Hopper în 1959, este axată pe prelucrarea informațiilor economice. Matematicianul Grace Murray Hopper a condus proiectul de dezvoltare COBOL cu gradul de Căpitan al doilea rang, iar ulterior a devenit contramiral. G.M. Hopper este numit „mama și bunica” lui SOBOL.


(Grace Murray Hopper)

Limbile specializate includ limbaje moderne de programare web Perl și PHP. Limbile Rapier, E-language (Rusia), SMR (Marea Britanie), LOGO (SUA) pot fi clasificate ca limbi destinate predării programării.

Cele mai comune limbaje de programare universale de astăzi sunt C ++, Delphi, Java, Pascal, Visual Basic, Python.

Dar, luând în considerare limbajele de programare ca un obiect independent de cercetare, se pot clasifica în funcție de conceptul de a construi un limbaj.

Clasificarea limbajelor de programare

Limbajele de programare pot fi împărțite în două clase: procedurale și non-procedurale. Procedural (imperativ) limbile sunt limbi de tip operator. Descrierea algoritmului în acest limbaj are forma unei secvențe de operatori. O caracteristică a unui limbaj procedural este prezența unui operator de atribuire (Basic, Pascal, C). Un program scris într-un limbaj imperativ este foarte similar cu ordinele imperative în limbaje naturale, adică este o secvență de comenzi pe care trebuie să le execute un computer. Când programează într-un stil imperativ, programatorul trebuie să explice computerului Cum trebuie să rezolvați problema.

Neprocedural (declarativ) limbile sunt limbi, atunci când sunt utilizate în program, este indicat în mod explicit ce proprietăți ar trebui să aibă rezultatul, dar nu se spune în ce mod ar trebui să fie obținut. Limbajele neprocedurale se împart în două grupe: funcțională și logică.

Limbajele de programare declarative sunt limbaje de programare la nivel înalt în care operatorii sunt declarații sau declarații în logică simbolică. Limbajele de programare logice (limbaje bazate pe un sistem de reguli și fapte) sunt un exemplu tipic de astfel de limbaje. O trăsătură caracteristică a limbilor declarative este semantica lor declarativă. Conceptul de bază al semanticii declarative este acela că semnificația fiecărui operator este independentă de modul în care este utilizat acel operator în program. Semantica declarativă este mult mai simplă decât semantica limbajelor imperative, care poate fi considerată un avantaj al limbajelor declarative față de cele imperative.

Limbaje logice

În programele scrise în limbaje de programare logice, acțiunile corespunzătoare sunt efectuate numai dacă există o condiție permisivă necesară pentru derivarea unor noi fapte din aceste fapte în conformitate cu regulile logice specificate. Programarea logică se bazează pe logica matematică (vezi „ Operații logice. Cuantificatoare”, “Expresii booleene”).

Primul limbaj de programare logic a fost limbajul Planificator, a fost dezvoltat de Carl Hewitt la Laboratorul de Inteligență Artificială al Institutului de Tehnologie din Massachusetts în 1969. În acest limbaj, abilitatea de a obține (obține) automat un rezultat din date și de regulile date de enumerarea opțiunilor (a căror combinație a fost numită plan) a fost stabilită ... Dar cel mai faimos limbaj de programare logică este Prolog, care a fost creat în Franța la Universitatea din Marsilia în 1971 de Alain Colmerauer.

Alain Colmero
(Alain Colmerauer)

Programul PROLOGUE conține două componente: fapte și reguli. Faptele sunt date cu care programul funcționează, iar totalitatea faptelor alcătuiește baza de date PROLOGUE, care este, de fapt, o bază de date relațională. Operația principală efectuată pe date este o operație de potrivire, numită și operație de unificare sau reconciliere. Regulile sunt compuse dintr-un titlu și subobiective. Executarea unui program scris în PROLOG începe cu o cerere și constă în demonstrarea adevărului unor afirmații logice într-un set dat de fapte și reguli. Algoritmul acestei dovezi (algoritm de inferență) determină principiile de execuție a programului scrise în PROLOG.

Spre deosebire de programele scrise în limbaje procedurale, care prescriu secvența de pași pe care un computer trebuie să o efectueze pentru a rezolva o problemă, în PROLOG programatorul descrie fapte, reguli, relații între ele și, de asemenea, solicită problema. De exemplu, să presupunem că avem următoarele fapte despre cine este a cărei mamă:

mama („Dasha”, „Masha”).

mama („Natasha”, „Dasha”).

În plus, există o regulă care introduce relația bunică:

bunica (X, Y): -

Acum putem face întrebări despre cine este bunica acestei sau acelei persoane sau cine este nepoata (nepotul) unei anumite femei:

bunica (Natasha, X).

Sistemul PROLOG va da răspunsul la această solicitare după cum urmează:

Posibilitățile de utilizare a limbajului PROLOG sunt foarte extinse. Printre cele mai renumite se numără aplicațiile în matematică simbolică, planificare, proiectare asistată de computer, construirea de compilatoare, baze de date și procesarea limbajului natural. Dar, probabil, cea mai tipică aplicație a PROLOGUL este sistemul expert.

Astăzi există o întreagă clasă de limbaje logice; astfel, limbajele logice de programare QA-4, Popler, Conniver și QLISP au provenit și din limbajul Planificator. Limbajele de programare Mercury, Visual Prolog, Oz și Fril provin din limbajul Prolog.

Limbaje funcționale

Primul limbaj de tip funcțional este limbajul LISP, creat la Massachusetts Institute of Technology în 1956-1959. John McCarthy, care în 1956 la Conferința de la Dartmouth (SUA) a propus pentru prima dată termenul de „inteligență artificială”.

John McCarthy

Și, deși controversa în jurul acestui termen și direcția științifică dezvoltată în cadrul său încă nu dispare, cercetătorii sunt unanimi în utilizarea limbajelor funcționale și logice pentru acest domeniu. Un număr semnificativ de lucrări privind inteligența artificială au fost implementate pe LISP.

După apariția sa, LISP a primit mai multe epitete care reflectă caracteristicile sale: limbajul funcțional, limbajul simbolic, limbajul de procesare a listelor, limbajul recursiv. Din punctul de vedere al clasificării de astăzi, LISP este definit ca un limbaj de programare de tip funcțional, care se bazează pe metoda -calcul (metoda -calcul a fost dezvoltată în anii 30 ai secolului trecut de A. Cherch ca un model matematic riguros pentru funcții calculabile, vezi. „Teoria algoritmilor”).

Un program scris într-un limbaj funcțional constă dintr-un set neordonat de ecuații care definesc funcții și valori care sunt definite ca funcții ale altor valori. Programele și datele LISP există sub formă de expresii simbolice, care sunt stocate ca structuri de liste. LISP se ocupă de două tipuri de obiecte: atomiși liste... Atomii sunt simboluri utilizate pentru identificarea obiectelor care pot fi numerice sau simbolice (concepte, materiale, oameni etc.). O listă este o secvență de zero sau mai multe elemente închise între paranteze, fiecare dintre ele fiind fie un atom, fie o listă. Trei operații primitive sunt efectuate pe liste: recuperarea primului element al listei; obținerea restului listei după eliminarea primului element; concatenarea primului element al listei L și a restului listei Q.

Textele programului numai în limbaje funcționale de programare descrie metoda de rezolvare a problemei, dar nu prescrie o succesiune de acțiuni pentru rezolvare.

Următoarele sunt considerate de obicei principalele proprietăți ale limbajelor de programare funcționale: concizie și simplitate; tastare puternică; modularitate; funcții - obiecte de calcul; puritate (fără efecte secundare); calcul amânat (leneș).

În plus față de LISP, limbajele funcționale includ REFAL (dezvoltat la mijlocul anilor '60 de V.F.Turchin la Universitatea de Stat din Moscova Lomonosov), Haskell, Clean, ML, OCaml, F #.

Iată un exemplu de descriere a algoritmului bine-cunoscut sortare rapida o listă în Haskell:

qsort (x: xs) = qsort elts_lt_x ++ [x]

Qsort elts_greq_x unde

elts_lt_x =

elts_greq_x =

Aici scrie că lista goală este deja sortată. Și sortarea unei liste care nu este goală este împărțirea listei în trei: o listă de elemente mai mici decât capul listei originale, capul listei originale ([x]) și o listă de elemente în coada lista originală care este mai mare sau egală cu x.

Limbi orientate pe obiecte

Limbi orientate pe obiecte sunt limbaje în care conceptele de procedură și date utilizate în sistemele convenționale de programare au fost înlocuite cu conceptul de „obiect” (a se vedea articolul „ Programare orientată pe obiecte”). SmallTalk este considerat un limbaj de programare orientat pe obiecte în forma sa cea mai pură, posibilitățile de programare orientată pe obiecte sunt de asemenea încorporate în Java, C ++, Delphi.

Dezvoltarea ulterioară a programării moderne este asociată cu așa-numita „programare paralelă”. Pentru a implementa această tehnologie, sunt dezvoltate limbaje specializate orientate pe obiecte. Limbile de acest tip includ, de exemplu, MC # ( mcsharp) este un limbaj de programare orientat la obiect la nivel înalt pentru platforma .NET care acceptă crearea de programe care funcționează într-un mediu distribuit cu apeluri asincrone.

Structura limbajului de programare

Există diferențe fundamentale între limbajele de programare existente în conceptul de limbaje de construcție, acest lucru este valabil mai ales pentru limbajele anterioare, dar toate aceste limbaje sunt numite limbaje de programare deoarece au aceeași structură formală din punct de vedere a sistemului de construcție intern.

Orice limbaj de programare este format din propoziții (operatori). Propozițiile (cum ar fi cuvintele) sunt definite peste un anumit alfabet C. Sintaxa limbii descrie un set de propoziții peste alfabetul C, care reprezintă în exterior programe bine formate.

Sintaxă limba - acestea sunt regulile pentru obținerea cuvintelor și propozițiilor acestei limbi. Sintaxa este descrisă schematic folosind anumite reguli gramaticale.

Cunoașterea limbajului formal (alfabet + sintaxă), deși este suficient să se stabilească corectitudine sintactică program, dar nu suficient pentru a-i înțelege scopul și metoda de acțiune. Semnificația și modul de acțiune al unui program într-un limbaj de programare sunt specificate.

Semantica unei limbi este regulile pentru interpretarea cuvintelor într-un limbaj formal, adică stabilirea sensului elementelor lingvistice individuale.

Pentru a defini limbaje formale, inclusiv limbaje de programare, sunt utilizate BNF (forme Backus - Naur) și diagrame de sintaxă. Acestea sunt două modalități interschimbabile de descriere.

La descrierea unui limbaj de programare prin BNF, sunt utilizate următoarele denumiri:

1) <..>- cuvântul fiind definit;

2) R este o regulă din sintaxa pentru formarea unui cuvânt;

3) :: = - regula BNF.

Fiecare R este format din cuvinte terminale sau jetoane limba și, eventual, următoarele caractere:

· [..] - acest element este prezent în BNF;

· (..) - această intrare poate fi utilizată în BNF;

· (..) * - această intrare poate fi utilizată în BNF de un număr finit de ori.

Exemplul 1. Iată un exemplu de regulă BNF care definește un număr întreg.

Această regulă este citită după cum urmează: „Un număr întreg este un caracter 0 sau o succesiune de caractere care poate începe cu un caracter„ - ”, urmat de o cifră diferită de zero, urmată de orice succesiune finală de cifre.”

Diagramele de sintaxă reprezintă o formă specială, similară cu BNF, de a descrie limbajele formale. Există trei tipuri de elemente utilizate în diagramele de sintaxă: oval / cerc, dreptunghi, săgeți. Cuvintele terminale sau lexemele sunt plasate în ovale, iar cuvintele definite în dreptunghiuri. Reprezentarea grafică a limbajului prin diagrame de sintaxă face descrierea limbii clară.

Exemplul 2... Descrierea unui întreg folosind o diagramă de sintaxă.

Conform Programului model, este necesar ca elevii să reprezinte clasificarea modernă a limbajelor de programare, precum și să fie ghidați în domeniile de aplicare a fiecăruia dintre ele. Cea mai ușoară modalitate de a prezenta acest subiect este să efectuați după ce a avut loc deja o cunoaștere detaliată a unuia dintre limbajele de programare.

Trebuie spus de ce apar limbaje noi și se îmbunătățesc cele vechi: în primul rând, acest lucru se întâmplă atunci când se caută un mijloc de scriere rapidă a programelor complexe care, în plus, nu conțineau erori. Există un exemplu când crearea limbajului ADA (numită după prima femeie programatoare Ada Lovelace, fiica lui Byron) a fost inițiată în 1974 la Departamentul Apărării al SUA. Armata SUA și-a dat seama că pierde mult timp, efort și bani dezvoltând și întreținând sisteme informatice încorporate (cum ar fi sistemele de ghidare a rachetelor), iar erorile subtile de limbaj de programare duc la adevărate dezastre.

Limbajele declarative au fost foarte populare la sfârșitul anilor '80 - începutul anilor '90 ai secolului trecut, au fost denumite limbaje de programare a inteligenței artificiale pentru computerele din a cincea generație. Cu toate acestea, speranțele pentru distribuția lor largă nu s-au împlinit încă. Poate pentru că sistemele existente de programare funcțională și logică nu permit crearea de programe de lucru rapid pentru sarcini semnificative. Este posibil ca timpul lor să nu fi venit pur și simplu încă.

Alegând o strategie pentru predarea subiectului „Algoritmare și programare”, este necesar să se țină cont de faptul că sarcina unui curs de educație generală este în mare măsură dezvoltarea unui anumit stil de gândire, formarea celor mai generale abilități, abilități și idei, mai degrabă decât dezvoltarea anumitor limbaje specifice și mijloace tehnice de programare. În același timp, un astfel de curs ar trebui să servească drept bază pentru continuarea studiului profesional al programării în liceu sau în liceu (în cadrul formării profesionale).

În prezent, există două dintre cele mai comune abordări ale programării didactice:

1) predarea pe baza unui limbaj special dezvoltat al limbajului educațional, axat pe predarea abilităților de programare de bază;

2) studiul unuia sau mai multor limbaje de programare utilizate pe scară largă în practică în rezolvarea problemelor științifice și economice (astfel de limbaje pot fi numite standard).

Prima abordare este adesea utilizată atunci când predăm elementele de bază ale programării în liceul inferior folosind limbaje speciale, de exemplu, Rapier, E-language, LOGO. Aceste limbi țin cont de capacitățile elevilor de școală elementară. Această abordare este bună pentru studiul aprofundat al informaticii în clasele 5-6.

În ceea ce privește a doua abordare, putem spune că majoritatea implementărilor moderne ale limbajelor standard sunt încărcate cu o mulțime de detalii tehnice și sunt dificil de învățat. Cu toate acestea, cel mai acceptabil pentru o școală de educație generală, unde un curs de informatică este predat în clasele 8-11, este predarea bazelor teoretice ale programării bazate pe un limbaj standard. În acest caz, nu este necesar să intrăm în adâncurile limbajului. Studenții care sunt interesați de asta o pot face singuri. Cea mai mare atenție ar trebui acordată tranziției de la structurile algoritmice la implementarea lor software într-un limbaj de programare.

Este demn de remarcat aici faptul că Pascal a fost creat inițial ca limbă de predare, dar de-a lungul timpului s-a răspândit ca limbaj standard și s-a dezvoltat ca limbaj orientat obiect cu tehnologia de programare vizuală Delphi. Puteți lua Pascal sau Basic ca bază a cursului în clasele 8-9, iar ca curs extins (opțional) în clasele 10-11 puteți familiariza elevii cu extensiile lor orientate obiect (Delphi și Visual Basic). Fiecare limbă are susținătorii și oponenții săi, iar alegerea finală rămâne la latitudinea profesorului.

Există două abordări principale pentru învățarea unui limbaj de programare: formalși „programarea prin exemplu”. Primul se bazează pe o descriere formală (strictă) a constructelor limbajului de programare ( sintaxă limbajul și semantică) într-un fel sau altul (folosind diagrame sintactice, meta-limbaj sau descriere verbală formală, în special semantică) și folosind doar elemente studiate și, prin urmare, de înțeles, ale limbajului în rezolvarea problemelor. În cea de-a doua abordare, elevilor li se oferă mai întâi programe gata pregătite, li se spune exact ce fac și sunt invitați să scrie un program similar sau să-l schimbe pe cel existent fără a explica pe deplin un număr de „tehnice” sau nesemnificative, din punctul de vedere al profesorului. de vedere, detalii pentru rezolvarea problemei. În același timp, se spune că veți afla mai târziu semnificația exactă a structurilor corespunzătoare, dar deocamdată faceți același lucru. A doua abordare permite așa-numitul „start rapid”, dar creează pericolul de a obține utilizatori semi-alfabetizați ai mediului de programare, adică oameni care folosesc construcții destul de complexe în practica lor, dar nu pot explica clar de ce în acest caz sau altul este necesar să le folosim și cum funcționează. Ca urmare, mai devreme sau mai târziu astfel de „programatori” se confruntă cu erori pe care pur și simplu nu le pot remedia - le lipsește cunoștințele.

Una dintre sarcinile informaticii școlare este de a preda cu precizie abordarea formală, în special atunci când se aplică definiții diferite. Și studiul formal al limbajului de programare contribuie foarte mult la acest lucru. Dar chiar și fără exemple bune (eșantioane) atunci când predarea programării pentru școlari este indispensabilă. Și cu cât studenții sunt mai tineri, cu atât mai multe exemple trebuie date când se descrie limba (uneori chiar înlocuind definiția strictă cu ele). Un alt lucru este că este necesar să se asigure că, ca urmare a discuției exemplului, toate detaliile sale sunt clare pentru școlari (este imperativ să se explice cum și de ce funcționează, inclusiv bazându-se pe materialul formal deja studiat). În acest caz, elevii puternici vor avea ocazia să înțeleagă totul temeinic și să poată folosi cunoștințele acumulate în viitor, în timp ce restul vor dobândi abilități specifice și vor lăsa pentru ei înșiși posibilitatea de a reveni, dacă este necesar, la definițiile formale ulterioare.

Despre limbajul feroviar „Trenul va continua pe platforma Krasnye Zori fără oprire”. Rețineți că șoferul a folosit substantivul „stop” și nu verbul „stop”. Oprirea este un concept foarte important pentru lucrătorii feroviari. Un tren poate „opri”, dar nu „avea o oprire”. Turchin [Tur-chin 2000], oferind un exemplu similar, indică formalizarea limbajului folosit în scopuri profesionale restrânse.

Un limbaj formalizat poate fi definit astfel [Turchin 2000]. Luați în considerare un model lingvistic al realității cu două etaje (Fig. 4.4). Situația si este codificată de obiectul de limbaj Li. Obiectul L1 este un nume pentru si. Ceva mai târziu, situația S1 este înlocuită de situația S2. Desfășurând o anumită activitate lingvistică, transformăm L1 într-un alt obiect - L2. Dacă modelul nostru este corect, atunci L2 este numele S2. Ca urmare, fără a cunoaște situația reală S2, ne putem face o idee decodând obiectul limbajului L2. Efectuarea transformării L1-> L2 determină dacă limba va fi formalizată.

    Pentru un limbaj formalizat, transformarea L1-> L2 este determinată exclusiv de obiectele lingvistice Li care participă la acesta și nu depind de reprezentările lingvistice care le corespund în semantica limbii.

    Pentru un limbaj neformalizat, rezultatul transformării obiectului lingvistic Li depinde nu numai de forma reprezentării Li în sine, ci și de reprezentarea si, pe care o generează în capul unei persoane, de asociațiile în care intră.

O persoană este capabilă să perceapă cele mai neformalizate limbi. Și computerul nu înțelege sau, mai bine zis, nu poate executa un program într-un limbaj informal. De aceea, limbajele de programare algoritmice formale ocupă întotdeauna un loc important în studiul programării,

Despre formalizarea informalului Formalizarea neformalizatului este un proces neformalizat. Deși logicienii și armata încearcă să lupte cu acest lucru.

Despre formula iubirii Formula iubirii sfidează formalizarea. În cel mai bun caz, poate fi reprezentat doar ca un model foarte brut

Limbaje de modelare

Un limbaj de modelare este un set de reguli care guvernează construcția modelelor (reprezentări simplificate ale realității), incluzând vizualizarea acestora și definiția structurii și comportamentului. Limbajul de modelare include:

    elemente de model - concepte de modelare fundamentale și semantica acestora;

    notație - o reprezentare vizuală a elementelor de modelare;

    ghid de utilizare - reguli pentru utilizarea elementelor în cadrul modelelor de domenii de construcție.

Limbaje de programare și cadre

    Potrivit creatorului primului mediu integrat FRAMEWORK, un mediu integrat este un astfel de program de aplicație încât un utilizator, după ce l-a lansat la începutul zilei de lucru, găsește toate resursele necesare pentru a lucra în el și, prin urmare, nu părăsește sistemul integrat. mediu până la sfârșitul zilei de lucru. Desigur, această definiție nu este foarte corectă și idealizează oarecum situația, dar sensul său general este suficient de clar. Principala caracteristică a mediilor integrate este un grad ridicat de interactivitate. Se realizează prin integrarea diverselor resurse software într-un singur întreg, de unde și numele. Deci, mediul integrat al unui compilator al unui limbaj de programare (un program care creează un program executabil din textul unui limbaj de programare dat) conține de obicei un editor de text și un compilator în sine cu un sistem pentru diagnosticarea erorilor de compilare. În plus, conține, de obicei, și un depanator-interpret al limbajului dat, care execută programul linie cu linie și are o serie de alte caracteristici speciale. Una dintre zonele în dezvoltare activă, designul vizual, se bazează complet pe utilizarea capacităților unui mediu integrat. Utilizatorul selectează interactiv obiectele limbajului de programare necesare pentru programul său și stabilește conexiuni între ele. Popularitatea limbajelor precum Visual BASIC (Microsoft), precum și a obiectelor PASCAL (medii Delphi și Kylix, Borland) nu este întâmplătoare. Chiar și un programator fără experiență care nu cunoaște alte limbaje de programare în afară de BASIC și nu a programat niciodată sub Windows poate crea o aplicație Windows utilizând Visual BASIC în două sau trei zile. Dar un programator de înaltă clasă care nu a programat anterior în Windows folosind C ++ trebuie adesea să petreacă săptămâni, sau chiar luni, pentru a crea același program. Este adevărat, Visual BASIC are o serie de limitări semnificative. Cu ajutorul mediilor de design vizual, puteți crea programe extrem de complexe, fără a introduce o linie de cod de la tastatură. Cu toate acestea, toate programele bazate pe limbaje tradiționale de programare procedurală au același defect. Pentru ei, codul executabil este un lucru, iar datele procesate de program sunt cu totul altele. Într-adevăr, codul programului este conținut într-un fișier cu extensia EXE, iar datele sunt fie în fișiere speciale de date (de regulă, în format text sau binar în reprezentarea internă a computerului), fie sunt introduse de la tastatură sau de pe un alt dispozitiv extern. Acum să punem întrebarea: ce se întâmplă dacă utilizatorul trebuie să ofere programului executabil informații care pot fi considerate o „adăugare” la textul programului? De exemplu, dorim ca un grafic funcțional să fie reprezentat pe ecran și, într-un astfel de program, oferim toate capacitățile de servicii necesare. Cu toate acestea, formula pentru funcție trebuie setată de utilizator însuși și nu se știe în prealabil care va fi. Este destul de evident că sarcinile de acest fel pot fi rezolvate numai cu ajutorul unui sistem de interpretare. Dar „trebuie să plătești pentru tot”. Compilatorul traduce textul programului în cod executabil care poate funcționa fără programul compilatorului. Pe de altă parte, programele create pe baza limbajelor de tip interpretativ pot fi executate numai sub controlul unui program de interpretare. În plus, acestea sunt mai lente decât cele compilate, deoarece interpretarea necesită timp suplimentar. Cu toate acestea, în multe cazuri, acest lucru este irelevant.

Data creării: 1963 Influențat: PROFT Tastare: fără tip Dialecte:

    Applesoft BASIC

    Comodor BASIC

    Microsoft BASIC

Implementări și versiuni:

  • Applesoft BASIC Interpret în Javascript

    Atari Microsoft BASIC I / II

  • Comodor BASIC

    Galaksija BASIC

    Microsoft Visual Basic

  • Visual Basic pentru aplicații

BASIC (prescurtare pentru Beginner's All-purpose Symbolic Instruction Code) este o familie de limbaje de programare la nivel înalt.

Basic a fost inventat în 1963 de profesorii John Kemeny și Thomas Kurtz de la Dartmouth College, iar sub îndrumarea lor a fost implementat de o echipă de studenți. În timp, pe măsură ce au început să apară alte dialecte, acest dialect „original” a devenit cunoscut sub numele de Dartmouth BASIC.

BASIC a fost conceput astfel încât elevii să poată scrie programe folosind terminale de partajare a timpului. A fost creat ca o soluție la problemele asociate cu complexitatea limbajelor mai vechi, destinate utilizatorilor mai „simpli”, nu atât de interesați de viteza programelor, ci pur și simplu de capacitatea de a utiliza un computer pentru a le rezolva problemele.

Limbajul a fost conceput folosind următoarele opt principii:

    să fie ușor de utilizat pentru începători;

    să fie un limbaj de programare de uz general;

    oferă posibilitatea de a extinde funcționalitatea disponibilă programatorilor cu experiență;

    să fie interactiv;

    furnizați mesaje de eroare clare;

    lucrați rapid la programe mici;

    nu necesită o înțelegere a funcționării hardware-ului;

    a fi intermediar între utilizator și sistemul de operare.

Limbajul s-a bazat parțial pe Fortran II și parțial pe Algol-60, cu adăugiri care îl fac convenabil pentru partajarea timpului, procesarea textului și aritmetica matricei. Inițial, BASIC a fost implementat pe GE-265 cu suport pentru mai multe terminale. Contrar credinței populare, la momentul înființării sale, era un limbaj compilat. Limbajul a câștigat popularitate universală de la apariția sa pe microcomputerul Altair 8800. Multe limbaje de programare erau prea greoaie pentru a se potrivi într-o memorie mică. Pentru mașinile cu suport lent, cum ar fi banda de hârtie, caseta și fără editor de text adecvat, un limbaj la fel de mic ca BASIC a fost o descoperire excelentă. În 1975, Microsoft (atunci erau doar doi - Bill Gates și Paul Allen, cu participarea lui Monte Davidov) au lansat Altair BASIC. Pentru sistemul de operare CP / M, a fost creat dialectul BASIC-80, care a determinat mult timp dezvoltarea limbii. În această perioadă, au fost create mai multe versiuni noi ale BASIC. Microsoft a vândut mai multe versiuni de BASIC pentru MS-DOS / PC-DOS, inclusiv BASICA, GWBASIC și Quick BASIC (QBASIC). Borland a lansat Turbo BASIC 1.0 în 1985 (succesorii săi au fost vânduți ulterior de o altă companie sub numele PowerBASIC). Diverse extensii ale BASIC au apărut pe computerele de acasă, de obicei, inclusiv instrumente pentru lucrul cu grafică, sunet, executarea comenzilor DOS, precum și instrumente de programare structurate. Mai multe alte limbi au folosit binecunoscuta sintaxă BASIC ca bază pe care a fost construit un sistem complet diferit (vezi de exemplu GRASS). Cu toate acestea, începând cu sfârșitul anilor 1980, noile computere au devenit mult mai sofisticate și au oferit capabilități (cum ar fi o interfață grafică pentru utilizator) care au făcut BASIC să fie mai puțin programabil. BASIC a început să piardă teren, în ciuda faptului că un număr mare de versiuni ale sale erau încă în uz și vândute. BASIC a câștigat a doua viață odată cu apariția Visual Basic de la Microsoft. A devenit una dintre cele mai utilizate limbi pe platforma Microsoft Windows. Ulterior, a fost creată o variantă numită WordBasic, care a fost utilizată în MS Word înainte de Word 97. Varianta Visual Basic for Applications (VBA) a fost încorporată în Excel 5.0 în 1993, apoi în Access 95 în 1995 și apoi în toate celelalte instrumente. inclus în suita Office - în 1997. Internet Explorer 3.0 și versiunile ulterioare și Microsoft Outlook au inclus un interpret VBScript. Pachetul complet OpenOffice.org include și un interpret BASIC.

Bună ziua, lume!: Exemplu pentru versiunile QBasic 1.1, QuickBasic 4.50

IMPRIMARE " Buna ziua , Lume !"

Factorial: Exemplu pentru versiunile QBasic 1.1, QuickBasic 4.50

Se folosește determinarea iterativă a factorialului. La calculul 13! se produce revărsare aritmetică și aici comportamentul diferitelor implementări este diferit: QBasic raportează o revărsare și QuickBasic scoate pur și simplu valori negative. În plus, comanda PRINT, în mod implicit, imprimă un spațiu înainte și după număr.

DIM f AS LONG f = 1 PRINT "0! ="; f PENTRU i = 1 până la 16:

f = f * i:

IMPRIMĂ i; "! ="; f

LIMBA FORMALIZATĂ- un sistem de semne artificiale conceput pentru a reprezenta o teorie. Un limbaj oficial diferă de limbile naturale (naționale) ale comunicării și gândirii umane, de limbile artificiale precum Esperanto, de limbile „tehnice” ale științei care combină mijloacele unei anumite părți a limbajului natural cu simbolurile științifice corespunzătoare (limbajul chimiei, limbajul matematicii obișnuite etc.), din limbaj algoritmic precum programarea generică etc. în primul rând, faptul că sarcina sa este de a servi ca mijloc de fixare (formalizare) a unui anumit conținut logic, ceea ce face posibilă introducerea relației de consecință logică și a conceptului de probabilitate (sau analogii acestora). Din punct de vedere istoric, primul limbaj formalizat a fost silogistica Aristotel, implementat folosind o bucată standardizată de limbaj natural (grecesc). Ideea generală a unui limbaj formalizat a fost formulată de Leibniz (caracteristica universalis), care prevedea extinderea sa la „calculul inferențelor” - calculus ratiocinator. În timpurile moderne, au fost dezvoltate diverse variante ale limbajelor formalizate pe baza analogiei dintre logică și algebră. Reperul aici a fost lucrarea Morgana , Boule și adepții lor, în special Schroeder și Poretsky ... Limbile formalizate moderne - în cele mai comune forme - revin la lucru Frege „Begriffsschrift” - „Scrierea în concepte” (1879), din care decurge linia principală de dezvoltare a limbajului logicii propoziționale și (cuprinzând-o) logica predicatelor (multiplaza), precum și aplicarea acestor limbaje logice înseamnă problemele fondării matematicii.

Structura caracteristică a unor astfel de limbi formalizate este atribuirea alfabetului semnelor inițiale, determinarea inductivă a formulei limbii (corect construite), așa-numita. stabilirea regulilor educației, stabilirea regulilor inferenței, așa-numitele. reguli de transformare care păstrează caracteristica logică distinctă a formulelor (adevăr, probabilitate etc.). Adăugarea regulilor de transformare transformă un limbaj formalizat într-un calcul logic. Există multe tipuri de limbaje formalizate: acestea sunt, în primul rând, limbaje de construcții deductiv-axiomatice, sisteme de inferență naturală („naturală”) și construcții secvențiale, tabele analitice, sisteme de „logică a disputei” și multe altele .

Limbile formalizate diferă prin forța lor logică, începând cu limbile „clasice” (în care legile aristotelice ale identității, contradicției și terțului exclus, precum și principiul ambiguității logice sunt în vigoare) și se încheie cu numeroasele limbaje ale logicii neclasice care permit slăbirea anumitor principii, introducerea ambiguității în evaluarea formulelor sau a modalității acestora. Au fost dezvoltate limbi în care mijloacele logice sunt minimizate într-un sens sau altul. Acestea sunt limbajele logicii minime și pozitive sau limbajul logicii propoziționale folosind o singură operație logică, de exemplu. Accidentul vascular cerebral al lui Schaeffer (vezi. Conectori logici ).

Limbajele formalizate sunt de obicei caracterizate în termeni de sintactică și semantică. Dar cea mai esențială este caracteristica logică a formulelor sale, care este păstrată de regulile inferenței (adevăr, probabilitate, confirmabilitate, probabilitate etc.). Pentru orice limbaj formalizat, fundamentale sunt problemele de completitudine a logicii exprimate în acesta, decizibilitatea și consistența acestuia; de ex., limbajul clasicului Logica propozițională este complet, rezolvabil și consecvent, dar clasic logica predicatului (cu mai multe locuri), deși complet, este insolubil; limbajul calculului predicat extins - cu cuantificatori prin predicate și aplicarea nelimitată a principiului abstractizării - este contradictoriu (așa a fost sistemul logico-aritmetic al lui Frege, în care Russell a descoperit antinomia numită după el).

Un limbaj formalizat poate fi „formă pură”, adică nu purtați informații extra-logice; dacă îl poartă, atunci devine un limbaj formalizat aplicat, a cărui specificitate este prezența unor predicate și termeni constanți (descrieri) - de exemplu. aritmetică, - reflectând proprietățile zonei de aplicare. Pentru a formaliza teoriile unui nivel ridicat de abstractizare, un limbaj formalizat poate fi modificat în diferite moduri, extins sau „construit pe”; exemplu: formalizarea analizei matematice clasice ca aritmetică de ordinul doi (adică cu cuantificatori peste variabile predicate). În unele cazuri, un limbaj formalizat conține structuri logice de multe - chiar infinit de multe - ordine (cum ar fi, de exemplu, „turnul limbajelor” de AA Markov, care servește la formalizarea matematicii constructive sau interpretarea modalităților în forma a unei ierarhii a „lumilor posibile”). Baza semantică a unui limbaj formalizat al logicii poate fi setată-teoretică, algebrică, probabilistică, teoretică a jocului etc. Poate exista, de asemenea, o astfel de „slăbire” a acesteia, care sunt legate doar de semantica probabilistică - așa este, de exemplu, , apare limbajul formalizat al „logicii fuzzy” (în sensul Zade). Apoi, limba dobândește o pragmatică specifică, ținând cont de factorul vorbitorului nativ (care oferă o evaluare a „funcției de apartenență” a subiectului la volumul conceptului dat). Aici se manifestă tendința acum crescândă de a lua în considerare „factorul uman” în limbile formalizate, într-o formă sau alta, care se manifestă clar în unele limbaje formalizate ale logicii mecanicii cuantice. Dezvoltarea limbajelor formalizate merge într-o direcție diferită, a cărei semantică presupune respingerea ipotezelor existențiale sau a anumitor condiții ontologice - despre admisibilitatea regulilor cu un număr infinit de premise, „multi-gradul” domeniilor , chiar și contradictorii etc.

O caracteristică indispensabilă a unui limbaj formalizat este interpretarea „posibilă” a regulilor inferenței; de exemplu, la un anumit pas suntem liberi să folosim sau să nu folosim, să zicem, regula modus ponens. Limbajele algoritmice care sunt „prescriptive” sunt lipsite de această caracteristică. Dar odată cu dezvoltarea logicii computerului și dezvoltarea programelor de tip „descriptiv”, această diferență începe să se netezească. Dezvoltarea limbajelor formalizate axate pe rezolvarea problemelor euristice operează în aceeași direcție.

Literatură:

1. Biserica A. Introducere în logica matematică, vol. 1. M., 1960;

2. Pene S.K. Introducere în metamatematică. M., 1957;

3. Curry H. Fundamentele logicii matematice. M., 1969;

4. Freudenthal H. Limbajul logicii. M., 1969;

5. Smirnova E.D. Limbaje formalizate și probleme de semantică logică. M., 1982.

LIMBI FORMALIZATE (FORMALE)

A INTELEGE

Limbajul formalizat (formal) este un limbaj artificial caracterizat de reguli precise pentru construirea expresiilor și înțelegerea acestora.

Un limbaj formal este construit în conformitate cu reguli clare, oferind o afișare consecventă, precisă și compactă a proprietăților și relațiilor domeniului studiat (obiecte modelate).

Spre deosebire de limbajele naturale, limbajele formale sunt caracterizate de reguli clar formulate pentru interpretarea semantică și transformarea sintactică a semnelor utilizate, precum și faptul că semnificația și semnificația semnelor nu se schimbă în funcție de circumstanțe pragmatice (pentru exemplu, în context).

Limbajele formale sunt adesea construite în jurul limbii matematicii.

De-a lungul istoriei dezvoltării matematicii, a folosit pe scară largă denumirile simbolice pentru diverse obiecte și concepte. Cu toate acestea, alături de desemnările simbolice, matematicienii au folosit în mod liber limbajul natural. Dar la un moment dat în dezvoltarea științei (secolul al XVII-lea), a apărut necesitatea unei analize logice riguroase a judecăților matematice, precum și a clarificării conceptului de „dovadă”, care este important pentru matematică. S-a dovedit că este imposibil să rezolvi aceste probleme fără o formalizare strictă a teoriilor matematice. Era nevoie să prezentăm aceste teorii într-un limbaj formal. Secolul al XX-lea poate fi considerat secolul dezvoltării rapide a diferitelor limbaje formale.

Din punct de vedere al informaticii, printre limbajele formale, cel mai semnificativ rol îl joacă formalul limbajul logicii (limbajul algebrei logicii) și limbaje de programare ... De asemenea, au o importanță practică.

Toate limbajele formale sunt construcții create de cineva. Cele mai multe dintre ele sunt construite conform următoarei scheme.

În primul rând, este ales alfabet , sau un set de simboluri sursă, din care vor fi construite toate expresiile limbajului. Apoi descrie sintaxă limbajul, adică regulile pentru construirea unor expresii semnificative.

Deoarece conceptul de „simbol” are o semnificație semantică multivalentă, termenul „literă” este adesea folosit pentru caracterele alfabetului. Dar trebuie amintit că literele din alfabetul unui limbaj formal pot fi litere ale alfabetelor limbilor naturale și paranteze și caractere speciale etc.

Din litere, conform anumitor reguli, puteți face cuvinte și expresii .

Cea mai simplă regulă este că orice succesiune finită de litere poate fi considerată un cuvânt. De fapt cuvântul este cel mai simplu model de informații(și este, desigur, un obiect constructiv).

EXEMPLUL 1

Unul dintre cele mai importante din punct de vedere al informaticii este alfabetul, format din două litere „0”, „1”. Orice secvență finită de zerouri și unii este un cuvânt din acest alfabet.

În limbajele logico-matematice, se disting expresiile termeni și formule .

Thermes- acesta este un analog al numelor obiectelor, scopul lor principal este de a denota un obiect.

Termenii includ în primul rând variabile de subiect și constante - expresii utilizate pentru a desemna obiecte specifice.

Termeni mai complecși sunt construiți din variabile subiect și constante în conformitate cu anumite reguli. De obicei, funcțiile permise în limbă sunt utilizate pentru aceasta.

EXEMPLUL 2

În logică, astfel de funcții sunt inversiunea (), conjuncția (), disjuncția (), implicația () etc.

Exemple de termeni în algebra booleană:

DAR; АВ А;  (AC).

În limbajele de programare, operațiile aritmetice sunt implicate în formarea termenilor, operațiile relației (,

Exemple de termeni în limbajul de programare Pascal:

DAR; prog_1; ((A1 + 25) 3 * B) și (B0)); 2 + sqrt (z * sin (b)).

Formulă

EXEMPLUL 3

Exemple de formule logice:

 (АС)  АС = 1; x ( (x)  (x))

Formulele într-un limbaj de programare pot fi numite declarații de program.

Exemple de „formule” ale limbajului de programare Pascal:

A: = 2 + sqrt (Z * sin (B)); dacă F3 atunci scrieți (R) altfel R: = sqr (F);

Expresiile semnificative se obțin într-un limbaj formal numai dacă sunt respectate anumite limbi. reguli educație, transformare și „înțelegere” a termenilor și formulelor. Aceste reguli includ:

    reguli de construire termeni și formule;

    reguli de interpretare termeni și formule (aspect semantic al limbajului);

    reguli de retragere

Pentru fiecare limbaj formal, setul acestor reguli trebuie să fie strict definit și modificarea oricăreia dintre ele duce cel mai adesea la apariția unui nou soi (dialect) al acestei limbi.

EXEMPLUL 4

Operator Pascal

dacă F3 atunci scrieți (R) altfel R: = sqr (F);

interpretat conform următoarelor reguli:

    variabila F poate fi doar de tip întreg sau real, iar variabila R poate fi doar de tip real. Dacă acest lucru nu este cazul, atunci declarația este considerată ca fiind sintactică nevalidă și nu va fi executată (va fi afișat un mesaj de eroare de sintaxă);

    variabile (termenii cei mai simpli) F și R trebuie să fie definiți anterior, adică celulele cu aceste nume trebuie să conțină unele valori de tipul adecvat (pentru unele versiuni ale lui Pascal această regulă nu este inclusă în sintaxa limbii. În acest caz, acea secvență de zerouri și unii este selectată, care este conținută în celulele cu adresele date și este interpretată ca un număr zecimal);

    dacă valoarea expresiei (termenul complex „F3”) care urmează cuvântului cheie (rezervat) dacă este „adevărat”, atunci se execută declarația localizată după cuvântul cheie (valoarea variabilei F este afișată pe ecran); dacă valoarea sa este „falsă” (falsă), atunci se execută operatorul localizat după alt cuvânt cheie (se calculează pătratul valorii variabilei F și rezultatul este plasat în celula numită R).

Prezența în sintaxa limbajului formal al regulilor de derivare a termenilor și formulelor permite efectuarea transformări izomorfe modele bazate pe acest limbaj. Astfel, limbajele formale nu numai că reflectă (reprezintă) unul sau alt set de cunoștințe deja existente, ci sunt mijloace de formalizare din acestea cunoştinţe, permițând dobândirea de noi cunoștințe prin transformări formale... Mai mult, deoarece transformările pot avea loc numai în conformitate cu reguli formale stricte, construcția modelelor este izomorfă pentru una dată, dar oferind noi cunoștințe, poate fi bine automatizat... Această caracteristică este utilizată pe scară largă în bazele de cunoștințe informatice, în sistemele expert, în sistemele de sprijinire a deciziilor.

Limbajele formale sunt utilizate pe scară largă în știință și tehnologie. În procesul de cercetare științifică și activitate practică, limbajele formale sunt de obicei utilizate în strânsă legătură cu limbajul natural, deoarece acesta din urmă are capacități expresive mult mai mari. În același timp, un limbaj formal este un mijloc de reprezentare mai precisă a cunoștințelor decât un limbaj natural și, prin urmare, un mijloc de schimb mai precis și obiectiv de informații între oameni.

ȘTIE

Limbajul formalizat (formal) este un limbaj artificial caracterizat de reguli precise pentru construirea expresiilor și interpretarea (înțelegerea) acestora.

Când construim un limbaj formal, se alege alfabet , și este descris sintaxă limba.

Alfabet- un set de simboluri sursă din care vor fi construite toate expresiile limbajului.

Expresii limbajul formal sunt termeni și formule.

Scop principal termen - a desemna un obiect.

Cei mai simpli termeni sunt variabile și constante ale subiectului - expresii utilizate pentru a desemna obiecte specifice.

Termenii complecși sunt construiți conform anumitor reguli prin aplicarea funcțiilor permise în limbaj termenilor simpli.

Formulă sunt formate din termeni la care se aplică operatorii permiși în limbă.

Sintaxă limbajul - un set de reguli pentru construirea expresiilor semnificative - include:

    reguli de construire termeni și formule;

    reguli de interpretare termeni și formule;

    reguli de retragere unele formule și termeni din alte formule și termeni.

Limbi formale precum limbajul logicii și limbaje de programare .

Limbajele formale sunt utilizate pe scară largă în știință și tehnologie. Sunt un mijloc de schimb mai precis și obiectiv de informații între oameni decât limbajul natural.

Limbajele formale nu numai că reflectă (reprezintă) unul sau alt set de cunoștințe deja existente, ci sunt un mijloc de formalizare a acestor cunoștințe, permițând prin transformări formale să obțină noi cunoștințe. Această caracteristică este utilizată pe scară largă în bazele de cunoștințe informatice, în sistemele expert, în sistemele de sprijinire a deciziilor.

A FI CAPABIL SĂ

EXERCITIUL 1

Enumerați din ce litere constă alfabetul unui limbaj de programare pe care îl cunoașteți și care sunt regulile pentru formarea termenilor simpli în acest limbaj.

Dacă acest limbaj de programare are cuvinte rezervate? Dacă da, vă rugăm să furnizați exemple de cuvinte rezervate și non-rezervate.

Ce pot fi considerați termeni și formule în limbaje de programare?

RĂSPUNS. Alfabetul unui limbaj de programare include toate caracterele care pot fi folosite la scrierea programelor.

Termenii limbajului de programare sunt identificatori, precum și expresii construite din identificatori, constante, semne ale operațiilor aritmetice și logice, funcții matematice și alte (definite în limbaj), paranteze.

Formulele unui limbaj de programare sunt operatorii permiși în acesta: intrare, ieșire, atribuire, condițional, buclă etc.

CESIUNEA 2

Dacă ați studiat elementele de bază ale logicii formale, atunci:

    Dați exemple când transformarea formală a formulelor logice vă permite să obțineți noi cunoștințe despre obiectele studiate;

    interpretează formula: x ( (x)   (x)) sau  (A  A) = 1

RĂSPUNS. 2) este legea consistenței, a cărei esență este: nicio afirmație nu poate fi adevărată și falsă în același timp.

CESIUNEA 3

Care este alfabetul zecimal?

Care este regula de bază pentru formarea (înregistrarea) numerelor în acest sistem numeric pozițional?

RĂSPUNS. Alfabet: cifre zecimale, virgulă (sau virgulă) și semnele plus și minus. Regula: greutatea unei cifre într-un număr depinde de poziția sa în înregistrarea numerelor.

CESIUNEA 4

Cum poate fi interpretat cuvântul alfabetului binar „0100 1001 0100 0110” într-un sistem de programare pe care îl cunoașteți (spațiile sunt inserate pentru lizibilitate)?

RĂSPUNS. În Pascal, acești doi octeți pot fi interpretați ca un șir de caractere „IF”, ca doi octeți - 73 și 70, ca un întreg - 20758 (18758 ???).

CESIUNEA 5

Interfața grafică Windows conține elemente precum pictograme sau pictograme. Putem presupune că acestea sunt incluse în alfabetul limbii interfeței utilizator a acestui sistem? Justificați răspunsul.

LARGEȚI-VĂ CIRCUITUL

În limbile formale, ca în niciun altul, rolul unui semn, înțeles în sensul larg al cuvântului, este grozav. Am luat în considerare unele aspecte ale utilizării semnelor mai devreme, dar este logic să vorbim despre acest lucru mai detaliat.

Motivul apariției semnelor este destul de evident: majoritatea obiectelor de cunoaștere și activitate nu sunt accesibile percepției directe în procesul de cunoaștere și prezentare în procesul de comunicare.

Semn(gr.  - semn, transcriere latină - semeion) este un obiect material care acționează ca reprezentant al unui alt obiect, proprietate sau relație și este utilizat pentru a achiziționa, stoca, procesa și transmite mesaje (informații, cunoștințe).

NOTA 1 În loc de cuvântul „semn” într-un sens similar, se utilizează alte concepte: „nume”, „termen”, „desemnare”.

Conform definiției unuia dintre fondatorii teoriei semnelor (semiotică) C.P. Pearce, semn este un element x care înlocuiește un element y (denotatum) pentru subiect în conformitate cu un atribut.

Respectiv, denotare- asta înseamnă acest semn într-o anumită situație.

Denotat a unei unități abstracte lingvistice (din lat. denoto - desemnez) - un set de obiecte care pot fi denumite prin acest semn.

NOTĂ 2. În loc de cuvântul „denotatum” în logică, se folosesc alte nume (identice, sinonime): cel mai adesea „semnificație”, „desemnat”.

La rândul său, fiecare semn definește unele proprietăți ale obiectului desemnat de acesta. Informațiile pe care le poartă semnul despre desemnat sunt de obicei numite concept semn (din latină conceptus - concept).

NOTA 3 Termenul „concept” are sinonime: „sens”, „semnificație a unui semn”.

DE EXEMPLU, în cuvântul „animal” găsim sensul antic al cuvântului „burtă” - viață. Animalele se disting nu prin prezența unei burtă, ci prin faptul că sunt în viață, au o viață de burtă. Astfel, conceptul semnului „animal” este conceptul unei ființe vii, detonarea este orice ființă vie specifică care se înțelege într-o situație simbolică dată.

Potrivit lui Peirce, toate semnele sunt împărțite în index , simbolic și simbolic prin natura relației dintre semnificant și semnificat.

Raportul indiceluiîntre semnificant și semnificat în semn se bazează pe similitudinea lor reală, existentă în realitate. Această clasă include, de exemplu, cuvinte onomatopeice sau formule structurale ale compușilor chimici. Semnele index sunt asociate cu o relație cauzală desemnată (de exemplu, prezența acoperișurilor umede este un semn că a plouat).

Atitudine iconicăîntre semnificant și semnificat este, potrivit lui Charles Pearce, „o simplă generalitate în unele proprietăți”. Semne-copii (semne iconice) - reproduceri, reproduceri similare cu cele desemnate (de exemplu, fotografii, amprente digitale).

ÎN semn simbolic semnificantul și semnificatul sunt corelate „fără a ține cont de vreo conexiune reală” (de exemplu, o anumită combinație de sunete, litere, figuri, culori, mișcări etc., este pusă în corespondență cu un obiect.

Acest tip de semne este important pentru construirea limbajelor formale (a se vedea paragraful primului capitol despre teza principală a formalizării).

NOTĂ 4 Semnele simbolice sunt uneori denumite simboluri ... Conform gândului remarcabilului filosof rus PA Florensky, un simbol este „ființa care este mai mare decât ea însăși. Simbol- este ceva care este ceva care nu este el însuși, mai mare decât el, și totuși în mod esențial declarat prin el ”. De exemplu, creatura mitică grifon, care combină un leu și un vultur, este unul dintre simbolurile lui Iisus Hristos.

Se întâmplă adesea ca un semn care a apărut mai întâi ca semn iconic să devină ulterior un semn simbolic.

DE EXEMPLU, litera  din alfabetul fenician a fost numită „Aleph” - taur (seamănă cu capul unui taur). Apoi a fost un semn iconic. Cu toate acestea, în greacă, această scrisoare nu este asociată cu taurul și devine un semn-simbol.

Pe măsură ce simbolismul matematic se dezvoltă, semnele iconice sunt, de asemenea, înlocuite cu simboluri. De exemplu, cifra romană V seamănă cu o mână deschisă (cinci degete), în timp ce cifra modernă 5 este un simbol.

Semnele desemnează respectiv planeta Venus și Marte în astronomie și în biologie - sexul feminin și masculin. Aceste semne sunt de origine iconică. Prima dintre ele este o imagine stilizată a unei oglinzi străvechi, a doua este un scut cu suliță.

Obiectele din viața reală și seturile de astfel de obiecte sunt departe de a fi întotdeauna denotate. Multe exemple de denotații care nu sunt obiecte ale realității sunt conținute în faimosul basm al lui L. Carroll „Alice în Țara Minunilor”. De asemenea, formulează figurat principiul apariției unor astfel de denotații:

„A trăit pentru a trăi (iepure de martie - nota autorului), dar pentru a fi, nu a fost.” În această privință, proverbul rus „a trăit și a fost” nu pare deloc o tautologie.

Structura semnului este descrisă de așa-numitul „triunghi al lui Frege” (numit după un logician german remarcabil care a făcut multe pentru dezvoltarea teoriei limbajelor formale). În altă terminologie, se numește „triunghi semantic” sau triunghi Ogden-Richards. Stabilește o legătură între semn, denotarea semnului și conceptul de semn.

Orez. 4.3.1. Triunghiul lui Frege

Cu ajutorul acestui triunghi, se pot clarifica o serie de efecte lingvistice bine cunoscute (situații de semn).

1) Sinonimie- o situație constând în coincidență totală sau parțială a semnificațiilor diferitelor semne:

Orez. 4.3.2. Schema de sinonimie

2) semnele pot avea aceeași denotație, dar au semnificații diferite (identitate denotativă). De exemplu, semnele „păcat 30 °” și „1/2” au aceeași denotație, adică denumesc același număr real, dar semnificația acestor semne este diferită:

Orez. 4.3.3. Schema de identitate denotativă

3) Polisemie(ambiguitate) - un semn are mai multe semnificații:

Orez. 4.3.4. Schema polisemiei

FAPT INTERESANT

Referință istorică

Primii pași către crearea unui limbaj formal al logicii s-au făcut în perioada antichității. Aristotel (384-322 î.Hr.) a introdus variabile literale pentru subiecți și predicate ale afirmațiilor categorice simple, iar șeful școlii stoice Hrisip (c. 281-208 î.Hr.) și elevii săi - variabile pentru afirmații în general ... În secolul al XVI-lea, R. Descartes (1596-1659) a creat baza limbajului formal modern al matematicii - algebra alfabetică, iar G.V. Leibniz (1646-1716) a transferat simbolica carteziană în logică. Limbajul principal al logicii la acea vreme era limbajul natural. Realizând deficiențele sintactice și semantice semnificative ale unui limbaj natural (greutate, ambiguitate și imprecizie a expresiilor, reguli sintactice neclare etc.), Leibniz a formulat teza că, fără a crea un limbaj artificial special - „calcul universal” - dezvoltarea ulterioară a logicii este imposibil. Dar numai la sfârșitul secolului al XIX-lea, ideea lui Leibniz a fost dezvoltată în studiile lui J. Boulle (1815-1864), S. Jevons (1835-1882), E. Schroeder (1841-1902) și alții - algebra lui a apărut logica.

Dezvoltarea ulterioară a limbajului logicii este asociată cu numele J. Peano (1858-1932) și G. Frege (1848-1925). Peano a introdus o serie de simboluri adoptate în matematica modernă, în special „”, „”, „”, pentru a desemna, respectiv, relațiile de apartenență, uniune și intersecție de mulțimi. Frege a construit un calcul propozițional și predicat axiomatic, care conținea toate elementele de bază ale calculelor logice moderne.

Pe baza rezultatelor obținute de Frege și folosind notația Peano modificată, B. Russell (1872-1970) și AN Whitehead (1861-1947) în lucrarea lor comună „Principiile matematicii” (1913) au formulat principalele dispoziții ale limbajului formal de logică.

În prezent, limbajul logicii găsește o aplicație importantă în informatică, în dezvoltarea limbajelor de programare, a software-ului și a diferitelor sisteme tehnice.

Apariția limbajelor de programare se încadrează la începutul anilor 50 ai secolului XX. Inițial, programele erau create în limbajul instrucțiunilor mașinii și erau secvențe de coduri binare care erau introduse de pe consolă într-un computer pentru executare.

Primul pas în dezvoltarea limbajelor de programare a fost introducerea simbolurilor mnemonice (memorie) pentru instrucțiuni și date și crearea unui program mașină care să traducă aceste simboluri mnemonice în coduri mașină. Programul takai și, împreună cu acesta, sistemul de notare, au primit numele asamblator .

Fiecare tip de mașină avea propriul său asamblator, iar transferul de programe de la mașină la mașină era o procedură foarte laborioasă. Prin urmare, a apărut ideea creării unui limbaj independent de mașini. Astfel de limbi au început să apară la mijlocul anilor '50, iar un program care traduce propozițiile acestei limbi în limbajul mașinii a început să fie numit traducător .

Există câteva mii de limbaje de programare și dialectele (varietățile) lor. Ele pot fi clasificate în diferite moduri. Unii autori împart întreaga varietate de limbaje de programare în procedurale și declarative. În limbajele procedurale, transformarea datelor este specificată prin descrierea unei secvențe de acțiuni asupra lor. În limbile declarative, transformarea datelor este specificată în primul rând prin descrierea relației dintre datele în sine. Conform unei alte clasificări, limbajele de programare pot fi împărțite în procedurale, funcționale, logice, orientate spre obiect. Cu toate acestea, orice clasificare este oarecum arbitrară, deoarece, de regulă, majoritatea limbajelor de programare includ capacitățile limbajelor de diferite tipuri.

Un loc special printre limbajele de programare îl ocupă limbajele care asigură funcționarea sistemelor de gestionare a bazelor de date (SGBD). Deseori se disting două subsisteme în ele: limbajul de descriere a datelor și limbajul de manipulare a datelor (numit și limbajul de interogare).

Secolul 21 este un moment în care proprietatea informațiilor este cel mai important avantaj competitiv din orice domeniu. Cu toate acestea, nu va fi de nici un folos dacă nu este exprimat într-o limbă care este ușor de înțeles de către cei cărora li se adresează sau dacă nu există un traducător care să poată transmite semnificația destinatarului.

În acest moment, aproximativ 2000 de oameni trăiesc pe pământ. Trăsătura lor distinctivă, în primul rând, este limba.

Alături de limbile vorbite (naturale), omenirea a creat multe limbi artificiale. Fiecare dintre ele este conceput pentru a rezolva probleme specifice.

Aceste sisteme de semne includ limbaje formale, ale căror exemple sunt prezentate mai jos.

Definiții

În primul rând, să afirmăm ce este o limbă. Sub acest cuvânt este obișnuit să înțelegem sistemul de semne, care este utilizat pentru a stabili comunicarea între oameni și cunoștințe.

Baza majorității limbajelor artificiale și naturale este alfabetul.

Este un set de simboluri utilizate pentru a forma cuvinte și fraze.

Limbajul se caracterizează prin:

  • un set de caractere utilizate;
  • reguli pentru compunerea „cuvintelor”, „frazelor” și „textelor” din acestea;
  • un set de reguli (sintactice, pragmatice și semantice) pentru utilizarea structurilor construite.

Caracteristicile limbajelor naturale

După cum sa menționat deja, toate limbile sunt împărțite în mod convențional în artificial și natural. Există multe diferențe între cele două.

Limbile vorbite sunt naturale. Caracteristicile lor, printre altele, includ:

  • ambiguitatea majorității cuvintelor;
  • existența sinonimelor și omonimelor;
  • prezența mai multor nume pentru același subiect;
  • existența unor excepții de la aproape toate regulile.

Toate aceste caracteristici sunt principalele diferențe dintre sistemele de semne naturale și limbajele formale. Exemple de ambiguități în cuvinte și afirmații sunt cunoscute de toată lumea. Deci, cuvântul „eter”, în funcție de context, poate însemna atât substanță, cât și difuzare radio sau de televiziune.

În același timp, principalele funcții ale limbilor vorbite sunt:

  • comunicare;
  • activitate cognitivă;
  • exprimarea emoțiilor;
  • impact asupra interlocutorului (corespondent, dacă vorbim despre corespondență).

Caracteristicile limbajelor artificiale

Limbajele artificiale sunt create de oameni în scopuri speciale sau pentru grupuri specifice de oameni.

Una dintre caracteristicile principale ale limbajelor artificiale este definirea neechivocă a vocabularului lor, precum și regulile pentru atribuirea lor de semnificații și formarea expresiilor.

Limbaje și gramatici formale

Limbajul, indiferent dacă este natural sau artificial, poate exista numai dacă există un set de reguli specifice. În același timp, ar trebui asigurată o afișare consecventă, compactă și precisă a relațiilor și proprietăților domeniului studiat. Dacă sunt strict redactate, atunci spun că limba. Exemple de astfel de sisteme de semne sunt limbajele de programare, deși, strict vorbind, ele ocupă mai degrabă o anumită poziție intermediară (a se vedea mai jos).

Schema pentru construirea sistemelor de semne formale este după cum urmează:

  • este selectat un alfabet (un set de simboluri sursă);
  • sunt stabilite regulile pentru construirea expresiilor (sintaxei) limbajului.

Scopul aplicatiei

Logice formale, programare etc.) sunt utilizate în procesul de cercetare științifică. Ele sunt mai bune decât cele naturale pentru a reprezenta cunoștințele și sunt un mijloc de schimb mai obiectiv și mai precis de informații.

Limbajele formale includ toate sistemele cunoscute de simboluri matematice și chimice, codul Morse, notația muzicală etc.

În plus, limbajele de programare formale sunt utilizate pe scară largă. Dezvoltarea lor rapidă a început la mijlocul secolului al XX-lea, în legătură cu apariția tehnologiei computerizate.

Limbajul logicii formale

Orice limbaj de programare se bazează pe matematică. La rândul său, el se bazează pe sistemul de semne al logicii formale.

Ca știință, logica a fost creată de Aristotel. De asemenea, el a dezvoltat regulile pentru transformarea afirmațiilor care păstrează valoarea lor de adevăr indiferent de conținutul conceptelor incluse în aceste afirmații.

Logica formală se luptă cu „neajunsurile” limbajelor naturale asociate cu ambiguitatea unor enunțuri etc. În acest scop, operațiile cu gânduri sunt înlocuite de acțiuni cu semne ale limbajului formal. Acest lucru elimină orice incertitudine și vă permite să stabiliți cu precizie adevărul afirmației.

Caracteristici ale limbajelor de programare

După cum sa menționat deja, cu unele rezerve, acestea pot fi clasificate ca formale.

Multe reguli sintactice le unesc cu acestea din urmă, iar unele cuvinte cheie și construcții cu unele naturale.

Crearea unui limbaj de programare necesită definirea setului de simboluri valide și a programelor corecte ale limbajului și a semnificației fiecărui program corect. Dacă prima sarcină poate fi abordată prin formalizare, în cazul acesteia din urmă, aceste abordări nu funcționează.

Multe dintre caracterele valide din limbajele de programare sunt caractere pe care le puteți tasta de la tastatură. Ele reprezintă prima parte a tabelului de codificare ASCII.

Gramaticile

Limbajele de programare, ca oricare alta, au gramatică. Acest termen este înțeles ca o descriere a metodei de scriere a propozițiilor. Gramaticile sunt descrise într-o varietate de moduri. În cazul limbajelor de programare, acestea sunt reguli care sunt specificate prin perechi ordonate de șiruri de caractere de două tipuri: definirea constructelor sintactice și constrângerile semantice. Atunci când definesc gramaticile, ele stabilesc mai întâi formal regulile pentru construirea construcțiilor sintactice și apoi - definesc cele semantice într-unul dintre limbajele naturale.

Înregistrarea grafică a regulilor se realizează folosind diagrame speciale. Inițial, această abordare a fost utilizată la crearea limbajului Pascal. Cu toate acestea, atunci a început să fie utilizat pe scară largă în altele.

Clasificarea limbajelor de programare

În acest moment, există câteva mii, împreună cu „dialectele”. Sunt clasificate drept procedurale și declarative. În limbile de primul tip, transformarea datelor este specificată prin descrierea secvenței de acțiuni efectuate asupra lor, a doua - relații. Există și alte clasificări. De exemplu, limbajele de programare sunt împărțite în funcționale, procedurale, orientate pe obiecte și logice. Dacă abordăm problema strict, atunci nicio clasificare nu poate fi obiectivă. La urma urmei, o parte semnificativă a limbajelor de programare au capacitățile mai multor tipuri de sisteme formale simultan. De-a lungul timpului, marginile se vor uza și mai mult.

Acum puteți răspunde la întrebarea: „Ce limbaje formale cunoașteți?” Oamenii de știință continuă să le îmbunătățească pentru a face posibilă soluționarea diferitelor probleme practice și teoretice care sunt considerate în prezent de nerezolvat.

Aveți întrebări?

Raportați o greșeală de eroare

Text de trimis editorilor noștri: