আমি এটি প্রোগ্রামিংয়ে (বিশেষত সি ++ ডোমেনে) ব্যবহৃত হয়ে দেখেছি এবং এটি কী তা সম্পর্কে কোনও ধারণা নেই। সম্ভবত এটি একটি নকশার প্যাটার্ন, তবে আমি ভুল হতে পারি। কেউ কি একটি বংশের একটি ভাল উদাহরণ দিতে পারেন?
আমি এটি প্রোগ্রামিংয়ে (বিশেষত সি ++ ডোমেনে) ব্যবহৃত হয়ে দেখেছি এবং এটি কী তা সম্পর্কে কোনও ধারণা নেই। সম্ভবত এটি একটি নকশার প্যাটার্ন, তবে আমি ভুল হতে পারি। কেউ কি একটি বংশের একটি ভাল উদাহরণ দিতে পারেন?
উত্তর:
একটি thunk
সাধারণত কোডের একটি ছোট অংশকে বোঝায় যা একটি ফাংশন হিসাবে ডাকা হয়, কিছু ছোট কাজ করে এবং JUMP
তার কলারে ফিরে না গিয়ে অন্য জায়গায় (সাধারণত একটি ফাংশন) যায় s জেএমপি টার্গেট ধরে নেওয়া একটি সাধারণ ফাংশন, যখন এটি ফিরে আসবে, এটি থাঙ্কের কলারে ফিরে আসবে।
থানস কার্যকরভাবে প্রচুর দরকারী জিনিস কার্যকরভাবে প্রয়োগ করতে ব্যবহৃত হতে পারে
প্রোটোকল অনুবাদ - একটি কলিং কনভেনশন ব্যবহার করে এমন কোড থেকে কল করে যখন কোনও ভিন্ন কলিং কনভেনশন thunk
ব্যবহার করে , একটি যুক্তি যথাযথভাবে অনুবাদ করতে ব্যবহার করা যেতে পারে। এটি কেবলমাত্র যদি রিটার্ন কনভেনশনগুলি সুসংগত হয় তবে কাজ করে তবে প্রায়শই এটি ঘটে
ভার্চুয়াল ফাংশন হ্যান্ডলিং - যখন সি ++ তে বহুগুণ-উত্তরাধিকারসূত্রে বেস শ্রেণীর ভার্চুয়াল ফাংশনটি কল করার সময় this
পয়েন্টারটিকে সঠিক জায়গায় চিহ্নিত করতে এটির একটি ফিক্স-আপ হওয়া দরকার । এ এটি thunk
করতে পারে।
গতিশীল সমাপ্তি - আপনি যখন একটি গতিশীল ক্লোজার তৈরি করেন, ক্লোজার ফাংশনটি যেখানে তৈরি হয়েছিল সেই প্রসঙ্গে পৌঁছাতে সক্ষম হওয়া প্রয়োজন। একটি ছোট thunk
তৈরি করা যেতে পারে (সাধারণত স্ট্যাকের উপরে) যা কিছু নিবন্ধভুক্ত (গুলি) এর প্রাসঙ্গিক তথ্য সেট করে এবং তারপরে কোডটির একটি স্ট্যাটিক টুকরোয় যায় যা বন্ধের ফাংশনটি কার্যকর করে। এখানে থঙ্কটি কার্যকরভাবে কল সাইট দ্বারা সরবরাহ করা হয়নি এমন ফাংশনে এক বা একাধিক লুকানো অতিরিক্ত যুক্তি সরবরাহ করে।
this
), ডিফল্ট / অনুলিপি কনস্ট্রাক্টর ক্লোজার্স ( ডিফল্ট প্যারামিটার সহ ব্যবহারকারী-সরবরাহকৃত সিআরটি সংহতকরণের জন্য, প্রধানত ডিএলএল রফতানি বা অ্যারে নির্মাণের জন্য), vcall
থুনস (নিশ্চিত পয়েন্টার-থেকে নিশ্চিত করতে ) -মেম্বার-ফাংশনগুলি ভার্চুয়াল ফাংশনগুলির সাথে যথাযথভাবে কাজ করে), vtordisp
থুনস (ভার্চুয়াল ঘাঁটিগুলি থেকে ভার্চুয়াল ফাংশনগুলির উত্তরাধিকারী ও ওভাররাইড করা ক্লাসগুলির জন্য, এবং ব্যবহারকারী দ্বারা সরবরাহিত কর্টর এবং / অথবা ড্টর রয়েছে), নেটিভ র্যাপারস (পরিচালিত সি ++ / সি এলআই কল করতে
UDT returning
" নামে পরিচিত এমন কিছু (যা অপারেটরদের দ্বারা প্রত্যাবর্তিত ব্যবহারকারী-সংজ্ঞায়িত প্রকারগুলি সামঞ্জস্য করার জন্য একটি থানক হিসাবে উপস্থিত বলে মনে হয়, তবে কীভাবে এটি উত্পন্ন করা যায় তা সম্পর্কে আমি নিশ্চিত নই; আমি মনে করি এটি অবমানিত হয়েছে)। অন্যরাও সম্ভবত আছেন। আমার ধারণা আপনি কখনও মাইক্রোসফ্ট বলতে পারবেন thunk
না; গর্বিত হবে।
থংক শব্দটির কম্পিউটার বিজ্ঞানে কমপক্ষে তিনটি সম্পর্কিত অর্থ রয়েছে। একটি "থঙ্ক" হতে পারে:
আমি সাধারণত এটি তৃতীয় প্রসঙ্গে ব্যবহার করতে দেখেছি।
থঙ্ক শব্দটি মূলত তাদের আলগোল 60 সংকলকটিতে রয়্যাল রাডার প্রতিষ্ঠার দ্বারা পাস-বাই-নাম প্রয়োগের ব্যবস্থার দ্বারা ব্যবহৃত ব্যবস্থাকে বোঝায় । একটি স্পষ্টত স্থির অবজেক্টের উল্লেখ করার সময় সাধারণভাবে এটি গতিশীল আচরণকে প্ররোচিত করার কোনও উপায়কে বোঝায়। এই শব্দটি আবিষ্কার করেছিলেন ব্রায়ান উইচম্যান, যিনি পাস-বাই-নাম ব্যাখ্যা করতে বললেন, "আচ্ছা আপনি স্মৃতি থেকে মানটি লোড করতে যান এবং হঠাৎ - থাঙ্ক - সেখানে আপনি একটি অভিব্যক্তি মূল্যায়ন করছেন।"
চিন্তাগুলি হার্ডওয়ারে রাখা হয়েছে (সিএফ। কেডিএফ 9, বুড়োস মেইনফ্রেমস)। এগুলি সফ্টওয়্যারগুলিতে প্রয়োগ করার বিভিন্ন উপায় রয়েছে, সমস্ত খুব মেশিন, ভাষা এবং নির্দিষ্ট সংকলক।
এই শব্দটি পাস-বাই-নাম ছাড়িয়ে সাধারণীকরণ করা হয়েছে, দৃশ্যত বা নামমাত্র স্থির ডেটা রেফারেন্সটি গতিশীল আচরণকে প্ররোচিত করে এমন কোনও পরিস্থিতিতে অন্তর্ভুক্ত করার জন্য। সম্পর্কিত পদগুলির মধ্যে "ট্রাম্পোলিন" এবং "ভবিষ্যত" অন্তর্ভুক্ত রয়েছে।
একাধিক বা ভার্চুয়াল উত্তরাধিকারের উপস্থিতিতে ভার্চুয়াল ফাংশন কলগুলির অপ্টিমাইজেশান হিসাবে "থঙ্কস" নামক ফাংশন তৈরি করে যেমন অবজেক্ট-ওরিয়েন্টেড ভাষার জন্য কিছু সংকলক।
থেকে নেওয়া: http://en.wikedia.org/wiki/Thunk#Thunks_in_object- ওরিয়েন্টেড_প্রগ্রামিং
ব্যবহারে যথেষ্ট পার্থক্য রয়েছে। প্রায় সর্বজনীনভাবে, একটি থাঙ্ক একটি ফাংশন যা (কমপক্ষে ধারণাগতভাবে) অস্বাভাবিকভাবে ছোট এবং সাধারণ। এটি সাধারণত কোনও ধরণের অ্যাডাপ্টার যা আপনাকে কোনও কিছু বা অন্য (কিছু ডেটা, অন্য কোনও ক্রিয়াকলাপ ইত্যাদির) জন্য সঠিক ইন্টারফেস দেয় তবে কমপক্ষে অন্য কিছু করার মতো দেখা যায়।
এটি প্রায়শই সিনট্যাকটিক চিনির একধরণের মতো (কমপক্ষে সাধারণত ব্যবহৃত হিসাবে) সিনট্যাকটিক চিনির জিনিসগুলি মানব পাঠক যেভাবে দেখতে চায় তার দৃষ্টি আকর্ষণ করবে এবং সংকলকটি যেভাবে চায় সেভাবে কিছু তৈরি করা উচিত এটা দেখ.
এই প্রশ্নটি ইতিমধ্যে এসওকে জিজ্ঞাসা করা হয়েছে, দেখুন:
স্কিম বা সাধারণভাবে ব্যবহৃত একটি 'থঙ্ক' কী?
আমি যা বলতে পারি তা থেকে, এটি ল্যাম্বডা স্টেটমেন্টের অনুরূপ, যেখানে আপনি এটির মূল্যায়ন না করা পর্যন্ত আপনি মানটি ফিরিয়ে দিতে চান না; অথবা এটি কোনও প্রপার্টি গেটারের সাথেও তুলনা করা যেতে পারে যা কোনও ভেরিয়েবলের মতোই ইন্টারফেস ফর্মটি উপস্থিত হওয়ার সাথে সাথে মান ফেরত দেওয়ার জন্য ডিজাইন দ্বারা কিছু কোড কার্যকর করে তবে এর সাথে বহুবর্ষীয় আচরণও থাকে যা উত্তরাধিকারসূত্রে বা অদৃশ্য হয়ে যায় কিনা সংকলন-সময় বা পরিবেশগত বৈশিষ্ট্যের উপর ভিত্তি করে রানটাইমে কোনও মান মূল্যায়ন ও ফিরিয়ে আনতে পারে এমন ফাংশন পয়েন্টারটি অদলবদল করে।
আমার কাছে termতিহাসিকভাবে পরিচিত হিসাবে এটির ডি-ফ্যাক্টোর ব্যবহারের সাথে মেলে না এই শব্দটির কোনও সাধারণ 'কম্পিউটার বিজ্ঞান' সংজ্ঞা খুঁজে পেয়ে আমি ব্যথিত হয়েছিলাম। প্রথম বাস্তব জীবনের মুখোমুখি আমি স্মরণ করতে পারি যে এটিকে আসলে ওএস / ২ দিন এবং 16-32 বিট ট্রানজিশনে বলা হয়েছিল। এটি প্রদর্শিত হচ্ছে "ক্ষুধা" আজকের প্রয়োগে বিড়ম্বনার মতো।
আমার মোটামুটি সাধারণ বোধগম্যতা হ'ল থাঙ্ক একটি জড় রুটিন যা উল্লিখিত historicalতিহাসিক ক্ষেত্রে যেমন সিস্টেমের মধ্যে কিছু মৌলিক সীমানা জুড়ে কিছুই বা রুট করে না।
সুতরাং ইন্দ্রিয়টি এক পরিবেশ থেকে অন্য পরিবেশে (রূপকভাবে / একটি উপমা হিসাবে) একটি "থঙ্ক" শব্দ হিসাবে ফেলে দেওয়ার সিনডেসিয়ার মতো।
আমি এটি সন্ধান করতে যাচ্ছি, কিন্তু আমি ভেবেছিলাম যে উত্তরাধিকার 16-বিট কোড চালানোর জন্য 32-বিট প্রসেসরের দ্বারা নিযুক্ত প্রক্রিয়াটি হ'ল থিংকিং ।
আপনি কীভাবে দ্রুত কথা বলেন এবং বোবা মানুষের সাথে কথা বলার সময় আপনি কী শব্দ ব্যবহার করেন তা কীভাবে সীমাবদ্ধ করতে হবে তার জন্য আমি এটিকে উপমা হিসাবে ব্যবহার করতাম।
হ্যাঁ, এটি উইকিপিডিয়া লিঙ্কে রয়েছে (অংশটি 32-বিট, আমার স্নাতকের নয় )।
https://en.wikipedia.org/wiki/Thunk
আন্তঃব্যবহারযোগ্যতার অংশগুলির বেশিরভাগ সাহিত্য এমএস-ডস, ওএস / ২, [8] উইন্ডোজ [9] [10] এবং .NET সহ বিভিন্ন উইন্টেল প্ল্যাটফর্মের সাথে সম্পর্কিত এবং 16-বিট থেকে 32-বিট মেমরি সম্বোধনে রূপান্তরিত হয়েছে । গ্রাহকরা যেমন এক প্ল্যাটফর্ম থেকে অন্য প্ল্যাটফর্মে স্থানান্তরিত হয়েছে, পুরানো প্ল্যাটফর্মগুলির জন্য লিখিত লিগ্যাসি সফ্টওয়্যার সমর্থন করার জন্য থঙ্কগুলি প্রয়োজনীয় ছিল।
(আমার দ্বারা জোর দেওয়া)
আমি জানি "থঙ্ক" এর প্রথম দিকের ব্যবহারটি ফাংশন কলগুলিতে অ্যালগল 60 পাশ-নাম যুক্তি মূল্যায়নের প্রসঙ্গে 50 এর দশকের শেষ দিক থেকে। অ্যালগল মূলত প্রোগ্রামিং ভাষা নয়, একটি স্পেসিফিকেশন ভাষা ছিল এবং কম্পিউটারে পাস-বাই-নাম কীভাবে প্রয়োগ করা যেতে পারে সে সম্পর্কে কিছুটা প্রশ্ন ছিল।
সমাধানটি ছিল মূলত ল্যাম্বডা কী ছিল তা প্রবেশের পয়েন্টটি পাস করা। কলি যখন প্যারামিটারটি মূল্যায়ন করল, তখন নিয়ন্ত্রণটি পড়ে গেল - থ্যাঙ্ক! - কলারের প্রসঙ্গে যেখানে ল্যাম্বডা মূল্যায়ন করা হয়েছিল এবং এর ফলাফলটি কলিতে প্যারামিটারের মান হয়ে উঠেছে।
বুড়ো মেশিনের মতো ট্যাগযুক্ত হার্ডওয়্যারগুলিতে মূল্যায়ন অন্তর্নিহিত ছিল: একটি আর্গুমেন্ট সাধারণ পাস-বাই-ভ্যালু হিসাবে ডেটা মান হিসাবে বা পাস-নেমে থ্যাঙ্ক দিয়ে আর্গুমেন্ট মেটাডাটাতে বিভিন্ন ট্যাগ সহ পাস করা যেতে পারে an । একটি লোড অপারেশন হার্ডওয়্যার ট্যাগটি পরীক্ষা করে এবং হয় সাধারণ মানটি দেয় বা স্বয়ংক্রিয়ভাবে ল্যাম্বডা থাঙ্কটি শুরু করে।
প্রতি কাইলি সিম্পসন এর সংজ্ঞা, একটি thunk বিমূর্ত উপাদান একটি উপায় সময় অ্যাসিঙ্ক্রোনাস কোডের বাইরে।