Недетерминистичко програмирање

Недетерминистички програмски језик је језик који се може одредити, у извесним тачкама програма (назван "Избор тачке"), различите алтернативе за ток програма. За разлику од, ако - онда изјави, метода избора између ових алтернатива није директно наведена од стране програмера; Програм мора да одлучи управљањем током између алтернатива, преко неке опште методе примењујући на свим изборима тачака. Програмер наводи ограничен број алтернатива, али програм касније мора да изабере између њих . ( "Изабери" је, у ствари, типично име за недетерминистичке оператере). Хијерархија одабери тачке могу бити формиране, са избором виших нивоа који су довели до гране које садрже изборе на нижем нивоу у њима. 

Једна од метода избора је оличена у одустајању система (као што су АМБ , или уједињење у Пролог ), у којима неке алтернативе могу " пропасти, " изазивање програма да одустане и покушати друге алтернативе . Ако све алтернативе не изазову у одређеном тренутку избора , онда цео грана пада , а програм ће додатно одустати , у старији избору тачке . Један компликација је да, сваки избор је привремен и може бити поново направљен, систем мора бити у стању да поврати стари програм стања одвртањем споредних ефеката изазвањем делимично извршене гране која на крају није успела. 

Друга метода избора је јачање учење, оличена у системима као што су Алисп . У таквим системима, радије него одустајање , систем прати неку меру успеха и учи што избори често доводи до успеха, и у којим ситуацијама (и унутрашњи Програм стања и улаз животне средине могу утицати на избор). Ови системи су погодни за примену у роботици и другим областима у којима би повлачење изјаве укључивало покушавање да се поништи акција извода у динамичном окружењу, што може бити тешко или непракрично.

Види још

  • Недетерминизам

Литература

  • Abelson, Harold; Sussman, Gerald Jay (1996). Structure and Interpretation of Computer Programs (2nd изд.). MIT Press. Архивирано из оригинала 09. 03. 2018. г. Приступљено 04. 01. 2017. 
  • Maurizio Gabbrielli and Simone Martini: "Programming Languages: Principles and Paradigms", Springer, 2010.
  • Ellis Horowitz (ed.): Programming Languages, a Grand Tour (3rd ed.), 1987.
  • Ellis Horowitz: Fundamentals of Programming Languages, 1989.
  • Bruce J. MacLennan: Principles of Programming Languages: Design, Evaluation, and Implementation, Oxford University Press 1999.
  • John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
  • Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
  • Terrence W. Pratt and Marvin V. Zelkowitz: Programming Languages: Design and Implementation (4th ed.), Prentice Hall 2000.
  • Peter H. Salus. Handbook of Programming Languages (4 vols.). Macmillan 1998.
  • Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd ed., Addison-Wesley 1996.
  • Michael L. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers 2005.
  • Robert W. Sebesta: Concepts of Programming Languages, 9th ed., Addison Wesley 2009.
  • Franklyn Turbak and David Gifford with Mark Sheldon: Design Concepts in Programming Languages, The MIT Press 2009.
  • Peter Van Roy and Seif Haridi. Concepts, Techniques, and Models of Computer Programming, The MIT Press 2004.
  • David A. Watt. Programming Language Concepts and Paradigms. Prentice Hall 1990.
  • David A. Watt and Muffy Thomas. Programming Language Syntax and Semantics. Prentice Hall 1991.
  • David A. Watt. Programming Language Processors. Prentice Hall 1993.
  • David A. Watt. Programming Language Design Concepts. John Wiley & Sons 2004.