Czy Prolog jest przydatny zawodowo?

15

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?

Gursel Koca
źródło
3
Prolog (i poplog) są bardzo dobre do kodowania AI. Jeśli nie robisz rzeczy związanych z AI profesjonalnie / poważnie, możesz w ogóle z niego nie korzystać. Na przykład, w jaki sposób inżynier nie może poważnie traktować MATLAB.
glasnt
1
Dobre pytanie. Prolog jest pierwszym językiem programowania nauczanym w językoznawstwie komputerowym w Uni Potsdam, ale potem tak naprawdę go nie używamy, nawet jeśli jesteśmy w tym całkiem dobrzy. Szkoda. Za każdym razem, gdy widzę pytanie takie jak „Jak korzystać z akumulatora” lub „Jak uzyskać wszystkie możliwe odpowiedzi” na StackOverflow, zastanawiam się, gdzie są prawdziwi profesjonalni użytkownicy - większość rzeczy wydaje się pracą domową. A może biegłość Prologa zmienia cię w robota, który nigdy nie ma pytań.
Felix Dombek
Kiedyś słyszałem o systemie wykrywania błędów napisanym w Prologu i wdrożonym gdzieś w Austrii (Klagenfurt?) Zgodnie z tym, co mi powiedziano, produkt był całkiem dobry i sprzedawany klientom. Jeśli uznasz to za „zawodowo przydatne”, odpowiedź brzmi „tak”.
Giorgio

Odpowiedzi:

12

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.

Steve314
źródło
AI / prolog nowicjusz tutaj. Jakieś zasoby online, które poleciłbyś?
yati sagade
@yati - Spróbuj amzi.com/AdventureInProlog/advtop.php - Kiedyś przeprowadziłem samouczek na stronie Amzi, ​​który, o ile pamiętam, wydawał się OK, ale to było bardzo dawno. Wszystko, na co ostatnio patrzyłem (prawdopodobnie przez ostatnie 5 lat) dla Prologu, to książka o sztucznej inteligencji, o której wspomniałem w tej odpowiedzi. Powinieneś poszukać / zadać pytanie tutaj, a nie zamieszczać komentarzy, zwłaszcza komentarzy dodanych do odpowiedzi napisanych przez kogoś, kto jest w zasadzie długoterminowym nowicjuszem. Prolog to coś, na co patrzę rzadko i bardzo mało - bo inaczej przestałbym być nowicjuszem dekadę lub więcej temu.
Steve314,
10

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

Watson jest zasilany przez 10 szaf serwerowych IBM Power 750 z systemem Linux i wykorzystuje 15 terabajtów pamięci RAM, 2880 rdzeni procesorów i jest w stanie działać na 80 teraflopach. Watson został napisany głównie w Javie, ale znaczące fragmenty kodu zostały napisane w C ++ i Prolog, wszystkie komponenty są wdrażane i integrowane za pomocą UIMA.

Kate Gregory
źródło
7

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

Społeczność
źródło
6

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.

Logika SK
źródło
2

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.

Jé Queue
źródło
2

Według (FAQ) 1 części Watson, maszyny IBM, która grała w Jeopardy, zostały napisane prologicznie. (patrz pytanie nr 6)

GSto
źródło
1

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 #

  • Chociaż tęsknię za dniem, w którym przynajmniej niektóre aspekty programów komercyjnych okażą się prawidłowe jako standardowa praktyka.
Chrissy Flangé Allen
źródło
1

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ść.

sakisk
źródło
0

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.

ComputationalBruno
źródło