কম্পিউটার সায়েন্সে আক্রমণকারীরা কেন গুরুত্বপূর্ণ


16

আমি আক্ষরিক অর্থে 'আক্রমণকারী' বুঝতে পারি। আমি কোড টাইপ করার সময় আমি সেগুলিও চিনতে পারি। তবে আমি মনে করি না কম্পিউটার বিজ্ঞানের প্রসঙ্গে আমি এই শব্দটির গুরুত্ব বুঝতে পেরেছি।

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


আমি দৃser়তার সাথে অনেকগুলি ব্যবহার করি ... বাগের সম্ভাবনা হ্রাস করার জন্য নির্ভুলতার গ্যারান্টি দিতে এত বেশি না।
চাকরী

উত্তর:


7

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

সুতরাং প্রোগ্রামিংয়ের পুরো পয়েন্টটি হ'ল যা আলাদা হয় না তা চিহ্নিত করা - এটি মূলত আপনার প্রোগ্রাম।

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


27

আক্রমণকারী ধারণাটি 'পার্শ্ব প্রতিক্রিয়া' এর সাথে দৃ .়ভাবে যুক্ত। আমি বিশ্বাস করি এটি সফ্টওয়্যার ডিজাইনের জন্য বার্ট্রান্ড মেয়ারের 'ডিজাইন বাই কন্ট্রাক্ট (ডিবিসি)' পদ্ধতির দ্বারা প্রচারিত হয়েছিল।

ডিবিসি 3 টি গুরুত্বপূর্ণ ধারণা, পূর্বশর্ত, পোস্টকন্ডিশন, আক্রমণকারী সহ বিমূর্ত ডেটা প্রকারগুলি (শ্রেণির ব্যাক হোন) সমৃদ্ধ করে । প্রক্রিয়াগুলি উল্লেখ করার সময় এটি সহজে ব্যাখ্যা করা হয়, সুতরাং আমি এটির সাথে উল্লেখ করে ব্যাখ্যা করার চেষ্টা করব:

  1. একটি পূর্বশর্ত জন্য একটি পদ্ধতি যাতে প্রসিডিউর কল করার জন্য সম্মান করতে হবে শর্ত ইনপুট ডেটা প্রতিনিধিত্ব করে। এই পূর্বশর্তটি অবশ্যই সেই নির্দিষ্ট পদ্ধতির ক্লায়েন্টের দ্বারা সম্মানিত এবং প্রয়োগ করা উচিত। পদ্ধতি ডিজাইনার তবে সেই ক্লায়েন্টদের কাছ থেকে রক্ষা পেতে পারেন যারা প্রক্রিয়াটির প্রথম লাইন হিসাবে শর্তটি জোর দিয়ে পূর্ব শর্তটিকে সম্মান করে না। উদাহরণস্বরূপ কোনও পদ্ধতি থাকা double divide(double dividend, double divisor)পূর্বশর্ত হতে পারে divisor != 0

  2. প্রক্রিয়া ফিরে আসার পরে একটি পোস্টকন্ডিশন আউটপুট ডেটাতে শর্তের প্রতিনিধিত্ব করে; পূর্ববর্তী শর্তটি সম্মানিত করা এই পোস্টকন্ডিশনকে সম্মান করা পুরোপুরি পদ্ধতি ডিজাইনারের কাজ; ফিরে আসার আগে একটি প্রতিরক্ষা প্রোগ্রামিং শৈলীতে, পোস্টকন্ডিশনটি জোর দেওয়া যায়।

  3. একটি পরিবর্তিত একটি উভয় একটি পূর্বশর্ত এবং postcondition হিসাবে গণ্য করা যাবে, কিন্তু পূর্বশর্ত এবং উপরোক্ত ধারণা থেকে postcondition জন্য বিভিন্ন বোঝার সঙ্গে। একটি আক্রমণকারী মূলত বলে যে পদ্ধতিটি বলার আগে যদি ইনপুটটির একটি নির্দিষ্ট শর্ত পূরণ হয় তবে প্রক্রিয়াটি বলার পরে সেই নির্দিষ্ট শর্তটি বৈধ হয়। উদাহরণস্বরূপ, কোনও পদ্ধতির জন্য একটি বৈধ আগ্রাসন boolean search(int term, int array[])বলতে পারে যে arrayকল করার আগে কলের আগের অবস্থা একই is

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


2

আক্রমণকারী হ'ল একটি যৌক্তিক সম্পত্তি যা কিছু অপারেশন দ্বারা চালিত হয় pre

  • লুপগুলি সম্পর্কে যুক্তিযুক্তদের আপনার প্রয়োজন arian যেহেতু আপনি আগেই জানেন না যে সেখানে কতগুলি পুনরাবৃত্তি ঘটবে (বা আপনার কোনও লুপের প্রয়োজন হবে না), তাই প্রতিটি পুনরাবৃত্তিকে অবশ্যই আক্রমণকারীটিকে সংরক্ষণ করতে হবে, যাতে শেষে আপনি লুপ সম্পর্কে কিছু দরকারী সম্পত্তি প্রমাণ করতে পারেন।

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


0

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


0

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

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