Formalni jezici i gramatike. Softver i softver Primjeri formaliziranih programskih jezika

Programski jezik- umjetni (formalni) jezik dizajniran za pisanje programa za izvršitelja (na primjer, računalo ili numerički upravljani stroj). Programski jezik definiran je njegovim opisom. Opis programskog jezika je dokument koji specificira mogućnosti algoritamskog jezika. Opis obično sadrži:

· abeceda dopuštenih simbola i službenih (ključnih) riječi;

sintaktička pravila za građenje dopuštenih jezičnih konstrukcija iz abecede;

semantika koja objašnjava značenje i svrhu jezičnih konstrukcija.

Programski jezici služe za predstavljanje rješenja problema u takvom obliku da se mogu izvršiti na računalu.

Strojni jezik, koji se sastoji od instrukcija računalnog procesora, također je programski jezik. Ali algoritme napisane strojnim jezikom teško je čitati čak i programer-programer, osim toga, rad s takvim jezikom zahtijeva poznavanje arhitekture određenog računala, pa se u programiranju u pravilu koriste jezici višeg nivoa. razini se koriste od strojnih jezika. Jezik visoke razine je programski jezik čiji su koncepti i struktura prikladni za ljudsku percepciju i ne ovise o konkretnom računalu na kojem će se program izvršavati.

Da bi se program napisan u programskom jeziku visoke razine mogao izvršiti na računalu, mora biti preveden na strojni jezik. Softverski alat koji obavlja ovu funkciju naziva se prevoditelj.

Prevoditelj je program koji čita tekst programa napisan na jednom jeziku i prevodi ga (prevodi) u ekvivalentni tekst na drugom jeziku (obično strojnom jeziku). Postoje dvije glavne vrste prevoditelja: prevoditelji I tumači.

Prevodilac pretvara tekst izvornog programa u skup uputa za zadanu vrstu procesora (strojni kod) i zatim ga upisuje u izvršnu datoteku (exe datoteku), koja se može pokrenuti kao zaseban program. Drugim riječima, prevodilac prevodi program s jezika visoke razine u jezik niske razine.

Tumač kao rezultat prijevoda, izvodi operacije navedene u izvornom programu. U tom slučaju program ostaje na izvornom jeziku i ne može se pokrenuti za izvršenje bez tumača.

Podjela na sastavljene i interpretirane jezike donekle je proizvoljna. Dakle, za bilo koji tradicionalno kompilirani jezik, kao što je Pascal, možete napisati interpreter, a za bilo koji interpretirani jezik možete kreirati prevodilac - na primjer, BASIC, izvorno interpretiran, može se kompilirati bez ikakvih ograničenja.

Neki jezici, kao što su Java i C#, spadaju između kompajliranih i interpretiranih. Naime, program se ne kompilira u strojni jezik, nego u niskorazinski strojno neovisan kod, bytecode. Bajtkod tada izvršava virtualni stroj. Za izvršavanje bajtkoda obično se koristi interpretacija. Ovaj pristup vam u određenom smislu omogućuje korištenje prednosti i interpretatora i prevoditelja.

Od stvaranja prvih programabilnih strojeva, čovječanstvo je osmislilo više od dvije i pol tisuće programskih jezika. Broj programskih jezika stalno raste, iako je ovaj proces očito usporen. Neke jezike koristi samo mali broj programera, drugi postaju poznati milijunima ljudi. Neki od njih su visoko specijalizirani (namijenjeni rješavanju određene klase problema), a neki su univerzalni. Profesionalni programeri ponekad koriste više od desetak različitih programskih jezika u svom radu.

Programski jezici mogu se klasificirati prema nekoliko kriterija: strojno orijentirani (sastavljači) i strojno neovisni, specijalizirani i univerzalni.

Specijalizirani jezici uključuju ART jezik ( A automatski P programirano T ools) je prvi specijalizirani programski jezik za alatne strojeve s numeričkim upravljanjem. Jezik je razvila skupina američkih stručnjaka 1956-1959. pod vodstvom matematičara Douglasa T. Rossa. COBOL jezik ( co mmon B korisnost- O usmjereno L kut), stvorena u SAD-u pod vodstvom Grace Murray Hopper 1959. godine, usmjerena je na obradu ekonomskih informacija. Matematičarka Grace Murray Hopper vodila je projekt COBOL s činom kapetana drugog ranga, kasnije je postala kontraadmiral. G.M. Hopper se zove COBOL-ova "majka i baka".


(Grace Murray Hopper)

Moderni web programski jezici Perl i PHP također se mogu klasificirati kao specijalizirani jezici. Jezici Rapira, E-language (Rusija), SMR (Velika Britanija), LOGO (SAD) mogu se svrstati u jezike namijenjene podučavanju programiranja.

Najčešći univerzalni programski jezici danas su C++, Delphi, Java, Pascal, Visual Basic, Python.

Ali, s obzirom na programske jezike kao samostalan predmet proučavanja, moguće ih je klasificirati prema konceptu izgradnje jezika.

Klasifikacija programskih jezika

Programski jezici se mogu podijeliti u dvije klase: proceduralne i neproceduralne. proceduralni (imperativ) jezici su jezici operatorskog tipa. Opis algoritma na ovom jeziku ima oblik niza operatora. Karakteristika proceduralnog jezika je prisutnost operatora dodjeljivanja (Basic, Pascal, C). Program napisan na imperativnom jeziku vrlo je sličan naredbama izraženim u imperativnom načinu u prirodnim jezicima, odnosno to je slijed naredbi koje računalo mora izvršiti. Prilikom programiranja u imperativnom stilu, programer mora objasniti računalu kako problem treba riješiti.

Neproceduralno (deklarativno) jezici su jezici, pri korištenju kojih program eksplicitno navodi koja svojstva bi rezultat trebao imati, ali ne kaže kako ga treba dobiti. Neproceduralni jezici dijele se u dvije skupine: funkcionalne i logičke.

Deklarativni programski jezici su programski jezici visoke razine u kojima su izjave deklaracije ili izjave u simboličkoj logici. Tipičan primjer takvih jezika su logički programski jezici (jezici koji se temelje na sustavu pravila i činjenica). Karakteristična značajka deklarativnih jezika je njihova deklarativne semantike. Osnovni koncept deklarativne semantike je da je značenje svake izjave neovisno o tome kako se ta izjava koristi u programu. Deklarativna semantika je mnogo jednostavnija od one imperativnih jezika, što se može vidjeti kao prednost deklarativnih jezika u odnosu na imperativne.

Logički jezici

U programima u logičkim programskim jezicima odgovarajuće se radnje izvode samo ako postoji nužan dopušteni uvjet za izvođenje novih činjenica iz tih činjenica prema zadanim logičkim pravilima. Logičko programiranje temelji se na matematičkoj logici (vidi “ logičke operacije. kvantifikatori”, “Booleovski izrazi”).

Prvi logički programski jezik bio je jezik Planner, razvio ga je Carl Hewitt u Laboratoriju za umjetnu inteligenciju Massachusetts Institute of Technology 1969. godine. Ovaj jezik se temeljio na mogućnosti automatskog izvođenja (dobivanja) rezultata iz podataka i danih pravila nabrajanjem opcija (čija se ukupnost zvala plan) . Ali najpoznatiji logički programski jezik je PROLOG (Prolog), koji je u Francuskoj na Sveučilištu u Marseilleu stvorio Alain Colmerauer 1971. godine.

Alain Colmero
(Alain Colmerauer)

PROLOG program sadrži dvije komponente: činjenice i pravila. Činjenice su podaci s kojima program radi, a zbirka činjenica čini bazu podataka PROLOG, koja je u biti relacijska baza podataka. Glavna operacija koja se izvodi nad podacima je operacija podudaranja, koja se također naziva operacija ujedinjenja ili pomirenja. Pravila se sastoje od naslova i podciljeva. Izvršenje programa napisanog u PROLOG-u počinje upitom i sastoji se u dokazivanju istinitosti neke logičke izjave unutar zadanog skupa činjenica i pravila. Algoritam ovog dokaza (algoritam logičkog zaključivanja) određuje principe izvođenja programa napisanog u PROLOGU.

Za razliku od programa napisanih proceduralnim jezicima, koji propisuju slijed koraka koje računalo mora izvesti kako bi riješilo problem, u PROLOG-u programer opisuje činjenice, pravila, međusobne odnose i upite o problemu. Na primjer, recimo da imamo sljedeće činjenice o tome tko je čija majka:

majka ("Daša", "Maša").

majka ("Natasha", "Dasha").

