อารัมภบทมีประโยชน์อย่างมืออาชีพหรือไม่?


15

ฉันเรียน Prolog เมื่อหลายปีก่อนในมหาวิทยาลัย ในช่วงชีวิตการงานของฉันฉันไม่จำเป็นต้องใช้ Prolog ฉันพลาดอะไรเป็นพิเศษไหม?

เท่าที่ฉันจำได้ว่า Prolog ต้องการความคิดที่แตกต่างอย่างสิ้นเชิงเมื่อเทียบกับภาษาการเขียนโปรแกรมที่โดดเด่น

Prolog เคยใช้บางสิ่งบางอย่างที่มีประโยชน์อย่างมืออาชีพหรือไม่?


3
Prolog (และ poplog) นั้นดีมากสำหรับการเข้ารหัส AI หากคุณไม่ได้ทำสิ่งที่เกี่ยวข้องกับ AI อย่างจริงจัง / อย่างจริงจังคุณไม่สามารถใช้งานได้เลย เช่นเดียวกับที่ไม่ใช่วิศวกรที่ไม่เคยใช้งาน MATLAB อย่างจริงจัง
glasnt

1
คำถามที่ดี. ภาษาโปรล็อกเป็นภาษาโปรแกรมแรกที่สอนในภาษาศาสตร์คอมพิวเตอร์ที่ Uni Potsdam แต่หลังจากนั้นเราไม่ได้ใช้มันมากขนาดนั้นแม้ว่าเราจะค่อนข้างดี มันน่าเสียดาย ทุกครั้งที่ฉันเห็นคำถามเช่น "ฉันจะใช้ตัวสะสม" ได้อย่างไรหรือ "ฉันจะได้คำตอบที่เป็นไปได้ทั้งหมด" ใน StackOverflow มันทำให้ฉันสงสัยว่าผู้ใช้มืออาชีพที่แท้จริงอยู่ที่ไหน - สิ่งที่ดูเหมือนจะเป็นการบ้าน หรือความสามารถในการเปิดฉากอาจทำให้คุณกลายเป็นหุ่นยนต์ที่ไม่เคยมีคำถาม
เฟลิกซ์ดอมเบค

ฉันเคยได้ยินเรื่องระบบตรวจจับข้อผิดพลาดที่เขียนใน Prolog และนำไปใช้ที่ไหนสักแห่งในออสเตรีย (คลาเกนฟูร์ท?) ตามคำบอกเล่าของฉันผลิตภัณฑ์นี้ค่อนข้างดีและขายให้กับลูกค้า หากคุณพิจารณาว่า "มีประโยชน์อย่างมืออาชีพ" คำตอบคือ "ใช่"
Giorgio

คำตอบ:


12

ในมุมมองของฉันการเรียนรู้พื้นฐานของ Prolog นั้นคุ้มค่ามากไม่ว่าคุณจะใช้มันในโลกแห่งความเป็นจริงหรือไม่ นอกจากนี้ยังเป็นเรื่องที่คุ้มค่าอย่างยิ่งที่จะเข้าใจแนวคิดพื้นฐานที่รวมการรวมเข้าด้วยกันและวิธีการดำเนินการ (เล็กน้อยและไม่มีประสิทธิภาพ)

หากคุณมีปัญหาที่จะแก้ไขได้ดีที่สุดโดยใช้ตรรกะที่มีการประกาศคุณควรตระหนักอย่างถ่องแท้ว่าและรู้ว่า (หากคุณมีทางเลือก) ในการใช้เครื่องมือที่เหมาะสมสำหรับงานนั้น

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

ความประทับใจของฉันคือ ... เราอาจจะทั้งสองหายไปบางสิ่งที่พิเศษในระดับหนึ่ง แต่มันจะไม่เป็นประโยชน์ที่จะอุทิศเวลาในการเรียนรู้แม้กระทั่งความรู้ตำราเรียนในระดับที่สมบูรณ์พอสมควรสำหรับเปิดฉากให้อยู่คนเดียวพยายามที่จะพัฒนาประสบการณ์จริงของโลก ยกเว้นว่าคุณกำลังพิจารณาอาชีพการเขียนโปรแกรมตรรกะ

