"Prologue" என்பது ஒரு நிரலாக்க மொழி அல்லது செயற்கை நுண்ணறிவின் அடிப்படை. தர்க்க நிரலாக்கம். ப்ரோலாக் மொழியின் அடிப்படைகள் புரோலாக் எங்கே பயன்படுத்தப்படுகிறது?

அவர் ஏன் ஆச்சரியமாக இருக்கிறார்? எனக்கு இரண்டு டஜன் மொழிகள் தெரியும், மேலும் புதிய ஒன்றைக் கற்றுக்கொள்வது எனக்கு ஒரு பிரச்சனையல்ல, இனி தேவையை நான் காணவில்லை.

முன்னுரை தனித்துவமானது. அறிவிப்பு நிரலாக்க முன்னுதாரணத்தை பிரதிநிதித்துவப்படுத்தும் ஒரே மொழி இதுவாகும்; இது நூற்றுக்கணக்கான வெவ்வேறு செயலாக்கங்களைக் கொண்ட ஒரு மொழி, ஆனால் அவை இன்னும் ப்ரோலாக் என்று அழைக்கப்படுகின்றன, பெயருக்கு முன்னொட்டுகள் மற்றும் பின்னொட்டுகளை மட்டுமே சேர்க்கின்றன; 20 ஆண்டுகளுக்கும் மேலாக குறிப்பிடத்தக்க மாற்றங்கள் எதுவும் ஏற்படாத ஒரு வாழும் மொழி; உண்மையான நிரலாக்கத்தில் பயன்பாடு இல்லாத மிகவும் பிரபலமான ஒரே நிரலாக்க மொழி இதுவாக இருக்கலாம். ஏன் ப்ரோலாக்?

முன்னுரை இயற்கையில் தனித்துவமானது, இது ஒரு மகிழ்ச்சியான தற்செயல் (உலகின் மர்மமான அமைப்பு) காரணமாக தோன்றியது. 60 களில் ஒருமுறை, தானியங்கி தேற்றம் நிரூபிக்கும் கோட்பாடு மிக வேகமாக வளர்ந்தது, மேலும் ராபின்சன் ஒரு தீர்மான வழிமுறையை முன்மொழிந்தார், இது எந்தவொரு உண்மையான தேற்றத்தையும் (ஆக்சியோம்களில் இருந்து பெறுவது) ஒரு வரையறுக்கப்பட்ட நேரத்தில் (அது இல்லை) நிரூபிக்க முடிந்தது. அறியப்படுகிறது). இது பின்னர் மாறியது போல், இது ஒரு பொதுவான சிக்கலுக்கு சிறந்த தீர்வாகும்; குறிப்பிட்ட எண்ணிக்கையிலான செயல்பாடுகளில் தேற்றத்தை நிரூபிக்க இயலாது. எளிமையான வார்த்தைகளில், அல்காரிதம் என்பது (பொதுவாக எல்லையற்ற) வரைபடத்தின் அகலம்-முதல் பயணமாகும். இயற்கையாகவே, அல்காரிதத்தின் செயல்பாட்டின் முன்கணிப்பு நடைமுறையில் 0 க்கு சமமாக இருக்கும்; அதன்படி, இது ஒரு நிரலாக்க மொழிக்கு முற்றிலும் பொருந்தாது. அந்த நேரத்தில் கல்மரோ சிக்கலை ஒரு அற்புதமான சுருக்கத்தைக் கண்டறிந்தார், இதற்கு நன்றி சில கோட்பாடுகளின் ஆதாரம் நிரலின் நடைமுறை செயல்படுத்தல் போல் இருந்தது. நிரூபிக்கக்கூடிய தேற்றங்களின் வகுப்பு மிகவும் விரிவானது மற்றும் நிரல்படுத்தக்கூடிய சிக்கல்களின் வகுப்பிற்கு மிகவும் பொருத்தமானது என்பது கவனிக்கத்தக்கது. அப்படித்தான் 1972ல் ப்ரோலாக் உருவானது.

இந்த கட்டுரையில், பொதுவான தர்க்கரீதியான சிக்கல்களைத் தீர்ப்பதற்கான ஒரு கருவியாக Prolog பற்றி பேச முயற்சிப்பேன். இந்த தலைப்பு ஏற்கனவே ப்ரோலாக் தொடரியலை அறிந்தவர்களுக்கும், அதை உள்ளே இருந்து புரிந்து கொள்ள விரும்புபவர்களுக்கும், மொழியின் தொடரியல் முற்றிலும் தெரியாதவர்களுக்கும் ஆர்வமாக இருக்கும், ஆனால் கூடுதல் நேரத்தை செலவிடாமல் அதன் "அனுபவத்தை" புரிந்து கொள்ள விரும்புகிறது. தொடரியல் கட்டமைப்புகளைக் கற்றல்.


ப்ரோலாக்கின் முக்கிய அம்சம் என்னவென்றால், அதை எளிதாக படிக்க முடியும், ஆனால் எழுதுவது மிகவும் கடினம், இது அனைத்து முக்கிய மொழிகளிலிருந்தும் அடிப்படையில் வேறுபட்டது, எழுதுவது இன்னும் எளிதாகிவிட்டது என்று கூறுகிறது, இன்னும் ஒரு படி மற்றும் நீங்கள் டேப்லெட்டில் எழுதலாம், இழுக்கலாம் Google+ இல் உள்ள நண்பர்கள் போன்ற வேலை தொகுதிகள், குறியீட்டின் தரம் இதனால் பெரிதும் பாதிக்கப்படுகிறது என்பதை நாம் அனைவரும் அறிவோம். ஒவ்வொரு வரியும் தெளிவாக இருப்பதாகத் தெரிகிறது, ஆனால் இந்துஸ்தானில் அவர்கள் சொல்வது போல் டெவலப்பர்களால் கூட இந்த அமைப்பு எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்து கொள்ள முடியாது. ப்ரோலாக் கற்பிப்பது குறித்த எல்லா புத்தகங்களிலும், அவர்கள் ஒரே தவறை செய்கிறார்கள், உண்மைகள், உறவுகள், கேள்விகள் பற்றிய கதையைத் தொடங்குகிறார்கள், மேலும் ஒரு நபர் ஒரு நிபுணர் அமைப்பு அல்லது தரவுத்தளமாக மொழியைப் பற்றிய அணுகுமுறையை வளர்த்துக் கொள்கிறார். நிரல்களை எவ்வாறு சரியாகப் படிப்பது மற்றும் டஜன் கணக்கானவற்றைப் படிப்பது எப்படி என்பதைக் கற்றுக்கொள்வது மிகவும் முக்கியம் :)

முன்னுரை நிகழ்ச்சிகளை எப்படி சரியாக படிப்பது

நிரல்களைப் படிப்பது மிகவும் எளிதானது, ஏனெனில் மொழியில் மிகக் குறைவான சிறப்பு குறியீடுகள் மற்றும் முக்கிய வார்த்தைகள் உள்ளன, மேலும் அவை எளிதில் இயற்கை மொழியில் மொழிபெயர்க்கப்படுகின்றன. ஒரு புரோகிராமரின் முக்கிய தவறு என்னவென்றால், நிரல் எவ்வாறு செயல்படுகிறது என்பதை அவர் உடனடியாக கற்பனை செய்ய விரும்புகிறார், மேலும் நிரல் என்ன விவரிக்கிறது என்பதைப் படிக்கவில்லை, எனவே ஒரு புரோகிராமரை விட ஒரு சாதாரண நபரின் மூடப்படாத மூளையைப் பயிற்றுவிப்பது மிகவும் எளிதானது என்று எனக்குத் தோன்றுகிறது.
கருத்துக்கள்
மொழியில் 2 கருத்துக்கள் உள்ளன முன்னறிவிக்கிறது(நிபந்தனைகள்) மற்றும் பொருள்கள்(அவை மாறிகள் மற்றும் விதிமுறைகள்). முன்னறிவிக்கிறதுஒரு குறிப்பிட்ட நிபந்தனையை வெளிப்படுத்தவும், எடுத்துக்காட்டாக, ஒரு பச்சை பொருள் அல்லது ஒரு முதன்மை எண்; நிபந்தனைகள் உள்ளீட்டு அளவுருக்களைக் கொண்டிருப்பது இயற்கையானது. உதாரணத்திற்கு பச்சை_பொருள்(பொருள்), முதன்மை_எண்(எண்). ஒரு முன்கணிப்பில் உள்ள அளவுருக்களின் எண்ணிக்கை முன்னறிவிப்பின் அரிட்டியை தீர்மானிக்கிறது. பொருள்கள்- விதிமுறைகள், மாறிலிகள் மற்றும் மாறிகள். மாறிலிகள்- இவை எண்கள் மற்றும் சரங்கள், மாறிகள்- அறியப்படாத ஒரு பொருளை வெளிப்படுத்தவும், ஒருவேளை தேடப்படும் ஒன்றை வெளிப்படுத்தவும், மேலும் அவை கோடுகளாக குறிப்பிடப்படுகின்றன பெரியஎழுத்துக்கள். இப்போதைக்கு விதிமுறைகளை விட்டுவிட்டு எளிமையான திட்டத்தைப் பார்ப்போம்.
நிரல்
நிரல் என்பது படிவத்தின் விதிகளின் தொகுப்பாகும் நிபந்தனை1 மற்றும் நிபந்தனை2 மற்றும்... என்றால் நிபந்தனை உண்மை.முறைப்படி, இந்த விதிகள் AND மூலம் இணைக்கப்படுகின்றன, ஆனால் ஒரு முரண்பாட்டைப் பெறுவது சாத்தியமில்லை, ஏனெனில் ப்ரோலாக்கில் தர்க்கரீதியான மறுப்பு இல்லை, மேலும் ஒரே ஒரு முன்கணிப்பு (நிபந்தனை) மட்டுமே அந்த இணைப்பில் இருக்க முடியும்.

