Кіріспе

Сөздердің белгілі бір ережелер бойынша құрылған тізбегі – математика және информатикадағы техникалық термин.

Логика, математика, информатика және лингвистикада формальды тіл – әріптері әліпбиден алынған және нақты ережелер жинағына сәйкес дұрыс құрылған сөздерден тұрады. Формальды тілдің әліпбиі символдардан, әріптерден немесе сөздер құрауға қолданылатын таңбалардан тұрады. Белгілі бір формальды тілге жататын сөздер кейде дұрыс құрылған сөздер немесе дұрыс құрылған формулалар деп аталады. Формальды тіл көбінесе оның құралу ережелерін қамтитын ресми грамматика, мысалы, тұрақты грамматика немесе контекстсіз грамматика арқылы анықталады. Компьютерлік ғылымда формальды тілдер, басқалармен қатар, бағдарламалау тілдерінің грамматикасын және табиғи тілдердің формалдануға ұшыраған түрлерін анықтау үшін негіз ретінде қолданылады, онда тілдің сөздері мағыналармен немесе семантикамен байланысты ұғымдарды көрсетеді. Есептеу күрделілігі теориясында шешімдерді табуға қойылатын мәселелер әдетте формальды тілдер ретінде беріледі, ал күрделілік кластары – шектеулі есептеу мүмкіндіктері бар машиналармен талдана алатын формальды тілдердің жиынтығы ретінде анықталады. Логика мен математика негіздерінде формальды тілдер аксиоматикалық жүйелердің синтаксисін бейнелеу үшін қолданылады, ал математикалық формализм – математиканың барлық бөлігін осылайша формальды тілдердің синтаксистік өңдеуіне дейін тоғытуға болатын философия. Формальды тілдер теориясы осындай тілдердің таза синтаксистік аспектілерін, яғни олардың ішкі құрылымдық ерекшеліктерін зерттейді. Формальды тілдер теориясы лингвистикадан туындады, ол табиғи тілдердің синтаксистік реттелілігін түсінудің бір жолы ретінде пайда болды.

Тарих

XVII ғасырда Готфрид Лейбниц пиктограммаларды қолданатын универсалды және формалды тіл – characteristica universalis-ті ойлап тапты және сипаттады. Кейін Карл Фридрих Гаусс Гаусс кодтарының мәселесін зерттеді. Готтлоб Фреге Лейбництің идеяларын жүзеге асыруға тырысты, осы мақсатта алғаш рет "Begriffsschrift" (1879) еңбегінде сипатталған және оның 2 томдық "Grundgesetze der Arithmetik" (1893/1903) еңбегінде толыққанды дамыған белгілеу жүйесін пайдаланды. Бұл «таза тілдің формалды тілін» сипаттады. ХХ ғасырдың бірінші жартысында формалды тілдерге қатысты бірнеше маңызды жетістіктер болды. Аксель Тью 1906 және 1914 жылдар аралығында сөздер мен тілге қатысты төрт мақала жариялады. Соңғысы кейіннен Эмиль Пост «Тьюе жүйелері» деп атаған, ал шешілмейтін мәселенің алғашқы мысалын ұсынды. Пост бұл мақаланы 1947 жылы «жартылай топтар үшін сөз мәселесінің рекурсивті түрде шешілмейтінін» дәлелдеу үшін негіз ретінде пайдаланды және кейіннен формалды тілдерді құрудың канондық жүйесін жасады. 1907 жылы Леонардо Торрес Квеведо Венада механикалық суреттерді (механикалық құрылғыларды) сипаттау үшін формалды тілді енгізді. Ол «Sobre un sistema de notaciones y símbolos destinados a facilitar la descripción de las máquinas» («Машиналарды сипаттауды жеңілдетуге арналған белгілер мен символдар жүйесі туралы») атты еңбегін жариялады. Хайнц Земанек оны машина құралын сандық басқаруға арналған бағдарламалау тіліне балама деп бағалады. Ноам Чомский формалды және табиғи тілдердің абстрактілі бейнесін жасады, ол Чомский иерархиясы деп белгілі. 1959 жылы Джон Бэкус FORTRAN құрудағы жұмысынан кейін жоғары деңгейдегі бағдарламалау тілінің синтаксисін сипаттау үшін Backus-Naur формасын әзірледі. Питер Наур ALGOL60 есебінің хатшысы/редакторы болды, онда ол ALGOL60-тың формалды бөлігін сипаттау үшін Backus-Naur формасын қолданды.

