text: মেটাপ্রোগ্রামিং ()হলো প্রোগ্রামিংয়ের এমন এক কৌশল যেখানে কম্পিউটার প্রোগ্রামগুলো অন্য প্রোগ্রামগুলোকে তাদের অন্তর্ভুক্ত ডেটা হিসেবে বিচার করতে পারে। এর মানে দাঁড়াচ্ছে একটি প্রোগ্রাম অন্য কোনো প্রোগ্রামকে পড়া, বিশ্লেষণ ও রূপান্তর করতে পারে -এমনকি প্রোগ্রামগুলোর চলন্ত অবস্থায় সেগুলোকে পরিবর্তন করতে পারে। ফলে, এটা প্রোগ্রামারদের কোনো সমস্যা সমাধানে লেখা কোডের লাইন সংখ্যা কমাতে পারে, এতে ডেভলপমেন্টের সময় কম লাগে।  এটা কার্যকরীভাবে উদ্ভূত নতুন প্রোগ্রামিং সমস্যাগুলো রিকম্পাইল ছাড়া সমাধান করে প্রোগ্রামের নমনীয়তা দারুণ বাড়িয়ে দেয় ।
  
  মেটাপ্রোগ্রামিংয়ের মাধ্যমে কম্পিউটিংয়ের কাজ রান টাইমের বদলে কম্পাইল টাইমে স্থানান্তর করা যায় ও স্বপরিবর্তনযোগ্য কোড লেখা যায়।
  
  প্রচেষ্টাসমূহ 
  মেটাপ্রোগ্রামিংয়ের সাহায্যে লেখা কোডগুলো জেনেরিক প্রোগ্রামিং প্যারাডাইমের আওতায় পড়ে। স্বয়ং প্রোগ্রামিং ভাষাটিকেই ফার্স্ট ক্লাস ডেটা টাইপ হিসেবে পাওয়া খুবই ব্যবহারবান্ধব(যেমন লিস্প, প্রোলগ, স্নবল এসবে আছে); যা হোমোআইকনিসিটি নামে পরিচিত। জেনেরিক প্রোগ্রামিং মেটাপ্রোগ্রামিংয়ের এমন একটি সুবিধা দেয়, যেখানে ডেটা টাইপ উল্লেখ না করে কোড লেখা যায়, পরবর্তীতে যেগুলো ব্যবহারের সময় প্যারামিটারের মাধ্যমে উল্লেখ করলেই চলে।
  
  উদাহরণ 
  
  মেটাপ্রোগ্রামিংয়ের একটি সহজ উদাহরণ হলো এই পসিক্স শেল স্ক্রিপ্টটি, যা একইসাথে জেনারেটিভ প্রোগ্রামিংয়ের উদাহরণও:#!/bin/sh
  # metaprogram
  echo '#!/bin/sh' > program
  for i in $(seq 992)
  do
      echo "echo $i" >> program
  done
  chmod +x programএই স্ক্রিপ্টটি (বা, প্রোগ্রামটি) একটি ৯৯৩-লাইন প্রোগ্রাম আউটপুট দেয়, যাতে ১-৯৯২ পর্যন্ত সংখ্যাগুলো থাকে। এটা শুধু কোড ব্যবহার করে আরো কোড লেখার জন্য; স্ক্রিপ্টটি সংখ্যা প্রিন্ট করার জন্য সবচেয়ে কার্যকরী উপায় নয়।
  
  এটা সত্ত্বেও, একজন প্রোগ্রামার এই মেটাপ্রোগ্রামটিকে মিনিটেরও কম সময়ে চালাতে পারেন, যাতে ১০০০ লাইনের কোড তিনি পেয়ে যাবেন।
  
  কোয়াইন বিশেষ ধরনের একটি মেটাপ্রোগ্রাম, যা নিজের সোর্স কোড নিজেই তৈরি করে। কোয়াইন মূলত শুধু তত্ত্বীয় কিংবা বিনোদনমূলক ব্যবহারের জন্য।
  
  প্রোগ্রামিং ভাষাসমূহে ব্যবহার
  
  ম্যাক্রো সিস্টেমসমূহ 
  
   সাধারণ লিসপ ও  লিসপের অধীকাংশ উত্তরসূরী।
   স্কিম হাইজেনিক ম্যাক্রোসমূহ
   ম্যাক্রোএমএল
   রেকেট 
   টেম্পলেট হ্যাসকেল
   স্ক্যালা ম্যাক্রোসমূহ
   ক্লোজিউর ম্যাক্রোসমূহ
   নিম
   রাস্ট
  
  মেটাক্লাসসমূহ 
  নিচের প্রোগ্রামিং ভাষাগুলো মেটাক্লাসসমূহ সরবরাহ করে:
  
   সাধারণ লিসফ
   পাইথন
   নিল]
   গ্রুভি
   রুবি
   স্মলটক
  
  টেমপ্লেট মেটাপ্রোগ্রামিং 
   এক্স ম্যাক্রোসমূহ
   সি++ টেমপ্লেটসমূহ
   ডি
   সাধারণ লিস্প, স্কিম এবং অন্যসব লিস্প উত্তরসূরী
   নিম
  
  স্টেজড মেটাপ্রোগ্রামিং 
  
   মেটাএমএল
   মেটাওক্যামেল
   স্ক্যালা 
  টেরা
  
  তথ্যসূত্র
title: মেটাপ্রোগ্রামিং