คำถามติดแท็ก extensibility

19
ภาษาการเขียนโปรแกรมที่มีกลไกการขยายไวยากรณ์คล้าย Lisp [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันมีความรู้ จำกัด ใน Lisp (พยายามที่จะเรียนรู้เล็กน้อยในเวลาว่างของฉัน) แต่เท่าที่ฉันเข้าใจมาโคร Lisp อนุญาตให้แนะนำการสร้างภาษาใหม่และไวยากรณ์โดยการอธิบายพวกเขาใน Lisp เอง ซึ่งหมายความว่าสามารถเพิ่มการสร้างใหม่เป็นไลบรารีโดยไม่ต้องเปลี่ยน Lisp คอมไพเลอร์ / ล่าม วิธีนี้แตกต่างจากภาษาโปรแกรมอื่นมาก เช่นถ้าฉันต้องการขยาย Pascal ด้วยลูปชนิดใหม่หรือสำนวนเฉพาะบางอย่างฉันจะต้องขยายไวยากรณ์และความหมายของภาษาแล้วนำคุณสมบัติใหม่นั้นมาใช้ในคอมไพเลอร์ มีภาษาการเขียนโปรแกรมอื่น ๆ นอกตระกูล Lisp (เช่นนอกเหนือจาก Common Lisp, Scheme, Clojure (?), Racket (?), ฯลฯ ) ที่มีความเป็นไปได้ที่คล้ายคลึงกันในการขยายภาษาภายในภาษานั้นหรือไม่ แก้ไข โปรดหลีกเลี่ยงการอภิปรายเพิ่มเติมและเฉพาะเจาะจงในคำตอบของคุณ แทนที่จะเป็นรายการที่มีความยาวของภาษาโปรแกรมที่สามารถขยายออกไปไม่ทางใดก็ทางหนึ่งฉันต้องการที่จะเข้าใจจากมุมมองเชิงความคิดเกี่ยวกับมาโคร Lisp เฉพาะที่เป็นกลไกการขยายและภาษาที่ไม่ใช่ Lisp เสนอแนวคิดบางอย่าง ที่ใกล้กับพวกเขา

3
เราจะสร้างซอฟต์แวร์ที่เสียบปลั๊กได้อย่างไร
หากคุณมีแอพพลิเคชั่นบางประเภทและคุณต้องการให้ผู้ใช้ของคุณสามารถเขียนปลั๊กอินได้แอปพลิเคชันควรได้รับการออกแบบอย่างไร? คุณต้องคำนึงถึงอะไรรูปแบบการออกแบบสำหรับ ฯลฯ นี้คืออะไร

2
วิธีการสร้างเว็บไซต์ ASP.NET MVC แบบแยกส่วน
ฉันอยู่ในขั้นตอนการวางแผนสำหรับระบบอินทราเน็ตของพนักงานที่จะสร้างด้วย ASP.NET MVC 4 เราต้องการให้ไซต์ประกอบด้วย "โมดูล" แยกจากกันซึ่งแต่ละอันมีคุณสมบัติที่แตกต่างกัน: การส่งข้อความการเปลี่ยนแปลงเงินเดือน ฯลฯ ฉันต้องการให้โมดูลเหล่านี้สามารถเปิดใช้งานหรือปิดใช้งานในเวลารวบรวม หน้าแรกจะแสดงการนำทางบางประเภทที่จะเชื่อมโยงไปยังแต่ละโมดูลที่โหลด มันเป็นเรื่องง่ายจนถึงตอนนี้ แต่ฉันไม่ต้องการคุณลักษณะการนำทางที่ต้องรู้เกี่ยวกับโมดูลล่วงหน้า กล่าวอีกนัยหนึ่งฉันต้องการให้โมดูลค้นพบแบบไดนามิก; ฉันต้องการที่จะสามารถเขียนรหัสสำหรับโมดูลใหม่แล้วมีลิงค์เพิ่มไปยังแถบนำทางโดยไม่มีการเปลี่ยนแปลงรหัสใด ๆ ในแหล่งที่มา แต่ละโมดูลควรมีวิธีการลงทะเบียนด้วยแถบการนำทางและที่สำคัญกว่านี้ควรทำสำหรับแต่ละโมดูลเมื่อโหลด ฉันเชื่อว่าสิ่งนี้จะขัดขวางการใช้พื้นที่ของ MVC เนื่องจากสิ่งเหล่านี้ได้รับการออกแบบมาสำหรับกรณีที่รู้จักเค้าโครงของไซต์ไว้ล่วงหน้า MEF ดูเหมือนว่าอาจจะเหมาะสมแม้ว่าคนดูเหมือนจะประสบความสำเร็จในการรวม MEF กับ MVC MEF เป็นวิธีที่จะไปที่นี่จริง ๆ หรือมีวิธีที่ดีกว่าในการบรรลุสิ่งที่ฉันต้องการหรือไม่?

5
ฉันจะสร้าง jtree ที่ไม่แน่นอนและหลากหลายได้อย่างไรกับโหนดหมวดหมู่ตามอำเภอใจ / ทั่วไป?
โปรดทราบ: ฉันไม่ต้องการความช่วยเหลือในการเขียนโปรแกรมที่นี่ฉันเปิดProgrammersเพื่อเหตุผล ฉันต้องการพัฒนาทักษะการวางแผนโปรแกรม / การเขียนของฉันไม่ใช่แค่เข้าใจ Javaเท่านั้น ฉันพยายามที่จะคิดออกว่าจะทำให้ต้นไม้ที่มีระบบหมวดหมู่โดยพลการบนพื้นฐานของทักษะที่ระบุไว้สำหรับเกมสวมบทบาทนี้ที่นี่ ความพยายามครั้งก่อนของฉันมีบูลว่าทักษะนั้นเป็นหมวดหมู่หรือไม่ พยายามรหัสรอบที่ยุ่ง การวาดต้นไม้ของฉันฉันสังเกตเห็นว่า 'ใบไม้' ของฉันเป็นทักษะเท่านั้น สิ่งที่ฉันตามมาคือวิธีในการสร้างทรีที่พยายามแยกโมเดลและมุมมองและอนุญาตให้เพิ่มโหนดย่อยประเภทลูก (โดยมีวิธีการแก้ไข / เรนเดอร์แยกต่างหาก) ให้กับผู้ปกครองโดยพลการ NB ซื้อทุกอย่างที่นี่เป็นทักษะแม้ในที่ที่ดูเหมือนว่าเป็นทรัพย์สิน ผู้ใช้จะเห็นว่านี่เป็นทักษะการซื้อ (ซึ่งพวกเขาทำบนกระดาษ ATM) ดังนั้นจึงควรแสดงเช่นนี้ทั้งหมดในหน้าเดียวกัน คำอธิบายของต้นไม้:ต้นไม้ 'เกิด' พร้อมชุดหมวดหมู่ระดับสูงที่มีการเข้ารหัสอย่างหนัก ( อาวุธ, ร่างกายและจิตใจ, การแพทย์และอื่น ๆ ) จากนี้ผู้ใช้จะต้องสามารถเพิ่มทักษะ ในที่สุดพวกเขาต้องการเพิ่มทักษะ 'ความเชี่ยวชาญพิเศษด้วยดาบ' ( ไม่ใช่ไอเท็ม) เป็นต้น จะทำอย่างไรเพื่อให้คุณนึกคิดต้องการคลิก 'เพิ่ม' กับWeaponsที่เลือกแล้วเลือกOne-handedจากโหนด ComboBox ที่ปรากฏในเด็กนั้นแล้วคลิกเพิ่มอีกครั้งและใส่ชื่อในช่องข้อความในว่าเด็กโหนดที่ปรากฏ จากนั้นคลิกเพิ่มอีกครั้งเพื่อเพิ่ม / ระบุ 'ระดับ' หรือ 'ระดับ' สำหรับลีฟนั้น …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.