খাঁটি ভার্চুয়াল বা বিমূর্ত, একটি নামে কি?


15

স্ট্যাক ওভারফ্লোতে ভার্চুয়াল ফাংশন সম্পর্কে একটি প্রশ্ন আলোচনা করার সময় , আমি খাঁটি (বিমূর্ত) এবং খাঁটি-অ-খাঁটি ভার্চুয়াল ফাংশনগুলির জন্য কোনও অফিসিয়াল নামকরণ ছিল কিনা তা নিয়ে আমি ভাবলাম।

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

আমার উত্তরের জন স্কিটির জবাবটি উদ্ধৃত করার জন্য যে খাঁটি এবং অ-খাঁটি সাধারণ শব্দটি ব্যবহৃত হয়:

@ স্টিভেন: হুম ... সম্ভবত, তবে আমি কেবল এটি আগে কখনও সি ++ এর প্রসঙ্গে দেখেছি। আমি সন্দেহ করি যে যে কেউ তাদের সম্পর্কে কথা বলার সম্ভবত একটি সি ++ ব্যাকগ্রাউন্ড রয়েছে :)

শর্তগুলি কি সি ++ থেকে উদ্ভূত হয়েছিল, বা সেগুলি প্রথম ভাষাতে সংজ্ঞায়িত বা প্রয়োগ করা হয়েছিল এবং সেগুলি কি 'অফিসিয়াল' বৈজ্ঞানিক পদ?

হালনাগাদ:

ফ্র্যাঙ্ক শায়ারার সাহায্যে সিমুলা 67 কমন বেস ল্যাঙ্গুয়েজ (1970) এর বর্ণনার একটি লিঙ্ক সরবরাহ করেছিলেন । এই ভাষাটি ওও কীওয়ার্ডগুলি শ্রেণি , বস্তু এবং আনুষ্ঠানিক ধারণা হিসাবে ভার্চুয়াল হিসাবে প্রবর্তনকারী প্রথম ভাষা বলে মনে হয় । এটি খাঁটি / অ-খাঁটি বা বিমূর্তের সংজ্ঞা দেয় না , তবে এটি ধারণাগুলি সমর্থন করে

কে তাদের সংজ্ঞা দিয়েছে?


1
পেতে পারে এই আকর্ষণীয় ... objectmentor.com/resources/articles/abcpvf.pdf
হারুন McIver

2
ভার্চুয়াল ফাংশন, ভার্চুয়াল উত্তরাধিকার, ভার্চুয়াল টেবিল - এগুলিকে কী "ভার্চুয়াল" করে তোলে তার কোনও সত্য ব্যাখ্যা নেই। আমি নিয়ম জানি, কিন্তু কেন এই শব্দ? সর্বোপরি, একটি "ভার্চুয়াল" ফাংশন অন্য যে কোনও ফাংশনের মতোই বাস্তব - এটির জন্য কেবল দেরি-বাঁধাইয়ের প্রয়োজন, এটি সমস্ত। সম্ভবত স্ট্রস্ট্রপ শব্দটি সত্যিই পছন্দ করেছে। আমি ভেবেছিলাম ক্লাসগুলি বিমূর্ত (বিশুদ্ধ নয়), তবে পদ্ধতিগুলি বিশুদ্ধ হতে পারে (তবে বিমূর্ত নয়)। যদিও এটি সম্ভব আমি তৈরি করেছি made
স্টিভ 314

3
@ Steve314, এটা স্ট্রোভস্ট্রুপের ছিল না - দৃশ্যত তারা ইতিমধ্যেই এই মত বলা হয় Simula
পিয়েটার টার্ক

উত্তর:


9

নাইগার্ড এবং ডাহেল সিমুলা 67 কমন বেস ল্যাঙ্গুয়েজে প্রথম শব্দটি ব্যবহার করেছিলেন । উদাহরণস্বরূপ বিভাগ 2.1 দেখুন এবং বিভাগ 2.2.3 দেখুন। (যতদূর আমি কমপক্ষে বলতে পারি But তবে হে, ওওপি-র সম্পর্কিত হিসাবে এটি সম্ভবত এই শব্দটির প্রথম ব্যবহার))


3
সিমুলা প্রথম ওও ভাষা ছিল, আফাইক, সুতরাং এটিতে ওওপি প্রসঙ্গে প্রচুর পদগুলির প্রথম ব্যবহার রয়েছে। এটি স্ট্রোস্ট্রুপকে ব্যাপকভাবে প্রভাবিত করেছিল, যারা প্রাথমিকভাবে কেবল সি দক্ষতা এবং সিমুলা ক্লাসগুলির সাথে একটি ভাষা চেয়েছিলেন।
ডেভিড থর্নলি

