Hyvlare

planerare
Språkklass Logisk programmering
Framträdde i 1969
Författare Carl Hewitt
Dialekter eter
påverkas Lisp , QA-4 , Popler , Conniver och QLISP

Planner är ett funktionellt - logiskt programmeringsspråk som i sin syntax liknar Lisp . Utvecklad vid MIT Artificial Intelligence Laboratory av Carl Hewitt 1967-1971 , den första publikationen som beskrev språket dök upp 1969 .  

Ursprungligen positionerat av författaren som ett språk för automatisk planering och sändning inom robotik , senare erkändes det av specialister på artificiell intelligens som ett språk som har den mest adekvata uppsättningen av uttrycksfulla medel för sådana uppgifter (man trodde att detta krävde flexibla symboliska bearbetningsmöjligheter ). Trots att språket aldrig implementerades fullt ut, visade sig dess inverkan på forskning relaterad till artificiell intelligens på 1970-talet vara på många sätt avgörande.

Den funktionella delen av språket innehöll praktiskt taget hela Lisp som en delmängd, andra delar - mönstermatchning , backtracking , anropsprocedurer efter mönster, deduktiva mekanismer i logisk programmerings anda.

I den form som det ursprungligen beskrevs av författaren implementerades språket aldrig, både på grund av krångligheten och beskrivningens schematiska karaktär. De första implementeringarna, Micro-planner och Pico-planner, innehöll en ganska begränsad delmängd av språket. Mer kompletta alternativ implementerades i Popler -systemet och ett antal av dess derivat - QA-4 , Conniver , QLISP , Ether . På 1970-talet i USSR implementerades språket i PLENER-BESM-systemet utvecklat för BESM-6 .

Elements

Även om språket faktiskt innehåller Lisp helt som en del av sig självt, är dess inbyggda karaktärsbehandlingsmöjligheter mycket bredare. Till exempel, funktionerna ELEMoch RESTgeneralisera funktionerna CARoch CDR, så att du kan välja och kassera godtyckliga element från listan: [ELEM 1 L] = = A, [REST 2 L] = (С (D Е F) (G Н)). Dessutom har införandet av flera typer av parenteser (Lisp tillåter endast parenteser, vilket gör program mycket svåra att läsa) har gjort programmen mycket tydligare.

En av de mest anmärkningsvärda funktionerna i språket är sökning och analys av data efter mönster (först implementerad i Snoball och kraftigt utvecklad i Planer).

En specifik del av språket ägnas åt förmågan att bygga och förändra beskrivningen av den miljö där problemet löses: beskrivningen av miljön kallas en "databas" och innehåller enskilda påståenden (fakta) som är sanna i denna miljö. Utöver de fakta som finns i databasen ska programmet specificera de logiska sambanden mellan begreppen som används i problemet, samt beskrivningar av de åtgärder som får utföras. Sådana beskrivningar kallas för satser. Varje sats har en lista med villkor (förutsättningar) som måste uppfyllas innan den kan tillämpas. Som ett resultat av att tillämpa satsen upphör vissa fakta från databasen att vara sanna och måste tas bort från den, medan andra tvärtom blir sanna och måste fyllas på. Listor över fakta av båda slagen finns också i beskrivningar av satser.

En annan viktig innovation av språket var backtracking-läget, som gör att du kan överge tidigare fattade beslut under genomförandet av programmet om det visar sig att de inte leder till målet.

Litteratur