Пролог

от Всичко за 1 лев, свободната енциклопедия

(Разлики между версиите)
Версия от 12:21, 2 дек 2005
LongJohn (Беседа | приноси)

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

Текуща версия

Пролог е език за програмиране от пето поколение, който издига програмирането до нови невиждани висоти. Името Пролог произлиза от ПРОстоЛОГия - така се казва науката за изучаване на простотията. За разлика от всички останали езици, Пролог поддържа рекурсия и изкуствен интелект и всяка програма написана на него е безгрешна. Това е причината поради която той е известен сред програмистите, като висшият език.

Съдържание

История

Пролог е разработен през 1337-а година от Димитър Добрев в катедрата по Пролог на ФМИ.

Настояще

Използван като основа за разработката на ГафТолк.

Предимствата

Пролог има множество предимства пред нисшите езици.

Декларативен подход

Пролог използва т.нар. "декларативен подход", за който е характерно, че при него се декларират разни работи. Например следната програма на Пролог

gosho :- zhivka.

декларира, че Гошо изпитва сексуално влечение към Живка.

Компактност

Друго предимство на Пролог е, че програмите написани на този език са изключително компактни. Една програма на Ц, която е написана на 100 реда може да се трансформира в програма на Пролог, която заема един единствен ред. (Това преобразувание разбира се могат да направят малцина гурута, запознати с тайната мощ на Пролог-а.) Всеизвестен факт е, че писането на програми във ФМИ се извършва основно с химикалка като се ползва хартия. Ето защо Грийн Пийс силно пропагандират за ползването на Пролог, тъй като неговата компактност ще доведе до намаляване ползването на хартия и така изсичането на гори в Амазония драстично ще се редуцира.

Рекурсия

Основно предимство на Пролог е, че той е много близък до човешкото мислене. Общоизвестен факт е, че повечето хора мислят рекурсивно. Опитът на преподавателите от ФМИ с начинаещи програмисти е показал, че студентите правят много повече грешки при използване на един обикновен 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

Ако една програма не може да се напише на Пролог, то тя е бъгава.

Вреден за здравето?

Макар, че според привържениците на езика, програмирането на Пролог е безвредно, някои лекари се опасяват, че то може да бъде опасно за здравето. Някои често наблюдавани явления са вглъбен поглед, разстройство, неспокоен сън, късогледство и косопад. При по-продължителна употреба може да доведе и до проява на симптоми на шизофрения, но според самите програмисти на Пролог тези симптоми не им пречат да водят нормален живот.

IDE

Средата за разработка на ПроЛог е невероятно мощна. Нейният комерсиален вариант Strawberry Prolog е пряк конкурент на продукта на Майкрософт. Използването на ягодата като лого и наименование е изключително успешен маркетингов ход, тъй като е всеизвесна непоносимостта на Бил Гейтс към този плод.

Езикът на бъдещето

Понеже Пролог е толкова мощен, съвременните изчислителни машини са твърде слаби и недостойни за него. Ето защо за да се изпита истинската му мощ са необходими нови компютри (с безкрайна памет и изпълняващи безкраен цикъл за под 10 секунди - т.нар. изключително бърз кюмпютар).

Лични инструменти