Osim toga, postoji pravilo kojim se uvodi odnos baka:

baka (X,Y):-

Sada možemo postavljati upite tko je baka ove ili one osobe, odnosno tko je unuka (unuk) određene žene:

baka ("Natasha",X).

Odgovor na ovaj zahtjev dat će sustav PROLOG kako slijedi:

Mogućnosti korištenja PROLOG jezika su vrlo opsežne. Među najpoznatijima su aplikacije u simboličkoj matematici, planiranju, računalno potpomognutom dizajnu, građenju kompajlera, bazama podataka, obradi tekstova na prirodnim jezicima. No, možda najkarakterističnija primjena PROLOG-a su ekspertni sustavi.

Danas postoji čitava klasa logičkih jezika; dakle, logički programski jezici QA-4, Popler, Conniver i QLISP također potječu iz jezika Planner. Programski jezici Mercury, Visual Prolog, Oz i Fril potječu od Prologa.

Funkcionalni jezici

Prvi jezik funkcionalnog tipa je jezik LISP koji je nastao na Massachusetts Institute of Technology 1956-1959. John McCarthy, koji je 1956. godine na konferenciji u Dartmouthu (SAD) prvi predložio termin "umjetna inteligencija".

John McCarthy

I premda sporovi oko ovog pojma i razvijenog znanstvenog smjera u njegovim okvirima još uvijek ne jenjavaju, istraživači su jednoglasni u korištenju funkcionalnih i logičnih jezika za ovo područje. Na LISP-u je implementiran značajan broj radova o umjetnoj inteligenciji.

Nakon pojave, LISP-u su dodijeljeni mnogi epiteti koji odražavaju njegove značajke: funkcijski jezik, simbolički jezik, jezik za obradu popisa, rekurzivni jezik. Sa stajališta današnje klasifikacije, LISP se definira kao programski jezik funkcionalnog tipa, koji se temelji na metodi -calculus (metodu -calculus je 30-ih godina prošlog stoljeća razvio A. Church kao rigoroznu matematički model za izračunljive funkcije, vidi. “Teorija algoritama”).

Program napisan u funkcionalnom jeziku sastoji se od neuređenog skupa jednadžbi koje definiraju funkcije i vrijednosti koje su dane kao funkcije drugih vrijednosti. LISP programi i podaci postoje u obliku simboličkih izraza, koji se pohranjuju kao strukture popisa. LISP se bavi dvije vrste objekata: atoma I popisi. Atomi su simboli koji se koriste za identifikaciju objekata, koji mogu biti brojčani ili simbolički (koncepti, materijali, ljudi itd.). Popis je niz od nula ili više elemenata zatvorenih u zagrade, od kojih je svaki ili atom ili lista. Na listama se izvode tri primitivne operacije: izdvajanje prvog elementa liste; dobivanje ostatka popisa nakon uklanjanja prvog elementa; unija prvog elementa liste L i ostatka liste Q.

Programski tekstovi samo u funkcionalnim programskim jezicima opisati način rješavanja problema, ali ne propisuju slijed radnji za rješavanje.

Sljedeće se obično smatra glavnim svojstvima funkcionalnih programskih jezika: kratkoća i jednostavnost; jako tipkanje; modularnost; funkcije - objekti proračuna; čistoća (bez nuspojava); odgođena (lijena) evaluacija.

Osim LISP-a, funkcionalni jezici uključuju REFAL (koji je sredinom 60-ih razvio V.F. Turchin na Moskovskom državnom sveučilištu Lomonosov), Haskell, Clean, ML, OCaml, F#.

Navedimo primjer opisa dobro poznatog algoritma brzo sortiranje popis u Haskellu:

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

Qsort elts_greq_x gdje

elts_lt_x =

elts_greq_x =

Ovdje piše da je prazna lista već sortirana. A razvrstavanje nepraznog popisa znači podijeliti popis na tri: popis elemenata koji je manji od glave izvornog popisa, vrh izvornog popisa ([x]) i popis elemenata repa izvorni popis veći ili jednak x.

Objektno orijentirani jezici

Objektno orijentirani jezici su jezici u kojima su koncepti postupka i podataka koji se koriste u konvencionalnim programskim sustavima zamijenjeni konceptom "objekta" (vidi članak " Objektno orijentirano programiranje”). SmallTalk se smatra jezikom objektno orijentiranog programiranja u svom čistom obliku, mogućnosti objektno orijentiranog programiranja također su postavljene u Javi, C++, Delphi.

Daljnji razvoj suvremenog programiranja povezan je s tzv. “paralelnim programiranjem”. Za implementaciju ove tehnologije razvijaju se specijalizirani objektno orijentirani jezici. Ova vrsta jezika uključuje, na primjer, MC# ( mcsharp) je objektno orijentirani programski jezik visoke razine za .NET platformu koji podržava stvaranje programa koji rade u distribuiranom okruženju s asinkronim pozivima.

Struktura programskog jezika

Postoje temeljne razlike između postojećih programskih jezika u konceptu izgradnje jezika, to se posebno odnosi na ranije jezike, ali svi se ti jezici nazivaju programskim jezicima jer imaju istu formalnu strukturu sa stajališta unutarnjeg sustava zgrade.

Svaki programski jezik sastoji se od rečenica (operatora). Rečenice (poput riječi) definirane su preko neke abecede C. Sintaksa jezika opisuje skup rečenica preko abecede C koje izvana predstavljaju dobro oblikovane programe.

Sintaksa jezika su pravila za dobivanje riječi i rečenica tog jezika. Sintaksa je shematski opisana korištenjem određenih gramatičkih pravila.

Poznavanje formalnog jezika (abeceda + sintaksa), iako dovoljno za utvrđivanje sintaktička ispravnost programa, ali nedovoljno za razumijevanje njegove svrhe i načina djelovanja. Značenje i način djelovanja programa u programskom jeziku određuju se specificiranjem semantike.

Semantika jezika su pravila za tumačenje riječi formalnog jezika, t.j. utvrđivanje značenja pojedinih jezičnih elemenata.

Za definiranje formalnih jezika, uključujući programske jezike, koriste se BNF (Backus-Naur oblici) i sintaktički dijagrami. Ovo su dva izmjenjiva načina opisivanja.

Kada se programski jezik opisuje u smislu BNF-a, koristi se sljedeća notacija:

1) <..>- definirana riječ;

2) R - pravilo iz sintakse za tvorbu riječi;

3) ::= - BNF pravilo.

Svaki R sastoji se od terminalne riječi ili žetoni jezik i eventualno sljedeće znakove:

· [..] - ovaj element je prisutan u BNF-u;

· (..) - ova se pojava može koristiti u BNF-u;

· (..)* - ova se pojava može koristiti u BNF-u konačan broj puta.

Primjer 1 Navedimo primjer BNF pravila koje definira cijeli broj.

Ovo pravilo se čita ovako: “Cijeli broj je znak 0 ili niz znakova koji može započeti znakom “–”, nakon čega slijedi znamenka različita od nule, nakon čega slijedi bilo koji konačni niz znamenki.”

Poseban, sličan BNF-u, oblik opisa formalnih jezika su sintaktički dijagrami. U sintaksnim dijagramima koriste se tri vrste elemenata: ovalni/krug, pravokutnik, strelice. Završne riječi ili leksemi stavljaju se u ovalne, definirane riječi u pravokutnike. Grafički prikaz jezika kroz sintaksne dijagrame čini opis jezika vizualnim.

Primjer 2. Opisivanje cijelog broja pomoću dijagrama sintakse.

Prema Oglednom programu potrebno je da studenti prezentiraju suvremenu klasifikaciju programskih jezika, kao i da se orijentiraju u područjima primjene svakog od njih. Najlakši način za predstavljanje ove teme je nakon što se već dogodilo detaljno upoznavanje s jednim od programskih jezika.

Treba objasniti zašto nastaju novi jezici, a stari se poboljšavaju: prije svega, to se događa kada se traži sredstvo za brzo pisanje složenih programa koji također nisu sadržavali pogreške. Poznat je primjer kada je stvaranje jezika ADA (nazvanog po prvoj programerki Adi Lovelace, kćeri Byrona) pokrenuto 1974. u Ministarstvu obrane SAD-a. Američka vojska je shvatila da gubi puno vremena, truda i novca na razvoj i održavanje ugrađenih računalnih sustava (kao što su sustavi za navođenje projektila), a suptilne pogreške u programskim jezicima dovode do pravih katastrofa.

