অ্যালান কে স্মলটকের প্রাথমিক ইতিহাসে "অ্যাসাইনমেন্ট" বলতে কী বোঝায়?


47

আমি স্মার্টটাকের আর্লি হিস্ট্রিটি পড়ছি এবং "অ্যাসাইনমেন্ট" এর কয়েকটি উল্লেখ রয়েছে যা আমাকে এর অর্থ সম্পর্কে আমার ধারণা সম্পর্কে প্রশ্নবিদ্ধ করে:

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

( 1960-66 থেকে - ষাটের দশকের প্রথম দিকের ওওপি এবং অন্যান্য গঠনমূলক ধারণা , বিভাগ I)

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

( "অবজেক্ট-ওরিয়েন্টেড" স্টাইল , বিভাগ IV থেকে)

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

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

...এবং:

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

অস্বচ্ছ, অপরিবর্তনীয় দৃষ্টান্তগুলি এখানে উত্সাহ দেওয়া হচ্ছে তা কি ন্যায়সঙ্গত হবে? বা এটি কি নিখুঁতভাবে সরাসরি রাষ্ট্রের পরিবর্তনগুলি নিরসন করে? উদাহরণস্বরূপ, আমার যদি BankAccountক্লাস থাকে তবে তা ঠিক আছে GetBalance, Depositএবং Withdrawউদাহরণ পদ্ধতি / বার্তা; কেবলমাত্র নিশ্চিত করুন যে কোনও SetBalanceউদাহরণ পদ্ধতি / বার্তা নেই?

উত্তর:


86

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

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

শুভ কামনা,

অ্যালান কে


2
@ অ্যালান-কে: আপনাকে ধন্যবাদ! আমার থিসিসে এটাকে উদ্ধৃত করার অনুমতি পেতে পারি?
অলিভিয়ের দাগেনেইস

2
পার্শ্ব প্রতিক্রিয়া নিয়ন্ত্রণ করা, বা কীভাবে পার্শ্ব প্রতিক্রিয়া নিয়ন্ত্রণ করতে হয় তা অনেক ভাষার জন্য হলি গ্রেইল হিসাবে জেনে রাখা। তবে মনে হয় এটি এখনও কেউ খুঁজে পায় নি। :)
ম্যাথ্ক

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

দুই পর্বের ঘড়ি? এটি কি এক্সেল বা রিএ্যাক্টের মতো "পর্যবেক্ষক" প্যাটার্ন এবং ডেটাফ্লো প্যাটার্নের মতো বাছাই করে যেখানে বস্তুগুলি সীমাবদ্ধতা বজায় রাখতে কোনও পরিবর্তন প্রচার করে।
aoeu256

21

আমি বুঝতে পেরেছি যে অ্যালান ইতিমধ্যে এই প্রশ্নের উত্তর দিয়েছে, এবং তাই এটির উত্তর দেওয়া অর্থহীন বলে মনে হতে পারে। তবে অ্যালান আপনার কাছে থাকা প্রতিটি প্রশ্নের উত্তর দেয়নি did

নির্দিষ্টভাবে:

অস্বচ্ছ, অপরিবর্তনীয় দৃষ্টান্তগুলি এখানে উত্সাহ দেওয়া হচ্ছে তা কি ন্যায়সঙ্গত হবে? বা এটি কি নিখুঁতভাবে সরাসরি রাষ্ট্রের পরিবর্তনগুলি নিরসন করে? উদাহরণস্বরূপ, আমার যদি ব্যাংক অ্যাকাউন্টে ক্লাস থাকে তবে গেটবালেন্স, আমানত এবং প্রত্যাহারের উদাহরণ পদ্ধতি / বার্তা ঠিক আছে; কেবলমাত্র নিশ্চিত করুন যে কোনও সেটবালেন্স উদাহরণ পদ্ধতি / বার্তা নেই?

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

টেলার, ডিপোজিট স্লিপ ইত্যাদির মাধ্যমে সরাসরি এই বিষয়গুলি পুনঃনির্ধারণের মাধ্যমে - সমস্যাটি ডোমেনটি সিস্টেমের সত্তাগুলি দ্বারা প্রদত্ত বার্তাগুলি অনুসারে গঠন করা হয়।

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

এটা জরুরী কেন? ভাল, নিজেকে জিজ্ঞাসা করুন কোনও লেনদেন রেকর্ড করার জন্য কী করা দরকার:

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

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

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


ওওপি-এর সমস্ত-প্রচলিত BankAccountখেলনা উদাহরণটি নিষ্পত্তি করার জন্য ধন্যবাদ ।
akuhn

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