หนึ่งในสิ่งที่ทำให้ Ruby shine คือความสามารถในการสร้าง Domain Specific Languages ที่ดีขึ้นเช่น
แม้ว่าเราสามารถทำซ้ำไลบรารี่เหล่านี้ใน LISP ผ่านมาโครได้ แต่ฉันคิดว่าการติดตั้งของรูบี้นั้นสง่างามกว่า อย่างไรก็ตามฉันคิดว่ามีบางกรณีที่แมโครของ LISP นั้นสามารถทำได้ดีกว่ารูบี้แม้ว่าฉันจะไม่สามารถคิดได้
ดังนั้นมาโครของ LISP ในพื้นที่ใดที่ดีกว่า "ความสามารถ" ของรูบี้ในการสร้าง DSL ถ้ามี?
ปรับปรุง
ฉันถามสิ่งนี้เพราะภาษาการเขียนโปรแกรมที่ทันสมัยกำลังเข้าใกล้ LISP เอกพจน์เช่น
- C มีตัวประมวลผลก่อนการขยายตัวของแมโครแม้ว่าจะเป็นแบบดั้งเดิมและมีแนวโน้มที่จะเกิดข้อผิดพลาด
- C # มีคุณสมบัติแม้ว่าจะเป็นแบบอ่านอย่างเดียวซึ่งเปิดเผยผ่านการสะท้อนกลับ
- Python ได้เพิ่มมัณฑนากรที่สามารถปรับเปลี่ยนพฤติกรรมของฟังก์ชั่น (และคลาสสำหรับ v 3.0) แต่รู้สึกค่อนข้าง จำกัด
- Ruby TMTOWTDI ที่ทำให้ DSL สง่างามหากใช้งานอย่างระมัดระวัง แต่เป็น Ruby
ฉันสงสัยว่าแมโครของ LISP นั้นใช้ได้กับกรณีพิเศษเท่านั้นและคุณสมบัติภาษาการเขียนโปรแกรมอื่นนั้นมีประสิทธิภาพเพียงพอที่จะยกระดับสิ่งที่เป็นนามธรรมเพื่อตอบสนองความท้าทายในการพัฒนาซอฟต์แวร์ในปัจจุบัน