Deklarativni jezici bili su vrlo popularni krajem 80-ih i početkom 90-ih godina prošlog stoljeća, nazivani su programskim jezicima umjetne inteligencije za računala pete generacije. Međutim, nade u njihovu široku distribuciju još se nisu ostvarile. Možda zato što postojeći sustavi funkcionalnog i logičkog programiranja ne dopuštaju stvaranje brzih programa za smislene zadatke. Moguće je da njihovo vrijeme jednostavno još nije došlo.

Prilikom odabira strategije poučavanja teme „Algoritamizacija i programiranje“ mora se uzeti u obzir da je zadaća općeobrazovnog kolegija u velikoj mjeri razvijanje određenog stila mišljenja, formiranje najopćenitijih vještina, sposobnosti i ideje, a ne razvoj određenih specifičnih jezika i tehničkih programskih alata. Istodobno, takav bi kolegij trebao poslužiti kao temelj za naknadni stručni studij programiranja u visokom obrazovanju ili srednjoj školi (u sklopu stručnog osposobljavanja).

Trenutno postoje dva najčešća pristupa podučavanju programiranja:

1) nastava na posebno razvijenom jeziku obrazovnog jezika usmjerena na podučavanje osnovnih vještina programiranja;

2) proučavanje jednog ili više programskih jezika koji se široko koriste u praksi u rješavanju znanstvenih i ekonomskih problema (takvi se jezici mogu nazvati standardnim).

Prvi pristup se često koristi pri podučavanju osnova programiranja u nižim srednjim školama koristeći specijalizirane jezike kao što su Rapier, E-language, LOGO. Ovi jezici uzimaju u obzir mogućnosti učenika osnovnih škola. Ovaj pristup je dobar za dubinsko proučavanje informatike u 5-6 razredima.

Što se tiče drugog pristupa, možemo reći da je većina modernih implementacija standardnih jezika opterećena puno tehničkih detalja i teško ih je naučiti. Ipak, najprihvatljivije je za općeobrazovnu školu, u kojoj se kolegij informatike uči u 8.-11. razredu, poučavanje teorijskih osnova programiranja na standardnom jeziku. U ovom slučaju nije potrebno ići u dubinu jezika. Studenti koje to zanima mogu to učiniti sami. Najveću pozornost treba posvetiti prijelazu s algoritamskih struktura na njihovu softversku implementaciju u programskom jeziku.

Ovdje je vrijedno napomenuti da je Pascal izvorno nastao kao obrazovni jezik, ali je s vremenom postao raširen kao standardni jezik i razvio se kao objektno orijentirani jezik uz Delphijevu tehnologiju vizualnog programiranja. Pascal ili Basic može se uzeti kao osnova predmeta u 8.-9. razredu, a kao prošireni (izborni) tečaj u 10.-11. razredu upoznati učenike s njihovim objektno orijentiranim proširenjima (Delphi i Visual Basic). Svaki jezik ima svoje pristaše i protivnike, a konačan izbor je na učitelju.

Postoje dva glavna pristupa učenju programskog jezika: formalni i "Programiranje uzoraka". Prvi se temelji na formalnom (strogom) opisu konstrukcija programskog jezika ( sintaksa jezik i njegov semantika) na ovaj ili onaj način (uz pomoć sintaktičkih dijagrama, metajezika ili formalnog verbalnog opisa, posebice semantike) i korištenjem samo proučavanih, a time i razumljivih, elemenata jezika pri rješavanju problema. U drugom pristupu studentima se prvo daju gotovi programi, rečeno im je što točno rade, a od njih se traži da napišu sličan program ili izmijene postojeći, bez potpunog objašnjenja niza "tehničkih" ili beznačajnih, sa stajališta nastavnika pojedinosti za rješavanje problema. Istodobno, kaže se da ćete kasnije saznati točno značenje odgovarajućih konstrukcija, ali za sada učinite isto. Drugi pristup omogućuje takozvani “brzi početak”, ali stvara opasnost od dobivanja polupismenih korisnika programskog okruženja, t.j. ljudi koji u svojoj praksi koriste prilično složene strukture, ali ne mogu jasno objasniti zašto ih je u ovom ili onom slučaju potrebno koristiti i kako funkcioniraju. Kao rezultat toga, prije ili kasnije takvi "programeri" nailaze na pogreške, koje jednostavno ne mogu popraviti - nedostaje im znanja.

Jedna od zadaća školske informatike je poučavanje upravo formalnog pristupa, posebice pri primjeni različitih definicija. I formalno proučavanje programskog jezika tome mnogo pridonosi. Ali ni bez dobrih primjera (uzoraka) u učenju programiranja školarcima ne može se. A što su učenici mlađi, to bi trebalo navesti više primjera pri opisivanju jezika (ponekad čak i zamijenivši njima strogu definiciju). Druga je stvar da je potrebno osigurati da, kao rezultat rasprave o primjeru, svi njegovi detalji budu jasni školarcima (potrebno je objasniti kako i zašto funkcionira, uključujući oslanjanje na već proučeni formalni materijal). U tom će slučaju jaki studenti imati priliku sve temeljito razumjeti i moći će koristiti stečeno znanje u budućnosti, dok će ostali steći specifične vještine i ostaviti mogućnost da se kasnije po potrebi vrate na formalne definicije.

O željezničkom jeziku "Vlak će proći peron Krasnye Zori bez zaustavljanja." Imajte na umu da je vozač koristio imenicu "stop", a ne glagol "stop". Zaustavljanje je vrlo važan koncept za željezničke radnike. Vlak može "stati", ali ne i "imati zaustavljanja". Turchin [Turchin 2000], dajući sličan primjer, ukazuje na formalizaciju jezika koji se koristi u uskostručne svrhe.

Formalizirani jezik može se definirati na sljedeći način [Turchin 2000]. Razmotrimo dvokatni jezični model stvarnosti (slika 4. 4). Situaciju si kodira jezični objekt Li. Objekt L1 je naziv za si. Nešto kasnije, situacija S1 zamjenjuje se situacijom S2. Provodeći neku jezičnu aktivnost, pretvaramo L1 u drugi objekt - L2. Ako je naš model točan, onda je L2 ime S2. Kao rezultat toga, bez poznavanja stvarne situacije S2, možemo dobiti ideju o tome dekodiranjem jezičnog objekta L2. Izvođenje L1->L2 transformacije određuje hoće li jezik biti formaliziran.

    Za formalizirani jezik transformacija L1->L2 određena je isključivo jezičnim objektima Li koji u njemu sudjeluju i ne ovise o jezičnim reprezentacijama si koji im odgovaraju u semantici jezika.

    Za neformalizirani jezik rezultat transformacije jezičnog objekta Li ovisi ne samo o vrsti samog prikaza Li, već i o reprezentaciji si koju generira u ljudskoj glavi, o asocijacijama u koje ulazi.

Osoba je u stanju percipirati najneformaliziranije jezike. A računalo ne razumije, točnije, ne može izvršiti program na neformalnom jeziku. Zato važno mjesto u proučavanju programiranja uvijek zauzimaju formalni algoritamski programski jezici,

O formalizaciji neformalnog Formalizacija neformaliziranog je proces koji se neformalizira. Iako se logičari i vojska pokušavaju boriti protiv toga.

O formuli ljubavi Formula ljubavi ne podliježe formalizaciji. U najboljem slučaju, može se predstaviti samo kao vrlo grub model.

Modeliranje jezika

Jezik modeliranja - skup pravila koja određuju konstrukciju modela (pojednostavljeni prikaz stvarnosti), uključujući njihovu vizualizaciju i definiciju strukture i ponašanja. Jezik modeliranja uključuje:

    elementi modela - temeljni koncepti modeliranja i njihova semantika;

    notacija - vizualni prikaz elemenata modeliranja;

    vodič za korištenje - pravila za korištenje elemenata u okviru izgradnje modela domene.