আমি এই কাগজটি দিয়ে স্কিমিং করছি, এবং হ্যাঁ, এটি প্রথম বলে মনে হচ্ছে তারা 'ক্লাস' এবং 'অবজেক্ট' প্রবর্তন করছে।
স্টিভেন জিউরিস

2
সুতরাং, কিছু সময় নষ্ট করার পরে সিমুলা 67 সংজ্ঞাটি পড়ুন। সিমুলা 1970 67 সালে 'শ্রেণি', 'অবজেক্ট', 'লুকানো', 'মূল্য অনুসারে কল', ১৯ 1970০ সালে 'রেফারেন্স দ্বারা কল' সহ সজ্জিত।
স্টিভেন জিউরিস

5
"নষ্ট" ক্ষেত্রের একটি সেমিনাল কাগজপত্র পড়ার বর্ণনা দেওয়ার জন্য একটি বিজোড় শব্দের মতো বলে মনে হচ্ছে।
ফ্র্যাঙ্ক শিয়েরার

7

তাই ... আমি একটু গবেষণা করছি। এরপরে যাঁরা আগ্রহী তাদের একটি সামান্য ইতিহাসের পাঠ। :) আপনি যদি কেবল উত্তরটিতে আগ্রহী হন তবে নীচে উপসংহারে যান।

1967 :

সিমুলা 67 , প্রথম অবজেক্ট-ভিত্তিক প্রোগ্রামিং ল্যাঙ্গুয়েজ কীওয়ার্ডকে শ্রেণি , বস্তু , রেফারেন্স দ্বারা কল , মান দ্বারা কল এবং ভার্চুয়াল হিসাবে সংজ্ঞায়িত করে ।

Simula এর উত্তরাধিকার সিস্টেম মূলত একটি আলাদা নাম, দ্বারা পরিচিত ছিল সংযুক্তকরণের (এবং পরে হিসাবে পরিচিত prefixing ,) যে supertypes কোড কপি করা হয়েছে এবং উপশাখাকে এর কোড দিয়ে 'ঘনিভূত' উল্লেখ। পরে উত্তরাধিকার ব্যবস্থার আরও একটি রূপ উদ্ভূত হয়, প্রতিনিধি দল , যেখানে কলগুলি সঠিক ধরণের রেফারেন্স দ্বারা প্রেরণ করা হয়।

ভার্চুয়াল সম্ভবত প্রক্রিয়া বোঝায় যা ভার্চুয়াল পদ্ধতির টেবিল ব্যবহার করে সঠিক প্রয়োগের জন্য কোনও কল প্রেরণের জন্য সঞ্চালন করা দরকার । এটি একটি স্থির / কংক্রিট প্রয়োগের তুলনায় ভার্চুয়াল।

1971 :

স্টিলওয়াইস রিফাইনমেন্ট হিসাবে সংজ্ঞায়িত একটি ধারণা সম্পর্কে লিখেছেন নিক্লাস রাইথ । এটি মূলত ব্যাখ্যা করে যে কীভাবে কোনও প্রোগ্রামকে আংশিক সমাধানগুলিতে বিভক্ত করা যায় যার উপর বাড়ানো যেতে পারে।

1974 :

এটি আমার প্রথমতম কাগজ যা বারবারা লিসকভের দ্বারা বিমূর্ত তথ্য প্রকারের শব্দটি মুদ্রায় পাওয়া যায় ।

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

এই কাগজটি একটি অপারেশন ক্লাস্টারও সংজ্ঞায়িত করে যা মনে হয় যে আমরা এখন একটি ইন্টারফেস হিসাবে কী জানি তা নির্দিষ্ট করে ।

আকর্ষণীয় বৈজ্ঞানিক পরিভাষা (১৯৯ from সালের কাগজ):

উত্তরাধিকার : আরও নিম্ন-স্তরের প্রক্রিয়া যার দ্বারা অবজেক্ট বা শ্রেণিগুলি আচরণ বা ডেটা ভাগ করতে পারে।

সাব টাইপিং : ধারণাগত বিশেষত্ব প্রকাশ করে। উত্তরাধিকারের একটি নির্দিষ্ট ফর্ম, একে ইন্টারফেস উত্তরাধিকারও বলা হয় ।

বিমূর্তন নীতি : উদ্বেগের সাথে ঘটনার আরও ভাল ধারণা পাওয়ার জন্য অ্যাবস্ট্রাকশনগুলির ক্রমক্রমের ক্রমক্রমিক র‌্যাঙ্কিংয়ে অ্যাপ্লিকেশন ডোমেন সম্পর্কে আমাদের জ্ঞানকে সংগঠিত করার প্রক্রিয়া।