เมื่อเร็ว ๆ นี้ฉันได้อ่านหนังสือเกี่ยวกับ AI และระบบผู้เชี่ยวชาญที่ตีพิมพ์ในปี 2532 - เป็นผู้โชคดีในร้านหนังสือมือสอง ส่วนที่สำคัญคือการสอนพิเศษเกี่ยวกับ Lisp และ Prolog จริงแล้วสิ่งที่ครอบคลุมมากที่สุดนั้นไม่ได้น่าประทับใจสักระยะหนึ่ง (การค้นหาฮิวริสติก ฯลฯ ) แต่มันก็ยังน่าสนใจมากและ IMO เป็นสิ่งที่คุ้มค่าที่จะลงทุนสักหน่อย

หนังสือเล่มล่าสุดที่อธิบายถึง Prolog โดยเฉพาะจะดีกว่าสำหรับการเรียนรู้ภาษา แต่ความเสี่ยงก็คือสมองของคุณจะเลี้ยงลูกจากหูของคุณที่ไหนสักแห่งในสื่อระดับกลางถึงขั้นสูง


AI / อารัมภบทมือใหม่ที่นี่ แหล่งข้อมูลออนไลน์ใด ๆ ที่คุณแนะนำ
yati sagade

@yati - ลองamzi.com/AdventureInProlog/advtop.php - ฉันเคยผ่านการสอนเกี่ยวกับเว็บไซต์ Amzi ซึ่งดูเหมือนว่าตกลงเท่าที่ฉันจำได้ แต่มันนานมากแล้ว ทั้งหมดที่ฉันได้ดูเมื่อเร็ว ๆ นี้ (อาจเป็น 5 ปีที่ผ่านมา) สำหรับ Prolog คือหนังสือ AI ที่ฉันพูดถึงในคำตอบนี้ คุณควรค้นหา / ถามคำถามที่นี่แทนที่จะโพสต์ความคิดเห็นโดยเฉพาะความคิดเห็นที่เพิ่มเข้าไปในคำตอบที่เขียนโดยคนที่เป็นมือใหม่ในระยะยาว อารัมภบทของสิ่งที่ฉันดูไม่ค่อยและในเชิงลึกน้อยมาก - หรืออื่น ๆ ฉันได้หยุดการเป็นมือใหม่ปีหรือมากกว่านั้น
Steve314

10

นี่ไม่ใช่ฉัน แต่สมมติว่าคำถามอาจเป็น "มีใครทำบางสิ่งที่จริงจังกับการเปิดฉาก?" สิ่งนี้อาจนับได้:

http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html

วัตสันขับเคลื่อนโดย 10 แร็คของเซิร์ฟเวอร์ IBM Power 750 ที่รัน Linux และใช้ RAM 15 เทราไบต์, โปรเซสเซอร์ 2,880 คอร์และสามารถใช้งานที่ 80 เทราฟลอป วัตสันเขียนด้วยภาษาจาวาเป็นส่วนใหญ่ แต่ยังมีส่วนสำคัญของรหัสที่เขียนด้วยภาษาซีพลัสพลัสและภาษาโปรล็อกซึ่งส่วนประกอบทั้งหมดถูกปรับใช้และรวมเข้าด้วยกันโดยใช้ UIMA


7

ฉันรู้ว่าโปรแกรมเมอร์ AI ใช้มันเพราะฉันทำหลักสูตร Prolog ในชั้นเรียน AI ของฉัน แต่นอกเหนือจากนั้นฉันก็ไม่ได้เห็นคนอื่นพูดถึงมันมากนัก นี่เป็นคำถามที่คล้ายกันกับคำตอบมากมาย! /programming/130097/real-world-prolog-usage