Әліпбидегі сөздер

Алфавит, формалды тілдер контекстінде, кез келген жиын болуы мүмкін; оның элементтері әріптер деп аталады. Алфавитта шексіз көп элементтер болуы мүмкін; мысалы, бірінші реттік логика көбінесе ∧, ¬, ∀ және жақшалар сияқты символдардан өзге, x0, x1, x2 сияқты шексіз көп элементтерді қамтиды, олар айнымалылар рөлін атқарады. Дегенмен, формалды тіл теориясындағы көптеген анықтамалар шектеулі элементтері бар алфавиттерді көрсетеді, және көптеген нәтижелер тек оларға ғана қатысты. Көбінесе, сөзді оның әдеттегі мағынасында немесе ASCII немесе Unicode сияқты кез келген шектеулі таңбалық кодтауды қолдану орынды. Алфавит бойынша сөз – әріптердің кез келген шекті тізбегі (яғни, жол) болуы мүмкін. Алфавит Σ бойынша барлық сөздер жиыны әдетте Σ* (Клине жұлдызын пайдаланып) деп белгіленеді. Сөздің ұзындығы – оны құрайтын әріптер саны. Кез келген алфавит үшін ұзындығы 0 болатын бір ғана сөз бар, ол бос сөз, оны көбінесе e, ε, λ немесе тіпті Λ арқылы белгілейді. Сөздерді біріктіру арқылы екі сөзді жаңа сөз құрауға болады, оның ұзындығы бастапқы сөздердің ұзындықтарының қосындысына тең. Сөзді бос сөзбен біріктірудің нәтижесі бастапқы сөз болады. Кейбір қолданыстарда, әсіресе логикада, алфавит сөздік деп те аталады, ал сөздер формулалар немесе сөйлемдер деп белгіленеді; бұл әріп/сөз метафорасын жойып, оны сөз/сөйлем метафорасымен алмастырады.

Анықтама

Формальды тіл L, алфавит Σ үстінде, Σ* жиынының ішкі жиыны болып табылады, яғни, бұл алфавиттен құралған сөздердің жиынтығы. Кейде сөздер жиынтығы тіркестерге топтастырылады, ал "дұрыс құрылған тіркестерді" жасау үшін ережелер мен шектеулер белгіленеді. Компьютер ғылымы мен математикада, әдетте жаратылыс тілдерімен жұмыс істемейтін жағдайларда, "формальды" деген сөз жиі артық деп есептеледі. Формальды тілдер теориясы көбінесе синтаксистік ережелермен сипатталатын формальды тілдерді зерттейді, бірақ "формальды тіл" ұғымының нақты анықтамасы осылай болады: берілген алфавиттен құралған, шекті ұзындығы бар (мүмкін шексіз) жолдардың жиынтығы, одан артық немесе кем емес. Іс жүзінде, ережелермен сипатталатын көптеген тілдер бар, мысалы, реттелген тілдер немесе контекстсіз тілдер. Формальды грамматика ұғымы, синтаксистік ережелермен сипатталған "тіл" деген түсінікке жақын болуы мүмкін. Анықтаманы шартты түрде пайдалану арқылы, нақты формальды тіл оны сипаттайтын формальды грамматикамен байланыстырылып қарастырылады.

Бағдарламалау тілдері

