মেমরি থেকে পড়া কেন কোনও পার্শ্ব-প্রতিক্রিয়া নয় তবে একটি ফাইল থেকে পড়া?


16

প্রক্রিয়া মেমরি থেকে পড়াটি নির্ভুল অপারেশনকে কী করে? মনে করুন আমি বিশ্বব্যাপী স্মৃতিতে 100 টি পূর্ণসংখ্যার একটি অ্যারে তৈরি করেছি এবং তারপরে এই অ্যারের 42 তম উপাদানটি নিয়েছি। এটি কোনও পার্শ্ব প্রতিক্রিয়া নয়, তাই না? তাহলে কেন একটি ফাইল থেকে 100 ইন্টিজারের একই অ্যারেটি পড়ছে পার্শ্ব-প্রতিক্রিয়া?


5
বিবেচনা সম্পাদন করা ব্যাখ্যা করতে কি আপনি কি মনে করেন একটি ফাইল থেকে 100 পূর্ণসংখ্যার অ্যারের পড়া একটি পার্শ্ব-প্রতিক্রিয়া, পাশাপাশি কি "বিশুদ্ধ অপারেশন" হিসাবে তোলে ing আপনি এর অর্থ
মশা

3
@gnat কারণ এটি I / O এবং I / O একটি পার্শ্ব প্রতিক্রিয়া
ZhekaKozlov

3
আই / ও পার্শ্ব-প্রতিক্রিয়া বলে আপনি কী ভাবছেন? পাঠকদের জিজ্ঞাসা করার জন্য এটি ব্যাখ্যা করতে আইং] বিবেচনা করুন ing আরও সাধারণ নোটে, আপনার গবেষণা ভাগ করে নেওয়া প্রত্যেককে সহায়তা করে । আপনি কী চেষ্টা করেছেন এবং কেন এটি আপনার প্রয়োজনীয়তা মেটেনি তা আমাদের বলুন। এটি প্রমাণ করে যে আপনি নিজেকে সাহায্য করার চেষ্টা করার জন্য সময় নিয়েছেন, এটি আমাদের সুস্পষ্ট উত্তরের পুনরাবৃত্তি থেকে বাঁচায় এবং সর্বোপরি এটি আপনাকে আরও নির্দিষ্ট এবং প্রাসঙ্গিক উত্তর পেতে সহায়তা করে get এছাড়াও কীভাবে জিজ্ঞাসা করবেন দেখুন
gnat

22
@gnat I / O এর পার্শ্ব প্রতিক্রিয়া, পিরিয়ড। এটি সর্বোত্তম উদাহরণগুলির মধ্যে একটি। আমরা উইকিপিডিয়া নই, লোকজ জ্ঞানের জন্য আমাদের উদ্ধৃতি দেওয়ার দরকার নেই। আপনি যদি প্রশ্নটি সম্পর্কে কিছু উন্নতি করতে পারেন বলে মনে করেন তবে এই খড়ের মানুষটির মধ্য দিয়ে যাবার চেয়ে একেবারে বলুন।

7
'ও' একটি পার্শ্ব প্রতিক্রিয়া। 'আমি' আপনি যদি 'আই' থেকে যা করছেন তার স্থিতি পরিবর্তন করে তবে 'আমি' কেবলমাত্র একটি পার্শ্ব প্রতিক্রিয়া। যা নির্দিষ্ট মেমরি ম্যাপ করা I / O জিনিসগুলির ক্ষেত্রে সত্য তবে সাধারণ ফাইলের ক্ষেত্রে এটি হওয়ার সম্ভাবনা কম।
টম ট্যানার

উত্তর:


27

আপনার অ্যাক্সেস থাকা স্মৃতি যদি পরিবর্তন করতে পারে তবে এটি অবশ্যই একটি পার্শ্ব প্রতিক্রিয়া।

উদাহরণস্বরূপ, হাস্কেলে, একটি পরিবর্তনীয় অ্যারে অ্যাক্সেস করতে ফাংশনটির IOArrayটাইপ রয়েছে

Ix i => IOArray i e -> i -> IO e

(আমাদের উদ্দেশ্যে সামান্য সরলীকৃত)। অপরিবর্তনযোগ্য অ্যারে অ্যাক্সেস করার সময় টাইপ থাকে

Ix i => Array i e -> i -> e

প্রথম সংস্করণটি এমন কোনও প্রকারের রিটার্ন দেয় IO eযার অর্থ এটির I / O পার্শ্ব প্রতিক্রিয়া রয়েছে। দ্বিতীয় সংস্করণটি eকোনও পার্শ্ব প্রতিক্রিয়া ছাড়াই কেবল টাইপের একটি উপাদান দেয়।

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


4
ঠিক আছে, ফাইলগুলির সাথে আপনি কেবল একেবারে নিশ্চিত হতে পারবেন না।
FTR

2
আপনি কখনই নিশ্চিত হতে পারবেন না, তবে আরও গুরুত্বপূর্ণ: সংকলকটি নিশ্চিত হতে পারে না। এছাড়াও, আপনি ফাইলটি পড়ার সময় আপনার ফাইল সিস্টেমটি দূষিত হয়ে যেতে পারে বা আপনার হার্ড ডিস্ক সংযোগ বিচ্ছিন্ন হতে পারে।
টোবিয়াস ব্র্যান্ড্ট

