Пролог
от Всичко за 1 лев, свободната енциклопедия
Версия от 10:19, 2 дек 2005 Nickysn (Беседа | приноси) Лема 1 ← Go to previous diff |
Версия от 12:18, 2 дек 2005 Samael (Беседа | приноси) Go to next diff → |
||
Ред 1: | Ред 1: | ||
- | '''Пролог''' е език за програмиране от пето поколение, който издига програмирането до нови невиждани висоти. Името ''Пролог'' произлиза от ПРОстоЛОГия - така се казва науката за изучаване на простотията. За разлика от всички останали езици, Пролог поддържа рекурсия и изкуствен интелект и всяка програма написана на него е безгрешна. Това е причината поради която той е известен сред програмистите, като ''висшият език''. | + | '''Пролог''' е език за програмиране от пето поколение, който издига програмирането до нови невиждани висоти. Името ''Пролог'' произлиза от ПРОстоЛОГия - така се казва науката за изучаване на простотията. За разлика от всички останали езици, Пролог поддържа рекурсия и [[изкуствен интелект]] и всяка програма написана на него е безгрешна. Това е причината поради която той е известен сред програмистите, като ''висшият език''. |
== История == | == История == | ||
Ред 13: | Ред 13: | ||
=== Рекурсия === | === Рекурсия === | ||
- | Основно предимство на Пролог е, че той е много близък до човешкото мислене. Общоизвестен факт е, че повечето хора мислят рекурсивно. Опитът на преподавателите от ФМИ с начинащи програмисти е показал, че студентите правят много повече грешки при използване на един обикновен if, отколкото когато пишат рекурсия. Ето защо конструкции като if, for и while не са включени в езика и това води до неговата безпогрешност. | + | Основно предимство на Пролог е, че той е много близък до човешкото мислене. Общоизвестен факт е, че повечето [[хора]] мислят рекурсивно. Опитът на преподавателите от ФМИ с начинащи програмисти е показал, че студентите правят много повече грешки при използване на един обикновен if, отколкото когато пишат рекурсия. Ето защо конструкции като if, for и while не са включени в езика и това води до неговата безпогрешност. |
=== Безгрешност на програмите === | === Безгрешност на програмите === | ||
Ред 19: | Ред 19: | ||
==== Лема 1 ==== | ==== Лема 1 ==== | ||
- | Всяка рекурсивна програма е строго по-яка от произволна нерекурсивна такава. Доказателството на тази лема няма да прилагаме, но то може да бъде намерено в "Теория на Програмите" на проф. И. Сосков. (В същата книга ще намерите и дефиницията на понятието ''якост'' на програмите) | + | Всяка рекурсивна програма е строго по-яка от произволна нерекурсивна такава. Доказателството на тази лема няма да прилагаме, но то може да бъде намерено в ''"Теория на Програмите"'' на проф. И. Сосков. (В същата книга ще намерите и дефиницията на понятието ''якост'' на програмите) |
==== Лема 2 ==== | ==== Лема 2 ==== | ||
Ред 25: | Ред 25: | ||
==== Теорема 1 ==== Всяка програма на Пролог е безгрешна. | ==== Теорема 1 ==== Всяка програма на Пролог е безгрешна. | ||
- | Доказателство: Да допуснем че съществува програма P{Q,R,W,X,T} за която е известно, че съдържа поне един [[бъг]] - B, т.е. множеството W е непразно. Както знаем B принадлежи на някое ''бъгаво пространство'' E. Да означим с B' образа на B в T и да намерим множеството от елементи в Q, за които е изпълнено σ(T)=σ(R)\{Σa}. От Леми 1 и 2, както и от принципа на Ляпунов-Бернщайн-Шварц следва, че програмата P няма приложение в каноничното представяне в стандартния модел на Пролог. | + | Доказателство: Да допуснем че съществува програма P{Q,R,W,X,T} за която е известно, че съдържа поне един [[бъг]] - B, т.е. множеството W е непразно. Както знаем, B принадлежи на някое ''бъгаво пространство'' E. |
+ | |||
+ | Да означим с B' образа на B в T и да намерим множеството от елементи в Q, за които е изпълнено σ(T)=σ(R)\{Σa}. От Леми 1 и 2, както и от принципа на Ляпунов-Бернщайн-Шварц следва, че програмата P няма приложение в каноничното представяне в стандартния модел на Пролог. | ||
==== Следствие 1 ==== | ==== Следствие 1 ==== |
Версия от 12:18, 2 дек 2005
Пролог е език за програмиране от пето поколение, който издига програмирането до нови невиждани висоти. Името Пролог произлиза от ПРОстоЛОГия - така се казва науката за изучаване на простотията. За разлика от всички останали езици, Пролог поддържа рекурсия и изкуствен интелект и всяка програма написана на него е безгрешна. Това е причината поради която той е известен сред програмистите, като висшият език.
Съдържание |
История
Пролог е разработен през 1337-а година от Димитър Добрев в катедрата по Пролог на ФМИ.
Предимствата
Пролог има множество предимства пред нисшите езици.
Декларативен подход
Пролог използва т.нар. "декларативен подход", за който е характерно, че при него се декларират разни работи. Например следната програма на Пролог
Gosho :- Zhivka.
декларира, че Гошо изпитва сексуално влечение към Живка.
Рекурсия
Основно предимство на Пролог е, че той е много близък до човешкото мислене. Общоизвестен факт е, че повечето хора мислят рекурсивно. Опитът на преподавателите от ФМИ с начинащи програмисти е показал, че студентите правят много повече грешки при използване на един обикновен if, отколкото когато пишат рекурсия. Ето защо конструкции като if, for и while не са включени в езика и това води до неговата безпогрешност.
Безгрешност на програмите
Може да се докаже математически, че всяка програма на Пролог е безгрешна. Поради липса на място, ние тук ще очертаем само основните линии на доказателството, като извеждането на пълното доказателство ще оставим на любознателния читател.
Лема 1
Всяка рекурсивна програма е строго по-яка от произволна нерекурсивна такава. Доказателството на тази лема няма да прилагаме, но то може да бъде намерено в "Теория на Програмите" на проф. И. Сосков. (В същата книга ще намерите и дефиницията на понятието якост на програмите)
Лема 2
Ако едно множество от безкванторни формули не притежава модел, то някое крайно множество от затворени частни случаи на формули от това множество е неизпълнимо. Доказателството също ще оставим на читателя.
Теорема 1
Всяка програма на Пролог е безгрешна.Доказателство: Да допуснем че съществува програма P{Q,R,W,X,T} за която е известно, че съдържа поне един бъг - B, т.е. множеството W е непразно. Както знаем, B принадлежи на някое бъгаво пространство E.
Да означим с B' образа на B в T и да намерим множеството от елементи в Q, за които е изпълнено σ(T)=σ(R)\{Σa}. От Леми 1 и 2, както и от принципа на Ляпунов-Бернщайн-Шварц следва, че програмата P няма приложение в каноничното представяне в стандартния модел на Пролог.
Следствие 1
Ако една програма не може да се напише на Пролог, то тя е бъгава.
Вреден за здравето?
Макар, че според привържениците на езика, програмирането на Пролог е безвредно, някои лекари се опасяват, че то може да бъде опасно за здравето. Някои често наблюдавани явления са вглъбен поглед, разстройство, неспокоен сън, късогледство и косопад. При по-продължителна употреба може да доведе и до проява на симптоми на шизофрения, но според самите програмисти на Пролог тези симптоми не им пречат да водят нормален живот.
Езикът на бъдещето
Понеже Пролог е толкова мощен, съвременните изчислителни машини са твърде слаби и недостойни за него. Ето защо за да се изпита истинската му мощ са необходими нови компютри (с безкрайна памет и изпълняващи безкраен цикъл за под 10 секунди).