মূল দোভাষী থেকে পৃথক একটি "বুটস্ট্র্যাপড" ইন্টারপ্রিটার তৈরি করা কি সম্ভব?


21

উইকিপিডিয়া অনুসারে , সংকলক লেখার প্রসঙ্গে "বুটস্ট্র্যাপিং" শব্দটির অর্থ এটি :

কম্পিউটার বিজ্ঞানে, বুটস্ট্র্যাপিং হ'ল উত্স প্রোগ্রামিং ভাষায় একটি সংকলক (বা এসেম্বারার) লেখার প্রক্রিয়া যা এটি সংকলন করতে চায়। এই কৌশলটি প্রয়োগ করা একটি স্ব-হোস্টিং সংকলককে নিয়ে যায়।

এবং আমি বুঝতে পারি যে এটি কীভাবে কাজ করবে। তবে দোভাষীদের কাছে গল্পটি কিছুটা আলাদা বলে মনে হচ্ছে। এখন অবশ্যই স্ব-হোস্টিং দোভাষী লিখতে পারা সম্ভব। আমি যা বলছি তা নয়। আমি আসলে যা জিজ্ঞাসা করছি তা হ'ল: কোনও স্ব-হোস্টেড দোভাষীকে মূল, প্রথম দোভাষী থেকে আলাদা করে রাখা কি সম্ভব ? আমার অর্থটি বোঝাতে, এই উদাহরণটি বিবেচনা করুন:

আপনি X ভাষায় আপনার প্রথম দোভাষী সংস্করণটি লিখুন , এবং দোভাষী আপনি তৈরি করছেন এমন একটি নতুন ভাষার জন্য যা Y বলে । এক্সিকিউটেবলটি তৈরি করতে আপনি প্রথমে ভাষা এক্স এর সংকলক ব্যবহার করেন । আপনি এখন আপনার নতুন ভাষায় লেখা ফাইল ব্যাখ্যা করতে পারেন ওয়াই অনুবাদক ভাষায় লেখা ব্যবহার এক্স

এখন, আমি যতদূর বুঝতে পেরেছি, এক্স ভাষায় আপনি যে দোভাষী লিখেছিলেন তা "বুটস্ট্র্যাপ" করতে সক্ষম হবার জন্য , আপনার Y এর ভাষাতে অনুবাদককে আবার লিখতে হবে । তবে এখানে ধরা আছে: আপনি যদি ওয়াই ভাষায় পুরো দোভাষীকে আবারও লিখেন, আপনার এখনও X ভাষাতে আপনি লিখেছেন এমন মূল দোভাষী দরকার আছে । ভাষা Y এর দোভাষী চালাতে , আপনাকে উত্স ফাইলগুলি ব্যাখ্যা করতে হবে। কিন্তু ঠিক কি উত্স ফাইল ব্যাখ্যা করতে যাচ্ছে? ঠিক আছে, এটি অবশ্যই কিছুই হতে পারে না, তাই আপনি এখনও প্রথম দোভাষী ব্যবহার করতে বাধ্য হন।

আপনি Y ভাষাতে কতগুলি নতুন অনুবাদক লিখেন তা না কেন , আপনি সর্বদা এক্সে লিখিত প্রথম দোভাষীকে পরবর্তী দোভাষীদের ব্যাখ্যার জন্য ব্যবহার করতে যাবেন । এটি কেবল দোভাষীদের প্রকৃতির কারণে সমস্যা বলে মনে হচ্ছে।

যাইহোক , ফ্লিপ দিকে, দোভাষীদের এই উইকিপিডিয়া নিবন্ধটি আসলে স্ব-হোস্টিং দোভাষীদের নিয়ে কথা বলে । এখানে একটি ছোট অংশ যা প্রাসঙ্গিক:

একজন স্ব-দোভাষী একজন প্রোগ্রামিং ভাষার অনুবাদক যা একটি প্রোগ্রামিং ভাষায় রচিত যা নিজের ব্যাখ্যা করতে পারে; একটি উদাহরণ বেসিক লিখিত একটি বেসিক দোভাষী। স্ব-দোভাষীরা স্ব-হোস্টিং সংকলকগুলির সাথে সম্পর্কিত।

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

এটি ঠিক কীভাবে করা হবে তা এখনও আমার কাছে পরিষ্কার নয়। দেখে মনে হচ্ছে যে যাই হোক না কেন, আপনি সর্বদা হোস্ট ভাষায় লিখিত আপনার দোভাষীর প্রথম সংস্করণটি ব্যবহার করতে বাধ্য হবেন।

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

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