Programski jezici i integrirana okruženja

    Prema tvorcu prvog integriranog okruženja FRAMEWORK, integrirano okruženje je takav aplikativni program da korisnik, nakon što ga je pokrenuo na početku radnog dana, u njemu pronalazi sve resurse potrebne za rad i stoga ne izlazi iz integriranog okruženja. okruženje do samog kraja radnog dana. Naravno, ova definicija nije baš točna i donekle idealizira situaciju, ali je njezino općenito značenje dovoljno jasno. Glavna značajka integriranih okruženja je visok stupanj interaktivnosti. Postiže se integracijom različitih softverskih resursa u jedinstvenu cjelinu, otuda i naziv. Dakle, integrirano okruženje prevoditelja programskog jezika (program koji stvara izvršni program iz teksta ovog programskog jezika) obično sadrži uređivač teksta i sam prevodilac sa sustavom za dijagnostiku grešaka pri kompilaciji. Osim toga, obično ima i program za ispravljanje pogrešaka – tumač ovog jezika, koji izvršava program redak po redak i ima niz drugih posebnih značajki. Jedno od područja koja se aktivno razvija, vizualni dizajn, u potpunosti se temelji na korištenju mogućnosti integriranog okruženja. Korisnik interaktivno odabire objekte programskog jezika potrebne za njegov program i uspostavlja veze između njih. Popularnost takvih jezika kao što su Visual BASIC (Microsoft), kao i Object PASCAL (Delphi i Kylix, Borland okruženja) nije slučajna. Čak i neiskusni programer koji ne poznaje druge programske jezike osim BASIC-a i nikada nije programirao pod Windowsom, može napraviti aplikacijski program koji radi pod Windowsom koristeći Visual BASIC za dva ili tri dana. Ali programer visoke klase koji prije nije programirao pod Windowsom, koristeći C ++, često mora potrošiti tjedne ili čak mjesece da stvori isti program. Istina, Visual BASIC ima niz značajnih ograničenja. Uz pomoć okruženja vizualnog dizajna možete kreirati vrlo složene programe bez upisivanja niti jednog retka koda na tipkovnici. Međutim, svi programi temeljeni na tradicionalnim proceduralnim programskim jezicima imaju isti nedostatak. Za njih je izvršni kod jedno, a podaci koje program obrađuje sasvim drugo. Doista, programski kod je sadržan u datoteci s ekstenzijom EXE, a podaci se nalaze ili u posebnim datotekama podataka (obično u tekstualnom ili binarnom obliku u internom prikazu računala), ili se unose s tipkovnice ili nekog drugog vanjski uređaj. A sada postavimo pitanje: što ako korisnik mora dati izvršnom programu informacije koje se mogu smatrati "dodatkom" tekstu programa? Na primjer, želimo da se na ekranu izgradi graf funkcije i u takvom programu pružamo sve potrebne servisne mogućnosti. No, formulu za funkciju korisnik mora postaviti sam, a ne zna se unaprijed kakva će to biti. Sasvim je očito da se takvi zadaci mogu riješiti samo uz pomoć sustava tumača. Ali "sve morate platiti". Prevoditelj prevodi tekst programa u izvršni kod koji može raditi bez programa prevoditelja. Programi stvoreni na temelju jezika za tumačenje mogu se izvršavati samo pod kontrolom programa tumača. Također su sporiji od kompiliranih jer im je potrebno dodatno vrijeme za interpretaciju. Međutim, u mnogim slučajevima to nije značajno.

Datum stvaranja: 1963 pod utjecajem: PROFT Tipkanje: neotipkano dijalekti:

    Applesoft BASIC

    Commodore BASIC

    Microsoft BASIC

Implementacije i verzije:

  • Applesoft BASIC Interpreter u Javascriptu

    Atari Microsoft BASIC I/II

  • Commodore BASIC

    Galaxia BASIC

    Microsoft Visual Basic

  • Visual Basic za aplikacije