Компилятордың әдетте екі ерекше компоненті болады. Лексикалық талдаушы, кейде lex сияқты құралмен жасалатын, бағдарламалау тілінің грамматикасының символдары – мысалы, идентификаторлар немесе кілт сөздер, сандық және жол мәндері, тыныш белгілер мен операторлар – анықтайды. Бұл символдардың өзі әдетте тұрақты өрнектер арқылы сипатталатын, қарапайым формальды тілмен беріледі. Ең қарапайым түсінік деңгейінде, талдаушы, кейде yacc сияқты талдау генераторымен жасалатын, бастапқы бағдарламаның синтаксистік жағынан дұрыс екенін, яғни компилятор құрылған бағдарламалау тілінің грамматикасына сәйкес келіп, дұрыс құрылғандығын анықтауға тырысады. Әрине, компиляторлар бастапқы кодты талдаудан басқа да көп жұмыс жасайды – олар оны көбінесе орындалатын форматқа аударады. Сондықтан талдаушы әдетте "иә" немесе "жоқ" деген жауаптан гөрі көп нәрсе шығарады, көбінесе абстрактілі синтаксистік ағаш түрінде. Бұл компилятордың келесі кезеңдерінде аппараттық құрылғыда тікелей орындалатын машиналық кодты немесе виртуалды машинада орындалуын қажет ететін аралық кодты қамтитын орындалатын файлды жасау үшін қолданылады.

Формалды теориялар, жүйелер және дәлелдемелер

Математикалық логикада формальды теория – формальды тілде білдірілген сөйлемдер жиынтығы. Формальды жүйе (сондай-ақ логикалық есептеу немесе логикалық система деп аталады) формальды тіл мен дедуктивті аппараттан (сондай-ақ дедуктивті жүйе деп аталады) тұрады. Дедуктивті аппарат трансформация ережелері жиынтығынан – олар жарамды қорытынды ережелері ретінде қарастырылуы мүмкін, немесе аксиомалар жиынтығынан, немесе екеуінен де құралуы мүмкін. Формальды жүйе бір немесе бірнеше өрнектерден басқа бір өрнекті шығару үшін қолданылады. Формальды тілді оның формулалары арқылы анықтауға болады, бірақ формальды жүйені оның теоремалары арқылы анықтауға болмайды. Екі формальды жүйе бірдей теоремаларға ие болуы мүмкін, бірақ олар маңызды дәлелдемелік жағынан ерекшеленуі мүмкін (мысалы, А формуласы Б формуласының синтаксистік салдары біреуінде болса, екіншісінде болмауы мүмкін). Формальды дәлел немесе туынды – жақсы құрылған формулалардың шекті тізбегі (оларды сөйлемдер немесе пікірлер ретінде қарастыруға болады), олардың әрқайсысы аксиома болып табылады немесе тізбектегі алдыңғы формулалардан қорытынды ережесі арқылы туындайды. Тізбектегі соңғы сөйлем – формальды жүйенің теоремасы. Формальды дәлелдемелер пайдалы, себебі олардың теоремаларын нақты пікірлер ретінде қарастыруға болады.

Түсіндірмелер мен үлгілер

Ресми тілдер табиғаты жағынан толыққанды синтаксистік болып табылады, бірақ тіл элементтеріне мағына беруге мүмкіндік беретін семантикамен жабдықталуы мүмкін. Мысалы, математикалық логикада нақты бір логиканың барлық мүмкін формулалар жиыны формальды тіл болып саналады, ал интерпретация әрбір формулаға мағына тағайындайды – әдетте, шындық мәнін. Формальды тілдердің интерпретацияларын зерттеу ресми семантика деп аталады. Математикалық логикада бұл көбінесе модельдер теориясы арқылы жүзеге асырылады. Модельдер теориясында формулаларда кездесетін терминдер математикалық құрылымдардағы объектілер ретінде интерпретацияланады, ал белгілі бір құралымдық интерпретация ережелері формуланың шындық мәнін оның терминдерінің интерпретациясынан қалай шығаруға болатынын анықтайды; формуланың моделі – бұл формуланың шындыққа айналуын қамтамасыз ететін терминдердің интерпретациясы.