Logic programming (original) (raw)
La programació lògica consisteix en l'aplicació del corpus de coneixement sobre lògica per al disseny de llenguatges de programació; no ha de confondre's amb la disciplina de la lògica computacional. La programació lògica és un tipus de paradigmes de programació dins del paradigma de programació declarativa. La resta dels subparadigmes de programació dins de la programació declarativa són: programació funcional, programació basada en restriccions, programes DSL (de domini específic) i híbrids. La programació lògica gira entorn del concepte de predicat, o relació entre elements. La programació funcional es basa en el concepte de funció (que no és més que una evolució dels predicats), de caràcter més matemàtic.
Property | Value |
---|---|
dbo:abstract | La programació lògica consisteix en l'aplicació del corpus de coneixement sobre lògica per al disseny de llenguatges de programació; no ha de confondre's amb la disciplina de la lògica computacional. La programació lògica és un tipus de paradigmes de programació dins del paradigma de programació declarativa. La resta dels subparadigmes de programació dins de la programació declarativa són: programació funcional, programació basada en restriccions, programes DSL (de domini específic) i híbrids. La programació lògica gira entorn del concepte de predicat, o relació entre elements. La programació funcional es basa en el concepte de funció (que no és més que una evolució dels predicats), de caràcter més matemàtic. (ca) البرمجة المنطقية (بالإنجليزية: Logic programming) هي بمفهومها العام استعمال المنطق الرياضي من أجل برمجة الحاسوب. ويستعمل المنطق لغة تصريحية للتعبير عن المشكلة. خلاف الكثير من لغات البرمجة التقليدية فإن المبرمج في البرمجة المنطقية لا يقوم بحل المشكلة بشكل كامل، وانما يقع على عاتقه مسؤولية جزئية في حل المشكلة، وهي بتمثيل القضايا والمعارف بصفة منطقية (logical form)، ويقع الجزء الآخر لحل المشكلة على ما يدعى بمبرهن القضايا (theorem-prover) أو مولد النماذج (model-generator) الذي يقوم بحل المشكلة بشكل فعال. (ar) Logické programování je v širším významu použití matematické logiky jako prostředku pro programování. Jeho počátky můžeme vystopovat až k návrhu Johna McCarthyho advice taker (rádce) [1958]. V tomto návrhu slouží logika pro čistě deklarativní reprezentaci jazyka a dokazovač vět (theorem-prover) nebo generátor modelů (model-generator) se používá jako řešitel problémů (problem-solver). Řešení problému se tak dělí mezi programátora (ručí za správnost programu vyjádřené v logické formě) a dokazovač vět nebo generátor modelů (odpovídá za efektivní řešení problému). Častěji se však logické programování chápe v užším smyslu, kdy se logika používá na deklarativní i procedurální reprezentaci jazyka. Vychází z faktu, že zpětně usuzující dokazovač vět (backwards reasoning theorem-prover) použitý na deklarativní větu ve tvaru implikace: B1 a … a Bn implies H zachází s touto implikací jako s cíl redukující (goal-reduction) procedurou. ukaž/vyřeš H, ukaž/vyřeš B1 a … a Bn. Programátor neručí pouze za správnost programu, ale i za jeho efektivitu. Často je pro dosažení efektivity nezbytné, aby se programátor seznámil se způsobem, jakým dokazovač vět řeší problém a uměl jej využívat. Tím, že logické programovaní používá program k řízení chování vykonavatele programu (program executor) se podobá tradičnímu imperativnímu programování. Od imperativních programů s pouze procedurální interpretací se však logické programy liší existencí deklarativní logické interpretace, která pomáhá zajistit jejich korektnost. Díky tomu, že jsou tyto programy deklarativní (tedy deklarují, co je vstupem a výstupem, a nezabývají se tím, jak výpočet probíhá), jsou na mnohem vyšší konceptuální úrovni než čistě imperativní programy, a jejich vykonavatelé, kteří jsou vlastně dokazovači vět, operují na konceptuálně vyšší úrovni než běžné překladače a interprety. (cs) Logische Programmierung (Prädikative Programmierung, Logikprogrammierung) ist ein Programmierparadigma, das auf der mathematischen Logik beruht. Anders als bei der imperativen Programmierung besteht ein Logik-Programm nicht aus einer Folge von Anweisungen, sondern aus einer Menge von Axiomen, welche hier als eine Ansammlung von Fakten oder Annahmen zu verstehen ist. Stellt der Benutzer eines Logik-Programms eine Anfrage, so versucht der Interpreter, die Lösungsaussage allein aus den Axiomen zu berechnen. Dazu werden eine Menge von so genannten Regeln und Anweisungen, die der Syntax gemäß aufgebaut sind zusammen mit der Information, welche Lösungsmethode vorgesehen ist, in den Programmcode eingefügt. Logische Programmiersprachen gehören zu den deklarativen Programmiersprachen und haben ihre Ursprünge im Forschungsgebiet Künstliche Intelligenz. In einem imperativen Programm wird genau beschrieben, wie und in welcher Reihenfolge ein Problem zu lösen ist. Im Gegensatz dazu wird in einem logikbasierten Programm beschrieben, was gilt. Das Wie ist durch die Lösungsmethode vorgegeben. Die Lösung wird aus den Regeln hergeleitet. Die bekannteste logische Programmiersprache ist Prolog. Zu den Begründern der logischen Programmierung zählten in den 1970er Jahren Alain Colmerauer und Robert Kowalski. (de) La programación lógica es un tipo de paradigma de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación con restricciones, programas DSL (de dominio específico) e híbridos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. (es) Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses: H :- B1, …, Bn. and are read declaratively as logical implications: H if B1 and … and Bn. H is called the head of the rule and B1, ..., Bn is called the body. Facts are rules that have no body, and are written in the simplified form: H. In the simplest case in which H, B1, ..., Bn are all atomic formulae, these clauses are called definite clauses or Horn clauses. However, there are many extensions of this simple case, the most important one being the case in which conditions in the body of a clause can also be negations of atomic formulas. Logic programming languages that include this extension have the knowledge representation capabilities of a non-monotonic logic. In ASP and Datalog, logic programs have only a declarative reading, and their execution is performed by means of a proof procedure or model generator whose behaviour is not meant to be controlled by the programmer. However, in the Prolog family of languages, logic programs also have a procedural interpretation as goal-reduction procedures: to solve H, solve B1, and ... and solve Bn. Consider the following clause as an example: fallible(X) :- human(X). based on an example used by Terry Winograd to illustrate the programming language Planner. As a clause in a logic program, it can be used both as a procedure to test whether X is fallible by testing whether X is human, and as a procedure to find an X which is fallible by finding an X which is human. Even facts have a procedural interpretation. For example, the clause: human(socrates). can be used both as a procedure to show that socrates is human, and as a procedure to find an X that is human by "assigning" socrates to X. The declarative reading of logic programs can be used by a programmer to verify their correctness. Moreover, logic-based program transformation techniques can also be used to transform logic programs into logically equivalent programs that are more efficient. In the Prolog family of logic programming languages, the programmer can also use the known problem-solving behaviour of the execution mechanism to improve the efficiency of programs. (en) La programmation logique est une forme de programmation qui définit les applications à l'aide : * d'une base de faits : ensemble de faits élémentaires concernant le domaine visé par l'application, * d'une : règles de logique associant des conséquences plus ou moins directes à ces faits, * d'un moteur d'inférence (ou démonstrateur de théorème ) : exploite ces faits et ces règles en réaction à une question ou requête. Cette approche se révèle beaucoup plus souple que la définition d'une succession d'instructions que l'ordinateur exécuterait. La programmation logique est considérée comme une programmation déclarative plutôt qu’impérative, car elle s'attache davantage au quoi qu'au comment, le moteur assumant une large part des enchaînements. Elle est particulièrement adaptée aux besoins de l’intelligence artificielle, dont elle est un des principaux outils. (fr) Foirm ríomhchláraithe a bhaineann níos mó le measúnú na rialacha ná ceisteanna ar threoracha don ríomhaire. Is teangacha don ghnó seo LISP agus Prolog. (ga) 논리형 프로그래밍(論理型 프로그래밍, 영어: logic programming)은 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반을 둔다. 논리형 프로그래밍에서 볼 수 있는 일종의 논리 문장들은 (반드시 그런 것은 아니지만) 형태로 되어 있다: G if G1 and … and Gn 이러한 프로그램들은 이를테면 에서와 같이 순수하게 선언적으로 이해할 수 있다. 그러나 이들은 목표 추론 절차와 같이 절차적으로 이해할 수도 있다.: to show/solve G, show/solve G1 and … and Gn 위의 예는 프롤로그의 예이다. (answer set programming) 분야는 절대 문절 형태가 선택에 의해 확장되는 하나의 예이다. (ko) In informatica la programmazione logica è un paradigma di programmazione nato negli anni '70 che adotta la logica del primo ordine sia per rappresentare sia per elaborare l'informazione. La programmazione logica differisce dalla programmazione tradizionale, sviluppata dalinguaggi ad alto livello quali Fortran, Cobol, Basic, Algol, Pascal, Ada, etc., in quanto richiede e nello stesso tempo consente al programmatore di descrivere la struttura logica del problema piuttosto che il modo di risolverlo . Da un punto di vista concettuale, il programmatore si può così concentrare sugli aspetti logici del problema e sul modo migliore per rappresentarli, senza essere focalizzato sulla necessità di determinare in dettaglio il modo di pervenire ai risultati. In particolare viene adottato il frammento della logica a clausole di Horn che rappresenta la base teorica su cui sono costruiti i linguaggi di programmazione afferenti al paradigma logico e in particolare il Prolog, o suoi sottolinguaggi, come Datalog o AnsProlog. Il meccanismo principale per elaborare teorie logiche fatte di clausole è l'unificazione. Fra le estensioni della programmazione logica sono la programmazione logica induttiva e la programmazione logica abduttiva. (it) 論理プログラミング(Logic Programming)とは、数理論理学(記号論理学)を基礎にしたプログラミングパラダイム、または数理論理学のコンピュータプログラミングへの応用である。形式論理の論理式をソースコードの書式に投影することが基本になる。プログラミングに適用するための幅広い解釈が加えられており、研究対象としての論理プログラミングは非常に多様である。 より一般的に受け入れられている論理プログラミングは、述語論理を基礎にし、問題領域の事実と規則を論理式モデル書式で表現して(ロジック)非決定性の演繹の導出原理を用いる(コントロール)というものである。このアルゴリズムスタイルで最も普及した論理プログラミング言語は「Prolog」である。 (ja) Programowanie logiczne (nazywane także programowaniem w logice lub programowaniem w języku logiki) – metoda programowania, będąca odmianą programowania deklaratywnego, w której program podawany jest jako pewien zestaw zależności, a obliczenia są dowodem pewnego twierdzenia w oparciu o te zależności. Na przykład chcemy stwierdzić, czy w danym grafie skierowanym istnieje ścieżka z pewnego punktu do pewnego innego punktu. Krawędzie zapisane są relacją edge(Skąd, Dokąd). Nasz program wyglądałby w Prologu tak: path(A,B) :- walk(A,B,[]).walk(A,B,V) :- edge(A,X), not(member(X,V)), (B = X; walk(X,B,[A|V])). Co czytamy następująco: * istnieje ścieżka z X do Y, jeśli można przejść z A do B * istnieje ścieżka z X do Y, jeśli dla jakiegoś Z istnieje krawędź z X do Z, oraz ścieżka z Z do Y Programowanie logiczne umożliwia łatwy zapis wielu algorytmów, a programy logiczne w przeciwieństwie do imperatywnych łatwo też wykonywać równolegle. (pl) Logisch programmeren is een vorm van programmeren die valt onder het declaratieve paradigma. Een veelgebruikte logische programmeertaal is Prolog. Ook SQL is een declaratieve taal.Logische talen vinden vooral toepassing in de computationele taalkunde en de kunstmatige intelligentie. logisch programmeren is een andere vorm van logisch programmeren. In een deductieve logische programmeertaal valt het redeneerproces schematisch weer te geven als feiten + regels = resultaten. De compiler/interpreter is op de hoogte van een aantal feiten, en probeert aan de hand van regels een antwoord te geven op een vraag die aan hem wordt gesteld. Voorbeelden van feiten die voor de interpreter bekend kunnen zijn: * Katten hebben een vacht * Een vacht bestaat uit haren De interpreter moet in dit geval antwoord kunnen geven op de vraag "Hebben katten haren?". Een voorbeeld van een functionele en logische programmeertaal is Curry. (nl) Logikprogrammering är ett programmeringsparadigm baserat på att bevis av predikatlogiska satser på vissa former kan automatiseras, vilket upptäcktes av på 1960-talet. Logikprogrammering är deklarativ, programmeraren anger vad som ska göras men inte hur (som i imperativ programmering). Ett logikprogram består av en formulering av problemet man vill ha löst på en predikatlogisk form. Sen är det upp till en interpretator att bevisa satsen/programmet.Deklarativiteten är en av fördelarna med logikprogrammering, en annan (som blir mer och mer aktuell) är att bevis av predikatlogiska satser kan automatiskt. Det är av stort intresse för att på ett enkelt sätt kunna skriva effektiva program för datorer med flera processorer eller processorkärnor, vilket har visat sig svårt med imperativ programmering.Bland nackdelarna märks att logikprogram är ineffektiva på enprocessorsmaskiner, samt att logikprogrammering är svårt att lära sig för den som saknar kunskap om predikatlogik.Det första praktiskt användbara logikprogrammeringsspråket, och fortfarande det mest spridda, är Prolog.Logikprogrammering var som mest uppmärksammad på 1980-talet, ofta i samband med artificiell intelligens.Bland svenska forskare som gjort insatser inom logikprogrammering kan nämnas Sten-Åke Tärnlund, , Sverker Janson, Seif Haridi och . (sv) Programação lógica é um paradigma de programação que faz uso da lógica matemática. John McCarthy [1958] foi o primeiro a publicar uma proposta de uso da lógica matemática para programação. A primeira linguagem de programação lógica foi a Planner, a qual permitia a invocação orientada a padrões de planos procedimentais de asserções e de objetivos. Com a necessidade de adaptação aos sistemas de memória muito limitada, que eram disponíveis quando ela foi desenvolvida. A linguagem Planner usava estruturas de controle de backtracking, de tal forma que apenas um único caminho computacional tinha que ser armazenado por vez. Em seguida, o Prolog foi desenvolvido como uma simplificação do Planner que permitia a invocação orientada a padrões apenas a partir de objetivos (também baseado em backtracking). A partir do Planner, foram desenvolvidas as linguagens de programação QA-4, Popler, Conniver, e QLISP. As linguagens de programação Mercury, Visual Prolog, Oz e Frill, foram desenvolvidas a partir do Prolog. Atualmente existem linguagens de programação lógica concorrente (não baseadas em backtracking) derivadas do Planner (por exemplo, a Ether) e derivadas do Prolog (ver Shapiro 1989 para um apanhado geral). (pt) Логі́чне програмува́ння — парадигма програмування, а також розділ дискретної математики, що вивчає методи і можливості цієї парадигми, засновані на виведенні нових фактів з даних фактів згідно із заданими логічними правилами. Логічне програмування засноване на теорії математичної логіки. Найвідомішою мовою логічного програмування є Prolog, що є за своєю суттю універсальною машиною виводу, що працює в припущенні замкненості системи фактів. Першою мовою логічного програмування була мова Planner, в якій була закладена можливість автоматичного виведення результату з даних і заданих правил перебору варіантів (сукупність яких називали «планом»). Planner використовували для, зниження вимог до обчислювальних ресурсів (за допомогою методу пошуку з поверненням) і для виведення фактів без активного використання стеку. Потім була розроблена мова Prolog, яка не вимагала плану перебору варіантів і була, в цьому сенсі, спрощенням мови Planner. На основі ідей Planner були створені такі мови логічного програмування, як: , , і . Мови програмування , , і були створені на основі Prolog. На основі мови Planner було розроблене також декілька альтернативних мов логічного програмування, не заснованих на методі пошуку з поверненням, наприклад, . (uk) Логи́ческое программи́рование — парадигма программирования, основанная на математической логике — программы в ней задаются в форме логических утверждений и правил вывода. Наиболее известный язык логического программирования — Пролог. Первым языком логического программирования был язык Плэнер, в котором была заложена возможность автоматического вывода результата из данных и заданных правил перебора вариантов (совокупность которых называлась планом). Плэнер использовался для того, чтобы понизить требования к вычислительным ресурсам (с использованием техники поиска с возвратом) и обеспечить возможность вывода фактов, без активного использования стека. Затем был разработан Пролог, который не требовал плана перебора вариантов и был, в этом смысле, упрощением Плэнера. От Плэнера также произошли логические языки программирования , , и , а также язык , не использующих метод поиска с возвратами. Языки Mercury, Visual Prolog, Oz, , Datalog основаны на Прологе. (ru) 邏輯編程(逻辑程序设计)是種編程典範,它設定答案須符合的規則來解決問題,而非設定步驟來解決問題。過程是 算法=邏輯+控制。 不同的方法,可以看英語:Inductive logic programming。 邏輯編程的要點是將正規的邏輯風格帶入電腦程式設計之中。數學家和哲學家發現邏輯是有效的理論分析工具。很多問題可以自然地表示成一個理論。說需要解答一個問題,通常與解答一個新的假設是否跟現在的理論無衝突等價。邏輯提供了一個證明問題是真還是假的方法。建立證明的方法是人所皆知的,故邏輯是解答問題的可靠方法。邏輯編程系統則自動化了這個程序。人工智能在邏輯編程的發展中發揮了重要的影響。 是邏輯編程社群的著名問題。電腦須自行找出令猴子接觸香蕉的可行方法,取代程式設計師指定猴子接觸香蕉的路徑和方法。 邏輯編程建立了描述一個問題裏的世界的邏輯模型。邏輯編程的目標是對它的模型建立新的陳述。世界上知識不斷膨脹。傳統來說,我們會將一個問題陳述成單一的假設。邏輯編程的程式透過證明這個假設在模型裏是否為真來解決問題。 一些經常用到邏輯編程工具的範疇: * 專家系統,程式從一個巨大的模型中產生一個建議或答案。 * 自動化定理證明,程式產生一些新定理來擴充現有的理論。 最常用的邏輯編程語言是Prolog,另外有較適用於大型方案的Mercury。詳盡的清單可見於Category:邏輯編程語言。 (zh) |
dbo:wikiPageExternalLink | https://www.ijcai.org/Proceedings/71/Papers/014%20A.pdf https://www.worldcat.org/title/handbook-of-logic-in-artificial-intelligence-and-logic-programming/oclc/26300491 http://www.cs.kuleuven.be/~dtai/projects/ALP/TPLP/ http://cmpe.emu.edu.tr/bayram/courses/531/forpresentation/p374-dantsin.pdf http://redwood.cs.ttu.edu/~mgelfond/PAPERS/survey.pdf%7C http://www.logicprogramming.org/ http://www.mozart-oz.org/documentation/tutorial/node12.html http://www.pdc.dk/ https://web.archive.org/web/20050828194751/http:/vl.fmnet.info/logic-prog/ https://web.archive.org/web/20090108012954/http:/www.mpprogramming.com/Cpp/ https://web.archive.org/web/20170102172145/https:/pdfs.semanticscholar.org/9993/ec68770faaab132da6945492b0e4ad07eb7b.pdf https://repository.upenn.edu/cis_reports/711 http://liinwww.ira.uka.de/bibliography/LogicProgramming/ http://www.cs.rit.edu/~rlaz/is2014/files/McCarthyProgramsWithCommonSense.pdf http://www.ida.liu.se/~ulfni/lpp/ http://docs.racket-lang.org/racklog/ http://www.doc.ic.ac.uk/~rak/papers/the%20early%20years.pdf https://dl.acm.org/doi/abs/10.1145/365691.365960 |
dbo:wikiPageID | 17927 (xsd:integer) |
dbo:wikiPageLength | 39514 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1121161240 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Programming_paradigm dbr:Prolog dbr:Model_theory dbr:Natural-language_understanding dbr:Negation_as_failure dbr:Bertram_Raphael dbr:Declarative_programming dbr:Algebraic_Logic_Functional_programming_language dbr:Answer_set_programming dbc:Logic dbr:Robert_Kowalski dbr:University_of_Edinburgh dbr:Visual_Prolog dbr:Inductive_logic_programming dbr:Reasoning_system dbc:Logic_programming_languages dbr:Concurrent_logic_programming dbr:Cordell_Green dbr:Clausal_normal_form dbr:R++ dbr:Ciao_(programming_language) dbr:Fril dbr:Gerald_Jay_Sussman dbr:Concurrent_constraint_logic_programming dbr:Concurrent_programming dbr:Constraint_logic_programming dbr:Control_theory dbr:Proof-theoretic_semantics dbr:Probabilistic_inductive_logic_programming dbr:Linear_logic dbr:Lisp_(programming_language) dbr:And-or_tree dbr:Logic dbr:Logtalk dbr:MIT dbr:Machine_learning dbr:Stanford_University dbr:Clause_(logic) dbr:Functional_programming dbr:Closed_world_assumption dbr:Horn_clause dbr:Programmable_logic_controller dbr:Automated_theorem_proving dbr:Transaction_logic dbr:Fuzzy_logic dbr:Logic_in_computer_science dbr:Abductive_reasoning dbr:Actor_model dbr:Air_traffic_control dbr:Alain_Colmerauer dbr:Alonzo_Church dbr:Datalog dbr:Fifth_generation_computer dbr:Fixed_point_(mathematics) dbr:Non-monotonic_logic dbr:Oz_(programming_language) dbr:Flora-2 dbr:Formal_methods dbr:Forward_chaining dbr:Digital_circuit dbr:Knowledge_representation dbr:Procedural_programming dbr:Gödel_(programming_language) dbr:Atomic_formula dbr:International_Organization_for_Standardization dbr:Backward_chaining dbr:Terry_Winograd dbr:Artificial_intelligence dbc:Programming_paradigms dbr:Abductive_logic_programming dbc:Logic_programming dbr:Absys dbr:John_Alan_Robinson dbr:John_McCarthy_(computer_scientist) dbr:Keith_Clark_(computer_scientist) dbr:LISP dbr:Lambda_calculus dbr:Syracuse_University dbr:HiLog dbr:Higher-order_logic dbr:Higher-order_programming dbr:Program_transformation dbr:SHRDLU dbr:Dov_Gabbay dbr:Association_for_Logic_Programming dbc:Computer-related_introductions_in_1972 dbr:Marseille dbr:Marvin_Minsky dbr:Boolean_satisfiability_problem dbr:Planner_(programming_language) dbr:Circumscription_(logic) dbr:Civil_engineering dbr:Indeterminacy_in_concurrent_computation dbr:Metalanguage dbr:Seymour_Papert dbr:XSB dbr:Situation_calculus dbr:Mechanical_engineering dbr:SLD_resolution dbr:Satisfiability dbr:Statistical_relational_learning dbr:Oz_programming_language dbr:Eugene_Charniak dbr:F-logic dbr:Programming_language dbr:Rule-based_machine_learning dbr:Event_calculus dbr:Stable_model_semantics dbr:ΛProlog dbr:Symbolic_programming dbr:Mercury_programming_language dbr:Automated_timetabling dbr:Micro-Planner_(programming_language) dbr:Vanilla_(computing) dbr:Guard_(computing) dbr:Formal_grammars dbr:Constraint_solving dbr:Patrick_J._Hayes dbr:Inference_rule dbr:Horn_clauses dbr:Wiktionary:metalevel |
dbp:wikiPageUsesTemplate | dbt:Programming_paradigms dbt:Types_of_programming_languages dbt:Authority_control dbt:Citation_needed dbt:Cite_book dbt:Cite_journal dbt:Commons_category dbt:Main dbt:More_footnotes dbt:Not_a_typo dbt:Reflist dbt:Short_description dbt:POV_statement dbt:Computable_knowledge |
dct:subject | dbc:Logic dbc:Programming_paradigms dbc:Logic_programming dbc:Computer-related_introductions_in_1972 |
gold:hypernym | dbr:Paradigm |
rdf:type | owl:Thing dbo:ProgrammingLanguage dbo:MusicGenre |
rdfs:comment | La programació lògica consisteix en l'aplicació del corpus de coneixement sobre lògica per al disseny de llenguatges de programació; no ha de confondre's amb la disciplina de la lògica computacional. La programació lògica és un tipus de paradigmes de programació dins del paradigma de programació declarativa. La resta dels subparadigmes de programació dins de la programació declarativa són: programació funcional, programació basada en restriccions, programes DSL (de domini específic) i híbrids. La programació lògica gira entorn del concepte de predicat, o relació entre elements. La programació funcional es basa en el concepte de funció (que no és més que una evolució dels predicats), de caràcter més matemàtic. (ca) البرمجة المنطقية (بالإنجليزية: Logic programming) هي بمفهومها العام استعمال المنطق الرياضي من أجل برمجة الحاسوب. ويستعمل المنطق لغة تصريحية للتعبير عن المشكلة. خلاف الكثير من لغات البرمجة التقليدية فإن المبرمج في البرمجة المنطقية لا يقوم بحل المشكلة بشكل كامل، وانما يقع على عاتقه مسؤولية جزئية في حل المشكلة، وهي بتمثيل القضايا والمعارف بصفة منطقية (logical form)، ويقع الجزء الآخر لحل المشكلة على ما يدعى بمبرهن القضايا (theorem-prover) أو مولد النماذج (model-generator) الذي يقوم بحل المشكلة بشكل فعال. (ar) La programación lógica es un tipo de paradigma de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación con restricciones, programas DSL (de dominio específico) e híbridos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. (es) Foirm ríomhchláraithe a bhaineann níos mó le measúnú na rialacha ná ceisteanna ar threoracha don ríomhaire. Is teangacha don ghnó seo LISP agus Prolog. (ga) 논리형 프로그래밍(論理型 프로그래밍, 영어: logic programming)은 논리 문장을 이용하여 프로그램을 표현하고 계산을 수행하는 개념에 기반을 둔다. 논리형 프로그래밍에서 볼 수 있는 일종의 논리 문장들은 (반드시 그런 것은 아니지만) 형태로 되어 있다: G if G1 and … and Gn 이러한 프로그램들은 이를테면 에서와 같이 순수하게 선언적으로 이해할 수 있다. 그러나 이들은 목표 추론 절차와 같이 절차적으로 이해할 수도 있다.: to show/solve G, show/solve G1 and … and Gn 위의 예는 프롤로그의 예이다. (answer set programming) 분야는 절대 문절 형태가 선택에 의해 확장되는 하나의 예이다. (ko) 論理プログラミング(Logic Programming)とは、数理論理学(記号論理学)を基礎にしたプログラミングパラダイム、または数理論理学のコンピュータプログラミングへの応用である。形式論理の論理式をソースコードの書式に投影することが基本になる。プログラミングに適用するための幅広い解釈が加えられており、研究対象としての論理プログラミングは非常に多様である。 より一般的に受け入れられている論理プログラミングは、述語論理を基礎にし、問題領域の事実と規則を論理式モデル書式で表現して(ロジック)非決定性の演繹の導出原理を用いる(コントロール)というものである。このアルゴリズムスタイルで最も普及した論理プログラミング言語は「Prolog」である。 (ja) 邏輯編程(逻辑程序设计)是種編程典範,它設定答案須符合的規則來解決問題,而非設定步驟來解決問題。過程是 算法=邏輯+控制。 不同的方法,可以看英語:Inductive logic programming。 邏輯編程的要點是將正規的邏輯風格帶入電腦程式設計之中。數學家和哲學家發現邏輯是有效的理論分析工具。很多問題可以自然地表示成一個理論。說需要解答一個問題,通常與解答一個新的假設是否跟現在的理論無衝突等價。邏輯提供了一個證明問題是真還是假的方法。建立證明的方法是人所皆知的,故邏輯是解答問題的可靠方法。邏輯編程系統則自動化了這個程序。人工智能在邏輯編程的發展中發揮了重要的影響。 是邏輯編程社群的著名問題。電腦須自行找出令猴子接觸香蕉的可行方法,取代程式設計師指定猴子接觸香蕉的路徑和方法。 邏輯編程建立了描述一個問題裏的世界的邏輯模型。邏輯編程的目標是對它的模型建立新的陳述。世界上知識不斷膨脹。傳統來說,我們會將一個問題陳述成單一的假設。邏輯編程的程式透過證明這個假設在模型裏是否為真來解決問題。 一些經常用到邏輯編程工具的範疇: * 專家系統,程式從一個巨大的模型中產生一個建議或答案。 * 自動化定理證明,程式產生一些新定理來擴充現有的理論。 最常用的邏輯編程語言是Prolog,另外有較適用於大型方案的Mercury。詳盡的清單可見於Category:邏輯編程語言。 (zh) Logické programování je v širším významu použití matematické logiky jako prostředku pro programování. Jeho počátky můžeme vystopovat až k návrhu Johna McCarthyho advice taker (rádce) [1958]. V tomto návrhu slouží logika pro čistě deklarativní reprezentaci jazyka a dokazovač vět (theorem-prover) nebo generátor modelů (model-generator) se používá jako řešitel problémů (problem-solver). Řešení problému se tak dělí mezi programátora (ručí za správnost programu vyjádřené v logické formě) a dokazovač vět nebo generátor modelů (odpovídá za efektivní řešení problému). B1 a … a Bn implies H (cs) Logische Programmierung (Prädikative Programmierung, Logikprogrammierung) ist ein Programmierparadigma, das auf der mathematischen Logik beruht. Anders als bei der imperativen Programmierung besteht ein Logik-Programm nicht aus einer Folge von Anweisungen, sondern aus einer Menge von Axiomen, welche hier als eine Ansammlung von Fakten oder Annahmen zu verstehen ist. Stellt der Benutzer eines Logik-Programms eine Anfrage, so versucht der Interpreter, die Lösungsaussage allein aus den Axiomen zu berechnen. (de) Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses: H :- B1, …, Bn. and are read declaratively as logical implications: H if B1 and … and Bn. H. to solve H, solve B1, and ... and solve Bn. Consider the following clause as an example: fallible(X) :- human(X). (en) La programmation logique est une forme de programmation qui définit les applications à l'aide : * d'une base de faits : ensemble de faits élémentaires concernant le domaine visé par l'application, * d'une : règles de logique associant des conséquences plus ou moins directes à ces faits, * d'un moteur d'inférence (ou démonstrateur de théorème ) : exploite ces faits et ces règles en réaction à une question ou requête. (fr) In informatica la programmazione logica è un paradigma di programmazione nato negli anni '70 che adotta la logica del primo ordine sia per rappresentare sia per elaborare l'informazione. La programmazione logica differisce dalla programmazione tradizionale, sviluppata dalinguaggi ad alto livello quali Fortran, Cobol, Basic, Algol, Pascal, Ada, etc., in quanto richiede e nello stesso tempo consente al programmatore di descrivere la struttura logica del problema piuttosto che il modo di risolverlo . Da un punto di vista concettuale, il programmatore si può così concentrare sugli aspetti logici del problema e sul modo migliore per rappresentarli, senza essere focalizzato sulla necessità di determinare in dettaglio il modo di pervenire ai risultati. (it) Programowanie logiczne (nazywane także programowaniem w logice lub programowaniem w języku logiki) – metoda programowania, będąca odmianą programowania deklaratywnego, w której program podawany jest jako pewien zestaw zależności, a obliczenia są dowodem pewnego twierdzenia w oparciu o te zależności. Na przykład chcemy stwierdzić, czy w danym grafie skierowanym istnieje ścieżka z pewnego punktu do pewnego innego punktu. Krawędzie zapisane są relacją edge(Skąd, Dokąd). Nasz program wyglądałby w Prologu tak: Co czytamy następująco: (pl) Logisch programmeren is een vorm van programmeren die valt onder het declaratieve paradigma. Een veelgebruikte logische programmeertaal is Prolog. Ook SQL is een declaratieve taal.Logische talen vinden vooral toepassing in de computationele taalkunde en de kunstmatige intelligentie. logisch programmeren is een andere vorm van logisch programmeren. * Katten hebben een vacht * Een vacht bestaat uit haren De interpreter moet in dit geval antwoord kunnen geven op de vraag "Hebben katten haren?". Een voorbeeld van een functionele en logische programmeertaal is Curry. (nl) Логи́ческое программи́рование — парадигма программирования, основанная на математической логике — программы в ней задаются в форме логических утверждений и правил вывода. Наиболее известный язык логического программирования — Пролог. От Плэнера также произошли логические языки программирования , , и , а также язык , не использующих метод поиска с возвратами. Языки Mercury, Visual Prolog, Oz, , Datalog основаны на Прологе. (ru) Programação lógica é um paradigma de programação que faz uso da lógica matemática. John McCarthy [1958] foi o primeiro a publicar uma proposta de uso da lógica matemática para programação. A primeira linguagem de programação lógica foi a Planner, a qual permitia a invocação orientada a padrões de planos procedimentais de asserções e de objetivos. Com a necessidade de adaptação aos sistemas de memória muito limitada, que eram disponíveis quando ela foi desenvolvida. A linguagem Planner usava estruturas de controle de backtracking, de tal forma que apenas um único caminho computacional tinha que ser armazenado por vez. Em seguida, o Prolog foi desenvolvido como uma simplificação do Planner que permitia a invocação orientada a padrões apenas a partir de objetivos (também baseado em backtracki (pt) Логі́чне програмува́ння — парадигма програмування, а також розділ дискретної математики, що вивчає методи і можливості цієї парадигми, засновані на виведенні нових фактів з даних фактів згідно із заданими логічними правилами. Логічне програмування засноване на теорії математичної логіки. Найвідомішою мовою логічного програмування є Prolog, що є за своєю суттю універсальною машиною виводу, що працює в припущенні замкненості системи фактів. (uk) Logikprogrammering är ett programmeringsparadigm baserat på att bevis av predikatlogiska satser på vissa former kan automatiseras, vilket upptäcktes av på 1960-talet. Logikprogrammering är deklarativ, programmeraren anger vad som ska göras men inte hur (som i imperativ programmering). Ett logikprogram består av en formulering av problemet man vill ha löst på en predikatlogisk form. Sen är det upp till en interpretator att bevisa satsen/programmet.Deklarativiteten är en av fördelarna med logikprogrammering, en annan (som blir mer och mer aktuell) är att bevis av predikatlogiska satser kan automatiskt. Det är av stort intresse för att på ett enkelt sätt kunna skriva effektiva program för datorer med flera processorer eller processorkärnor, vilket har visat sig svårt med imperativ programme (sv) |
rdfs:label | Logic programming (en) برمجة منطقية (ar) Programació lògica (ca) Logické programování (cs) Logische Programmierung (de) Programación lógica (es) Ríomhchlárú loighce (ga) Programmazione logica (it) Programmation logique (fr) 論理プログラミング (ja) 논리형 프로그래밍 (ko) Logisch programmeren (nl) Programowanie logiczne (pl) Логическое программирование (ru) Programação lógica (pt) Logikprogrammering (sv) Логічне програмування (uk) 邏輯編程 (zh) |
owl:sameAs | freebase:Logic programming http://d-nb.info/gnd/4195096-3 wikidata:Logic programming dbpedia-ar:Logic programming dbpedia-bg:Logic programming http://bn.dbpedia.org/resource/যুক্তিভিত্তিক_প্রোগ্রামিং http://bs.dbpedia.org/resource/Logičko_programiranje dbpedia-ca:Logic programming dbpedia-cs:Logic programming dbpedia-de:Logic programming dbpedia-es:Logic programming dbpedia-et:Logic programming dbpedia-fa:Logic programming dbpedia-fi:Logic programming dbpedia-fr:Logic programming dbpedia-ga:Logic programming dbpedia-gl:Logic programming dbpedia-he:Logic programming dbpedia-hr:Logic programming dbpedia-io:Logic programming dbpedia-it:Logic programming dbpedia-ja:Logic programming dbpedia-ko:Logic programming dbpedia-ms:Logic programming dbpedia-nl:Logic programming dbpedia-pl:Logic programming dbpedia-pt:Logic programming dbpedia-ru:Logic programming dbpedia-simple:Logic programming dbpedia-sq:Logic programming dbpedia-sr:Logic programming dbpedia-sv:Logic programming dbpedia-th:Logic programming dbpedia-tr:Logic programming dbpedia-uk:Logic programming dbpedia-vi:Logic programming dbpedia-zh:Logic programming https://global.dbpedia.org/id/2Zsct |
prov:wasDerivedFrom | wikipedia-en:Logic_programming?oldid=1121161240&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Logic_programming |
is dbo:academicDiscipline of | dbr:Stephen_Muggleton dbr:Keith_Clark_(computer_scientist) |
is dbo:genre of | dbr:SWI-Prolog |
is dbo:knownFor of | dbr:Robert_Kowalski dbr:Louis_Hodes dbr:Veronica_Dahl dbr:Johann_Makowsky |
is dbo:wikiPageDisambiguates of | dbr:LP |
is dbo:wikiPageRedirects of | dbr:History_of_logic_programming dbr:Metalogic_programming dbr:Logic_Programming dbr:Logic_programming_language dbr:Linear_logic_programming dbr:Transaction_logic_programming dbr:Rule-Based dbr:Rule-based_(programming) dbr:Rule-based_programming dbr:Relational_programming dbr:Higher-order_logic_programming dbr:Higher_order_logic_programming dbr:Object-oriented_logic_programming dbr:Logic_language dbr:Logic_program dbr:Logical_(programming) dbr:Logical_programming |
is dbo:wikiPageWikiLink of | dbr:Probabilistic_logic_network dbr:Problem_solving dbr:Programming_paradigm dbr:Prolog dbr:Python_(programming_language) dbr:List_of_academic_fields dbr:List_of_computer_scientists dbr:Memoization dbr:Negation_as_failure dbr:Mexican_International_Conference_on_Artificial_Intelligence dbr:Tail_call dbr:Declarative_programming dbr:Dependent_type dbr:Algebraic_Logic_Functional_programming_language dbr:Algorithm dbr:Algorithmic_program_debugging dbr:Answer_set_programming dbr:History_of_artificial_intelligence dbr:History_of_logic_programming dbr:John_Newsome_Crossley dbr:List_of_Occitans dbr:List_of_educational_programming_languages dbr:List_of_pioneers_in_computer_science dbr:Persistent_data_structure dbr:Resolution_(logic) dbr:Robert_Kowalski dbr:DLV dbr:Unification_(computer_science) dbr:University_of_Rijeka dbr:Vadalog dbr:Visual_Prolog dbr:David_H._D._Warren dbr:David_Plaisted dbr:De_Bruijn_index dbr:Deductive_database dbr:Deductive_language dbr:Department_of_Mathematical_Logic_(Bulgarian_Academy_of_Sciences) dbr:Index_of_logic_articles dbr:Index_of_robotics_articles dbr:Inductive_logic_programming dbr:Inductive_programming dbr:Inferential_programming dbr:Institute_for_System_Programming dbr:International_Conference_on_Logic_Programming dbr:List_of_programmers dbr:List_of_programming_language_researchers dbr:List_of_programming_languages_by_type dbr:Prolog++ dbr:Prolog32 dbr:Reasoning_system dbr:Concurrent_logic_programming dbr:Constraint_Handling_Rules dbr:Cordell_Green dbr:Mathematical_logic dbr:Meaning_of_life dbr:SNOBOL dbr:SWI-Prolog dbr:Escher_(programming_language) dbr:Geometric_logic dbr:Narrowing_of_algebraic_value_sets dbr:Nominal_terms_(computer_science) dbr:Richard_O'Keefe dbr:Semantic_reasoner dbr:RuleML_Symposium dbr:R++ dbr:Ciao_(programming_language) dbr:Claire_(programming_language) dbr:Clojure dbr:Ehud_Shapiro dbr:François_Fages dbr:Fril dbr:Function_(computer_programming) dbr:GOLOG dbr:Glasgow_Haskell_Compiler dbr:Glossary_of_artificial_intelligence dbr:Glossary_of_computer_science dbr:Go!_(programming_language) dbr:Mobile_application_testing dbr:Constraint_logic_programming dbr:Constraint_programming dbr:Constraint_satisfaction dbr:Continuation-passing_style dbr:LispWorks dbr:Logic dbr:Logic_Programming_Associates dbr:Logtalk dbr:Louis_Hodes dbr:Machine_learning dbr:Stephen_Muggleton dbr:Clause_(logic) dbr:Comparison_of_multi-paradigm_programming_languages dbr:Computation dbr:Computational_logic dbr:Computer_program dbr:Computer_programming dbr:Denotational_semantics_of_the_Actor_model dbr:Functional_logic_programming dbr:Harrop_formula dbr:Horn_clause dbr:Krzysztof_R._Apt dbr:Parsing_expression_grammar dbr:PeaceMaker dbr:Physical_symbol_system dbr:Programming_language_theory dbr:Machine_learning_in_video_games dbr:Michael_Spivey dbr:Automated_theorem_proving dbr:Data_integration dbr:Database_theory dbr:Web_Ontology_Language dbr:Futures_and_promises dbr:Game_Description_Language dbr:John_G._Cleary dbr:Law_of_excluded_middle dbr:List_of_Brooklyn_College_alumni dbr:Logic_in_computer_science dbr:Logic_puzzle dbr:Logico-linguistic_modeling dbr:MiniKanren dbr:Veronica_Dahl dbr:Abductive_reasoning dbr:Actor_model dbr:Actor_model_later_history dbr:AgentSpeak dbr:Aix-Marseille_University dbr:Alain_Colmerauer dbr:Aldor dbr:Alfred_Horn dbr:Alma-0 dbr:Curry_(programming_language) dbr:Curry–Howard_correspondence dbr:DBLP dbr:Daniel_P._Friedman dbr:Database dbr:Datalog dbr:ECLiPSe dbr:Flix_(programming_language) dbr:And–or_tree dbr:Nicola_Leone dbr:Nissim_Francez dbr:Non-monotonic_logic dbr:Oz_(programming_language) dbr:Carl_Hewitt dbr:Difference_list dbr:Dimiter_Skordev dbr:Focused_proof dbr:Hannu_Toivonen_(professor) dbr:History_of_programming_languages dbr:KL0 dbr:Legal_informatics dbr:List_of_Equinox_episodes dbr:List_of_French_inventions_and_discoveries dbr:Programming_language_generations dbr:Procedural_programming dbr:Region-based_memory_management dbr:Reification_(computer_science) dbr:Gödel_(programming_language) dbr:Herbrand_structure dbr:Jack_Minker dbr:Backtracking dbr:Backward_chaining dbr:The_Beginner's_Guide_to_Computers dbr:Term_indexing dbr:Twelf dbr:Atari_2600 dbr:Abductive_logic_programming dbr:Abstract_machine dbr:Absys dbr:Johann_Makowsky dbr:John_Alan_Robinson dbr:John_McCarthy_(computer_scientist) dbr:Keith_Clark_(computer_scientist) dbr:Symbolic_artificial_intelligence dbr:Ecosystem_Management_Decision_Support dbr:Eight_queens_puzzle dbr:HiLog dbr:J_Strother_Moore dbr:Term_algebra dbr:The_Adventures_of_Robin_Hood_(video_game) dbr:Model_elimination dbr:Artificial_intelligence_for_video_surveillance dbr:Autoepistemic_logic dbr:Automated_reasoning dbr:Boolean_grammar dbr:CLACL dbr:Planner_(programming_language) dbr:Fifth-generation_programming_language dbr:Fifth_Generation_Computer_Systems dbr:Metalogic_programming dbr:Indeterminacy_in_concurrent_computation dbr:Mercury_(programming_language) dbr:Racket_(programming_language) dbr:Semipredicate_problem dbr:Semmle dbr:Wolverine_(character) dbr:Situation_calculus dbr:SLD_resolution dbr:ULTRA_(machine_translation_system) dbr:Variable_(computer_science) dbr:Well-founded_semantics dbr:Logic_Programming dbr:F-logic dbr:List_of_software_development_philosophies dbr:LP dbr:Programming_language dbr:Luís_Moniz_Pereira dbr:Structure_editor dbr:Probabilistic_logic dbr:Rulelog dbr:Event_calculus dbr:Navigational_database dbr:Racket_features dbr:Tefkat dbr:Monkey_and_banana_problem dbr:Multi-Agent_Programming_Contest dbr:Multi-adjoint_logic_programming dbr:Stable_model_semantics dbr:ΛProlog dbr:Logic_programming_language dbr:Outline_of_academic_disciplines dbr:Outline_of_artificial_intelligence dbr:Outline_of_computer_programming dbr:Outline_of_computer_science dbr:Outline_of_logic dbr:RuleML dbr:Turing_completeness dbr:Linear_logic_programming dbr:Transaction_logic_programming dbr:Rule-Based dbr:Rule-based_(programming) dbr:Rule-based_programming dbr:Relational_programming dbr:Higher-order_logic_programming dbr:Higher_order_logic_programming dbr:Object-oriented_logic_programming dbr:Logic_language dbr:Logic_program dbr:Logical_(programming) dbr:Logical_programming |
is dbp:field of | dbr:Keith_Clark_(computer_scientist) |
is dbp:focus of | dbr:RuleML |
is dbp:genre of | dbr:SWI-Prolog |
is dbp:knownFor of | dbr:Robert_Kowalski dbr:Louis_Hodes dbr:Veronica_Dahl |
is dbp:paradigm of | dbr:Prolog dbr:Algebraic_Logic_Functional_programming_language dbr:Vadalog dbr:Visual_Prolog dbr:Escher_(programming_language) dbr:Ciao_(programming_language) dbr:Fril dbr:GOLOG dbr:Logtalk dbr:Alma-0 dbr:Datalog dbr:Flix_(programming_language) dbr:Oz_(programming_language) dbr:Gödel_(programming_language) dbr:Absys dbr:CLACL dbr:Planner_(programming_language) dbr:Mercury_(programming_language) dbr:Racket_(programming_language) dbr:ΛProlog |
is foaf:primaryTopic of | wikipedia-en:Logic_programming |