উত্তর:


24

সংক্ষিপ্ত উত্তরটি হ'ল: আপনি আপনার সন্দেহের প্রতি ঠিকই আছেন, আপনার সর্বদা এক্সে লেখা অন্য অনুবাদক বা ওয়াই থেকে অন্য কোনও ভাষায় একটি সংকলক প্রয়োজন যার জন্য আপনার ইতিমধ্যে একটি দোভাষী রয়েছে। দোভাষী অনুবাদকগণ মৃত্যুদন্ড কার্যকর করে, সংকলকরা কেবলমাত্র একটি ভাষা থেকে অন্য ভাষায় অনুবাদ করে, আপনার সিস্টেমে কোনও পর্যায়ে, একজন দোভাষী থাকতে হবে… এমনকি এটি কেবল সিপিইউ।

আপনি Y ভাষাতে কতগুলি নতুন অনুবাদক লিখেন তা না কেন , আপনি সর্বদা এক্সে লিখিত প্রথম দোভাষীকে পরবর্তী দোভাষীদের ব্যাখ্যার জন্য ব্যবহার করতে যাবেন । এটি কেবল দোভাষীদের প্রকৃতির কারণে সমস্যা বলে মনে হচ্ছে।

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

যাইহোক , উল্টানো দিক থেকে, দোভাষীদের উইকিপিডিয়া নিবন্ধটি আসলে স্ব-হোস্টিং দোভাষীদের নিয়ে কথা বলে। এখানে একটি ছোট অংশ যা প্রাসঙ্গিক:

একজন স্ব-দোভাষী একজন প্রোগ্রামিং ভাষার অনুবাদক যা একটি প্রোগ্রামিং ভাষায় রচিত যা নিজের ব্যাখ্যা করতে পারে; একটি উদাহরণ বেসিক লিখিত একটি বেসিক দোভাষী। স্ব-দোভাষীরা স্ব-হোস্টিং সংকলকগুলির সাথে সম্পর্কিত।

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

এটি ঠিক কীভাবে করা হবে তা এখনও আমার কাছে পরিষ্কার নয়। দেখে মনে হচ্ছে যে যাই হোক না কেন, আপনি সর্বদা হোস্ট ভাষায় লিখিত আপনার দোভাষীর প্রথম সংস্করণটি ব্যবহার করতে বাধ্য হবেন।

সঠিক। নোট করুন যে উইকিপিডিয়া নিবন্ধটি স্পষ্টতই বলেছে যে আপনার নিজের ভাষার দ্বিতীয় বাস্তবায়ন প্রয়োজন , এবং এটি প্রথমটি থেকে মুক্তি পেতে পারে না তা বলে।

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

আবার, সঠিক। সেগুলি সত্যই খারাপ উদাহরণ। উদাহরণস্বরূপ, রুবিনিয়াস নিন। হ্যাঁ, এটি সত্য যে রুবিনিয়াসের রুবি অংশটি স্ব-হোস্টেড, তবে এটি একটি সংকলক, কোনও অনুবাদক নয়: এটি রুবি সোর্স কোডটি রুবিনিয়াস বাইটকোডে সংকলন করে। দোভাষী অংশ OTOH স্ব-হোস্টেড নয়: এটি রুবিনিয়াস বাইটকোডকে ব্যাখ্যা করে তবে এটি সি ++ তে লেখা হয়। সুতরাং, Rubinius কলিং একটি "স্ব-হোস্ট করা ব্যাখ্যাকারী" ভুল হল: স্ব-হোস্ট করা অংশ একটি নয় ব্যাখ্যাকারী , এবং অনুবাদক অংশ নয় স্ব-হোস্ট করা

পাইপাই অনুরূপ, তবে আরও বেশি ভুল: এটি পাইথনে এমনকি প্রথম স্থানে লেখা হয় নি, এটি আরপিটাইনে লেখা হয়েছে, এটি একটি ভিন্ন ভাষা। এটি সিন্থেটিকভাবে পাইথনের অনুরূপ, শব্দার্থগতভাবে একটি "বর্ধিত উপসেট", তবে এটি জাভা হিসাবে একই বিমূর্ত স্তরে মোটামুটি একটি স্ট্যাটিকালি-টাইপড ভাষা এবং এর প্রয়োগটি একাধিক ব্যাকেন্ডের সাথে একটি সংকলক যা সি সোর্স কোড, ইসকামাস্ক্রিপ্টে আরপিথনকে সংকলিত করে উত্স কোড, সিআইএল বাইট কোড, জেভিএম বাইটকোড বা পাইথন উত্সকোড।

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