A:- B_1, B_2. % விதி பின்வருமாறு கூறுகிறது: B_1 மற்றும் B_2 எனில், A
odd_prime(Number) :- prime(Number), odd(Number).
% "எண்" முதன்மை மற்றும் ஒற்றைப்படை எனில், "எண்" என்பது ஒற்றைப்படை_பிரைம்

நீங்கள் பார்க்க முடியும் என, மாறி பெயருக்கு ஒரு நோக்கம் உள்ளது - இது விதி. கணித ரீதியாக சரியாக, விதி ஒலிக்கிறது: எந்த மாறிக்கும் - "எண்", அது முதன்மை மற்றும் ஒற்றைப்படை என்றால், அது முதன்மை_ஒற்றை. இதேபோல், அதை பின்வருமாறு மறுபெயரிடலாம்: ஒற்றைப்படை மற்றும் முதன்மையான "எண்" இருந்தால், அது ஒற்றைப்படை_பிரதானமாகும். எனவே, மாறி பெயர் மிகவும் முக்கியமானது! இடது பக்கத்தில் (முன்:-) எண்ணை எண் 2 உடன் மாற்றினால், விதி அதன் அர்த்தத்தை மாற்றும்: எந்த எண் 2 மற்றும் எண்ணுக்கு, எண் பிரைம் மற்றும் ஒற்றைப்படை எனில், எண்2 எளிய ஒற்றைப்படை. எல்லா எண்களும் முதன்மை_ஒற்றைப்படை என்று மாறிவிடும்! புரோலாக்கில் இது மிகவும் பொதுவான பிழை.

A:- B_1, B_2. % விதி பின்வருமாறு: B_1 மற்றும் B_2 எனில், ஒரு ஒற்றைப்படை_பிரதம(எண்) :- முதன்மை(எண்), ஒற்றைப்படை(எண்). % "எண்" முதன்மை மற்றும் ஒற்றைப்படை எனில், "எண்" என்பது ஒற்றைப்படை_பிரைம்

எடுத்துக்காட்டு - சரியான எண்கள்
perfect_number(N) :- எண்(N), தொகை_of_divisors_without_number(N, SumofDivisors), க்கு சமம்(Sum_ofDivisors, H). சரியான_எண்(1). சமம் (பொருள், பொருள்). எண் இல்லாத_வகுப்பாளர்களின்_தொகை(1, 1). எண்_இல்லாத_வகுப்புகளின்_தொகை(எண், கூட்டுத்தொகை) :- எண்_முந்தைய(எண், முந்தைய),_எண்_எண்ணின்_வகுப்புகளின்_தொகை(எண், தொகை, முந்தையது). தொகை_எண்_வகுப்பான்கள்_எண் (எண், 1, 1). _எண்_வகுப்பதில்_எண்(எண், கூட்டுத்தொகை, வகுத்தல்) :-_ஆல்_வகுத்தல்(எண், வகுத்தல்), எண்_முந்தைய(வகுத்தல், முந்தைய),_எண்_வகுத்தல்_எண்(எண், சம்ப்ரெவ், முந்தையது), சேர்,(தொகைத் தொகை). தொகை_எண்_வகுப்பான்கள்_எண் (எண், கூட்டுத்தொகை, வகுத்தல்) :- வகுக்க முடியாது (எண், வகுத்தல்), எண்_முந்தைய (வகுத்தல், முந்தைய), எண்ணின்_எண்_வகுப்புகளின்_எண் (எண், கூட்டுத்தொகை, முந்தையது).

முதலில், விதிகள் என்ன அர்த்தம் என்பதை முறையாகப் படிப்போம்:

  1. "H" என்பது ஒரு எண்ணாக இருந்தால் மற்றும் "H" மற்றும் "SumDivisors" க்கு sum_divisors_without_number நிபந்தனை பூர்த்தி செய்யப்பட்டால், வேறுவிதமாகக் கூறினால், SumDivisors என்பது "H" எண்ணின் வகுப்பிகளின் கூட்டுத்தொகையாகும், மேலும் "H" என்பது "SumDivisors" க்கு சமம். , பின்னர் "H" ஒரு சரியான எண்.
  2. 1 ஒரு சரியான எண். விதிகளுக்கு நிபந்தனைகள் இல்லாமல் இருக்கலாம், இதில் அவை உண்மைகள் என்று அழைக்கப்படுகின்றன.
  3. ஒவ்வொரு பொருளும் "O" என்பது "O" க்கு சமம். கொள்கையளவில், ஒரு நிலையான முன்கணிப்பு உள்ளது "=", ஆனால் நீங்கள் அதை உங்கள் சொந்தமாக முழுமையாக மாற்றலாம்.
  4. எண் 1 இல்லா_வகுப்புகளின்_தொகை 1 க்கு சமம் என்பது உண்மை.
  5. முந்தைய எண் "எண்" வரையிலான "எண்" என்ற வகுப்பிகளின் கூட்டுத்தொகை "தொகை"க்கு சமமாக இருந்தால், இது எண்_இல்லாத_வகுப்புகளின்_தொகையாகும். X ஆல் வகுபடும் X என்பதால், X இன் வகுப்பிகளின் கூட்டுத்தொகை Y ஐ விட குறைவாகவோ அல்லது சமமாகவோ உள்ளது, எனவே நாம் Y = X - 1 ஐ எடுத்துக்கொள்கிறோம்.
  6. அடுத்து, 3 முன்னறிவிப்புகள், Y (வகுப்பான்) க்குக் குறைவான அல்லது சமமான வகுப்பிகளின் கூட்டுத்தொகையைத் தீர்மானிக்கின்றன, 1வது வழக்கு Y என்பது 1 க்கு சமம், 2வது வழக்கு எண் Y ஆல் வகுபடும், பின்னர் sum_of_divisors(X, Y) = sum_of_divisors(X, Y- 1) + Y , மற்றும் 3வது வழக்கு எண் Y ஆல் வகுபடாது, பின்னர் sum_of_divisors(X, Y) = sum_of_divisors(X, Y-1).
நிரல் என்பது வரையறைகளின் தொகுப்பைப் போன்றது
"வரையறைகள்" அடிப்படையில் இந்த விதிகளைப் படிக்க இரண்டாவது வழி உள்ளது, குறைவான கணிதம் மற்றும் மிகவும் இயற்கையானது. புரோலாக்கில் இடதுபுறத்தில் உள்ள அனைத்து விதிகளும் (அப்போதைய பகுதியில்) ஒரே ஒரு நிபந்தனையை மட்டுமே கொண்டிருப்பதை நீங்கள் கவனிக்கலாம், இது அடிப்படையில் இந்த நிபந்தனையின் "வரையறை" ஆகும்.
எடுத்துக்காட்டாக, 1வது விதி சரியான எண்களின் வரையறை. "H" என்பது ஒரு எண்ணாக இருக்கும் போது "H" என்பது ஒரு சரியான எண் மற்றும் "H" இன் வகுப்பிகளின் கூட்டுத்தொகை "H" க்கு சமமாக இருக்கும் போது. ஒரே மாதிரியான முன்னறிவிப்புகள் "அல்லது" நிபந்தனையைப் பயன்படுத்தி பெயரால் தொகுக்கப்படுகின்றன. அதாவது, நீங்கள் வரையறையைச் சேர்க்கலாம்: “H” என்பது சரியான எண்.. அல்லது “H” 1 ஆக இருக்கும்போது.

இந்த வாசிப்பு முறை பரவலாகப் பயன்படுத்தப்படுகிறது, ஏனெனில் இது கணிப்புகளை ஒரே மாதிரியான குழுக்களாக இணைக்க அனுமதிக்கிறது மற்றும் மொழிபெயர்ப்பாளர் எந்த வரிசையில் கணிக்கிறார் என்பதைப் புரிந்துகொள்ள உதவுகிறது.
சில அறிக்கைகளின் உண்மையை சரிபார்க்கவும். எடுத்துக்காட்டாக, ஒரு முன்கணிப்புக்கு ஒரு வரையறை இல்லை என்றால், அதைக் கொண்டு ஒரு அறிக்கையின் உண்மையை நிரூபிக்க இயலாது என்பது வெளிப்படையானது. எடுத்துக்காட்டு எண். 1 இல், "வகுக்கப்பட்ட" முன்கணிப்புக்கு எந்த வரையறையும் இல்லை.

ஒரு சுவாரஸ்யமான உண்மை என்னவென்றால், ப்ரோலாக்கில் லூப்கள் இல்லை, மாறக்கூடிய பணிகள் இல்லை, வகை அறிவிப்புகள் இல்லை, மேலும் விதிமுறைகள் மற்றும் கிளிப்பிங் பற்றி நினைவில் வைத்துக் கொண்டால், மொழி அல்காரிதம் ரீதியாக முழுமையடைகிறது.

