Nauczyłem się Prolog wiele lat temu na uniwersytecie. W życiu zawodowym nigdy nie potrzebowałem używać Prologu. Czy przegapiłem coś wyjątkowego?
O ile pamiętam, Prolog wymaga zupełnie innego sposobu myślenia w porównaniu do znanych języków programowania.
Czy Prolog naprawdę kiedykolwiek był używany do wdrażania czegoś profesjonalnie przydatnego?
programming-languages
prolog
Gursel Koca
źródło
źródło
Odpowiedzi:
Moim zdaniem poznanie podstaw Prologu jest bardzo opłacalne, niezależnie od tego, czy kiedykolwiek będziesz go używać w prawdziwym świecie. Warto również zrozumieć podstawowe idee leżące u podstaw unifikacji oraz sposób, w jaki można zastosować (trywialną i nieefektywną) implementację.
Jeśli masz problem, który najlepiej rozwiązać przy użyciu logiki deklaratywnej, najlepiej go rozpoznaj i wiedz (jeśli masz wybór), aby użyć odpowiednich narzędzi do tego zadania.
Zgadzam się jednak, że Prolog potrzebuje zupełnie innego sposobu myślenia niż konwencjonalne języki imperatywne, a także zupełnie innego sposobu myślenia niż języki funkcjonalne. Poza pewnym punktem, wydaje się, że wymaga dużo doświadczenia (tak jak w przypadku czegokolwiek), a nawet istnieje wiele „podręczników” wiedzy, które powodują, że mózg kapie mi z uszu.
Mam wrażenie, że ... oboje prawdopodobnie brakuje nam czegoś specjalnego, ale nie byłoby praktyczne poświęcenie czasu na naukę nawet dość kompletnej wiedzy na poziomie podręcznika dla Prologa, nie mówiąc już o próbie rozwijania rzeczywistych doświadczeń , chyba że rozważasz karierę w programowaniu logiki.
Niedawno czytałem książkę o sztucznej inteligencji i systemach ekspertowych opublikowaną w 1989 roku - szczęście znalezione w księgarni z drugiej ręki. W znacznej części jest to specjalistyczny samouczek na temat Lisp i Prolog. To prawda, że większość tego, co obejmuje, od dłuższego czasu nie była aż tak imponująca (wyszukiwanie, heurystyka itp.), Ale wciąż jest bardzo interesująca, a IMO warto zainwestować trochę czasu.
Nowsze książki, które konkretnie opisują Prolog, byłyby lepsze do nauki języka, ale istnieje ryzyko, że mózg wycieknie z ucha gdzieś w materiale średnio-zaawansowanym.
źródło
To nie byłem ja, ale zakładając, że pytanie może brzmieć „czy ktoś wprowadził coś poważnego w prologu?” to może się liczyć:
http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html
źródło
Wiem, że używają go programiści AI ... ponieważ uczestniczyłem w kursie Prologu w mojej klasie AI, ale poza tym nie widziałem wiele innych na ten temat. oto podobne pytanie z wieloma odpowiedziami! /programming/130097/real-world-prolog-usage
źródło
Prolog doskonale nadaje się do szybkiego prototypowania. Na przykład w http://www.cri.ensmp.fr/classement/doc/A-381.pdf transformacja SSA dla GCC jest najpierw implementowana w Prologu, a następnie w C.
Używam wewnętrznych kompilatorów Prolog do szybkiej i brudnej implementacji systemów typów, niektórych optymalizacji i kontroli semantycznych, i przepisuję ten kod Prolog na coś niezbędnego tylko wtedy, gdy jego wydajność jest nie do przyjęcia.
źródło
Odpowiedziałeś dość szybko, ale w połowie lat 90. wykorzystałem Prolog do zaprojektowania kalkulatorów stawek ubezpieczeniowych, które określiłyby dla nas określone segmenty klientów (ryzyko odczytu), które pasowałyby do stawek składek. Jest to coś, czego niekoniecznie zobaczysz z dnia na dzień, ale z pewnością wpłynęło to na twoje składki ubezpieczenia od lat.
źródło
Według (FAQ) 1 części Watson, maszyny IBM, która grała w Jeopardy, zostały napisane prologicznie. (patrz pytanie nr 6)
źródło
Korzystałem z Prologu profesjonalnie przy (znacznej) garstce okazji (system ekspertów diagnostycznych; transformacja HTML; ustawianie członkostwa). Mam głęboką sympatię do języka, więc tak, tutaj jest uprzedzenie, ale łatwo jest być obiektywnym, kiedy Prolog jest (bardziej / tak samo) odpowiedni - naprawdę musisz przetwarzać struktury rekurencyjne ; najlepszym przykładem, jaki mogę podać, jest relacyjna tabela bazy danych, ale istnieje wiele innych przykładów (prawdopodobnie łatwiej jest wyliczyć kontrprzykłady, takie jak losowe wprowadzanie danych przez użytkownika lub (większość) funkcji matematycznych (jednak wiele funkcji matematycznych ma strukturę rekurencyjną i stąd są idealnie odpowiednie (na przykład dyskretna szybka transformata Fouriera).
Ale, oczywiście, bardzo niewiele „systemów end-to-end” można zdefiniować wyłącznie w kategoriach przetwarzania struktur rekurencyjnych (wyjątek: dowodzenie twierdzeń - ale jest to raczej akademickie ćwiczenie *), więc na szczęście proces prologu można przeszczepić się na „bardziej standardowy proces imperatywny” przy użyciu różnego rodzaju technik (nie ma znaczenia, ale interfejs usługi internetowej jest prawdopodobnie ogólnie odpowiedni); dzięki czemu możesz poradzić sobie z interfejsem użytkownika, przetwarzaniem zdarzeń losowych itp., a następnie przekazać w razie potrzeby (w celu wykonywania złożonych zapytań do bazy danych lub dowolnej liczby rzeczy, które możesz chcieć zrobić ze strukturami rekurencyjnymi). Uważam, że działa pięknie - lepiej niż na przykład LINQ.
Chwyć za rekurencyjne struktury wrażliwe fragmenty i napisz piękny, czysty, elegancki, łatwy do utrzymania Prolog! :)
PS, gdy nie używam Prologu, wracam do C #
źródło
Spróbuj napisać solver sudoku w swoim ulubionym języku, a następnie sprawdź, jak to się robi w Prologu. Ogólnie rzecz biorąc, każdy problem CLP dobrze pasuje do deklaratywnego języka, takiego jak Prolog.
Jest również szeroko stosowany w formalnej weryfikacji sprzętu i oprogramowania (naukowo i prawdopodobnie profesjonalnie, ale nie mam żadnych odniesień do firm).
Wreszcie, na Erlang duży wpływ ma Prolog, mając na uwadze odporność na awarie i współbieżność.
źródło
Oprogramowanie, które odczytuje i sortuje znaczną część poczty w USA i kilku innych krajach, zostało napisane w Prologu przy użyciu wysoce zoptymalizowanego kompilatora. Składnia adresów e-mail jest zapisana w gramatyce określonych klauzul, co ułatwia konserwację i upraszcza dostosowanie czytelnika do konwencji różnych krajów i użytkowników przemysłowych. Usługi pocztowe często mają skomplikowane zestawy zasad dotyczących takich rzeczy, jak adresy spedycyjne, skrytki pocztowe vs. adres, itp., A zasady te są również sformułowane w Prologu w celu łatwej konserwacji.
źródło