না, নিজে থেকে নয়। আপনাকে হয় মূল দোভাষী রাখতে হবে বা একটি সংকলক লিখতে হবে এবং আপনার স্ব-অনুবাদক সংকলন করতে হবে।

সেখানে হয় যেমন কিছু মেটা-বিজ্ঞপ্তি ভার্চুয়াল মেশিনের, ক্লেইন (লেখা স্বয়ং ) এবং Maxine থেকে (জাভা লেখা)। নোট, তবে, এখানে "মেটা-সার্কুলার" এর সংজ্ঞাটি এখনও অন্যরকম: এই ভিএমগুলি তাদের চালিত ভাষায় লেখা হয় না : ক্লেইন সেল্ফ বাইটকোড চালায় তবে সেল্ফে লেখা হয়, ম্যাক্সাইন জেভিএম বাইটকোড চালায় তবে জাভাতে লেখা হয়। যাইহোক, VM- র স্বয়ং / জাভা সোর্স কোড আসলে স্বয়ং / জেভিএম বাইটকোড করার কম্পাইল করা এবং তারপর VM- র দ্বারা সঞ্চালিত, তাই সময় দ্বারা VM- র মৃত্যুদন্ড কার্যকর করা, এটা হল ভাষাটি এটিকে executes হবে। ইসস।

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

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

তবে, লক্ষ্য করুন যে আমি উপরে "দোভাষী" শব্দের ব্যবহারকে ঘিরে ফেলেছি এবং সর্বদা "চালানো" ব্যবহার করি? ঠিক আছে, এই ভিএমগুলি দোভাষীদের চারপাশে নির্মিত নয়, তারা (জেআইটি) সংকলকগুলির চারপাশে নির্মিত are পরে ম্যাক্সিনে একজন দোভাষা যুক্ত হয়েছিল, তবে আপনার সর্বদা সংকলকটি দরকার: আপনাকে অন্য ভিএম এর শীর্ষে একবারে ভিএম চালাতে হবে (যেমন ম্যাক্সাইনের ক্ষেত্রে ওরাকল হটস্পট), যাতে ভিএম নিজেই সংকলন করতে পারে (জেআইটি)। ম্যাক্সিনের ক্ষেত্রে এটি জেআইটি তার নিজস্ব বুটআপ পর্বটি সংকলন করবে, তারপরে সেই বুটস্ট্র্যাপ ভিএম ইমেজে সংকলিত নেটিভ কোডটি সিরিয়াল করে দেবে এবং সামনে খুব সাধারণ বুটলোডারটি আটকে থাকবে (সি-তে লেখা ভিএমের একমাত্র উপাদান, যদিও এটি কেবল সুবিধার জন্য) , এটি জাভাতেও হতে পারে)। এখন আপনি নিজে এক্সিকিউট করতে ম্যাক্সাইন ব্যবহার করতে পারেন।


Yeesh । আমি কখনই জানতাম না যে স্ব-হোস্টিং দোভাষীদের পৃথিবী এত স্টিকি! যদিও একটি সুন্দর ওভারভিউ দেওয়ার জন্য ধন্যবাদ।
খ্রিস্টান ডিন

1
হাহাহা, আচ্ছা, ধারণাটির চেয়ে বিশ্বকে কেন কম মন দেওয়া উচিত? ;-)
জার্গ ডব্লু মিটাগ

3
আমি অনুমান করি যে একটি সমস্যা হ'ল লোকেরা প্রায়শই জড়িত ভাষাগুলি দিয়ে দ্রুত এবং আলগা খেলেন। উদাহরণস্বরূপ, রুবিনিয়াসকে সাধারণত "রুবি ইন রুবি" বলা হয়, তবে এটি কেবল অর্ধেক গল্প। হ্যাঁ, কঠোরভাবে বলতে গেলে , রুবিনিয়াসে রুবি সংকলকটি রুবিতে লেখা, তবে বাইকোড কার্যকরকারী ভিএম নয়। এবং আরও খারাপ: পাইপইটিকে প্রায়শই "পাইথন ইন পাইথন" বলা হয়, কেবল সেখানে পাইথনের কোনও লাইন নেই except পুরো জিনিসটি আরপিথনে লেখা হয়েছে, যা পাইথন প্রোগ্রামারদের সাথে পরিচিত হওয়ার জন্য ডিজাইন করা হয়েছে, তবে পাইথন নয় । তেমনি স্কেয়াকভিএম: এটি স্মলটাল্কে লেখা নেই, এটি…
জার্গ ডব্লু মিট্টাগ

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

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

