คำถามติดแท็ก logic-programming

18
หนึ่งจะจัดการ IF หลายพัน IF ... แล้ว ... กฎอื่น ๆ ได้อย่างไร
ฉันกำลังพิจารณาที่จะสร้างแอปพลิเคชั่นซึ่งที่หลักของมันจะประกอบไปด้วยหาก ... แล้ว ... งบอื่น วัตถุประสงค์ของแอปพลิเคชั่นนี้คือเพื่อให้สามารถทำนายได้ว่าวัวเคลื่อนไปรอบ ๆ ในแนวนอนใด พวกเขาได้รับผลกระทบจากสิ่งต่าง ๆ เช่นดวงอาทิตย์ลมแหล่งอาหารเหตุการณ์ฉับพลัน ฯลฯ แอปพลิเคชันดังกล่าวสามารถจัดการได้อย่างไร? ฉันจินตนาการว่าหลังจากสองสามร้อยประโยค IF มันจะดีเท่าที่คาดเดาไม่ได้ว่าโปรแกรมจะตอบสนองและดีบั๊กอะไรที่นำไปสู่ปฏิกิริยาบางอย่างจะหมายความว่าเราจะต้องสำรวจต้นไม้คำสั่ง IF ทั้งหมดทุกครั้ง ฉันได้อ่านนิดหน่อยเกี่ยวกับเอ็นจิ้นกฎ แต่ฉันไม่เห็นว่าพวกเขาจะรับมือกับความซับซ้อนนี้ได้อย่างไร

2
วิธีการใช้โปรแกรมแบบโต้ตอบ (เช่นเกม / การจำลอง) โดยใช้การเขียนโปรแกรมเชิงตรรกะ?
ฉันได้ยินมาว่าการเขียนโปรแกรมเชิงตรรกะสามารถใช้เป็นทางเลือกทั่วไปสำหรับกระบวนทัศน์การเขียนโปรแกรมอื่นเช่น OO หรือการเขียนโปรแกรมเชิงฟังก์ชัน (เนื่องจาก Prolog เสร็จสมบูรณ์แล้วจึงต้องเป็นเช่นนี้!) อย่างไรก็ตามฉันมีปัญหาในการดูว่าจะใช้โปรแกรมอินเทอร์แอคทีฟได้อย่างไรเช่นเกมคอนโซลกราฟิกที่เรียบง่ายใน Prolog หรือภาษาที่คล้ายกัน คุณมีข้อเท็จจริงกฎที่สามารถรับข้อเท็จจริงเพิ่มเติมและแบบสอบถามที่ดึงข้อเท็จจริง มันง่ายที่จะดูว่าคุณสามารถใช้องค์ประกอบพื้นฐานเหล่านั้นเพื่อสร้างบางสิ่งเช่นตัวแก้ซูโดกุได้อย่างไร แต่วิธีการเกี่ยวกับแพคแมนหรือมากกว่านั้นอย่างง่ายพงษ์? โปรดทราบ:ฉันไม่ได้มองหารายละเอียดในระดับต่ำ แต่เป็นภาพรวมแนวคิด (ตัวอย่างเช่น: ในเงื่อนไขระดับสูงคุณจะจัดการ I / O อย่างไรคุณจะเก็บสถานะของเกมอย่างไรคุณจะใช้บางอย่างเช่น "วนรอบหลัก" อย่างไรคุณจะวัดและตอบสนองต่อเวลาที่ผ่านไปอย่างไร )

1
มีการใช้ภาษาการเขียนโปรแกรมของ Mercury ในสนามหรือไม่?
ฉันให้ความสนใจอย่างมากกับการเขียนโปรแกรมฟังก์ชั่นและลอจิกและเมอร์คิวรี่ดูเหมือนจะเป็นการผสมผสานที่ดีของทั้งสอง มันใช้ในอุตสาหกรรมเลยหรือไม่? ฉันเป็นหนึ่งในการเรียนรู้ภาษาเพียงเพื่อความสนุกของมัน แต่มันจะดีที่จะมีช่องทางในทางปฏิบัติและการจ้างงานสำหรับมัน ฉันไม่สามารถหาตัวอย่างวิธีการใช้ในอุตสาหกรรมในเว็บไซต์ภาษาได้มากนัก