5
এগুলি প্রোগ্রামটির কোনও পার্শ্ব প্রতিক্রিয়া নয়, এগুলি অন্যান্য জিনিসের পার্শ্ব প্রতিক্রিয়া। মেমোরি কোনও পার্শ্ব-প্রভাব-মুক্ত নয়, যেহেতু একটি আলফা কণা বা বিপথগামী নিউট্রন কিছুটা উল্টাতে পারে এবং ফলশ্রুতিতে পরিবর্তিত হতে পারে to
blrfl

3
@ ব্লারফ্লাল এটি একটি ভাল বিষয়, তবে আমি মনে করি না যে দুটি তুলনাযোগ্য। মেমোরি দুর্নীতি এমন একটি বিষয় নয় যা আপনি মোকাবেলা করতে পারেন কারণ এটি একটি স্বেচ্ছাসেবীভাবে প্রোগ্রামের ডেটা এবং নির্দেশকে প্রভাবিত করতে পারে। যদি এটি ঘটে থাকে তবে প্রোগ্রামটি (এবং সম্ভবত ওএস) শেষ করতে হবে the অন্যদিকে, ফাইল সিস্টেমের দুর্নীতির কারণে একটি পঠন ত্রুটি এমন একটি বিষয় যা আপনি আশা করতে এবং পরিচালনা করতে সক্ষম হন। এটি ফাইলগুলির সাথে কাজ করার অন্তর্নিহিত অংশ।
টোবিয়াস ব্র্যান্ড্ট

2
আপনি পার্শ্ব প্রতিক্রিয়াগুলির ক্ষেত্রের বাইরে চলে যাচ্ছেন এবং ত্রুটি সনাক্তকরণ এবং পরিচালনা করার ক্ষেত্রে যা সম্পূর্ণ ভিন্ন আলোচনা। পার্শ্ব প্রতিক্রিয়া প্রশ্ন একটি অপারেশন বা অন্য কোনও প্রভাব আছে কিনা তা এক, অপারেশন ফলাফল বহিরাগত কারণ দ্বারা প্রভাবিত হতে পারে বা না।
blrfl

10

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


2

আপনার যদি একটি ভাগ করা ফাইল হ্যান্ডেল থাকে তবে কোনও ফাইল পড়লে সেই ফাইল হ্যান্ডেলটি আপনি যে অবস্থানে পড়েছেন সেখানে স্থানান্তরিত করবে এবং এটিকে সেই অবস্থানে রেখে দেবে।

আপনার যদি একই ফাইলটিতে পৃথক ফাইল হ্যান্ডলগুলি সহ দুটি থ্রেড থাকে তবে একটির কাছ থেকে পড়ার অপরটিতে কোনও লক্ষণীয় পার্শ্ব প্রতিক্রিয়া থাকবে না।

তবে এই উভয় ক্ষেত্রেই, মেমরি রিডিং এবং ফাইল রিডিং অপারেটর সিস্টেম ক্যাশে এর একটি গোপন পার্শ্ব প্রতিক্রিয়া থাকতে পারে।


0

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

পার্শ্ব-প্রভাব-মুক্ত পঠন ফাংশন তৈরি করা যা একসাথে ফাইলটি পড়ে এবং একই সাথে একাধিক পাঠ্যকে মঞ্জুরি দেয় কারণ ফাইল রাইটিং ফাংশন রয়েছে যা পঠন ফাংশন দ্বারা প্রভাবিত হয় এবং ফাইল লেখার ফাংশন থেকে মুক্তি পাওয়া আবার সম্ভব হয় না ।


1
যদি ফাইলটি পরিবর্তন না হয় এবং আপনি ফাইলটিকে একটি স্ট্রিমে (অলস তালিকা) পরিণত করেন তবে আপনি কোনও ফাইল থেকে পার্শ্ব-প্রতিক্রিয়া মুক্ত পঠন করতে পারেন।
জর্জিও

2
আপনার নিয়ন্ত্রণে নেই এমন কোনও ফাইলের জন্য ওএসের কাছে পৌঁছানো একটি পার্শ্ব প্রতিক্রিয়া। কেবলমাত্র যদি আপনি ফাইলটির পরিবর্তনীয়তা নিয়ন্ত্রণ করতে পারেন (এবং এটির উপর ক্রম পরিবর্তনকারী ক্রিয়াকলাপগুলি ... IOমোনাডের মাধ্যমে ?) আপনি পড়ার জন্য পার্শ্ব-প্রভাব-মুক্ত ফাংশন তৈরি করতে পারেন।
বার্গি

0

একটি স্ট্রিম থেকে পড়া ইতিমধ্যে একটি পার্শ্ব প্রতিক্রিয়া কারণ ফাংশনগুলির ফলাফল যেমন isEOFপড়ার আগে পড়ার পরে ভিন্ন ফলাফল ফিরে আসতে পারে।

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