BASIC (BASIC - skraćenica od Beginner's All-purpose Symbolic Instruction Code - univerzalni kod za simboličke upute za početnike; engleski basic - osnovni, osnovni) - obitelj programskih jezika visoke razine.

BASIC su 1963. osmislili profesori Dartmouth Collegea John Kemeny i Thomas Kurtz, a implementirao ga je pod njihovim vodstvom tim studenata. S vremenom, kako su se drugi dijalekti počeli pojavljivati, ovaj "izvorni" dijalekt postao je poznat kao Dartmouth BASIC.

BASIC je dizajniran tako da studenti mogu pisati programe koristeći terminale za dijeljenje vremena. Nastao je kao rješenje problema povezanih sa složenošću starijih jezika, namijenjen "jednostavnijim" korisnicima, ne toliko zainteresiranima za brzinu programa, već jednostavno za mogućnost korištenja računala za rješavanje svojih problema.

Sljedećih osam principa korišteno je u dizajnu jezika:

    biti jednostavan za korištenje za početnike;

    biti programski jezik opće namjene;

    pružiti mogućnost proširenja funkcionalnosti dostupne iskusnim programerima;

    biti interaktivan;

    dati jasne poruke o pogrešci;

    brzo raditi na malim programima;

    ne zahtijevaju razumijevanje rada hardvera;

    biti posrednik između korisnika i operativnog sustava.

Jezik se dijelom temeljio na Fortranu II, a dijelom na Algolu-60, s dodacima koji su ga učinili prikladnim za dijeljenje vremena, obradu teksta i matričnu aritmetiku. BASIC je izvorno implementiran na GE-265 s podrškom za više terminala. Suprotno uvriježenom mišljenju, u vrijeme svog nastanka to je bio kompilirani jezik. Jezik je opću popularnost stekao pojavom na mikroračunalu Altair 8800. Mnogi programski jezici bili su preglomazni da bi stali u malu memoriju. Za strojeve sa sporim medijima poput papirnate trake, audio kasete i bez prikladnog uređivača teksta, mali jezik poput BASIC-a bio je dar od Boga. Godine 1975. Microsoft (tada su to bila samo dva - Bill Gates i Paul Allen, uz sudjelovanje Monte Davidova) izdao je Altair BASIC. Za operativni sustav CP / M stvoren je dijalekt BASIC-80, koji je dugo vremena odredio razvoj jezika. Tijekom tog razdoblja stvoreno je nekoliko novih verzija BASIC-a. Microsoft je prodao nekoliko verzija BASIC-a za MS-DOS/PC-DOS, uključujući BASICA, GWBASIC i Quick BASIC (QBASIC). Borland je izdao Turbo BASIC 1.0 1985. (njegove nasljednike je kasnije prodala druga tvrtka pod imenom PowerBASIC). Na kućnim računalima pojavila su se različita BASIC proširenja, obično uključujući alate za rad s grafikom, zvukom, izvršavanje DOS naredbi, kao i alate za strukturno programiranje. Neki drugi jezici koristili su poznatu BASIC sintaksu kao osnovu na kojoj je izgrađen potpuno drugačiji sustav (vidi, na primjer, GRASS). Međutim, počevši od kasnih 80-ih, nova su računala postala mnogo složenija i pružala su značajke (kao što je grafičko korisničko sučelje) zbog kojih BASIC više nije tako prikladan za programiranje. BASIC je počeo gubiti tlo pod nogama, unatoč činjenici da se ogroman broj njegovih verzija još uvijek koristio i prodavao. BASIC je dobio drugi život s pojavom Microsoftovog Visual Basica. Postao je jedan od najčešće korištenih jezika na platformi Microsoft Windows. Kasnije je stvorena varijanta nazvana WordBasic, koja se koristila u MS Wordu sve do pojave Worda 97. Varijanta Visual Basic za aplikacije (VBA) ugrađena je u Excel 5.0 1993., zatim u Access 95 1995., a nakon svih ostalih alata, uključeno u Office paket - 1997. godine. Internet Explorer 3.0 i noviji, kao i Microsoft Outlook uključivali su tumač jezika VBScript. Puna verzija paketa OpenOffice.org također uključuje BASIC tumač.

Hello, World!: Primjer za QBasic 1.1, QuickBasic 4.50

ISPIS " zdravo , Svijet !"

Faktorski: Primjer za QBasic 1.1, QuickBasic 4.50

Koristi se iterativna definicija faktorijala. Prilikom računanja 13! dolazi do aritmetičkog prekoračenja i tu se ponašanje različitih implementacija razlikuje: QBasic prijavljuje prelijevanje, dok QuickBasic jednostavno ispisuje negativne vrijednosti. Osim toga, naredba PRINT prema zadanim postavkama ispisuje jedan razmak prije i iza broja.

DIM f AS DUGO f = 1 ISPIS "0 !="; f ZA i = 1 DO 16:

f = f*i:

PRINTi; "!="; f

FORMALIZIRANI JEZIK- umjetni znakovni sustav dizajniran da predstavlja neku teoriju. Formalizirani jezik razlikuje se od prirodnih (nacionalnih) jezika ljudske komunikacije i mišljenja, od umjetnih jezika kao što je esperanto, od "tehničkih" jezika znanosti, koji kombiniraju sredstva određenog dijela prirodnog jezik s pripadajućim znanstvenim simbolima (jezik kemije, jezik obične matematike itd.), od algoritamski jezik generički tip programiranja itd. prije svega činjenicom da je njegova zadaća služiti kao sredstvo za fiksiranje (formaliziranje) određenog logičkog sadržaja, što omogućuje uvođenje odnosa logičke posljedice i pojma dokazivosti (ili njihovih analoga). Povijesno gledano, prvi formalizirani jezik bio je silogistički Aristotel, implementiran pomoću standardiziranog prirodnog (grčkog) jezičnog fragmenta. Opću ideju formaliziranog jezika formulirao je Leibniz (characteristica universalis), koji je predvidio njegovo proširenje na "račun zaključaka" - calculus ratiocinator. U moderno doba, različite varijante formaliziranih jezika razvijene su na temelju analogije između logike i algebre. Prekretnica ovdje bio je rad Morgana , Boole a posebno njihovi sljedbenici Schroeder I Poretsky . Moderni formalizirani jezici - u svojim najčešćim oblicima - vraćaju se na rad. Frege "Begriffsschrift" - "Zapis u pojmovima" (1879.), iz kojeg proizlazi glavna linija razvoja jezika propozicijske logike i (prihvatajući je) logike (mnogo-mjesnih) predikata, kao i primjena ovih logičkih jezična sredstva za probleme potkrijepljivanja matematike.

Karakteristična struktura takvih formaliziranih jezika: dodjela abecede početnih znakova, induktivna definicija (dobro oblikovane) formule jezika, tzv. postavljanje pravila formiranja, postavljanje pravila zaključivanja, tzv. pravila transformacije koja čuvaju odabranu logičku karakteristiku formula (istina, dokazljivost itd.). Dodavanje pravila transformacije pretvara formalizirani jezik u logički račun. Postoje mnoge vrste formaliziranih jezika: to su prije svega jezici deduktivno-aksiomatskih konstrukcija, sustavi prirodnog ("prirodnog") zaključivanja i sekvencijalnih konstrukcija, analitičke tablice, sustavi "logike argumenata" i mnogi drugi.

Formalizirani jezici razlikuju se po svojoj logičkoj snazi, od "klasičnih" jezika (u kojima su na snazi ​​aristotelovski zakoni identiteta, kontradikcije i isključene sredine, kao i princip logičke dvosmislenosti) i završavajući s brojnim jezicima. neklasičnih logika koje dopuštaju slabljenje određenih principa, uvode polisemiju vrednovanja formula ili njihovih modaliteta. Razvijeni su jezici u kojima su logička sredstva minimizirana u ovom ili onom smislu. Takvi su jezici minimalne i pozitivne logike ili jezici propozicijske logike, koji koristi jednu logičku operaciju, na primjer. Schaefferov moždani udar (vidi Logički spojevi ).

Formalizirani jezici obično se karakteriziraju u smislu sintaktičkog i semantičkog. Ali najbitnija je ona logička karakteristika njegovih formula, koju čuvaju pravila zaključivanja (istina, dokazljivost, provjerljivost, vjerojatnost itd.). Za svaki formalizirani jezik temeljni problemi su cjelovitost logike izražene u njemu, njegova odlučivost i dosljednost; npr. jezik klasičnog propoziciona logika cjelovita, rješiva ​​i dosljedna te klasična predikatska logika (višestruko) iako potpuno, ali nerješivo; jezik proširenog predikatskog računa - s kvantifikatorima po predikatima i neograničenom primjenom principa apstrakcije - je kontradiktoran (takav je bio Fregeov logičko-aritmetički sustav, u kojem je Russell otkrio antinomiju nazvanu po njemu).

Formalizirani jezik može biti "čisti oblik", t.j. ne nose nikakve ekstraloške informacije; ako ga nosi, onda postaje primijenjeni formalizirani jezik, čija je specifičnost prisutnost stalnih predikata i pojmova (opisa) – npr. aritmetika - odražava svojstva područja primjene. Da bi se formalizirale teorije visoke razine apstrakcije, formalizirani jezik može se modificirati, proširiti ili "nadograditi" na različite načine; primjer: formalizacija klasičnog računa kao aritmetike drugog reda (tj. s kvantifikatorima nad predikatnim varijablama). U brojnim slučajevima, formalizirani jezik sadrži logičke strukture mnogih - čak i beskonačno mnogo - redova (kao što je, na primjer, "kula jezika" AA Markova, koja služi za formaliziranje konstruktivne matematike, ili tumačenje modaliteta u obliku hijerarhije “mogućih svjetova”). Semantička baza formaliziranog jezika logike može biti teorijska, algebarska, probabilistička, teorijska igara itd. Mogu postojati i takva "slabljenja" koja su samo srodna probabilističkoj semantici - ovako npr. nastaje formalizirani jezik “nejasne logike” (u smislu Zade). Tada jezik dobiva specifičnu pragmatiku, uzimajući u obzir faktor izvornog govornika (dajući ocjenu „funkcije pripadnosti” subjekta opsegu ovog koncepta). Tu se očituje sada rastuća tendencija uzimanja u obzir “ljudskog faktora” u formaliziranim jezicima, u ovom ili onom obliku, što se jasno očituje u nekim formaliziranim jezicima logike kvantne mehanike. U drugom smjeru dolazi do razvoja formaliziranih jezika čija semantika podrazumijeva odbacivanje egzistencijalnih pretpostavki ili određenih ontoloških preduvjeta - dopuštenost pravila s beskonačnim brojem premisa, "viševrsta" predmetnih područja, čak i kontradiktornih. one itd.

Neizostavna značajka formaliziranog jezika je "mogućnost" interpretacije pravila zaključivanja; na primjer, na određenom koraku slobodno možemo koristiti ili ne koristiti, recimo, pravilo modus ponens. Ova značajka je lišena algoritamskih jezika, koji imaju "propisni" karakter. Ali s razvojem računalne logike i razvojem programa tipa "opisivanje", ta razlika počinje izglađivati. U istom smjeru djeluje i razvoj formaliziranih jezika usmjerenih na rješavanje heurističkih problema.

Književnost:

1. Crkva A. Uvod u matematičku logiku, vol. 1. M., 1960;

2. Kleene S.K. Uvod u metamatematiku. M., 1957;

3. Curry H. Temelji matematičke logike. M., 1969.;

4. Freudenthal H. Jezik logike. M., 1969.;

5. Smirnova E.D. Formalizirani jezici i problemi logičke semantike. M., 1982.

FORMALIZIRANI (FORTALNI) JEZICI

RAZUMIJETI

Formalizirani (formalni) jezik je umjetni jezik kojeg karakteriziraju precizna pravila za građenje izraza i njihovo razumijevanje.

Formalni jezik izgrađen je u skladu s jasnim pravilima, osiguravajući dosljedan, točan i kompaktan prikaz svojstava i odnosa proučavanog predmetnog područja (modelirani objekti).

Za razliku od prirodnih jezika, formalni jezici imaju jasno definirana pravila za semantičku interpretaciju i sintaktičku transformaciju korištenih znakova, kao i činjenicu da se značenje i značenje znakova ne mijenja ovisno o bilo kakvim pragmatičkim okolnostima (npr. kontekst).

Formalni jezici se često grade na temelju jezika matematike.

Kroz povijest razvoja matematike u njoj su se naširoko koristile simboličke oznake za razne predmete i pojmove. Međutim, uz simboličke oznake, matematičari su se slobodno služili i prirodnim jezikom. No, u nekoj fazi razvoja znanosti (17. stoljeće) pojavila se potreba za rigoroznom logičkom analizom matematičkih prosudbi, kao i za pojašnjenjem pojma „dokaza“, koji je važan za matematiku. Pokazalo se da je nemoguće riješiti ove probleme bez stroge formalizacije matematičkih teorija. Postojala je potreba da se te teorije predstave formalnim jezikom. 20. stoljeće se može smatrati stoljećem brzog razvoja raznih formalnih jezika.

Sa stajališta informatike, formalni jezici imaju najznačajniju ulogu među formalnim jezicima. jezik logike (jezik algebre logike) i programski jezici . Također su od velike praktične važnosti.

Svi formalni jezici su konstrukcije koje je netko stvorio. Većina ih je izgrađena prema sljedećoj shemi.

Prije svega, odaberite abeceda , ili skup izvornih znakova od kojih će se graditi svi izrazi jezika. Zatim se opisuje sintaksa jezik, odnosno pravila za građenje smislenih izraza.

Budući da koncept "simbol" ima viševrijedno semantičko opterećenje za znakove abecede, češće se koristi izraz "slovo". Ali treba imati na umu da slova u abecedi formalnog jezika mogu biti slova abecede prirodnih jezika, zagrade, posebni znakovi itd.

Od slova, prema određenim pravilima, možete napraviti riječi i izraza .

Najjednostavnije pravilo je da se svaki konačni niz slova može smatrati riječju. Zapravo riječ je najjednostavniji informacijski model(i to je, naravno, konstruktivni objekt).

PRIMJER 1

Jedna od najvažnijih s gledišta informatike je abeceda koja se sastoji od dva slova “0”, “1”. Bilo koji konačni niz nula i jedinica je riječ u ovoj abecedi.

U logičko-matematičkim jezicima među izrazima ima Pojmovi I formule .

Terme su analogni nazivima objekata, njihova glavna svrha je označavanje nekog objekta.

Pojmovi prvenstveno uključuju varijable subjekta i konstante – izraze koji služe za označavanje određenih objekata.

Složeniji pojmovi grade se od predmetnih varijabli i konstanti prema određenim pravilima. Obično se za to koriste funkcije dopuštene u jeziku.

PRIMJER 2

U logici su takve funkcije inverzija (), konjunkcija (), disjunkcija (), implikacija () itd.

Primjeri pojmova u logičkoj algebri:

ALI; AB A; (AC).

U programskim jezicima, aritmetičke operacije, relacijske operacije (,

Primjeri pojmova u programskom jeziku Pascal:

ALI; program_1; ((A1+25)3*B) i (B0)); 2+sqrt(z*sin(b)).

Formule

PRIMJER 3

Primjeri logičkih formula:

(AS)  AS = 1; x((x)(x))

Programske izjave mogu se nazvati formulama u programskom jeziku.

Primjeri "formula" programskog jezika Pascal:

A:= 2+sqrt(Z*sin(B)); ako je F3 onda napiši(R) inače R:=sqr(F);

Smisleni izrazi dobivaju se u formalnom jeziku samo ako su sigurni propisi formiranje, transformacija i “razumijevanje” pojmova i formula. Ova pravila uključuju:

    pravila građenja pojmovi i formule;

    pravila tumačenja pojmovi i formule (semantički aspekt jezika);

    pravila zaključivanja

Za svaki formalni jezik skup ovih pravila mora biti strogo definiran, a modifikacija bilo kojeg od njih najčešće dovodi do pojave nove sorte (dijalekta) ovog jezika.

PRIMJER 4

Pascal operator

ako je F3 onda napiši(R) inače R:=sqr(F);

tumačiti prema sljedećim pravilima:

    varijabla F može biti samo cjelobrojnog ili realnog tipa, a varijabla R može biti samo realnog tipa. Ako to nije slučaj, tada se smatra da je izraz sintaktički netočan i neće se izvršiti (izaći će poruka o sintaksičkoj pogrešci);

    varijable (najjednostavniji pojmovi) F i R moraju biti prethodno definirane, odnosno ćelije s ovim imenima moraju sadržavati neke vrijednosti odgovarajućeg tipa (za neke verzije Pascala ovo pravilo nije uključeno u sintaksu jezika. U ovom slučaju odabire se onaj niz nula i jedinica, koji se nalazi u ćelijama s zadanim adresama i tumači se kao decimalni broj);

    ako je vrijednost izraza (složeni izraz “F3”) koji slijedi iza ključne riječi (rezervirane) riječi if je “true”, tada se izvršava naredba koja slijedi nakon ključne riječi (vrijednost varijable F se prikazuje na ekranu); ako je njegova vrijednost “false”, tada se izvršava naredba nakon ključne riječi else (izračunava se kvadrat vrijednosti varijable F i rezultat se stavlja u ćeliju pod nazivom R).

Prisutnost u sintaksi formalnog jezika pravila za izvođenje pojmova i formula omogućuje vam izvođenje izomorfne transformacije modeli izgrađeni na temelju ovog jezika. Dakle, formalni jezici ne samo da odražavaju (predstavljaju) jedan ili drugi skup već postojećeg znanja, već jesu sredstva formalizacije ove znanje, omogućujući kroz formalne transformacije dobivanje novih znanja. Štoviše, budući da se transformacije mogu odvijati samo prema strogim formalnim pravilima, konstrukcija modela izomorfnih danom, ali dajući nova znanja, može biti automatizirani. Ova se mogućnost široko koristi u računalnim bazama znanja, u ekspertnim sustavima, u sustavima za podršku odlučivanju.

Formalni jezici se široko koriste u znanosti i tehnologiji. U procesu znanstvenog istraživanja i prakse formalni jezici se obično koriste u bliskoj vezi s prirodnim jezikom, budući da potonji ima mnogo veće izražajne mogućnosti. Istodobno, formalni jezik je sredstvo točnijeg predstavljanja znanja od prirodnog jezika i, posljedično, sredstvo točnije i objektivnije razmjene informacija među ljudima.

ZNATI

Formalizirani (formalni) jezik je umjetni jezik kojeg karakteriziraju precizna pravila za građenje izraza i njihovo tumačenje (razumijevanje).

Kada se konstruira formalni jezik, bira se abeceda , i opisan je sintaksa Jezik.

Abeceda- skup početnih znakova od kojih će se graditi svi izrazi jezika.

Izrazi formalni jezik su termini i formule.

Glavna svrha terma - označiti neki predmet.

Najjednostavniji pojmovi su predmetne varijable i konstante - izrazi koji služe za označavanje određenih objekata.

Složeni izrazi se grade prema određenim pravilima primjenom funkcija dopuštenih u jeziku na jednostavne pojmove.

Formule tvore se od pojmova na koje se primjenjuju operatori dopušteni u jeziku.

Sintaksa jezik - skup pravila za konstruiranje smislenih izraza - uključuje:

    pravila građenja pojmovi i formule;

    pravila tumačenja pojmovi i formule;

    pravila zaključivanja neke formule i pojmove iz drugih formula i pojmova.

Formalni jezici kao npr jezik logike I programski jezici .

Formalni jezici se široko koriste u znanosti i tehnologiji. Oni su sredstvo točnije i objektivnije razmjene informacija među ljudima od prirodnog jezika.

Formalni jezici ne samo da odražavaju (predstavljaju) jedan ili drugi skup već postojećeg znanja, već su i sredstvo za formaliziranje tog znanja, što omogućuje dobivanje novih znanja kroz formalne transformacije. Ova se mogućnost široko koristi u računalnim bazama znanja, u ekspertnim sustavima, u sustavima za podršku odlučivanju.

BITI U MOGUĆNOSTI

VJEŽBA 1

Navedite od kojih se slova sastoji abeceda programskog jezika koji poznajete i koja pravila postoje za tvorbu jednostavnih pojmova u tom jeziku.

Postoje li rezervirane riječi u ovom programskom jeziku? Ako da, navedite primjere rezerviranih i nerezerviranih riječi.

Što se u programskim jezicima može smatrati pojmovima i formulama?

ODGOVOR. Abeceda programskog jezika uključuje sve simbole koji se mogu koristiti pri pisanju programa.

Pojmovi programskog jezika su identifikatori, kao i izrazi izgrađeni od identifikatora, konstanti, znakova aritmetičkih i logičkih operacija, matematičkih i drugih (definiranih u jeziku) funkcija, zagrada.

Formule programskog jezika su operatori dopušteni u njemu: ulaz, izlaz, dodjela, uvjet, petlja itd.

ZADATAK 2

Ako ste proučavali osnove formalne logike, tada:

    dati primjere kada vam formalna transformacija logičkih formula omogućuje stjecanje novih znanja o predmetima koji se proučavaju;

    protumačiti formulu: x ((x)  (x)) ili  (A  A) = 1

ODGOVOR. 2) je zakon neprotuslovnosti, čija je bit: nijedan iskaz ne može biti istinit i lažan u isto vrijeme.