வெப்ப குளியல்
வெப்ப குளியல்பொருள்களின் பெயரிடப்பட்ட தொகுப்பாக ஒரு சுழல்நிலை வரையறை உள்ளது. கால = "பெயர்"(பொருள், பொருள், ...), உதாரணம் நபர்("பெயர்", "குடும்பப்பெயர்"), "+"(1, 2), நபர்(முகவரி("சில முகவரி"), குடும்பப்பெயர்("கடைசி பெயர்"), தொலைபேசி("தொலைபேசி")). ஒரு சொல்லை கணிதக் கருத்தாகக் கருதினால், அந்தச் சொல் ஒரு செயல்பாடு அல்லது இன்னும் துல்லியமாக ஒரு செயல்பாடு, அதாவது “+”(1, 2) என்பது 1+2 க்கு சமமான ஒரு பொருள் உள்ளது என்று அர்த்தம். 1+2 = 3 என்று இது அர்த்தப்படுத்துவதில்லை; ப்ரோலாக்கில் இந்த வெளிப்பாடு உண்மையல்ல, மீதமுள்ள தொகுதி 2 குழுவில் 3 இல்லை. மீண்டும், கணிதக் கண்ணோட்டத்தில், மாறிகள் அனைவருக்கும் என்ற வார்த்தையால் இணைக்கப்படுகின்றன, மேலும் ஒரு அறிக்கையில் வார்த்தை இருந்தால், இந்த நோக்கத்திற்காக ஒரு சொல் (செயல்பாட்டு) பயன்படுத்தப்படுகிறது. எந்த எண்ணுக்கும் ஒரு காரணி எண் உள்ளது: காரணி (X, உண்மை(X)).

ஒரு நிரலாக்கக் கண்ணோட்டத்தில், சொற்களை மிகவும் எளிமையாக விளக்கலாம்: ஒரு சொல் என்பது பண்புக்கூறுகளின் தொகுப்பைக் கொண்ட ஒரு பொருள், பண்புக்கூறுகள் பிற விதிமுறைகள் அல்லது மாறிலிகள் அல்லது மாறிகள் (அதாவது வரையறுக்கப்படாதவை) இருக்கலாம். முக்கிய வேறுபாடு என்னவென்றால், ப்ரோலாக்கில் உள்ள அனைத்து பொருட்களும் மாறாதவை, அதாவது, அவற்றில் உள்ள பண்புகளை நீங்கள் மாற்ற முடியாது, ஆனால் ஒரு சிறப்பு நிலை உள்ளது - ஒரு மாறி.