7

আপনি উল্লেখ করে সঠিক যে একটি স্ব-হোস্টিং দোভাষীকে নিজেকে চালনার জন্য এখনও একজন দোভাষীর প্রয়োজন, এবং সংকলক হিসাবে একই অর্থে বুটস্ট্র্যাপ করা যায় না।

তবে, একটি স্ব-হোস্টেড ভাষা স্ব-হোস্ট করা দোভাষী হিসাবে একই জিনিস নয়। সংকলক তৈরির চেয়ে দোভাষী তৈরি করা সাধারণত সহজ। সুতরাং, একটি নতুন ভাষা বাস্তবায়নের জন্য, আমরা প্রথমে কোনও সম্পর্কহীন ভাষায় একজন দোভাষীকে প্রয়োগ করতে পারি। তারপরে আমরা আমাদের ভাষার জন্য সংকলক তৈরি করতে সেই দোভাষী ব্যবহার করতে পারি। সংকলকটি ব্যাখ্যা করা হওয়ায় ভাষাটি তখন স্ব-হোস্ট করা হয়। সংকলকটি তখন নিজেই সংকলন করতে পারে এবং তারপরে পুরোপুরি বুটস্ট্র্যাপ হিসাবে বিবেচনা করা যেতে পারে।

এর একটি বিশেষ কেস হ'ল একটি স্ব-হোস্টিং জেআইটি-সংকলন রানটাইম। এটি একটি হোস্ট ভাষায় একজন দোভাষী দিয়ে শুরু করতে পারে, যা জেআইটি-সংকলন বাস্তবায়নের জন্য নতুন ভাষা ব্যবহার করে, এর পরে জেআইটি-সংকলক নিজেই সংকলন করতে পারে। এটি একটি স্ব-হোস্টিং ইন্টারপ্রেটারের মতো অনুভব করে তবে অসীম-দোভাষীদের সমস্যার মুখোমুখি। এই পদ্ধতির ব্যবহার করা হয়, তবে এটি এখনও খুব সাধারণ নয়।

অন্য একটি সম্পর্কিত কৌশল হ'ল একটি এক্সটেনসিবল দোভাষী, যেখানে আমরা অনুবাদ করা ভাষায় এক্সটেনশন তৈরি করতে পারি। উদাহরণস্বরূপ, আমরা ভাষায় নতুন অপকড প্রয়োগ করতে পারি। এটি যতক্ষণ না আমরা বিজ্ঞপ্তি নির্ভরতা এড়ায় ততক্ষণ একটি খালি-হাড়ের দোভাষীকে একটি বৈশিষ্ট্য সমৃদ্ধ অনুবাদক হিসাবে রূপান্তর করতে পারে।

একটি ঘটনা যা প্রকৃতপক্ষে মোটামুটিভাবে দেখা যায় তা হ'ল ভাষার নিজস্ব বিশ্লেষণকে প্রভাবিত করার দক্ষতা, যেমন পার্স-টাইম মূল্যায়িত ম্যাক্রো হিসাবে। যেহেতু ম্যাক্রো ভাষাটি ভাষা প্রক্রিয়াজাতকরণের সমান, তাই এটি ডেডিকেটেড বা সীমাবদ্ধ ম্যাক্রো ভাষার চেয়ে অনেক বেশি বৈশিষ্ট্য সমৃদ্ধ হতে থাকে। তবে, এটি লক্ষণীয় সঠিক যে এক্সটেনশনটি সম্পাদনকারী ভাষাটি এক্সটেনশানের পরে ভাষার চেয়ে কিছুটা আলাদা ভাষা।

যখন "আসল" স্ব-হোস্ট করা দোভাষী ব্যবহার করা হয়, তখন এটি সাধারণত শিক্ষা বা গবেষণার কারণে করা হয়। উদাহরণস্বরূপ, স্কিমের ভিতরে স্কিমের জন্য একজন দোভাষীকে বাস্তবায়ন করা প্রোগ্রামিং ভাষা শেখানোর জন্য দুর্দান্ত উপায় (এসআইসিপি দেখুন)।

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