ZADATAK 3

Koja je abeceda decimalnog brojevnog sustava?

Koje je osnovno pravilo za formiranje (bilježenje) brojeva u ovom pozicijskom brojevnom sustavu?

ODGOVOR. Abeceda: decimalne znamenke, decimalna točka (ili zarez) te znaci plus i minus. Pravilo: težina znamenke u broju ovisi o njezinom položaju u zapisu broja.

ZADATAK 4

Kako se riječ binarne abecede “0100 1001 0100 0110” može tumačiti u vama poznatom programskom sustavu (razmaci su umetnuti radi čitljivosti)?

ODGOVOR. U Pascalu se ova dva bajta mogu protumačiti kao niz znakova "IF", kao dva broja bajta tipa - 73 i 70, kao jedan broj tipa integer - 20758 (18758 ???).

ZADATAK 5

Grafičko sučelje sustava Windows sadrži elemente kao što su piktogrami ili ikone. Možemo li pretpostaviti da su uključeni u abecedu jezika korisničkog sučelja ovog sustava? Obrazložite odgovor.

PROŠIRITE SVOJ POGLED

U formalnim jezicima, kao ni u jednom drugom, uloga znaka, shvaćenog u širem smislu riječi, je velika. Neke smo aspekte upotrebe znakova razmatrali ranije, ali ima smisla o tome detaljnije govoriti.

