Wiadomości wstępne

W tym dziale zapoznasz się z podstawowymi definicjami i pojęciami dotyczącymi przedstawianego zagadnienia.

Język

Pierwsze podstawowe pojęcie,  z którym należy się zapoznać to język.

Język to system zorganizowanych znaków,symboli wraz z regułami posługiwania się nimi.

Języki dzielimy na:

  • naturalne
  • sztuczne

Język naturalny (etniczny) to język powstały w procesie ewolucji biologicznej lub społecznej.

Język naturalny powstaje w sposób spontaniczny i ewolucyjny. Jego reguły są trudne lub wręcz niemożliwe do ścisłego określenia,tj. takiego określenia,które umożliwiłoby uzyskać wszystkie zdania (napisy) danego języka. Do języków naturalnych zaliczamy np język polski,angielski,hiszpański,język gestowo-mimiczny.

Język sztuczny (formalny) to ściśle określony system znaków wraz z regułami postępowania z tymi symbolami,a także regułami ich interpretowania.

Reguły języków sztucznych zostają określone przed rozpoczęciem ich użytkowania. Języki te są wcześniej zaplanowane i można je zdefiniować w sposób ścisły. Przykłady języków formalnych to różnego rodzaju kody,języki zapisu dokumentów,język logiki,języki programowania.

Składowe języka

Trzy podstawowe elementy każdego języka to:

  • syntaktyka
  • semantyka
  • pragmatyka

Syntaktyka (składnia) to opis reguł konstrukcji języka pozwalających na zbudowanie wszystkich zdań uznanych za poprawne dla tego języka.

Reguły syntaktyczne możemy podzielić na:

  • formujące –pozwalają określić sposoby poprawnego tworzenia wyrażeń
  • transformujące –pozwalają określić sposoby poprawnego przekształcania wyrażeń tak,aby zachowana była pewna wyróżniona własność wyrażenia.

Semantyka to opis znaczenia przypisywanego zdaniom poprawnym,czyli odniesienie wygenerowanych zdań do rzeczywistości. Semantyka bada także relacje pomiędzy podstawowym znaczeniem wyrazu,a jego użyciem w konkretnej wypowiedzi.

Dla danego języka jako zbioru zdań uznanych za poprawne możemy przygotować wiele różnych opisów znaczeń.

Pragmatyka to zespół reguł i zaleceń mówiących o tym,jak stosować składnię i semantykę języka. Bada relacje pomiędzy językiem i jego użytkownikami,pozwala na tworzenie różnych form lingwistycznych o zbliżonym znaczeniu semantycznym i mówi,które z tych form lepiej jest wybrać.

Innymi słowy,pragmatyka bada sposoby posługiwania się językiem przez ludzi,w szczególności rozumienie i interpretowanie wypowiedzi w zależności od kontekstu,w którym są użyte.

Dla ciekawych

Najłatwiej sformalizować składnię języka,nieco trudniej- semantykę. Dla pragmatyki nie ma zadowalających metod formalizacji.

Metody definiowania składni:

  • gramatyki generacyjne
  • gramatyki dwupoziomowe
  • składnia abstrakcyjna (np wiedeńska metoda definiowania VDL)

Metody definiowania semantyki:

  • metoda operacyjna
  • metoda denotacyjna
  • metoda aksjomatyczna

Metajęzyk

Nie da się opisać języka jego własnymi słowami,dlatego do opisu potrzebny jest tzw. metajęzyk.

Metajęzyk to język służący do opisu innego języka.

Dla języków naturalnych metajęzykiem może być inny język,np dla uczących się języka hiszpańskiego metajęzykiem może być język polski. Dla języków sztucznych,przede wszystkim dla języków programowania,elementami metajęzyka są takie symbole jak:  wyrażenie,instrukcja,podprogram itp.

Dla ciekawych

Antynomia Grellinga