3
ทำไมการเขียนโปรแกรมแบบลอจิก (ไม่ใช่)
ฉันยังไม่เคยได้ยินเกี่ยวกับการใช้ภาษาการเขียนโปรแกรมเชิงตรรกะใด ๆ (เช่น Prolog) ในอุตสาหกรรมซอฟต์แวร์และฉันไม่รู้ถึงการใช้งานในการเขียนโปรแกรมงานอดิเรกหรือโครงการโอเพ่นซอร์ส มัน (อารัมภบท) ใช้เป็นภาษาวิชาการบางส่วนแม้ว่า (ทำไมมันถูกใช้ในสถาบันการศึกษา?) นี่ทำให้ฉันสงสัยว่าทำไมคุณควรใช้การเขียนโปรแกรมเชิงตรรกะและทำไมไม่ เหตุใดจึงไม่ได้รับการใช้งานอุตสาหกรรมที่ตรวจพบได้?

2
ฉันจะรวม 'Command' และ 'Composite' เพื่อจำลองการหน่วงเวลาได้อย่างไร
ในแบบฝึกหัดการเรียนรู้ (ฉันไม่ได้อยู่ที่โรงเรียน - เป็นเพียงแค่ชายแก่ที่พยายามเรียนรู้สิ่งใหม่) ฉันพยายามเขียนการจำลองประตูตรรกะที่รวมเอาการหน่วงเวลาไว้ ผู้ใช้ควรสามารถจัดกลุ่มประตูด้วยกันเพื่อสร้างวัตถุระดับสูงขึ้น ฉันต้องการใช้รูปแบบการออกแบบกับปัญหาของฉัน แต่ฉันมีเวลายาก ฉันอ่านHead First Design Patternsและฉันเห็นว่ารูปแบบคำสั่งเป็นวิธีที่ดีในการจำลองพัลส์ไฟฟ้าผ่านวงจรที่มีความล่าช้า ฉันยังเห็นว่ารูปแบบคอมโพสิตเป็นวิธีที่ดีในการจำลองหน่วยซ้อนกัน ฉันไม่รู้วิธีผสมสองอย่างนี้เข้าด้วยกัน กล่าวอีกนัยหนึ่งเมื่อฉันวนผ่านประตูของฉันฉันเห็นว่าประตู 'x' ควรยิง มันมีความล่าช้า 15 นาโนวินาทีดังนั้นฉันจึงสร้างคำสั่งด้วยการประทับเวลา 15 ns จากเวลาเล่นเกมปัจจุบัน ผู้แจกจ่ายอยู่ที่ไหน ในตัวอย่างของร้านอาหารที่มีคำสั่งเป็น 'สั่งซื้อ' พนักงานเสิร์ฟและผู้ปรุงแต่ละคนส่งคำสั่งและมีตัวเลือกในการแนะนำการหน่วงเวลา ถ้าฉันมีประตู 'ประกอบ' มันจะมีดิสแพตเชอร์ของตัวเองหรือไม่ ฉันต้องใช้ซิงเกิลตันเพื่อจัดการคิวหรือไม่ ฉันอ่านสิ่งที่ฉันสามารถหาได้ แต่ฉันยังต้องการแรงผลักดันในทิศทางที่ถูกต้อง: /programming/2015549/using-command-design-pattern /programming/12016314/client-server-command-design-pattern-with-variable-delays /programming/10560892/composite-of-commands-design-pattern /programming/8874705/how-can-i-calculate-propagation-delay-through-series-of-combinational-circuits-u
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.