உதாரணம் - முழு எண் கணிதம்
நாட்(0). நாட்(எண்(எண்)) :- நாட்(எண்). கூட்டல் (0, எண், எண்). கூட்டல்(எண்(N1), N2, எண்(Res) :- plus(N1, N2, Res). பெருக்கவும்(0, எண், 0). பெருக்கவும்(எண்(Ch1), Ch2, Res2) :- பெருக்கவும்(Ch1, Ch2, Res), கூட்டல்(Res, Ch2, Res2).
  1. சொத்து நாட் (இயற்கை எண்) வரையறை. 0 என்பது ஒரு இயற்கை எண், எண் இயற்கையாக இருந்தால், ஒரு பொருள் எண் (எண்) உள்ளது, அதுவும் ஒரு இயற்கை எண். கணித ரீதியாக, "எண்" என்ற சொல் +1 செயல்பாட்டை வெளிப்படுத்துகிறது; ஒரு நிரலாக்கக் கண்ணோட்டத்தில், "எண்" என்பது ஒரு சுழல்நிலை தரவு அமைப்பு, இங்கே அதன் கூறுகள்: எண்(0), எண்(எண்(0)), எண்(எண் (எண்(0))).
  2. கூட்டல் விகிதம் 0 + எண் = எண். Ch1 + Ch2 = Res எனில், (Ch1+1) + Ch2 = (Res+1).
  3. பெருக்குவதற்கான விகிதம் 0 * எண் = 0. Ch1 * Ch2 = Res மற்றும் Res + Ch2 = Res2 எனில், பின்னர் (Ch1+1) * Ch2 = Res2.
வெளிப்படையாக இந்த அறிக்கைகள் சாதாரண எண்கணிதத்திற்கு உண்மையாக இருக்கும், ஆனால் நாம் ஏன் எண் + 0 = எண் போன்ற வெளிப்படையானவற்றை சேர்க்கவில்லை. பதில் எளிது: பணிநீக்கம் எந்த வரையறையிலும் மிகவும் மோசமானது. ஆம், இது கணக்கீடுகள், ஒரு வகையான முன்கூட்டிய தேர்வுமுறைக்கு உதவும், ஆனால் பக்க விளைவுகள் வரையறைகளில் முரண்பாடுகள், ஒரு அறிக்கையின் தெளிவற்ற வெளியீடு மற்றும் மொழிபெயர்ப்பாளரின் லூப்பிங் ஆகியவையாக இருக்கலாம்.

ப்ரோலாக் முன்னறிவிப்புகளை எவ்வாறு புரிந்துகொள்கிறது மற்றும் அது அறிக்கைகளை எவ்வாறு நிரூபிக்கிறது

நிச்சயமாக, நிரல்களைப் படிப்பது ப்ரோலாக் பாணியின் உணர்வைப் பெற உதவுகிறது, ஆனால் இந்த வரையறைகளை ஏன், எப்படிப் பயன்படுத்தலாம் என்பதை இது தெளிவாக்கவில்லை. மேலே கொடுக்கப்பட்ட எடுத்துக்காட்டுகளை முழு அளவிலான நிரல் என்று அழைக்க முடியாது, ஏனெனில் போதுமான நுழைவு புள்ளி இல்லை. ப்ரோலாக்கிற்கான நுழைவு புள்ளி என்பது ஒரு வினவல், இது ஒரு SQL தரவுத்தளத்திற்கு எதிரான வினவலுக்கு ஒப்பானது அல்லது செயல்பாட்டு நிரலாக்கத்தில் ஒரு முக்கிய செயல்பாட்டை அழைப்பதற்கு ஒப்பானது. வினவல்களின் எடுத்துக்காட்டுகள்: nat(எண்) - ஒரு இயற்கை எண்ணைக் கண்டுபிடி, கூட்டல்(0, 0, முடிவு) - முடிவு மாறியில் 0 மற்றும் 0 ஐச் சேர்ப்பதன் முடிவைக் கண்டறியவும், nat(0) - 0 என்பது இயற்கை எண்ணா என்பதைச் சரிபார்க்கவும். .

நிச்சயமாக, வினவல்களின் முடிவுகளை தர்க்கரீதியான கருத்தில் இருந்து கணிப்பது கடினம் அல்ல, ஆனால் நிரல் அவற்றை எவ்வாறு பெற்றது என்பதைப் புரிந்துகொள்வது மிகவும் முக்கியம். எல்லாவற்றிற்கும் மேலாக, ப்ரோலாக் ஒரு கருப்புப் பெட்டி அல்ல, ஆனால் ஒரு நிரலாக்க மொழி, மற்றும் ஒரு தரவுத்தளத்தைப் போலல்லாமல், ஒரு SQL திட்டம் உருவாக்கப்பட்டு, வெவ்வேறு தரவுத்தளங்களில் வினவலை வேறுவிதமாகச் செயல்படுத்த முடியும், ப்ரோலாக் ஒரு குறிப்பிட்ட செயல்பாட்டு வரிசையைக் கொண்டுள்ளது. உண்மை என்னவென்றால், அட்டவணையில் உள்ள தரவின் அடிப்படையில் நாம் என்ன பதிலைப் பெற விரும்புகிறோம் என்பதை தரவுத்தளத்தில் நாங்கள் முழுமையாக அறிவோம், துரதிர்ஷ்டவசமாக, நிரலின் ப்ரோலாக்கைப் பார்க்கும்போது எந்த அறிக்கைகள் தர்க்கரீதியாக குறைக்கப்படுகின்றன என்று சொல்வது மிகவும் கடினம், எனவே இது மிகவும் எளிதானது. ப்ரோலாக் மொழிபெயர்ப்பாளர் எவ்வாறு செயல்படுகிறது என்பதைப் புரிந்து கொள்ள.

ஒரு உதாரணக் கோரிக்கையைப் பார்ப்போம் பிளஸ் (0, 0, முடிவு) :
1. விதிகளில் ஒன்றின் இடது பக்கத்தில் இந்தக் கோரிக்கையின் பொருத்தத்தை (ஒரு வகையான பேட்டர்ன்-மேட்சிங், ரெசல்யூஷன்) காண்கிறோம். இந்த வினவலுக்கு, கூட்டல்(0, எண், எண்). அனைத்து வினவல் வாதங்களையும் விதியுடன் ஒன்றன் பின் ஒன்றாக இணைத்து பெறுவோம்: 0 = 0, 0 = எண், முடிவு = எண். இந்த சமன்பாடுகள் 2 மாறிகளை (எண் மற்றும் முடிவு) உள்ளடக்கியது, அவற்றைத் தீர்ப்பதன் மூலம் எண் = முடிவு = 0 என்று பெறுகிறோம். இந்த விதிக்கு நிபந்தனைகள் இல்லை என்பதால், கேட்கப்பட்ட கேள்விக்கான பதிலைப் பெற்றோம். பதில்: ஆம் மற்றும் முடிவு = 0.

கோரிக்கை நாட்(எண்) :
1. விதியுடன் 1வது பொருத்தம், நாட்(0) விதி, சமன்பாடுகளை கடித மூலம் தீர்ப்பதன் மூலம், வேறுவிதமாகக் கூறினால், தீர்மானத்தைக் கண்டறிவதன் மூலம், எண் = 0 ஐப் பெறுகிறோம். பதில்: ஆம் மற்றும் எண் = 0.

கோரிக்கை பிளஸ் (முடிவு, 0, எண்(0)) :
1. விதி கூட்டல் (0, எண், எண்) மூலம் ஒரு தீர்மானத்தைக் கண்டறியவும்: முடிவு = 0, 0 = எண், எண்(0) = எண், ஆனால் (!) எண் = 0 = எண்(0) - 0 என்பதால் சாத்தியமில்லை அதே எண் (0). எனவே, பின்வரும் விதியுடன் ஒரு தீர்மானத்தை நாங்கள் தேடுகிறோம்.
2. விதி கூட்டல் (எண்(N1), N2, எண்(Res) உடன் தீர்மானத்தைக் கண்டறியவும், நாம் எண்(N1) = முடிவு, N2 = 0, எண்(Res) = எண்(0), எனவே Res = 0 . இந்த விதிகள், தீர்மானம் (மாறி மதிப்புகள்), பிளஸ்(Ch1, Ch2, Res) -> plus(Ch1, 0, 0) முடிவுகளை கணக்கில் எடுத்துக்கொண்டு, நாம் சரிபார்க்க வேண்டிய நிபந்தனைகள் உள்ளன. அடுக்கில் உள்ள மாறிகளின் மதிப்பை நினைவில் வைத்து புதிய கோரிக்கையை உருவாக்குவோம் கூட்டல் (H1, 0, 0)
3*. பிளஸ் (Х1, 0, 0) வினவலைத் தீர்ப்பதன் மூலம், பிளஸ் (0, எண், எண்) மூலம் தெளிவுத்திறனைக் கண்டறிந்து Х1 = 0 மற்றும் எண் = 0 ஐப் பெறுகிறோம்.
4. நாம் முந்தைய மாறிகளுக்கு ஸ்டாக்குடன் திரும்புவோம் முடிவு = எண்(N1) = எண்(0). பதில் எண்(0) கிடைத்தது. அதன்படி, ப்ரோலாக் இயந்திரம் இப்போது X + 0 = 1 சமன்பாட்டை தீர்த்துள்ளது.

ப்ரோலாக் மொழியில் திறமையாக விதிகளை தொகுப்பது மிகவும் கடினமான விஷயம், ஆனால் நீங்கள் அவற்றை சுருக்கமாக தொகுத்தால், நீங்கள் நேரடி பதில்கள் மற்றும் தீர்வுகளை மட்டுமல்ல, தலைகீழ் பதில்களையும் பெறலாம்.

உதாரணம் கோரிக்கை பிளஸ் (எண், எண், எண்) : பதில் ஆம், எண் = 0.

உதாரணம் கோரிக்கை கூட்டல் (0, 0, 0) : இல்லை என்பதே பதில், முதல் முயற்சியில் எல்லா தீர்மானங்களும் நிறைவேறவில்லை.

உதாரணம் கோரிக்கை பிளஸ் (எண், எண், எண் (எண்)) : பதில் ஆம், எண் = 1. X + X = X + 1 சமன்பாட்டைத் தீர்ப்பது.

பெருக்கல்(எண், எண்(0), எண்(0))க்கான வெளியீட்டை முயற்சிக்கவும், இதற்கு மாறிகளை அடுக்கின் மீது 2 முறை அழுத்தி புதிய வினவலைக் கணக்கிட வேண்டும். ப்ரோலாக் இயந்திரத்தின் சாராம்சம் என்னவென்றால், நீங்கள் 1 வது முடிவை நிராகரிக்கலாம், பின்னர் ப்ரோலாக் முந்தைய நிலைக்குத் திரும்பி கணக்கீட்டைத் தொடரும். உதாரணமாக கோரிக்கை நாட்(எண்) , முதலில் 1 வது விதி மற்றும் வெளியீடு 0 ஐப் பயன்படுத்துகிறது, பின்னர் 2 வது விதி + 1 வது விதியைப் பயன்படுத்துகிறது மற்றும் எண்ணை (0) வெளியிடுகிறது, நீங்கள் மீண்டும் மற்றும் அனைத்து இயற்கை எண்களின் எல்லையற்ற வரிசையைப் பெறலாம். மற்றொரு உதாரணம், கோரிக்கை கூட்டல்(எண், எண்(0), எண்2) , X + 1 = Y சமன்பாட்டிற்கான அனைத்து ஜோடி தீர்வுகளின் வரிசையையும் உருவாக்கும்.

முடிவுரை

துரதிர்ஷ்டவசமாக, தலைப்பின் நியாயமான அளவு, ப்ரோலாக்கில் உள்ள சிக்கலான தர்க்கரீதியான சிக்கல்களைத் தீர்க்கும் உத்தி இல்லாமல், முக்கிய தலைப்பை நெருங்குவதற்கு என்னை அனுமதிக்கவில்லை. ப்ரோலாக் குறியீட்டின் பெரிய பகுதிகள் ஆரம்பநிலையாளர்களை மட்டுமல்ல, அனுபவம் வாய்ந்த புரோகிராமர்களையும் பயமுறுத்துகின்றன. இந்தக் கட்டுரையின் நோக்கம், ப்ரோலாக் புரோகிராம்கள் எளிமையாகச் செய்ய முடியும் என்பதைக் காட்டுவதாகும் இயற்கை மொழியில் படிக்கலாம், மற்றும் ஒரு எளிய மொழிபெயர்ப்பாளரால் செயல்படுத்தப்பட்டது.
ப்ரோலாக்கின் முக்கிய அம்சம் என்னவென்றால், இது ஒரு கருப்புப் பெட்டி அல்லது சிக்கலான தர்க்கரீதியான சிக்கல்களைத் தீர்க்கும் நூலகம் அல்ல; நீங்கள் ஒரு இயற்கணித சமன்பாட்டை கணிதத்தில் உள்ளிடலாம், அது ஒரு தீர்வை உருவாக்கும், ஆனால் செய்யப்படும் படிகளின் வரிசை தெரியவில்லை. ப்ரோலாக் பொதுவான தருக்கச் சிக்கல்களைத் தீர்க்க முடியாது (அதில் தர்க்கரீதியான “அல்லது” மற்றும் “எதிர்ப்பு” இல்லை), இல்லையெனில் அதன் வெளியீடு நேரியல் தீர்மானமாக தீர்மானிக்கப்படாமல் இருக்கும். ப்ரோலாக் என்பது ஒரு எளிய மொழிபெயர்ப்பாளருக்கும் தேற்றத்தை நிரூபிக்கும் இயந்திரத்திற்கும் இடையே உள்ள தங்க சராசரி; எந்த திசையிலும் மாறுவது பண்புகளில் ஒன்றை இழக்க வழிவகுக்கிறது.

அடுத்த கட்டுரையில், வரிசைப்படுத்துதல் பிரச்சனைகள் எவ்வாறு தீர்க்கப்படுகின்றன, இரத்தமாற்றங்களின் வரிசை, மிஸ் மேனர்ஸ் மற்றும் பிற நன்கு அறியப்பட்ட தர்க்கரீதியான சிக்கல்களைப் பற்றி பேச விரும்புகிறேன். திருப்தியில்லாமல் இருப்பவர்களுக்கு, நான் வழங்க விரும்புகிறேன் அடுத்த பணி (பரிசைத் தீர்த்த முதல் நபர்):
ஒரு முன்னறிவிப்பை எழுதுங்கள், இது 3 இல் தொடங்கும் இயற்கை எண்களின் எல்லையற்ற வரிசையை உருவாக்கும். இவை ப்ரோலாக்கில் நிலையான எண்களாக இருக்க வேண்டும், இதன் செயல்பாடுகள் முன்னறிவிப்பு: X என்பது 3 + 1 => X=4.

பல ஆயிரம் ஆண்டுகளாக, மனிதகுலம் அறிவைக் குவித்து, செயலாக்கி, கடத்துகிறது. இந்த நோக்கங்களுக்காக, புதிய வழிமுறைகள் தொடர்ந்து கண்டுபிடிக்கப்பட்டு பழையவை மேம்படுத்தப்பட்டு வருகின்றன: பேச்சு, எழுத்து, அஞ்சல், தந்தி, தொலைபேசி போன்றவை. கணினிகளின் வருகை அறிவு செயலாக்க தொழில்நுட்பத்தில் முக்கிய பங்கு வகித்தது.

அக்டோபர் 1981 இல், ஜப்பானிய சர்வதேச வர்த்தகம் மற்றும் தொழில்துறை அமைச்சகம் ஒரு ஆராய்ச்சி அமைப்பை உருவாக்குவதாக அறிவித்தது - புதிய தலைமுறை கணினி தொழில்நுட்ப ஆராய்ச்சி மையம். அறிவு சார்ந்த தகவல் செயலாக்க அமைப்புகளை உருவாக்குவதே இந்த திட்டத்தின் குறிக்கோளாக இருந்தது. இயற்கையான மொழியைப் பயன்படுத்தி பயனர்களுடன் தொடர்பு கொள்ளும் திறன் காரணமாக இந்த அமைப்புகள் நிர்வாகத்தை எளிதாக்கும் என்று கருதப்பட்டது. இந்த அமைப்புகள் சுய-கற்றல் வேண்டும், பல்வேறு வகையான சிக்கல்களைத் தீர்க்க நினைவகத்தில் திரட்டப்பட்ட அறிவைப் பயன்படுத்த வேண்டும், பயனர்களுக்கு நிபுணர் ஆலோசனைகளை வழங்க வேண்டும், மேலும் பயனர் கணினி அறிவியலில் நிபுணராக இருக்க வேண்டிய அவசியமில்லை. டிவி, டேப் ரெக்கார்டர் மற்றும் வாக்யூம் கிளீனர் போன்ற எந்தவொரு வீட்டு மின் சாதனத்தையும் ஒருவர் ஐந்தாம் தலைமுறை கணினியை எளிதாகப் பயன்படுத்த முடியும் என்று கருதப்பட்டது. ஜப்பானியர்களுக்குப் பிறகு, அமெரிக்க மற்றும் ஐரோப்பிய திட்டங்கள் தொடங்கப்பட்டன.

இத்தகைய அமைப்புகளின் தோற்றம் அறிவுத் தளங்கள் மற்றும் நிபுணர் அமைப்புகளைப் பயன்படுத்துவதன் மூலம் தொழில்நுட்பத்தை மாற்றும். ஐந்தாவது தலைமுறை கணினிகளுக்கு தரமான மாற்றத்தின் முக்கிய சாராம்சம் தரவு செயலாக்கத்திலிருந்து அறிவு செயலாக்கத்திற்கு மாறுவதாகும். ஜப்பானியர்கள் கணினியின் செயல்பாட்டின் கொள்கைகளுக்கு மனித சிந்தனையை சரிசெய்ய முடியாது என்று நம்பினர், ஆனால் கணினிகளின் வான் நியூமன் கட்டமைப்பிலிருந்து விலகி, ஒரு நபர் நினைக்கும் விதத்திற்கு நெருக்கமாக கணினி செயல்பாட்டைக் கொண்டுவர முடியும். 1991 ஆம் ஆண்டில், ஐந்தாம் தலைமுறை கணினிகளின் முதல் முன்மாதிரியை உருவாக்க திட்டமிடப்பட்டது.

நிர்ணயிக்கப்பட்ட இலக்குகள் ஒருபோதும் முழுமையாக அடையப்படவில்லை என்பது இப்போது தெளிவாகிறது, ஆனால் இந்த திட்டம் செயற்கை நுண்ணறிவு துறையில் ஒரு புதிய சுற்று ஆராய்ச்சியின் வளர்ச்சிக்கு ஒரு உத்வேகமாக செயல்பட்டது மற்றும் தர்க்க நிரலாக்கத்தில் ஆர்வத்தின் வெடிப்பை ஏற்படுத்தியது. பாரம்பரிய வான் நியூமன் கட்டிடக்கலை திறமையான செயலாக்கத்திற்கு ஏற்றதாக இல்லை என்பதால், சிறப்பு லாஜிக் நிரலாக்க கணினிகள் PSI மற்றும் PIM உருவாக்கப்பட்டது.

ஐந்தாம் தலைமுறை கணினி திட்டத்திற்கான மென்பொருளை உருவாக்குவதற்கான முக்கிய வழிமுறையாக பின்வருபவை தேர்ந்தெடுக்கப்பட்டன: தர்க்க நிரலாக்கம், இதில் ஒரு முக்கிய பிரதிநிதி புரோலாக் மொழி. தற்போது ப்ரோலாக் ஜப்பான் மற்றும் ஐரோப்பாவில் மிகவும் பிரபலமான செயற்கை நுண்ணறிவு மொழியாக உள்ளது (அமெரிக்காவில், பாரம்பரியமாக, மற்றொரு செயற்கை நுண்ணறிவு மொழி மிகவும் பரவலாக உள்ளது - செயல்பாட்டு நிரலாக்க மொழி லிஸ்ப்).

"Prolog" என்ற மொழியின் பெயர் வார்த்தைகளில் இருந்து வந்தது லாஜிக் புரோகிராமிங்(பிரெஞ்சு மொழியில் ப்ரோகிராமேஷன் en LOGique மற்றும் ஆங்கிலத்தில் லாஜிக்கில் புரோகிராமிங்).

ப்ரோலாக் என்பது கணித தர்க்கத்தின் ஒரு கிளையை அடிப்படையாகக் கொண்டது கணிப்பு கணிப்பு. இன்னும் துல்லியமாக, அதன் அடிப்படையானது தேற்றங்களை நிரூபிக்கும் செயல்முறையாகும் தீர்மான முறைக்கு கொம்பு விதிகள். அடுத்த விரிவுரை இந்த தலைப்புக்கு அர்ப்பணிக்கப்படும்.

புரோலாக் மொழியின் தோற்றம் மற்றும் வளர்ச்சியின் வரலாற்றில், பின்வரும் நிலைகளை வேறுபடுத்தி அறியலாம்.

1965 ஆம் ஆண்டில், ஏசிஎம் இதழின் 12வது இதழில் வெளியிடப்பட்ட "தீர்வுக் கொள்கையின் அடிப்படையில் ஒரு இயந்திரம் சார்ந்த தர்க்கம்" என்ற தாளில், ஜே. ராபின்சன், முதல்-வரிசை கணிப்பு கால்குலஸில் தேற்றங்களின் ஆதாரங்களைத் தானாகக் கண்டறியும் முறையை முன்வைத்தார். " தீர்மானத்தின் கொள்கை". இந்த வேலையை மொழிபெயர்ப்பில் படிக்கலாம்: ராபின்சன் ஜே. இயந்திரம் சார்ந்த தர்க்கம் அடிப்படையில் தீர்மானத்தின் கொள்கை// சைபர்நெடிக் சேகரிப்பு. - தொகுதி. 7 (1970). உண்மையில், இந்த முறைக்கான யோசனை 1931 இல் ஹெர்பிராண்டால் முன்மொழியப்பட்டது, இதுவரை கணினிகள் இல்லாதபோது (ஹெர்பிரான்ட், "உன் மெத்தடி டி டெமான்ஸ்ட்ரேஷன்", திஸ், பாரிஸ், 1931). ராபின்சன் இந்த முறையை மாற்றியமைத்தார், இதனால் இது தானியங்கி, கணினி பயன்பாட்டிற்கு ஏற்றதாக மாறியது, மேலும், அவரது முறையின் அடிப்படையை உருவாக்கும் ஒரு பயனுள்ள ஒருங்கிணைப்பு வழிமுறையை உருவாக்கியது.

1973 ஆம் ஆண்டில், அலைன் கோல்மெரோ தலைமையிலான "செயற்கை நுண்ணறிவு குழு" மார்செய் பல்கலைக்கழகத்தில் ஒரு திட்டத்தை உருவாக்கியது, இது கோட்பாடுகளை நிரூபிக்க வடிவமைக்கப்பட்டுள்ளது. இந்த நிரல் இயற்கை மொழி உரை செயலாக்க அமைப்புகளை உருவாக்க பயன்படுத்தப்பட்டது. தேற்றம் நிரூபிக்கும் நிரல் ப்ரோலாக் (புரோகிராமேஷன் என் லாஜிக்கில் இருந்து) என்று அழைக்கப்பட்டது. இது முன்னுரைக்கான முன்மாதிரியாக செயல்பட்டது. இந்த பெயரை எழுதியவர் ஆலன் கோல்மெரோவின் மனைவி என்று புராணக்கதை கூறுகிறது. நிரல் Fortran இல் எழுதப்பட்டது மற்றும் மெதுவாக இயங்கியது.

லாஜிக் புரோகிராமிங்கின் வளர்ச்சிக்கு ராபர்ட் கோவால்ஸ்கியின் பணி மிகவும் முக்கியத்துவம் வாய்ந்தது. தர்க்கத்தை கணிக்கவும்எப்படி நிரலாக்க மொழி"(கோவல்ஸ்கி ஆர். ப்ரெடிகேட் லாஜிக் என புரோகிராமிங் மொழி. IFIP காங்கிரஸ், 1974), இதில் அவர் செயல்திறன் அடைய, ஒரு தொகுப்பின் பயன்பாட்டிற்கு தன்னை கட்டுப்படுத்திக் கொள்ள வேண்டும் என்பதைக் காட்டினார். கொம்பு விதிகள். ஒரு கோடை காலத்தில் கோவல்ஸ்கியும் கொல்மரோயும் ஒன்றாக வேலை செய்ததாக அறியப்படுகிறது.

1976 ஆம் ஆண்டில், கோவல்ஸ்கி, அவரது சகாவான மார்டன் வான் எம்டனுடன் சேர்ந்து, தர்க்க நிரல் நூல்களைப் படிக்க இரண்டு அணுகுமுறைகளை முன்மொழிந்தார்: நடைமுறை மற்றும் அறிவிப்பு. இந்த அணுகுமுறைகள் மூன்றாவது விரிவுரையில் விவாதிக்கப்படும்.

1977 இல் எடின்பர்க்கில், வாரன் மற்றும் பெரேரா ஆகியோர் DEC-10 கணினிக்கான மிகவும் திறமையான ப்ரோலாக் கம்பைலரை உருவாக்கினர், இது ப்ரோலாக் பல அடுத்தடுத்த செயலாக்கங்களுக்கு முன்மாதிரியாக செயல்பட்டது. சுவாரஸ்யமாக,

விரிவுரையானது மாநில விண்வெளி வரைபடத்தைப் பயன்படுத்தி சிக்கல்களைத் தீர்ப்பதற்கு அர்ப்பணிக்கப்பட்டுள்ளது. மாநில இடம் மாநிலங்களின் தொகுப்பின் வடிவத்தில் விவரிக்கப்படுகிறது - வரைபட முனைகள், மாநிலத்திலிருந்து மாநிலத்திற்கு மாறுதல்களின் தொகுப்பு - வரைபட வளைவுகள், ஆரம்ப நிலைகளின் தொகுப்பு மற்றும் இறுதி நிலைகளின் தொகுப்பு. பிரச்சனைக்கான தீர்வு, ஆரம்ப நிலையை இறுதி நிலைக்கு இணைக்கும் மாநில விண்வெளி வரைபடத்தில் ஒரு பாதையாக குறிப்பிடப்படுகிறது. பிரச்சனையின் நிலை இடம் சிறியதாக இருந்தால், ஆழமான முதல் தேடலைப் பயன்படுத்தி அனைத்து உகந்த தீர்வுகளும் கண்டறியப்படும். ஒரு பெரிய மாநில இடத்தின் சிக்கல்களில், அகலம் முதல் தேடலின் மூலம் ஒரே ஒரு உகந்த தீர்வு மட்டுமே கணக்கிடப்படும். சிக்கல்களுக்கு உலகளாவிய தீர்வுகள் பயன்படுத்தப்படுகின்றன. வெவ்வேறு பணிகளில் உள்ள மாநிலங்கள் வெவ்வேறு களங்களைச் சேர்ந்ததாக இருக்கலாம். கண்டுபிடிக்கப்பட்ட சிறந்த தீர்வுகளை நினைவில் கொள்ள, "மாறி மாறி" varM பயன்படுத்தப்படுகிறது. கம்பைலரே தேவையான வகைகளைக் கண்டுபிடிக்கும். விஷுவல் ப்ரோலாக் பதிப்பு 7.5, இன்னும் வெளியிடப்படவில்லை. அதன் வெளியீடு 2014 இல் திட்டமிடப்பட்டுள்ளது, ஆனால் சரியான தேதி இன்னும் அறியப்படவில்லை. விஷுவல் ப்ரோலாக் 7.4 இப்போது அனைவருக்கும் கிடைக்கிறது.

முன்னுரையின் தோற்றம் தர்க்கம், கணிதம் மற்றும் நிரலாக்கத்தின் வளர்ச்சியின் காரணமாக இருந்தது. பிந்தையது மிக முக்கியமான பாத்திரத்தை வகித்தது. தர்க்கம் மற்றும் கணிதத்தில் வல்லுநர்கள் நிரலாக்கத்தை "சரியான பாதையில்" வைக்க முயற்சித்தனர், ஆனால் தகவல் தொழில்நுட்பத்தின் வளர்ச்சி முற்றிலும் மாறுபட்ட முடிவைக் காட்டியது.

நடைமுறை கட்டாய நிரலாக்கமானது மிகவும் நம்பிக்கைக்குரியதாக மாறியது. "புரோலாக்" ஒரு நிரலாக்க மொழியாக வெற்றி பெற்றது, ஆனால் செயற்கை நுண்ணறிவுக்கான அடிப்படையாக மாறவில்லை.

கிளாசிக்கல் புரோகிராமிங் vs லாஜிக்

ஒரு நபர் தர்க்கரீதியாகவும் நியாயமாகவும் கடினமான முடிவுகளை எடுக்கிறார். கிட்டத்தட்ட சிந்திக்காமல், ஒரு நபர் புத்திசாலித்தனமாக செயல்படுகிறார். தகவலைச் சேகரித்தல், பகுப்பாய்வு செய்தல் மற்றும் சிக்கலான கணக்கீடுகள் தேவைப்படும் முடிவுகளை நாங்கள் கணக்கில் எடுத்துக்கொள்ளவில்லை என்றால், எந்த முடிவும் விரைவானது, துல்லியமானது மற்றும் நியாயமானது.

முடிவெடுக்கும் கருவியை உருவாக்குவது ஒரு எளிய விஷயமாக கருதுவதற்கு இந்த உண்மை எப்போதும் ஒரு மாயையான காரணத்தை அளிக்கிறது. முன்னுரையின் வருகையுடன், செயற்கை நுண்ணறிவு என்பது தொழில்நுட்பத்தின் பிரச்சினை என்று தோன்றியது, மேலும் ஹோமோ சேபியன்ஸ் ரோபோட்டிக்ஸ் மூன்று விதிகளைக் கொண்டு வந்தார். இருப்பினும், செயற்கை நுண்ணறிவு ஒரு பேயாகவே இருந்தது, மேலும் ரோபாட்டிக்ஸின் மூன்று விதிகள் ஒரு விசித்திரக் கதையிலிருந்து மாறியது - "இதைச் செய், என்னவென்று எனக்குத் தெரியவில்லை."

இந்த வார்த்தையின் கிளாசிக்கல் அர்த்தத்தில் புரோகிராமிங் ("செயல்முறை", "நிபந்தனை" அல்லது "செயல்பாட்டு" என்ற சொற்கள் பெரும்பாலும் பயன்படுத்தப்படுகின்றன) எண்ணற்ற நிரலாக்க மொழிகள் இருந்த 80-90 களின் "சிக்கலான காலங்களை" உருவாக்கி வெற்றிகரமாக சமாளித்தது.

"Pascal" மற்றும் "Si" க்கு இடையிலான ஆர்ப்பாட்டப் போராட்டம் நீண்ட காலம் நீடித்தது மற்றும் மிருகத்தனமானது, ஆனால் நடுநிலையாகவும் அமைதியாகவும் முடிந்தது. எஞ்சியிருப்பது ஒரு நல்ல நிரலாக்க மொழியின் யோசனை மற்றும் அதன் பல வெற்றிகரமான செயலாக்கங்கள்.

புரோலாக் ஒரு நிரலாக்க மொழியாக உருவாகவில்லை என்று சொல்ல முடியாது. ஆனால் அவர் கூறிய இலக்குகளை அடையவில்லை. இன்று நாம் கூறுவது மட்டுமல்லாமல், நியாயப்படுத்தவும் முடியும்: “முன்னுரை” என்பதற்கான கல்வி மொழி:

  • கற்றல் நோக்கங்கள்;
  • தர்க்கத்தை முன்னறிவித்தல்;
  • கணிதம்;
  • குறுகிய பயன்பாடு.

இந்தக் கூற்றை மறுக்க முடியுமா என்பது சந்தேகமே. செயற்கை நுண்ணறிவு என்பது பரவலாகப் பயன்படுத்தப்படுவது மட்டுமல்லாமல், சமூக அமைப்பையும் உலகின் படத்தையும் தீவிரமாக மாற்றும் ஒரு தீவிர நிகழ்வு.

செயற்கை நுண்ணறிவுக்கான ப்ரோலாக் மொழியில் நிரலாக்கம் நடைபெறவில்லை: மொழியின் நாற்பது ஆண்டுகளுக்கும் மேலான வரலாற்றில், பொது உணர்வுடன் தொடர்புடைய ஒரு தீவிரமான புதிய நிகழ்வு இல்லை, இது எதிர்மாறாகக் குறிக்கிறது.

புறநிலை யதார்த்தம் இதுதான்: இது எஞ்சியிருக்கும் வலிமையானது அல்ல, மாறாக தேவை மற்றும் பொருத்தமானது.

"Prolog" என்பது ஒரு அறிவிப்பு நிரலாக்க மொழி

உண்மைகள் மற்றும் விதிகளை விவரிக்க ஒரு கருவி இருப்பது நல்லது, ஆனால் என்ன பயன்? உண்மைகளும் விதிகளும் ஒரு வழக்கமான தரவுத்தளத்தில் சரியாகப் பொருந்துகின்றன. ஒரு தகுதிவாய்ந்த கிளாசிக்கல் புரோகிராமர் பயனருக்கு ஊடாடும் உரையாடலை வழங்குகிறார், மேலும் பிந்தையவர் அவரது பிரச்சினைகளை தீர்க்கிறார்.

தேவைப்பட்டால், புரோகிராமர் உரையாடலைச் செம்மைப்படுத்துகிறார், மேலும் பயனர் உண்மைகள் மற்றும் விதிகளின் தரவுத்தளத்தை நிரப்புகிறார். ஏற்கனவே தீர்க்கப்பட்ட மற்றும் தீர்க்கக்கூடிய சிக்கல்களை செயல்படுத்துவதற்கான முற்றிலும் உழைக்கும் மற்றும் பல தசாப்தங்களாக சோதிக்கப்பட்ட விருப்பம்.

ப்ரோலாக் நிரலாக்க மொழியின் எந்தவொரு நடைமுறையிலும் உண்மைகள் மற்றும் விதிகளின் அறிவிப்பு விளக்கக்காட்சி என்பது ஒரு மாநாடு, அதன் அறிவார்ந்த நிலையில் யதார்த்தத்தை முறைப்படுத்துவதற்கான முயற்சியாகும். வழக்கமான நிரலாக்கமானது அறிவாற்றலைத் தொடாது. கிளாசிக்கல் நிரலாக்கமானது நிலைப்பாட்டில் திருப்தி அடைகிறது: தரவின் விளக்கம் மற்றும் செயலாக்கம். இங்கே நிறைய சிக்கல்கள் உள்ளன, ஆனால் வேலை செய்யும் புத்திசாலித்தனமான தீர்வுகள் நிறைய உள்ளன.

ஒரு நிரலாக்க மொழியாக "Prolog" என்பது உண்மைகள்:

  • அம்மா (மரியா, நடாஷா); - மரியா - நடாஷாவின் தாய்;
  • அப்பா (எவ்ஜெனி, மெரினா); - எவ்ஜெனி மெரினாவின் அப்பா.

இங்கே, ஒரு உண்மை உடனடியாக மேலெழுகிறது: "மரியா" மற்றும் "மெரினா" என்பது வெவ்வேறு பெயர்கள். உண்மையைச் சேர்ப்பதிலிருந்து எதுவும் உங்களைத் தடுக்காது:

  • அப்பா (யூஜின், மரியா); - எவ்ஜெனி மரியாவின் அப்பா.

இந்த விளக்கங்கள் விதிகளுக்கு உயிர் கொடுக்கின்றன:

  • பெற்றோர்(x,y)<- папа (x, y);
  • பெற்றோர்(x,y)<- мама (x, y);

ஆனால் அப்பா மெரினாவின் தந்தை என்றும், மெரினா மரியாவின் தாய் என்றும் முடிவு செய்ய அவர்கள் எங்களை அனுமதிக்கவில்லை. இந்த சிக்கலை தீர்க்க முடியும்; நீங்கள் இன்னும் ஒரு விதியைச் சேர்க்கலாம், மேலும் ஒரு உண்மையைச் சேர்க்கலாம். ஆனால் ஒரு உண்மையான சூழ்நிலையில் இந்த செயல்களில் எத்தனை எடுக்கப்பட வேண்டும்?

உண்மையில், ஒரு நிரலாக்க மொழியாக "புரோலாக்" என்பது உண்மைகள் மற்றும் விதிகளின் அறிவிப்புக்கு ஒரு எடுத்துக்காட்டு, ஆனால் ஒரு கிளாசிக்கல் புரோகிராமரின் உணர்வு பழக்கமான தர்க்கம் அல்ல. "ப்ரோலாக்" தன்னை ஒரு முன்கணிப்பு தர்க்க மொழியாக நிலைநிறுத்துகிறது, ஆனால் மொழியின் குறிப்பிட்ட செயலாக்கத்தின் டெவலப்பர்களிடமிருந்து எடுத்துக்காட்டுகள் மற்றும் மாதிரி விளக்கங்கள் மூலம் மட்டுமே நீங்கள் நிரலாக்கத்தைக் கற்றுக்கொள்ள முடியும்.

முன்னுரை குடும்பம்

பிரான்ஸ் முன்னுரையின் பிறப்பிடமாகக் கருதப்படுகிறது, மேலும் 1973 பிறந்த ஆண்டாகும். மொழி மீதான ஆர்வம் அவ்வப்போது புதுப்பிக்கப்பட்டது, ஆனால் பொறாமைக்குரிய நிலைத்தன்மையுடன் தணிந்தது. மொழியின் பொன்மொழி: “தர்க்கத்தை முன்னறிவிப்பது அடிப்படை! சிந்தனை எவ்வாறு செயல்படுகிறது என்பதை விளக்குவதற்கு இது ஒரு வழி” - மற்றும் பொன்மொழியாக இருந்தது.

ப்ரோலாக் நிரலாக்க மொழியின் எந்தவொரு செயலாக்கமும் கண்டிப்பாக முன்னறிவிப்பு தர்க்கத்தைப் பின்பற்றுகிறது, ஆனால் எப்பொழுதும் நடைமுறை நிரலாக்கத்தின் கிளாசிக்கல் யோசனைகளை உள்ளடக்கியது. "கட்டாயமானது" என்று சொல்வது மிகவும் சரியானது, ஏனெனில் இந்த சொல் நடைமுறை, செயல்பாட்டு, பொருள் சார்ந்த அல்லது பிறவற்றை விட அதிக சம்பிரதாயத்துடன் பயன்படுத்தப்படுகிறது.

எந்த நிரலாக்கமும் தரவு மற்றும் அதன் செயலாக்கம் பற்றியது. மொழி கட்டுமானங்கள் முடிந்தவரை துல்லியமாக தீர்க்கப்படும் சிக்கலை விவரிக்க வேண்டும், அதனால்தான் Prolog இன் அனைத்து அறியப்பட்ட செயலாக்கங்களும்: Turbo Prolog, Win Prolog, SWI Prolog, GNU Prolog, விஷுவல் ப்ரோலாக் மற்றும் பிறவற்றில், அறிவிப்பு கட்டமைப்புடன், சாதாரண கட்டாய வெளிப்பாடுகள் உள்ளன.

ப்ரோலாக் குடும்பம் கல்வி மற்றும் ஆராய்ச்சி நிறுவனங்களில் உருவாக்கப்பட்டது என்று நம்பப்படுகிறது, எனவே கருத்தியல் அர்த்தத்தில் ஒரு பொதுவான மொழியாக மட்டுமே பேச முடியும். ஆயினும்கூட, "ப்ரோலாக்" என்ற கருத்து உயிருடன் உள்ளது மற்றும் வளரும் தன்மையைக் கருத்தில் கொள்ளலாம்: இந்த மொழிக்கு ஒரு நோக்கம் உள்ளது, மேலும் இது ஒரு குறிப்பிட்ட அளவிலான பணிகளில் தேவை உள்ளது.

செயற்கை நுண்ணறிவின் அடிப்படை

செயற்கை நுண்ணறிவு மீதான ஆர்வம் ஒருபோதும் குறையவில்லை, அடுத்த சந்தர்ப்பம் வரும்போது அவர்கள் அதைப் பற்றி பேசத் தொடங்குகிறார்கள், ஆனால் ப்ரோலாக் ஒரு சாதாரண கிளாசிக்கல் நிரலாக்க மொழியை விட செயற்கை நுண்ணறிவுடன் தொடர்புபடுத்தவில்லை.

80 களின் இறுதியில் ஒரு உண்மையான, பொருத்தமான மற்றும் பிரபலமான அறிவுசார் திட்டம் "தி இன்வென்டிங் மெஷின்" இருந்தது. கண்டுபிடிப்புகள், இயற்பியல், இரசாயன மற்றும் பிற சட்டங்கள் பற்றிய ஒரு பெரிய நடைமுறை அறிவுத் தளத்தை (தரவு) முறைப்படுத்த, ப்ரோலாக்கைப் பயன்படுத்துவதற்கான உண்மையான முயற்சி இருந்தது.

முடிவு அடையப்படவில்லை; பல உண்மைகளும் விதிகளும் புரோலாக்கில் ஒரு நிரலாக்க மொழியாக எழுதப்பட வேண்டியிருந்தது, அவை சாதாரணமான கட்டாய இயல்புடையவை. இதற்கிடையில், பல வெற்றிகரமான மென்பொருள் தயாரிப்புகள் சாதாரண மொழிகளில் இணையாக செயல்படுத்தப்பட்டன.

90 களின் முற்பகுதியில், ஒரு உண்மையான அறிவுசார் அமைப்பின் திட்டம் வெற்றிகரமாக செயல்படுத்தப்பட்டது, இது 3 வயதுக்குட்பட்ட குழந்தையின் நடத்தையை EU கணினியில் உருவகப்படுத்தியது! Prolog ஐப் பயன்படுத்துவதற்கான விருப்பம் கூட கருதப்படவில்லை.

இந்த அறிவார்ந்த அமைப்பு அம்மா மற்றும் அப்பா என்ன, மரியா எப்படி மெரினாவிலிருந்து வேறுபட்டார் என்பதை "கண்டுபிடித்தது" மட்டுமல்லாமல், அதிக முயற்சி இல்லாமல், இந்த பிரச்சினைகள் குறித்த பெற்ற அறிவிலிருந்து பந்துகளாகவும், க்யூப்ஸிலிருந்து அவற்றின் வேறுபாடுகள், வண்ணங்களுக்கு தாவியது. பொருள்கள் மற்றும்... (!) தொடக்கக் கணிதம் வரை: முற்றிலும் மாறுபட்ட சிக்கல்களைத் தீர்ப்பதன் மூலம் பெற்ற அறிவின் அடிப்படையில் எளிமையான எண்கணித செயல்பாடுகள் அவளது திறன்களுக்குள் இருந்தன.

செயற்கை நுண்ணறிவின் பிரதேசத்தை மாஸ்டரிங் செய்வதில் கிளாசிக்கல் நிரலாக்கமானது ப்ரோலாக்கை விட முன்னால் உள்ளது என்று ஒருவர் கூற முடியாது, ஆனால் அது உண்மையான முடிவுகளை அளிக்கிறது.

உளவுத்துறையை ஒரு பணியாகப் பொறுத்தவரை, இங்கே கேள்வி மொழியில் இல்லை, ஆனால் செயல்படுத்தும் யோசனையில் உள்ளது. 1991 அசெம்பிளர் ஒரு புத்திசாலித்தனமான சூழ்நிலை நுண்ணறிவு அமைப்பிற்கு "அடிப்படையாக" மாறினால், பிரச்சினை தெளிவாக செயல்படுத்தும் மொழியில் இல்லை, ஆனால் யோசனையில் உள்ளது.

புரோலாக் நிரலாக்க மொழிமுன்னணி தர்க்க நிரலாக்க மொழிகளில் ஒன்றாகும். இது 1970 களில் Alain Colmerauer என்பவரால் உருவாக்கப்பட்டது. கணினித் திரையில் உள்ள வழிமுறைகளைக் கொண்டு நீங்கள் எதை அடைய விரும்புகிறீர்கள் என்பதைக் கவனமாகக் குறிப்பிடாமல், தர்க்கத்தை வெளிப்படுத்துவதை சாத்தியமாக்கும் தொடக்கநிலையாளர்களுக்கான நிரலாக்க மொழியை உருவாக்கும் முயற்சி இதுவாகும்.

ப்ரோலாக் பல செயற்கை நுண்ணறிவு திட்டங்களில் பயன்படுத்தப்படுகிறது, ஆனால் அதன் தொடரியல் மற்றும் சொற்பொருள் மிகவும் எளிமையானது மற்றும் தெளிவானது (அசல் நோக்கம் கணினி கல்வியறிவற்ற மொழியியலாளர்களுக்கு ஒரு கருவியை வழங்குவதாகும்). ப்ரோலாக் என்ற பெயர் லாஜிக் புரோகிராமிங்கின் சுருக்கம் மற்றும் நிரலாக்கத்தின் அடிப்படைகளை கற்பிப்பதில் பரவலாக அறியப்படுகிறது.

ப்ரோலாக் முன்கணிப்பு கணக்கீட்டை அடிப்படையாகக் கொண்டது (இன்னும் துல்லியமாக, முதல்-வரிசை கணிப்பு கால்குலஸ்), ஆனால் இது ஹார்னின் சூத்திரங்களுக்கு மட்டுமே. ப்ரோலாக் புரோகிராம்கள் தேற்றங்களை முதல் தோராயமாக நிரூபிக்க பயனுள்ளதாக இருக்கும். சேருதல், வால் மறுநிகழ்வு மற்றும் கண்காணிப்பு ஆகியவற்றின் அடிப்படைக் கருத்துக்கள்.

தரவு வகைகள்

பொதுவான நிரலாக்க மொழிகளில் நாம் பழகிய முறையில் தரவு வகைகளை Prolog பயன்படுத்துவதில்லை. தரவு வகைகளுக்குப் பதிலாக ப்ரோலாக் லெக்சிகல் கூறுகளைப் பற்றி பேசலாம், இது டம்மிகளுக்கான நிரலாக்கத்தில் அசாதாரணமானது.

நிலையான உரை அணுக்களைப் பயன்படுத்தி உள்ளிடப்படுகிறது. ஒரு அணு என்பது எழுத்துக்கள், எண்கள் மற்றும் ஒரு சிறிய எழுத்துடன் தொடங்கும் அடிக்கோடின் வரிசையாகும். வழக்கமாக, இவை எண்ணெழுத்து அணுக்கள் இல்லை என்றால், அவற்றை அபோஸ்ட்ரோபிகளுடன் கட்டமைக்க வேண்டும் (உதாரணமாக, "+" என்பது ஒரு அணு, + ஒரு ஆபரேட்டர்).

பெரும்பாலான ப்ரோலாக் செயலாக்கங்கள் உண்மையான மற்றும் பின்ன எண்களை வேறுபடுத்துவதில்லை.

மாறிகள்

எழுத்துகள், எண்கள் மற்றும் அடிக்கோடிட்டுகள் கொண்ட ஒரு சரம் மூலம் மாறிகள் அடையாளம் காணப்படுகின்றன, இது பெரிய எழுத்துடன் தொடங்குகிறது. ப்ரோலாக் சூழலில், ஒரு மாறி என்பது ஒதுக்கப்படக்கூடிய ஒரு கொள்கலன் அல்ல (செயல்முறை நிரலாக்க மொழிகளைப் போலல்லாமல்). அதன் நடத்தை இணைப்பிற்கு ஒத்த மாதிரிக்கு நெருக்கமாக உள்ளது.

அநாமதேய மாறிகள் எனப்படுபவை ஒற்றை அடிக்கோடியாக (_) எழுதப்படுகின்றன.

ப்ரோலாக் சிக்கலான தரவைக் குறிக்கும் ஒரே வழி விதிமுறைகள் மட்டுமே. இந்த சொல் ஒரு தலையைக் கொண்டுள்ளது, இது ஒரு ஃபங்க்டர் (இது ஒரு அணுவாக இருக்க வேண்டும்) மற்றும் அளவுருக்கள் (வகைகளுக்கு மட்டும் அல்ல) என்றும் அழைக்கப்படுகிறது. அளவுருக்களின் எண்ணிக்கை, காலத்தின் arities என்று அழைக்கப்படுவது முக்கியமானது. ஒரு சொல் அதன் தலை மற்றும் அரிட்டியால் வரையறுக்கப்படுகிறது, பொதுவாக செயல்பாடு/அரிட்டி என எழுதப்படுகிறது.
பட்டியல்கள்

ஒரு பட்டியல் ஒரு முழுமையான தரவு வகை அல்ல, ஏனெனில் அது சுழல்நிலை கட்டுமானத்தால் வரையறுக்கப்படுகிறது (/2 "." என்ற சொல்லைப் பயன்படுத்தி):

அணு - வெற்று பட்டியல்

புரோகிராமரின் வசதிக்காக, பட்டியல்களை வெவ்வேறு வழிகளில் உருவாக்கலாம் மற்றும் அழிக்கலாம்.

L என்பது பட்டியல் மற்றும் X என்பது ஒரு உறுப்பு எனில், "." (எக்ஸ், எல்) பட்டியலில் ஒரு உறுப்பினர். முதல் உறுப்பு X ஐத் தொடர்ந்து சூழல் L இன் உள்ளடக்கங்கள் தொடரியல் முறையில் குறிப்பிடப்படுகின்றன.

புரோகிராமரின் வசதிக்காக, பட்டியல்களை வெவ்வேறு வழிகளில் உருவாக்கலாம் மற்றும் அழிக்கலாம்.

பொருள் பட்டியல்:
ஒரு தனிமத்தின் முன்னுரை:
ஆரம்ப பல கூறுகள்:
கால நீட்டிப்பு: "."(abc, "."(1, "."(f(x), "."(Y, "."(g(A,rst), )))))

சரங்கள் பொதுவாக மேற்கோள் குறிகளுக்குள் எழுத்துக்களின் வரிசையாக எழுதப்படுகின்றன. அவை பெரும்பாலும் ASCII எழுத்து குறியீடுகளின் பட்டியல்களாக குறிப்பிடப்படுகின்றன.

PROLOG இல் உள்ள நிரலாக்கமானது நடைமுறை மொழிகளுடன் வேலை செய்வதிலிருந்து மிகவும் வேறுபட்டது. புரோலாக்கில் நீங்கள் உண்மைகள் மற்றும் விதிகளின் தரவுத்தளங்களுடன் பணிபுரிகிறீர்கள், நீங்கள் தரவுத்தள வினவல்களை இயக்கலாம். ப்ரோலாக்கின் அடிப்படை அலகு என்பது உண்மை என்று வரையறுக்கப்பட்ட ஒரு முன்னறிவிப்பாகும். ஒரு முன்னறிவிப்பு ஒரு தலை மற்றும் பல வாதங்களைக் கொண்டுள்ளது. உதாரணத்திற்கு:

இங்கே "பூனை" என்பது தலை மற்றும் "டாம்" என்பது வாதம். இந்த உண்மையின் அடிப்படையில் ப்ரோலாக் மொழிபெயர்ப்பாளர் மூலம் நீங்கள் இயக்கக்கூடிய சில எடுத்துக்காட்டு வினவல்கள் இங்கே:

பூனை(டாம்).
ஆம்.

பூனை(X).
X = டாம்;
இல்லை.

முன்னறிவிப்புகள் பொதுவாக ஒரு நிரல் உலகத்தைப் பற்றி அறியும் உண்மையை வெளிப்படுத்த வரையறுக்கப்படுகிறது. பெரும்பாலான சந்தர்ப்பங்களில், முன்னறிவிப்புகளைப் பயன்படுத்துவதற்கு சில மரபுகள் தேவைப்படுகின்றன. பின்வருவனவற்றில் எது பாட் சாலியின் தந்தை என்பதைக் குறிக்கும்?

தந்தை (சாலி, பாட்).
தந்தை (பாட், சாலி).

இரண்டு நிகழ்வுகளிலும் "தந்தை" என்பது தலை, மற்றும் "சாலி" மற்றும் "பேட்" ஆகியவை வாதங்கள். இருப்பினும், முதல் வழக்கில், வாதங்களின் பட்டியலில் சாலி முதலிடத்திலும், பாட் இரண்டாவது இடத்திலும், நேர்மாறாகவும் உள்ளார். முதல் வழக்கு வினை பொருள் மற்றும் பொருள் வரிசையில் ஒரு வரையறைக்கு ஒரு எடுத்துக்காட்டு, ஆனால் இரண்டாவது எடுத்துக்காட்டில் வரிசை வினை பொருள் பொருள் ஆகும். ப்ரோலாக்கிற்கு ஆங்கிலம் புரியாததால், இரண்டு பதிப்புகளும் நன்றாக உள்ளன, ஆனால் ஒரு நிரலை எழுதுவதை விட, மாநாடு எனப்படும் ஒரு பாணியில் ஒட்டிக்கொள்வது நல்ல நிரலாக்க பாணியாகக் கருதப்படுகிறது:

தந்தை (பாட், சாலி). தந்தை (ஜெசிகா, ஜேம்ஸ்).

சில முன்னறிவிப்புகள் மொழியில் கட்டமைக்கப்பட்டுள்ளன மற்றும் அன்றாட நடவடிக்கைகளின் (கிராபிக்ஸ் மற்றும் இயக்க முறைமையுடன் பிற தொடர்புகளைப் பயன்படுத்தி உள்ளீடு/வெளியீடு போன்றவை) ப்ரோலாக்கைக் குறைக்க அனுமதிக்கிறது. எடுத்துக்காட்டாக, எழுதும் முன்னறிவிப்புகளை இது போன்ற காட்சிக்கு பயன்படுத்தலாம்:

எழுது ("வணக்கம்")

திரையில் "ஹலோ" என்ற வார்த்தையைக் காண்பிக்கும்.

விதிகள்

ப்ரோலாக்கில் உள்ள இரண்டாவது வகை அறிக்கை விதிகள். எடுத்துக்காட்டு விதி:

ஒளி(ஆன்) :- சுவிட்ச்(ஆன்).

":-" என்றால் "என்றால்", இந்த விதி என்றால் ஒளி(ஆன்) உண்மை (ஆன்) என்றால் சுவிட்ச்(ஆன்) உண்மை (இல்லையெனில் ஸ்விட்ச் ஆன் என்றால் ஒளி இருக்கும்). விதிகள் மாறிகளையும் பயன்படுத்தலாம்; மாறிகள் ஒரு பெரிய எழுத்துடன் தொடங்கும் போது மாறிலிகள் சிறிய எழுத்துக்களில் தொடங்குகின்றன. உதாரணத்திற்கு,

தந்தை(X,Y) :- பெற்றோர்(X,Y), ஆண்(Y).

இதன் பொருள், "ஒருவர் பெற்றோராகவும், அவர் ஒரு மனிதராகவும் இருந்தால், அவர் ஒரு தந்தை." காரணங்கள் மற்றும் விளைவுகள் தலைகீழ் வரிசையில் இருக்கலாம், எனவே இது சாதாரண தர்க்கத்திற்கு முரணாக இல்லை. பல முன்னறிவிப்புகளை ஒன்றாக இணைப்பதன் மூலம் விளைவு பிரிவில் வைக்கலாம், எடுத்துக்காட்டாக:

இது பல அறிவிப்புகளுக்கு சமம்:

ப:- டி. ப:- டி. c:- டி.

ஆனால் இது போன்ற வழிமுறைகள்:

இது "c என்றால் a அல்லது b" என்பதற்குச் சமமானது. இது ஹார்னின் சூத்திரத்தால் விதிக்கப்பட்ட வரம்பு காரணமாகும்.