it-swarm-eu.dev

Je Prolog profesionálně užitečný?

Na univerzitě jsem se naučil Prolog před mnoha lety. Během svého profesionálního života jsem nikdy nepotřeboval používat Prolog. Zmeškal jsem něco zvláštního?

Pokud si pamatuji, Prolog vyžaduje úplně jiné myšlení ve srovnání s prominentními programovacími jazyky.

Je Prolog skutečně někdy používán k implementaci něčeho profesionálně užitečného?

15
Gursel Koca

Podle mého názoru je učení se základům Prologu velmi užitečné, bez ohledu na to, zda ho budete někdy používat ve skutečném světě. Je také velmi užitečné pochopit základní myšlenky, které jsou základem sjednocení, a jak by bylo možné řešit (triviální a neefektivní) implementaci.

Pokud máte problém, který by byl nejlépe vyřešen pomocí deklarativní logiky, měli byste to v ideálním případě rozpoznat a vědět (pokud máte na výběr), jak pro tuto práci použít správné nástroje.

Souhlasím však s tím, že Prolog potřebuje velmi odlišné myšlení od konvenčních imperativních jazyků a také velmi odlišné myšlení od funkčních jazyků. Kromě určitého bodu se zdá, že to vyžaduje spoustu zkušeností (stejně jako u něčeho jiného), a je tu i spousta „učebnicových“ znalostí, díky nimž se můj mozek dostane z mých uší.

Můj dojem je ... pravděpodobně obojí chybí něco zvláštního do určité míry, ale nebylo by praktické věnovat čas na učení i přiměřeně úplné učebnicové znalosti pro Prolog, natož snaží se rozvíjet zážitek ze skutečného světa, pokud neuvažujete o možné kariéře logického programování.

Nedávno jsem četl knihu o umělém inteligenci a expertních systémech vydanou v roce 1989 - štěstí v knihkupectví z druhé ruky. Ve značné části je to specializovaný tutoriál o LISP a Prologu. Je pravda, že většina z toho, co pokrývá, nebyla tak dlouhou dobu působivá (vyhledávání, heuristika atd.), Ale je to stále velmi zajímavé a IMO stojí za to investovat trochu času.

Novější knihy, které specificky popisují Prolog, by byly lepší pro výuku jazyka, ale pak existuje riziko, že váš mozek někde v mezilehlých až pokročilých materiálech vyrazí z vašich uší.

12
Steve314

To jsem nebyl já, ale za předpokladu, že otázka by mohla znít: „provedl někdo něco prologu s prologem?“ to by se mohlo počítat:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

Watson je napájen 10 stojany serverů IBM Power 750 s operačním systémem Linux a používá 15 terabajtů paměti RAM, 2 880 procesorových jader a je schopen provozu při 80 teraflopech. Watson byl napsán většinou Java, ale také významné kusy kódu jsou psány C++ a Prolog, všechny komponenty jsou nasazeny a integrovány pomocí UIMA).

10
Kate Gregory

Znám A.I. programátoři jej používají ..... protože jsem absolvoval kurz Prologu ve svém A.I. třídy, ale kromě toho jsem o tom neviděl nic jiného. tady je podobná otázka s lotosovými odpověďmi! https://stackoverflow.com/questions/130097/real-world-prolog-usage

7
user6791

Prolog je skvělý pro rychlý prototyping. Například v http://www.cri.ensmp.fr/classement/doc/A-381.pdf je transformace SSA pro GCC nejprve implementována v Prologu a poté v C.

Používám Prolog uvnitř kompilátorů pro rychlou a špinavou implementaci typových systémů, určité optimalizace a sémantické kontroly a přepisuji tento Prolog kód do něčeho nezbytného, ​​pouze pokud jeho výkon není přijatelný.

6
SK-logic

Odpověděli jste velmi rychle, ale v polovině 90. let jsem použil Prolog k návrhu kalkulaček pojistných sazeb, které by pro nás určovaly určité segmenty zákazníků (riziko čtení), které by se hodily do pojistných sazeb. Je to něco, co byste nemuseli nutně vidět každý den, ale jistě ovlivnilo vaše prémie v průběhu let.

2
Jé Queue

Podle (Tento FAQ) 1 Části Watson, stroj IBM, který hrál Jeopardy, byly napsány v prologu. (viz otázka č. 6)

2
GSto

Profesionálně jsem použil Prolog při (významné) hrstce případů (diagnostický expertní systém; transformace HTML; nastavení členství). Mám pro jazyk hlubokou náklonnost, takže ano, je tu zaujatost, ale je snadné být objektivní, když je Prolog vhodný (více/stejně jako) - opravdu musíte zpracovat rekurzivní struktury; nejlepším příkladem, který mohu dát, je relační databázová tabulka, ale existuje nespočet dalších příkladů (je pravděpodobné, že je jednodušší vyčíslit protiklady, jako je náhodný vstup uživatele nebo (nejvíce) matematické funkce (mnoho matematických funkcí však má rekurzivní strukturu, a proto jsou naprosto vhodné (například diskrétní rychlá Fourierova transformace)).

Ale samozřejmě jen velmi málo „end-to-end systémů“ lze definovat pouze z hlediska zpracování rekurzivních struktur (výjimka: dokazování věty - ale je to spíše akademické cvičení *), takže je štěstí, že prologický proces může být naroubován do „standardnějšího imperativního procesu“ za použití nejrůznějších různých technik (jen stěží záleží na tom, co je zpravidla vhodné, ale rozhraní webové služby je pravděpodobně obecně vhodné); takže se můžete vypořádat s uživatelským rozhraním a náhodným zpracováním událostí atd. a poté je v případě potřeby předat (pro provádění složitých databázových dotazů nebo libovolného počtu věcí, které byste mohli chtít dělat s rekurzivními strukturami). Zjistil jsem, že to funguje krásně - lépe než například LINQ.

Uchopte své rekurzivní struktury za citlivé kousky a napište nějaký krásný, čistý, elegantní a udržovatelný Prolog! :)

PS, když nepoužívám Prolog, vrátím se zpět na C #

  • Přesto toužím po dni, kdy se alespoň některé aspekty komerčních programů osvědčily jako standardní praxe.
1

Zkuste napsat řešitel sudoku ve vašem oblíbeném jazyce a poté zkontrolujte, jak se to dělá v Prologu. Obecně jakýkoli problém CLP vyhovuje Nice s deklarativním jazykem, jako je Prolog.

Rovněž se hojně používá při formálním ověřování hardwaru a softwaru (akademicky a pravděpodobně profesionálně, ale nemám žádné odkazy na společnosti).

Konečně, Erlang je hluboce ovlivňován Prologem, s ohledem na odolnost vůči chybám a souběžnost.

1
sakisk

Software, který čte a třídí většinu pošty v USA a několika dalších zemích, je napsán v Prologu pomocí vysoce optimalizovaného kompilátoru. Syntaxe poštovních adres je psána v definitivních gramatikách klauzulí, což usnadňuje údržbu a zjednodušuje přizpůsobení čtenáře konvencím různých zemí a průmyslových uživatelů. Poštovní služby mají často složitá pravidla týkající se věcí, jako jsou adresy pro předávání, poštovní schránky vs. adresa ulice atd., A tato pravidla jsou také formulována v Prologu pro snadnou údržbu.

0