Razlog za pojavu znakova je sasvim očit: većina objekata spoznaje i aktivnosti nije dostupna za izravnu percepciju u procesu spoznaje i predstavljanja u procesu komunikacije.

Znak(gr.  - znak, lat. transkripcija - semeion) je materijalni objekt koji djeluje kao predstavnik nekog drugog predmeta, svojstva ili odnosa i služi za stjecanje, pohranjivanje, obradu i prijenos poruka (informacija , znanje).

NAPOMENA 1. Umjesto riječi "znak" koriste se drugi pojmovi u sličnom smislu: "ime", "pojam", "oznaka".

Prema definiciji jednog od tvoraca teorije znakova (semiotike) C.P. Piercea, znak- to je takav element x, koji zamjenjuje za subjekt neki element y (denotat) prema nekom atributu.

Odnosno, denotat- to znači ovaj znak u određenoj situaciji.

Denotacija neka jezična apstraktna jedinica (od latinskog denoto - označavam) - skup objekata koji se mogu nazvati danim znakom.

NAPOMENA 2. Umjesto riječi “denotacija” u logici se koriste drugi (identični, sinonimni) nazivi: najčešće “značenje”, “označeno”.

Zauzvrat, svaki znak definira neka svojstva objekta koji označava. Informacija koju znak nosi o onome što označava naziva se koncept znak (od lat. conceptus - pojam).

NAPOMENA 3. Pojam “pojam” ima sinonime: “značenje”, “značenje značenja”.

PRIMJER, u riječi "životinja" nalazimo drevno značenje riječi "želudac" - život. Životinje se ne razlikuju po prisutnosti želuca, već po tome što su žive, imaju želudac-život. Dakle, pojam znaka “životinja” je pojam živog bića, detonacija je svako specifično živo biće koje se misli u danoj znakovnoj situaciji.

Prema Peirceu, svi se znakovi dijele na indeks , ikoničan I simbolički priroda odnosa između označitelja i označenog.

Indeksni omjer između označitelja i označenog u znaku temelji se na njihovoj stvarnoj, postojećoj sličnosti. Ovaj razred uključuje, na primjer, onomatopejske riječi ili strukturne formule kemijskih spojeva. Znakovi indeksa povezani su s naznačenom uzročno-posljedičnom vezom (na primjer, prisutnost mokrih krovova je znak da je padala kiša).

Ikonski stav između označitelja i označenog je, prema C. Pierceu, “jednostavna općenitost u smislu nekog svojstva”. Znakovi za kopiranje (ikonički znakovi) - reprodukcije, reprodukcije koje su slične označenoj (na primjer, fotografije, otisci prstiju).

U simbolički znak označitelj i označeno povezani su "bez obzira na bilo kakvu stvarnu vezu" (na primjer, određena kombinacija zvukova, slova, figura, boja, pokreta itd. pripisuje se nekom objektu.

Za konstrukciju formalnih jezika važna je upravo ova vrsta znakova (vidi odlomak prvog poglavlja o glavnoj tezi formalizacije).

NAPOMENA 4 Simbolični znakovi se ponekad nazivaju simboli . Prema ideji istaknutog ruskog filozofa P. A. Florenskog, simbol je „biće koje je veće od sebe. Simbol- to je nešto što nije samo po sebi, veće od njega, a ipak se bitno manifestira kroz to. Na primjer, mitsko stvorenje grifon, koje kombinira lava i orla, jedan je od simbola Isusa Krista.

Često se događa da znak koji se prvi put pojavio kao ikonički znak kasnije postane znak-simbol.

PRIMJER, slovo  u feničanskoj abecedi zvalo se "alef" - bik (podsjeća na glavu bika). Tada je bila ikonički znak. U grčkom jeziku ovo slovo nije povezano s bikom i postaje znak-simbol.

Kako se matematički simbolizam razvija, ikonički znakovi također se zamjenjuju simbolima. Na primjer, rimski broj V nalikovao je otvorenoj šaci (pet prstiju), dok je moderni 5 simbol.

Znakovi označavaju planet Veneru i Mars u astronomiji, au biologiji - žensko i muško. Ovi znakovi su ikoničnog porijekla. Prvi od njih je stilizirana slika antičkog zrcala, drugi je štit s kopljem.

Denotati nisu uvijek predmeti iz stvarnog života i zbirke takvih objekata. Mnogi primjeri denotata koji nisu predmeti stvarnosti sadržani su u poznatoj bajci L. Carol "Alisa u zemlji čudesa". Također figurativno formulira načelo nastanka takvih denotata:

“Živio je da živi (ožujski Hare – prim. autora), ali da bude nešto što nije bio.” S tim u vezi, ruska poslovica "živio je i bio" uopće ne izgleda kao tautologija.

Strukturu znaka opisuje takozvani "Fregeov trokut" (po imenu istaknutog njemačkog logičara, koji je mnogo učinio za razvoj teorije formalnih jezika). U drugoj terminologiji naziva se "semantički trokut" ili trokut Ogdena i Richardsa. Uspostavlja vezu između znaka, denotata znaka i pojma znaka.

Riža. 4.3.1. Fregeov trokut

Uz pomoć ovog trokuta može se razjasniti niz dobro poznatih jezičnih učinaka (znakovnih situacija).

1) Sinonimija- situacija koja se sastoji od potpunog ili djelomičnog podudaranja značenja različitih znakova:

Riža. 4.3.2. Shema sinonimije

2) znakovi mogu imati isti denotat, ali imati različita značenja (denotativni identitet). Na primjer, znakovi "sin 30 °" i "1/2" imaju isti naziv, odnosno nazivaju isti stvarni broj, ali značenje ovih znakova je drugačije:

Riža. 4.3.3. Shema denotativnog identiteta

3) Polisemija(polisemija) - znak ima više od jednog značenja:

Riža. 4.3.4. Dijagram polisemije

ZANIMLJIVA ČINJENICA

Referenca za povijest

Prvi koraci prema stvaranju formalnog jezika logike poduzeti su u antici. Aristotel (384.-322. pr. Kr.) uveo je slovne varijable za subjekte i predikate jednostavnih kategoričkih iskaza, a voditelj stoičke škole Krisip (oko 281.-208. pr. Kr.) i njegovi učenici - varijable za iskaze općenito. U 16. stoljeću R. Descartes (1596-1659) stvorio je osnovu suvremenog formalnog jezika matematike – algebru slova, a G. W. Leibniz (1646-1716) prenio je Descartesovu simboliku u logiku. Glavni jezik logike u to vrijeme bio je prirodni jezik. Shvativši značajne sintaktičke i semantičke nedostatke prirodnog jezika (glomaznost, dvosmislenost i netočnost izraza, nejasna sintaktička pravila itd.), Leibniz je formulirao tezu da se bez stvaranja posebnog umjetnog jezika - "univerzalnog računa" - daljnji razvoj logika je nemoguća. Ali tek krajem 19. stoljeća ideja o Leibnizu razvijena je u studijama J. Boolea (1815-1864), S. Jevonsa (1835-1882), E. Schroedera (1841-1902) i drugih. - pojavila se algebra logike.

Daljnji razvoj jezika logike povezan je s imenima J. Peana (1858-1932) i G. Fregea (1848-1925). Peano je uveo niz simbola prihvaćenih u modernoj matematici, posebno “”, “”, “”, kako bi označio, respektivno, odnose članstva, unije i presjeka skupova. Frege je izgradio aksiomatski račun prijedloga i predikata, koji je sadržavao sve osnovne elemente modernog logičkog računa.

Na temelju rezultata koje je dobio Frege, a koristeći modificirani Peano simbolizam, B. Russell (1872-1970) i ​​AN Whitehead (1861-1947) u zajedničkom djelu “Principes of Mathematics” (1913) formulirali su glavne odredbe formalnog jezik logike.

Danas jezik logike nalazi važnu primjenu u informatici, u razvoju programskih jezika, računalnog softvera i raznih tehničkih sustava.

Pojava programskih jezika pada na početak 50-ih godina XX stoljeća. U početku su se programi stvarali na jeziku strojnih instrukcija i bili su nizovi binarnih kodova koji su se unosili s konzole u računalo radi izvršavanja.

