การเขียนโปรแกรมเมตาพบได้บ่อยแค่ไหน? [ปิด]


10

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

แต่มันเป็นเรื่องธรรมดาอย่างไร มันใช้ตลอดเวลาหรือแค่บางครั้ง?


5
มันอาจจะไม่ธรรมดา แม้ว่าค่อนข้างบ่อยในเสียงกระเพื่อม, เสียงกระเพื่อมไม่ได้เป็นเรื่องธรรมดา - ไม่ใช่แม้แต่เสียงกระเพื่อมสามัญ
paul

ชัดเจนหรือโดยนัย? ที่หนึ่งในสุดขีดที่ใช้ Java และ C # คือการเขียนโปรแกรม meta-arguably เนื่องจากคอมไพเลอร์ไฟล์ภาษาเอาต์พุตของคอมไพเลอร์ที่ถูกรวบรวมหรือตีความ ที่อื่น ๆ เพียงเกี่ยวกับการเขียนโค้ดเพื่อสร้างรหัสในภาษาที่พวกเขาได้สร้างคอมไพเลอร์สำหรับ
Moz

Metaprogramming เป็นที่แพร่หลาย โครงการโอเพนซอร์สใด ๆ ที่พึ่งพา Autotools กำลังใช้ metaprogramming กระทรวงพาณิชย์ในโลก Qt, tblgen ใน LLVM, T4 ในโครงการ. NET มากมายโครงการเว็บใด ๆ ที่สร้างจาวาสคริปต์และอื่น ๆ
SK-logic

คำตอบ:


5

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

ในความคิดของฉันการเขียนโปรแกรมเมตาเป็นสิ่งที่ซับซ้อนกว่าซึ่งเกี่ยวข้องกับการสร้างรหัสจริงและจึงค่อนข้างแปลกแม้ในภาษาสคริปต์


เหตุใดเทมเพลตการเขียนโปรแกรมไม่ใช่เครื่องมือ "การสร้างรหัสจริง"?!? เทมเพลต C ++ นั้นสมบูรณ์แบบทัวริงและคุณสามารถสร้างโค้ดที่ซับซ้อนได้เอง
SK-logic

@ SK-logic: ฉันหมายถึงรหัสใหม่ที่ถูกสร้างขึ้นตามความต้องการในขณะใช้งานจริง เทมเพลตได้รับการประมวลผลโดยคอมไพเลอร์คุณสามารถเห็นพวกเขาเป็นมาโครคอมไพเลอร์ชนิดทรงพลัง
Wizard79

ทำไมคุณต้องการสร้างรหัสใน runtime? metaprogramming ที่ทรงพลังที่สุด (เช่น Common LISP, แร็กเก็ต, เทมเพลตแฮสเคลล์ ฯลฯ ) อยู่ในเวลารวบรวม
SK-logic

3

ฉันคิดว่ามันขึ้นอยู่กับว่าคุณใช้ภาษาใด คน Lisp ทั่วไปอาจใช้งานมันอย่างเป็นธรรม - Meta-Object Protocol ช่วยให้สิ่งต่าง ๆ มีความโปร่งใส / มุมมองแบบมุมฉากเป็นต้น - และ Smalltalkers ใช้บ่อยๆ


2

มันมีแนวโน้มที่จะปรากฏขึ้นอย่างสม่ำเสมอและต่อเนื่องในโครงการ Common LISP ลองดูคำอธิบาย / ข้อมูลเชิงลึกจากOnLispและLet Over Lambda

หากคุณเป็นเพียงตัวอย่าง (และรู้จัก CL) ให้ตรวจสอบที่เก็บAntiweb ; การเขียนโปรแกรมเมตามีอยู่มากมายภายใต้ปก


1

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

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