Załóżmy,że istnieje język,który można opisać nim samym. Podzielimy jego słowa na dwie klasy:

  • orzeczniki autosemantyczne,które orzekają o sobie,np. rzeczownik,sześciosylabowy,osiemnastoliterowy
  • orzeczniki heterosemantyczne,które nie orzekają o sobie,np. czasownik,dwusylabowy,sześcioliterowy

Spróbujmy sprawdzić,do której klasy należy słowo „heterosemantyczny”.
Jeśli „heterosemantyczny”jest heterosemantyczny – to orzeka o sobie samym,zatem z definicji jest autosemantyczny.
Jeśli zaś „heterosemantyczny”jest autosemantyczny – to z definicji orzeka o sobie,zatem jest heterosemantyczny.
Otrzymujemy w ten sposób sprzeczność,a więc istnieje konieczność korzystania z metajęzyka.

Przy opisie języka posługujemy się dwoma rodzajami symboli:

  • nieterminalnymi - pomocnymi przy budowie języka,symbole te nie mogą wystąpić w generowanym słowie języka. Symbole metajęzyka często zapisuje się kursywą w nawiasach kątowych.
  • terminalnymi - budującymi język właściwy,symbole te mogą wystąpić w generowanym słowie języka

Składnię możemy opisywać za pomocą

  • drzewa syntaktycznego –służącego początkowo do opisu języków naturalnych
  • notacji BNF –służącej głównie do opisu języków sztucznych

Drzewo syntaktyczne

Analiza syntaktyczna  przypomina znany ze szkolnych ćwiczeń rozbiór gramatyczny zdań.

Przykład

Przykładowe zdanie „Wytrwałe wilki upolowały jelenia”  dzielimy na część podmiotu („wytrwałe wilki”) oraz część orzeczenia („upolowały jelenia”). W następnym kroku część podmiotu daje rozgałęzienie na podmiot (rzeczownik) i przydawkę (przymiotnik),natomiast część orzeczenia- na orzeczenie (czasownik) i dopełnienie (rzeczownik). Tak powstaje drzewo syntaktyczne.

 

Przykład: Drzewo syntaktyczne dla zdania:„Wytrwałe wilki upolowały jelenia.”

Notacja BNF

Notacja BNF (ang Backus-Naur Form) to metoda definiowania języka formalnego. Jest powszechnie wykorzystywana w informatyce do zapisu składni języków programowania.

Notacja BNF jest zestawem reguł produkcji postaci:

<symbol> ::= <wyrażenie zawierające symbole>

Po lewej stronie występuje pojedynczy symbol nieterminalny,natomiast po prawej ciąg symboli nieterminalnych i terminalnych.

Dla zdania z wcześniejszego przykładu otrzymamy następującą notację:

Przykład: Notacja BNF dla zdania:„Wytrwałe wilki upolowały jelenia.”

Zaczynając od symbolu <zdanie>,zastępując kolejne symbole nieterminalne z prawej strony,dochodzimy do samych symboli terminalnych,co możemy zapisać:

<zdanie>=>wytrwałe wilki upolowały jelenia

Ze względu na dwukrotne określenie w powyższej definicji symbolu <rzeczownik>możemy uzyskać jeszcze inne zdanie uznane za poprawne. Dwa ostatnie zdania:

<rzeczownik>::= wilki
<rzeczownik>::= jelenia

możemy zapisać równoważnie:

<rzeczownik>::= wilki | jelenia

 

Dla ciekawych

Notacja BNF została wprowadzona przez Johna Backusa w czasie prac nad językiem Fortran,a później na szerszą skalę wykorzystywana przez Petera Naura do zdefiniowania składni języka Algol.

 

Pytania sprawdzające

  • Czy jesteśmy w stanie zdefiniować wszystkie zdania poprawne dla danego języka naturalnego?
  • Czy da się zdefiniować język za pomocą zawartych w nim słów?
  • Czy dla każdego zdania istnieje tylko jeden możliwy zapis w notacji BNF?

Jeżeli nie znasz odpowiedzi na powyższe pytania,przeczytaj jeszcze raz powyższe wiadomości.