আংশিকভাবে প্রয়োগ করা বিমূর্ততা : বিমূর্ততাগুলির সংজ্ঞাগুলি উদ্দেশ্যমূলকভাবে অসম্পূর্ণ রেখে গেছে।

বিমূর্ত শ্রেণি : অবজেক্ট-ওরিয়েন্টেড সিস্টেমগুলিতে আংশিকভাবে প্রয়োগ করা শ্রেণীর জন্য নির্দিষ্ট শব্দ ।

সীমাবদ্ধ উত্তরাধিকার : ক্রিয়াকলাপগুলিকে সাবক্লাসগুলিতে পুনরায় সংজ্ঞায়িত (বা এমনকি অপসারণ) করার অনুমতি দেয়।

কঠোর উত্তরাধিকার : আচরণগতভাবে সামঞ্জস্যপূর্ণ উত্তরাধিকার।

উপসংহার :

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

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

উইকিপিডিয়া এন্ট্রি সামঞ্জস্য করতে আগ্রহী কেউ ? :)


বারবারা লিসকভের আগে, ডিজকস্ট্রার "স্টেপ-উইজ প্রোগ্রাম কমপোজিশন" তেও কিছু বলার ছিল যা প্রাসঙ্গিক সংস্থানও হতে পারে।
স্টিভেন জিউরিস

4

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

ভার্চুয়াল ফাংশনগুলিকে ভার্চুয়াল বলা হয় তার কারণটি আমি অনুমান করছি যে সংকলনের সময় কোন আসল ফাংশনটি ডাকা হবে তা জানা যায়নি। এক অর্থে, সংকলনের সময় একটি ভার্চুয়াল ফাংশন কল "বিদ্যমান নেই"।

খাঁটি ভার্চুয়াল ফাংশন সহ একটি শ্রেণীর জন্য "বিমূর্ত" শব্দটি ব্যবহৃত হওয়ার কারণটি আপনার কাছে এই শ্রেণীর কোনও অবজেক্ট থাকতে পারে না বলে আমি অনুমানও করছি। এক অর্থে এটি একটি বিমূর্ত ধারণা যা বস্তুর কংক্রিট জগৎ থেকে অনেক দূরে সরিয়ে ফেলা হয়েছে।

সম্পাদনা করুন: অন্যান্য ভাষা।

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

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


1
+1: এছাড়াও, "বিমূর্ত" অনেকগুলি ভাষার ক্ষেত্রে প্রযোজ্য। "ভার্চুয়াল" না।
এস। লট

@ এস.লট: পুরো প্রশ্নটি ভার্চুয়াল একটি সাধারণ শব্দ কিনা। আমি এখনই বলতে পারি, ভার্চুয়ালটি অনেকগুলি ভাষার ক্ষেত্রে প্রযোজ্য, এবং প্রথমটি সিমুলা তৈরি করেছিলেন ined খাঁটি / অ-খাঁটি এবং বিমূর্ত সম্পর্কে প্রশ্ন রয়ে গেছে।
স্টিভেন জিউরিস

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

এটি অবজেক্ট পাস্কল / ডেল্ফির ক্ষেত্রে প্রযোজ্য। ডেলফির একটি অতিরিক্ত ধারণা রয়েছে - dynamic- যা এক ধরণের ভার্চুয়াল পদ্ধতি যা সময়ের জন্য স্থানের ব্যবসা করে: এগুলি কম স্থান নেয়, এবং virtualপদ্ধতিগুলির চেয়ে কার্যকর করতে ধীর হয় ।
ফ্র্যাঙ্ক শিয়েরার

2
@ স্টিভেন জিউরিস: "ডিফল্ট দ্বারা ভার্চুয়াল" বিমূর্ত ফাংশনগুলি বর্ণনা করতে "ভার্চুয়াল" ব্যবহার করার মতো জিনিস নয়। আমি মনে করি যে ভাবেন যেগুলি "সমস্ত ফাংশন ভার্চুয়াল" বলছে তারা অন্য ভাষায় সি ++ ধারণা প্রয়োগ করছে। এবং আমি মনে করি তারা এটি ভুলভাবে করছে doing যেহেতু পাইথনের সমস্ত পদ্ধতির ফাংশন ভার্চুয়াল, তাই পাইথনে সি ++ ধারণাটি প্রয়োগ করার জন্য স্ট্যাক ওভারফ্লোয়ের মতো জায়গাগুলি বাদে বিষয়টিকে কখনই "ভার্চুয়াল" ব্যবহার করে উল্লেখ করা হয় না। আমি মনে করি সেই ক্ষেত্রে ভার্চুয়ালটি ভুলভাবে প্রয়োগ করা হয়েছে, যেহেতু পাইথন ভাষার ডক শব্দটি ব্যবহার করে না।
এস .লট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.