Prvi korak u razvoju programskih jezika bilo je uvođenje mnemotehničkih (mnemotehničkih - memorijskih) oznaka za naredbe i podatke te stvaranje strojnog programa koji te mnemoničke oznake prevodi u strojne kodove. Takav program, a s njim i sustav notacije, nazvan je asembler .

Svaki tip stroja imao je svog asemblera, a prijenos programa sa stroja na stroj bio je vrlo naporan postupak. Stoga se pojavila ideja o stvaranju strojno neovisnog jezika. Takvi su se jezici počeli pojavljivati ​​sredinom 1950-ih, a program koji je prevodio rečenice ovog jezika na strojni jezik postao je poznat kao prevoditelj .

Postoji nekoliko tisuća programskih jezika i njihovih dijalekata (varijanti). Mogu se klasificirati na različite načine. Neki autori čitavu raznolikost programskih jezika dijele na proceduralne i deklarativne. U proceduralnim jezicima transformacija podataka se specificira opisom slijeda radnji na njima. U deklarativnim jezicima transformacija podataka je specificirana prvenstveno opisom odnosa između samih podataka. Prema drugoj klasifikaciji, programski jezici se mogu podijeliti na proceduralne, funkcionalne, logičke, objektno orijentirane. Međutim, svaka je klasifikacija donekle proizvoljna, jer, u pravilu, većina programskih jezika uključuje značajke jezika različitih tipova.

Posebno mjesto među programskim jezicima zauzimaju jezici koji osiguravaju rad sustava za upravljanje bazama podataka (DBMS). Često se u njima razlikuju dva podsustava: jezik opisa podataka i jezik manipulacije podacima (drugi naziv je jezik upita).

21. stoljeće vrijeme je kada je posjedovanje informacija najvažnija konkurentska prednost u bilo kojem području. Međutim, neće donijeti nikakvu korist ako nije izražena na jeziku razumljivom onima kojima je namijenjena ili ako nema prevoditelja koji bi adresatu mogao prenijeti njegovo značenje.

Trenutno na zemlji živi oko 2000 ljudi. Njihovo razlikovno obilježje, prije svega, je jezik.

Zajedno s kolokvijalnim (prirodnim) čovječanstvo je stvorilo mnoge umjetne jezike. Svaki od njih je dizajniran za rješavanje određenih problema.

Takvi znakovni sustavi uključuju formalne jezike, čiji su primjeri prikazani u nastavku.

Definicije

Prije svega, definirajmo što je jezik. Ova se riječ obično shvaća kao znakovni sustav koji se koristi za uspostavljanje komunikacije između ljudi i znanja.

Osnova većine i umjetnih i prirodnih jezika je abeceda.

To je skup znakova koji se koriste za formiranje riječi i fraza.

Jezik karakterizira:

  • skup znakova koji se koriste;
  • pravila za sastavljanje "riječi", "fraza" i "tekstova" od njih;
  • skup pravila (sintaktičkih, pragmatičkih i semantičkih) za korištenje konstruiranih konstrukcija.

Karakteristike prirodnih jezika

Kao što je već spomenuto, svi jezici su uvjetno podijeljeni na umjetne i prirodne. Postoje mnoge razlike među njima.

Govorni jezici su prirodni. Njihove karakteristike uključuju, između ostalog:

  • višeznačnost većine riječi;
  • postojanje sinonima i homonima;
  • prisutnost više naziva za isti predmet;
  • postojanje iznimaka od gotovo svih pravila.

Sve ove karakteristike glavne su razlike između prirodnih znakovnih sustava i formalnih jezika. Primjeri dvosmislenih riječi i izjava svima su poznati. Dakle, riječ "eter", ovisno o kontekstu, može značiti i tvar i radio ili televizijsko emitiranje.

Glavne funkcije govornih jezika su:

  • komunikacija;
  • kognitivna aktivnost;
  • izražavanje emocija;
  • utjecaj na sugovornika (dopisnika, ako govorimo o korespondenciji).

Karakteristike umjetnih jezika

Umjetne jezike stvaraju ljudi za posebne svrhe ili za određene skupine ljudi.

Jedna od glavnih karakteristika umjetnih jezika je nedvosmislena definicija njihovog vokabulara, kao i pravila za davanje značenja i formiranje izraza.

Formalni jezici i gramatike

Jezik, bio prirodan ili umjetni, može postojati samo ako postoji skup specifičnih pravila. Istodobno, treba osigurati dosljedan, kompaktan i točan prikaz odnosa i svojstava predmetnog područja koje se proučava. Ako su strogo formulirani, onda kažu da je jezik. Programski jezici su primjeri takvih znakovnih sustava, iako, strogo govoreći, oni radije zauzimaju srednju poziciju (vidi dolje).

Shema za konstruiranje formalnih znakovnih sustava je sljedeća:

  • odabire se abeceda (skup početnih simbola);
  • navedena su pravila za građenje izraza (sintakse) jezika.

Opseg primjene

Formalna logika, programiranje itd.) koriste se u procesu znanstvenog istraživanja. Oni su bolji od prirodnih za predstavljanje znanja i sredstvo su objektivnije i točnije razmjene informacija.

Formalni jezici uključuju sve poznate sustave matematičkih i kemijskih simbola, Morseovu azbuku, notne zapise itd.

Osim toga, formalni programski jezici se široko koriste. Njihov brzi razvoj započeo je sredinom 20. stoljeća, u vezi s pojavom računalne tehnologije.

Jezik formalne logike

U srcu svakog programskog jezika je matematika. Ona se pak oslanja na znakovni sustav formalne logike.

Kao znanost, logiku je stvorio Aristotel. Također je razvio pravila za transformaciju iskaza koja čuvaju njihovu istinitost bez obzira na sadržaj pojmova uključenih u te izjave.

Formalna logika se bori s "nedostacima" prirodnih jezika povezanih s dvosmislenošću nekih iskaza itd. U tu svrhu operacije s mislima zamjenjuju se radnjama sa znakovima formalnog jezika. To eliminira svaku nesigurnost i omogućuje vam da točno utvrdite istinitost izjave.

Značajke programskih jezika

Kao što je već spomenuto, uz određene rezerve mogu se svrstati u formalne.

S potonjima ih spajaju mnoga sintaktička pravila, a s prirodnima neke ključne riječi i konstrukcije.

Za izradu programskog jezika potrebno je odrediti skup valjanih simbola i ispravne programe jezika te značenje svakog ispravnog programa. Ako se prvi zadatak može riješiti formalizacijom, u slučaju potonjeg ovi pristupi ne funkcioniraju.

Skup valjanih znakova u programskim jezicima su znakovi koji se mogu upisivati ​​s tipkovnice. Oni su prvi dio ASCII tablice kodiranja.

gramatike

Programski jezici, kao i svaki drugi, imaju gramatiku. Ovaj se pojam shvaća kao opis načina sastavljanja prijedloga. Gramatike se opisuju na razne načine. U slučaju programskih jezika, to su pravila koja su specificirana uređenim parovima nizova znakova dva tipa: definirajući sintaktičke konstrukcije i semantička ograničenja. Prilikom postavljanja gramatika prvo formalno utvrđuju pravila za građenje sintaktičkih konstrukcija, a zatim postavljaju semantičke u nekom od prirodnih jezika.

Pravila su napisana u grafičkom obliku pomoću posebnih dijagrama. U početku je ovaj pristup primijenjen pri stvaranju Pascal jezika. Međutim, tada se počeo naširoko koristiti u drugima.

Klasifikacija programskih jezika

Trenutno ih je nekoliko tisuća, zajedno s “dijalektima”. Oni se dijele na proceduralne i deklarativne. U jezicima prvog tipa transformacija podataka je određena opisom slijeda radnji koje se na njima izvode, a druge - odnosima. Postoje i druge klasifikacije. Na primjer, programski jezici se dijele na funkcionalne, proceduralne, objektno orijentirane i logičke. Ako problemu pristupimo strogo, onda nijedna klasifikacija ne može biti objektivna. Uostalom, značajan dio programskih jezika ima mogućnosti formalnih sustava nekoliko vrsta odjednom. S vremenom će se rubovi vjerojatno još više zamutiti.

Sada ćete moći odgovoriti na pitanje: "Koje formalne jezike poznajete?". Znanstvenici ih nastavljaju usavršavati kako bi omogućili rješavanje raznih praktičnih i teorijskih problema koji se trenutno smatraju nerješivim.

Imate pitanja?

Prijavite grešku

Tekst za slanje našim urednicima: