মেটা-প্রোগ্রামিং


10

আমি সদ্য C ++ বিকাশকারী হিসাবে আমার যাত্রা শুরু করেছি এবং আমি সম্প্রতি মেটা-প্রোগ্রামিং নামে একটি বিষয় নিয়ে গবেষণা করছি। এখনও অবধি, আমি এই বিষয়টিতে প্রচুর তথ্য দিয়েছি এবং কয়েকটি প্রশ্ন রয়েছে।

  1. সি ++ তে প্রতিবিম্বের ব্যবহার: এটি কি সম্ভব? আমার বোঝার প্রতিচ্ছবি হ'ল একটি মেটা-প্রোগ্রামিং কৌশল যা কোনও প্রোগ্রামের একটি পরিস্থিতি হস্তক্ষেপ করার ক্ষমতা রাখে এবং এর হেরফেরটি অন্তঃকরণ বা অন্তর্মুখ হতে পারে।

  2. প্রতিফলিত স্থাপত্য এবং মেটা-স্তরের আর্কিটেকচারের মধ্যে পার্থক্য কী? মেটা-প্রোগ্রামিং আর্কিটেকচারটি কোন শ্রেণিতে পড়ে?

  3. মেটা-প্রোগ্রামিং দুটি স্তরে আসে: মেটা স্তর এবং বেস স্তর। আমার বোধগম্য, অবজেক্ট প্রোগ্রাম বা তদন্তাধীন সিস্টেমটি বেস স্তর এবং তদন্তাধীন সিস্টেমের ওপরে পরিচালিত হতে যাওয়া মেটা প্রোগ্রামটি হ'ল মেটা স্তর। আমি কি সঠিক?

সি ++ তে টেমপ্লেট মেটাপোগ্র্যামিংয়ের কাজ সম্পর্কে কিছু গাইডলাইন সরবরাহ করে আমাকে সহায়তা করুন।
আপনি কি আমাকে এই প্রোগ্রামিং কৌশলটিতে হাতছাড়া করার জন্য কিছু কার্যক্ষম উদাহরণের পরামর্শ দিতে পারেন?


2
এই প্রশ্নটি স্ট্যাকওভারফ্লোয়ের চেয়ে প্রোগ্রামারগুলিতে বেশি থাকতে পারে। প্রাক্তনটি আরও তাত্ত্বিক এবং পরে আরও ব্যবহারিক। কিছু অংশের ব্যবহারিক দৃষ্টিকোণ থেকে সহজেই উত্তর দেওয়া যেতে পারে সি ++ এর প্রতিবিম্ব নেই , তবে অন্যদের কোড সম্পর্কিত নয় (যেমন প্রতিবিম্বিত এবং ধাতব নকশাগুলির মধ্যে পার্থক্য, উদাহরণস্বরূপ)
ডেভিড রদ্রিগেজ - ড্রিবাস

এই SO উত্তরে সি ++ এর প্রতিবিম্ব কেন নেই তা সম্বোধন করে: স্ট্যাকওভারফ্লো.com / q / 359237 / 120163 , এবং এটির খারাপভাবে অনুকরণের জন্য কিছু দুর্বল সি ++ কৌশল।
ইরা বাক্সটার

আপনি যদি রূপকগুলিতে খুব আগ্রহী হন, আমি আপনাকে ডি ভাষাটি দেখার পরামর্শ দিচ্ছি, যা এই বিষয়টিতে C ++ এর চেয়ে পরিষ্কার cle
ডেডালনিক্স

উত্তর:


10

ধাতব প্রোগ্রামিংয়ের সহজ অর্থ হ'ল অন্য কোড লেখার কোডটি লেখার উপায় আপনার কাছে রয়েছে (বিস্তৃত অর্থে)। সি ++ এটি টেম্পলেট প্রক্রিয়াটির মাধ্যমে করে, যা মূলত একটি টাইপ-নিরাপদ ম্যাক্রো ভাষা। কেবলমাত্র টেম্পলেট সম্প্রসারণের পদক্ষেপটি প্রয়োগ করা পুরোপুরি সম্ভব এবং ফলাফলটি বৈধ টেম্পলেট-বিনামূল্যে সি ++ কোড হবে।

