Prológus | |
---|---|
Nyelvóra | Logikai programozás |
Megjelent | 1972 |
Szerző | Alain Colmeroe |
Fájlkiterjesztés _ | .pl, .provagy.P |
Főbb megvalósítások | B-Prolog , Ciao , ECLiPSe , GNU Prolog , Logic Programming Associates , Poplog Prolog, P# , Quintus, SICStus , Strawberry , SWI- Prolog , tuProlog , XSB , YAP-Prolog |
Dialektusok | ISO Prolog, Edinburgh Prolog, Turbo Prolog, Visual Prolog |
Befolyásolva | tervező |
befolyásolta | Visual Prolog , Mercury , Oz , Erlang , Strand , KL0 , KL1 , Datalog |
A Prolog ( eng. Prolog ) egy logikai programozási nyelv és rendszer , amely a Horn-féle tagmondatok matematikai logikájának predikátumnyelvén alapul , amely az elsőrendű predikátumlogika egy részhalmaza .
A nyelv egy kis számú alapvető mechanizmus köré összpontosul, beleértve a mintaillesztést , az adatstruktúrák faábrázolását és az automatikus visszakövetést. Jól alkalmas olyan problémák megoldására, ahol az objektumokat (különösen a strukturált objektumokat) és a köztük lévő kapcsolatokat veszik figyelembe. A Prolog sajátosságai miatt a mesterséges intelligencia, a számítógépes nyelvészet és általában a nem numerikus programozás területén használatos. Egyes esetekben a szimbolikus számítások más szabványos nyelveken való végrehajtása nagy mennyiségű, nehezen érthető kód létrehozását teszi szükségessé, míg ugyanezen algoritmusok végrehajtása a Prologban egy egyszerű programot ad, amely könnyen elfér egy oldalon. .
A Prolog egy deklaratív programozási nyelv : a program logikáját tények és szabályok formájában reprezentált kapcsolatokban fejezik ki. A számítások elindításához külön kérés érkezik a tudásbázishoz , amelyre a logikai programozó rendszer igaz és hamis válaszokat generál. A változókat argumentumként tartalmazó általánosított lekérdezések esetén a létrehozott Prolog rendszer konkrét adatokat ad ki, hogy megerősítse az általánosított információk és a következtetési szabályok igazságtartalmát.
Más szavakkal, egy predikátum definiálható olyan függvényként , amely egy tetszőleges természetű halmazt logikai értékek {ложно, истинно} halmazára képez le . A prolog program feladata annak bizonyítása, hogy egy adott célkifejezés az adott tények és szabályok következménye-e.
A nyelv történetének kezdete az 1970-es évekre nyúlik vissza. [1] Deklaratív programozási nyelvként a Prolog egy feladat vagy tudásbázis leírását programként érzékeli, és maga is logikus következtetést, valamint a problémák megoldásának keresését eredményezi a visszalépéssel és egyesítéssel járó keresési mechanizmus segítségével .
A Prológ iránti érdeklődés néhányszor nőtt, esett, a lelkesedést erős elutasítás váltotta fel. A Prolog, mint a jövő nyelve iránti érdeklődés Japán nemzeti ötödik generációs számítógépes programjának fejlesztése során emelkedett a legmagasabbra az 1980-as években, amikor a fejlesztők abban reménykedtek, hogy a Prolog segítségével új alapelveket lehet majd megfogalmazni, amelyek magasabb szintre vezetnek. számítógépek.intelligencia szint.
A Prolog nyelv az 1980-as években számos szovjet számítástechnikai egyetemi és iskolai tankönyvben szerepelt a matematikai logika elemeinek, a logikai programozás elveinek, valamint a tudásbázisok és szakértői rendszermodellek tervezésének tanulmányozása céljából . Ebből a célból a Prolog oktatási orosz nyelvű tolmácsait telepítették az IBM PC-re és számos szovjet iskolai számítógépre.
A Prologban a tényeket konkrét értékekkel rendelkező logikai predikátumok formájában írják le. A következtetési szabályokat logikai predikátumok írják le, a logikai következtetési szabályok meghatározása a tudásbázisok és információfeldolgozási eljárások feletti predikátumok listája formájában.
Jelenleg a Prolog a többszöri pesszimista előrejelzések ellenére is folyamatosan fejlődik különböző országokban, és új technológiákat és koncepciókat, valamint elengedhetetlen programozási paradigmákat épít be . Különösen a nyelvfejlesztés egyik területe ( Oroszországban is) az intelligens ügynökök koncepcióját valósítja meg .
A Prolog szinte minden ismert operációs rendszerre (OS) és platformra (beleértve a Java -t és a .NET -et is ) implementálva lett. Az operációs rendszerek a következők: mainframe OS , a teljes Unix család , Windows , OS mobilplatformokhoz.
A nyelv számos modern megvalósítása rendelkezik belső kiterjesztéssel az OOP architektúra miatt. A nem ingyenes megoldások mellett a Prolog ingyenes implementációi is léteznek . 1996-ban elfogadták az ISO szabványt , melynek neve ISO / IEC JTC1 / SC22 / WG17.
A nyelv alapelve a program és az adatok ábrázolásának egyenértékűsége (deklarativitása), ezért a nyelvi állítások egyrészt rekordok, mint az adatbázis rekordjai, másrészt szabályok, amelyek a feldolgozás módjait hordozzák. Ezeknek a tulajdonságoknak a kombinációja vezet oda, hogy a Prolog rendszer működése során a tudás (adatok és szabályok) felhalmozódik. Ezért a Prolog rendszereket természetes környezetnek tekintik a tudásbázis felhalmozására, valamint a hallgatók és iskolások megtanítására a logikai programozás elveire.
A Prolog nyelv alapfogalmai a tények, a következtetési szabályok és a lekérdezések, amelyek lehetővé teszik a tudásbázisok , a következtetési eljárások és a döntéshozatal leírását. A logikai programozás a Prologue-ban megvalósított módon csak egyetlen következtetési szabályt használ, a felbontást .
A Prologban a képlet kezdeti halmaza, amelyhez üres rezolválót keres, az úgynevezett " Horn-klauzulák " formájában jelenik meg:
A Prolog program a záradékokkal meghatározott kapcsolatokat írja le. Mint minden más szimbolikus számítástechnikai nyelvben, a mondatok kifejezésekből épülnek fel, amelyek viszont atomokra, számokra, változókra és struktúrákra oszlanak. Az atomot kisbetűvel írják, vagy idézőjelek közé kell tenni, ha nagybetűre van szükség.
atom "Atom"A nagybetűs változók eltérnek a procedurális programozási nyelvek változóitól, nem egy adott memóriahelyhez kapcsolódnak, hanem közelebb állnak egy matematikai változóhoz.
X értéke 2 + 2.A struktúrák zárójelben lévő kifejezések gyűjteményei, beleértve az egyéb szerkezeteket is. A szerkezetet a zárójelek előtt megjelenő név (funktor) jelöli.
könyv ( 'Cím' , '2009' , 'Spb' , szerzők ( 'Első szerző' , 'Második szerző' ) ).A listák egy másik konstrukció, amelyek elemei szögletes zárójelben vannak. A Prolog listái linkelt listákon alapulnak .
Lista = [ a , b , [ c , d ], e ].A Prolog szabályai következtetési szabályok formájában vannak megírva, logikai következtetésekkel és logikai feltételek listájával. A tiszta Prologban a mondatok Horn -mondatokra korlátozódnak :
Következtetés : - Állapot .és így olvashatók: "A cím IGAZ, ha a törzs IGAZ." A szabály törzse hivatkozásokat tartalmaz predikátumokra, amelyeket a szabály célpontjainak nevezünk.
Beépített predikátumok ,/2 Jelentése: két argumentummal rendelkező operátor. A célok összefüggését határozza meg. ;/2 Az operátor határozza meg a diszjunkciót.A tényeket a Prologban konkrét értékekkel rendelkező logikai predikátumok írják le. A Prolog tudásbázisok tényei konkrét információkat (tudást) képviselnek. Az általánosított információkat és ismereteket a Prolog nyelvben logikai következtetési szabályok (definíciók) és ilyen következtetési szabályok (definíciók) halmazai határozzák meg konkrét tényekre és általánosított információkra vonatkozóan. Az üres testű mondatokat tényeknek nevezzük . Tény példa:
Macska ( Iván ).Ez a tény egyenértékű a szabállyal:
Macska ( Iván ) : - IGAZ .A Prologot elsősorban hiányos deklaratív jellege miatt kritizálják: szinte lehetetlen bonyolult és gyakorlatilag hasznos Prolog programot teljesen deklaratív stílusban létrehozni, a programozó kénytelen procedurális technikákhoz folyamodni, ami a programozás meredek növekedéséhez vezet. a programok létrehozásának és hibakeresésének bonyolultsága, valamint a köztes eredmények rossz ellenőrizhetősége. [2]
A nyelv másik gyakran kritizált tulajdonsága a gépelés hiánya (míg a Visual Prolog [3] - a nyelv egyik objektum-orientált kiterjesztése - erős gépelést valósít meg, ami azonban csökkenti a Prolog rugalmasságát).
A nyelv előre meghatározza a döntési fa bejárásának sorrendjét "mélységben", és szabványosítja azokat az operátorokat, amelyek lehetővé teszik a beavatkozást ebbe a folyamatba (például a vágás !vagy elágazás operátora ->). Ez az architektúra megnehezíti a programok automatikus párhuzamosítását, ami lehetővé teszi több processzor vagy hálózati csomópont használatát a megoldás keresésében.
Kimenet: (Jake, Tim) (Tim, Jake)
Következtetések: 1. Timóteus idősebb Ivánnál 2. Vaszilij idősebb Péternél 3. Ivan a legfiatalabb; Vaszilij a legidősebb; Timóteus idősebb Péternél.
Programozási nyelvek | |
---|---|
|
ISO szabványok | |
---|---|
| |
1 -től 9999 -ig |
|
10 000 és 19999 között |
|
20000+ | |
Lásd még: Azon cikkek listája, amelyek címe "ISO"-val kezdődik |