6

Prolog นั้นยอดเยี่ยมสำหรับการสร้างต้นแบบที่รวดเร็ว ตัวอย่างเช่นในhttp://www.cri.ensmp.fr/classement/doc/A-381.pdf SSA-transform สำหรับ GCC จะถูกนำไปใช้งานครั้งแรกใน Prolog จากนั้นใน C

ฉันกำลังใช้ Prolog Inside compilers สำหรับการนำระบบพิมพ์ไปใช้อย่างรวดเร็วและสกปรกการเพิ่มประสิทธิภาพและการตรวจสอบเชิงความหมายบางอย่างและฉันเขียน Prolog โค้ดนั้นเป็นสิ่งที่จำเป็นถ้าประสิทธิภาพไม่เป็นที่ยอมรับ


2

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


2

ตาม (คำถามที่พบบ่อยนี้) 1ส่วนของวัตสันเครื่อง IBM ที่เล่น Jeopardy ถูกเขียนในบทนำ (ดูคำถาม # 6)


1

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

แต่แน่นอนว่า 'ระบบ end-to-end' น้อยมากสามารถกำหนดได้เพียงอย่างเดียวในแง่ของการประมวลผลของโครงสร้างแบบเรียกซ้ำ (ยกเว้น: ทฤษฎีบทพิสูจน์ - แต่นี่เป็นแบบฝึกหัดทางวิชาการ *) ดังนั้นจึงโชคดีที่กระบวนการอารัมภบท สามารถนำกราฟไปใช้ใน 'กระบวนการบังคับใช้มาตรฐานมากขึ้น' โดยใช้เทคนิคที่แตกต่างกันทุกประเภท (แทบจะไม่สำคัญว่าอะไร แต่ส่วนต่อประสานบริการบนเว็บอาจจะเหมาะสมโดยทั่วไป); เพื่อให้คุณสามารถจัดการกับ UI และการประมวลผลเหตุการณ์แบบสุ่ม ฯลฯ แล้วส่งมอบเมื่อจำเป็น (สำหรับการทำแบบสอบถามฐานข้อมูลที่ซับซ้อนหรือจำนวนสิ่งใด ๆ ที่คุณอาจต้องการทำกับโครงสร้างแบบเรียกซ้ำ) ฉันคิดว่ามันใช้งานได้ดีกว่า LINQ

ดังนั้นคว้าโครงสร้างแบบเรียกซ้ำโดยใช้บิตที่ละเอียดอ่อนและเขียน Prolog ที่น่ารักสะอาดและสง่างามและบำรุงรักษาได้! :)

ป.ล. เมื่อฉันไม่ได้ใช้ Prolog ฉันย้อนกลับไปที่ C #

  • แม้ว่าฉันจะรอวันที่อย่างน้อยบางแง่มุมของโปรแกรมเชิงพาณิชย์ได้รับการพิสูจน์แล้วว่าถูกต้องเป็นมาตรฐานการปฏิบัติ

1

ลองเขียนตัวแก้ซูโดกุในภาษาที่คุณชื่นชอบจากนั้นตรวจสอบวิธีการใช้ Prolog โดยทั่วไปปัญหา CLP ใด ๆ ที่เหมาะสมกับภาษาที่ประกาศเช่น Prolog

มันถูกใช้อย่างกว้างขวางในการตรวจสอบอย่างเป็นทางการของฮาร์ดแวร์และซอฟต์แวร์ (ในเชิงวิชาการและอาจเป็นมืออาชีพ แต่ฉันไม่มีการอ้างอิงใด ๆ กับ บริษัท )

ในที่สุด Erlang ได้รับอิทธิพลอย่างลึกซึ้งจาก Prolog ด้วยความอดทนต่อความผิดพลาดและการเกิดพร้อมกันในใจ


0

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.