প্রতিচ্ছবি হ'ল একটি প্রোগ্রামিং ভাষা এবং / অথবা রানটাইম পরিবেশের রান-টাইমে তার নিজস্ব ভাষার উপাদানগুলি পরিদর্শন করার (এবং প্রায়শই সংশোধন করার) দক্ষতা। সাধারণত, প্রতিবিম্বিত ভাষাগুলি ডেটা স্ট্রাকচার দেয় যা শ্রেণি, পদ্ধতি, ভেরিয়েবল, পরামিতি ইত্যাদির মতো ভাষা উপাদানগুলির প্রতিনিধিত্ব করে, পাশাপাশি রুটিন বা শ্রেণিগুলি তাদের পরিদর্শন, সংশোধন এবং তৈরি করার জন্য করে। পরিবর্তনের ক্ষমতা প্রতিবিম্বকে এক ধরণের মেটা-প্রোগ্রামিং করে তোলে, যেহেতু এটি আপনাকে কোড লিখতে দেয় যা অন্য কোড উত্পন্ন করে।

রূপান্তরকরণের অন্যান্য উদাহরণগুলির মধ্যে কোড জেনারেটর, স্ব-পরিবর্তনকারী বাইনারিগুলি অন্তর্ভুক্ত রয়েছে (যদিও এগুলি আজকের দশক আগের মতো জনপ্রিয় নয়), সি ম্যাক্রোস; যে কেউ তর্ক করতে পারে যে কারিঙ এবং অনুরূপ ফাংশনাল-প্রোগ্রামিং কৌশলগুলিও এক ধরণের রূপক।


+1 আমি আপনার উত্তরটি সত্যিই পছন্দ করি এবং আমি সি # এর মতো একটি পরিষেবা হিসাবে সংকলকটি ব্যবহার করতে বা রান-টাইমে নির্মিত কোড কার্যকর করতে জাভার মতো স্ক্রিপ্টিং ইঞ্জিন ব্যবহার করার বিষয়ে জানতে চাই। এটি কি রূপক রূপের রূপ নয়?
এম সমীর

সুতরাং যে কে সিতে পাইথন দোভাষী তৈরি করে সে কি রূপক? এমন কোনও ওআরএম বাস্তবায়ন সম্পর্কে যা এসকিউএল-তে কোনও অবজেক্ট ভিত্তিক ভাষার মানচিত্র তৈরি করে? প্রতিটি ওয়েব কাঠামো কি রূপকগুলির উদাহরণ?
কোজিরো

1
  1. না, তা নয়। সি ++ প্রোগ্রামগুলি মেশিন কোডে সংকলিত হয় এবং ক্লাস ইত্যাদির সমস্ত তথ্য নষ্ট হয়ে যায় (যদি না নেট পরিবেশের জন্য সি ++ / সিএলআই ব্যবহার না করা হয় তবে এটি খাঁটি সি ++ নয়)।

2-3। আমি জানি না - এমন আরও একটি উত্তরের জন্য অপেক্ষা করুন যা এটির সাথে সহায়তা করে :-)

সি ++ টেমপ্লেট ব্যবহার করে মেটা প্রোগ্রামিং খুব শক্তিশালী, তবে জটিল। টেমপ্লেট সম্প্রসারণের জন্য C ++ ব্যবহার করা আবশ্যক প্রোগ্রামিংয়ের চেয়ে প্রোগ্রামিংয়ের ক্রিয়ামূলক শৈলীর প্রয়োজন। ফাংশনাল প্রোগ্রামিংয়ের সাথে যদি আপনার পূর্বের অভিজ্ঞতা না থাকে তবে আমি আপনাকে সুপারিশ করব ডিটোর তৈরি এবং সোম বুনিয়াদি লিস্প, হ্যাশেল বা স্কিম শিখতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.