স্মার্টটাকের 'হয়ে:' কী ব্যবহার করে?


12

become:স্মলটক বার্তা, অন্য পরিবর্তনের এক বস্তু ঘটায় এটি সমস্ত রেফারেন্স ক্ষতিগ্রস্ত করেছে।

এই ভাষার বৈশিষ্ট্যটি কী ব্যবহার করে? এটি কি বাস্তব কোডে ব্যবহার হয়? এটা কি শুধু কৌতূহল? এটি ব্যবহার করা কি কোনও ভাল / খারাপ অনুশীলন হিসাবে বিবেচিত হয়?

উত্তর:


11

গিলাড ব্রাচাbecome: কিছুটা দৈর্ঘ্যে আলোচনা করেছেন :

স্মলটালকের অন্যতম অনন্য এবং শক্তিশালী বৈশিষ্ট্য হ'ল স্মলটাক সম্প্রদায়ের বাইরে অন্যতম পরিচিত। এটি একটি সামান্য পদ্ধতি যাকে বলে: বলা হয়।

যা পরিণত হয়: তা হ'ল এটি তার গ্রহণকারী এবং তার যুক্তির পরিচয়গুলি অদলবদল করে। অর্থাৎ, পরে

a be: খ

কল পয়েন্টের পূর্বে একটি হিসাবে চিহ্নিত অবজেক্টের সমস্ত রেফারেন্সগুলি অবজেক্টকে বোঝায় যা বি দ্বারা চিহ্নিত করা হয়েছিল এবং তদ্বিপরীত।

এটি অভ্যন্তরীণ করতে এক মিনিট সময় নিন; আপনি এটিকে তুচ্ছ কিছু হিসাবে ভুল বুঝতে পারেন। এটি দুটি ভেরিয়েবল অদলবদলের বিষয়ে নয় - এটি আক্ষরিক অর্থে একটি বস্তুতে অন্যটি হয়ে ওঠে। আমি এই বৈশিষ্ট্য আছে যে অন্য কোন ভাষা সম্পর্কে সচেতন না। এটি বিপুল শক্তির বৈশিষ্ট্য - এবং বিপদ।

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

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

তারপরে, এটি একটি হয়ে যায়:, ভুশের সমস্ত রেফারেন্সকে নতুন লোড হওয়া বস্তুর রেফারেন্সের সাথে প্রতিস্থাপন করে এবং কলটি পুনরায় চেষ্টা করে।

কিছু অধ্যবসায় ইঞ্জিন কয়েক দশক ধরে এই ধরণের কাজটি করেছে - তবে তারা সাধারণত প্রতিনিধিত্বের নিম্ন স্তরের অ্যাক্সেসের উপর নির্ভর করে। হয়ে উঠুন: সোর্স কোড পর্যায়ে আপনাকে এটি করতে দেয়।

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

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

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

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

আপনি এমনকি নিরাপদ হয়ে প্রকারের ধারণা করতে পারেন:। দুটি উপায়ে পরিণত হওয়া: কেবলমাত্র টাইপ নিরাপদ যদি A এর ধরণ B এর সাথে একই হয় তবে একটি উপায় হয়ে যায়: কেবলমাত্র নতুন অবজেক্টটি পুরানোটির একটি সাব টাইপ হওয়া দরকার be

কোনও বস্তুর টেবিল থাকা আসলে কোনও ভাল জিনিস কিনা তা নিয়ে পুনর্বিবেচনা করার সময় হতে পারে।

কার্যকরভাবে আপনি যা পান তা হ'ল রূপক আকারের পরিমাণের মাধ্যমে অলস লোডিংয়ের একটি রূপ। যেমন ব্রাশা দেখায় এটি খুব কার্যকর হতে পারে তবে এটি বিপজ্জনক কারণ এটি মারাত্মক পারফরম্যান্সের প্রভাব ফেলতে পারে।


আমি becomeআমার প্রোগ্রামটির পারফরম্যান্সের চেয়ে আমার বুদ্ধিমানের প্রভাব নিয়ে বেশি চিন্তিত হব ...
বেনজামিন হডসন

Hardware support could ease the performance penalty.আমি যে জায়গাগুলি এটি শুনেছি তার মধ্যে ছোট্টকল সম্প্রদায়টি সর্বাধিক বিশিষ্ট। আমরা আদর্শের প্রোগ্রামিং প্যারাডিমগুলি সক্ষম করার ক্ষেত্রে হার্ডওয়্যার উন্নতিগুলি কেন "ব্যয় করা উচিত" যখন এর পরিবর্তে কর্মক্ষমতা বৃদ্ধি, বিদ্যুতের ব্যবহার হ্রাস বা সক্ষমতা বাড়ানো হতে পারে।
আলেকজান্ডার - মনিকা পুনরায়

2

এটি খুব বেশি ব্যবহৃত হয় না। আমি ফোরো 5 চিত্রটিতে খোলা আছে, এখানে # বিকোমে 9 জন প্রেরক রয়েছে: 7 টি ইউনিট পরীক্ষায় রয়েছে। এটি কোড জেনারেশনে এবং ফুয়েল সিরিয়ালাইজেশন লাইব্রেরিতে তাদের সামগ্রীতে প্রক্সিগুলি প্রতিস্থাপন করতে ব্যবহৃত হয়।


মজাদার. ইউনিট পরীক্ষাগুলি এটি কীসের জন্য ব্যবহার করে?
dpk

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