শর্ট সার্কিট মূল্যায়ন কখন খারাপ হয়?


12

কিছুটা স্পষ্ট করে বলতে গেলে, আমি জানিয়ে দেব যে আমি বিভিন্ন ভাষার সাথে প্রচুর সময় ব্যয় করেছি। তবে এখন পর্যন্ত এটি হয় এটি সর্বদা এটি ব্যবহার করবে বা এটি একেবারেই সমর্থন করে না।

এখন কাজ আমাকে প্রকল্প VB.net প্রয়োজন যে থেকে শুরু হয়েছে এবং আমি তা পদ এটা উভয় উপায় প্রদান করে দেখতে এবং এবং ANDALSO । প্রথমটি শর্ট সার্কিট করে না, এবং দ্বিতীয়টি করে।

সুতরাং এটি কেন আমাকে অবাক করে? এটির মতো এটির সেটআপ হওয়ার ফলে বোঝা যাচ্ছে যে এটি প্রায়শই আসবে যে কেউ মোডগুলি স্যুইচ করতে চান। তবে শর্ট সার্কিট ব্যবহার করা খারাপ জিনিস হবে এমন কোনও পরিস্থিতিতে আমি ভাবতে পারি না ।

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

যদিও আমি আশা করছি সেখানে কমপক্ষে একটি সরকারী উত্তর রয়েছে, কেন উভয় বিকল্প থাকা যখন সর্বদা শর্ট সার্কিট পাওয়া যায় তখন তা কেন সর্বদা ভাল ।



উত্তর:


5

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

if not (PushAirPlane(thrust) and TurnAirplane(vector)), SimulateCrash(severity)

অন্যান্য ক্ষেত্রে, আপনি যদি পূর্বের মূল্যায়নটি মিথ্যা প্রত্যাবর্তন করেন তবে আপনি বাকী কোনও শর্তের মূল্যায়ন করতে চান না।

if IsAirborne() and not (PushAirPlane(thrust) and TurnAirplane(vector)), SimulateCrash(severity)

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

ভিবি'র আন্ডালসো খাস্তা এবং অনুশীলনটিকে আরও গ্রহণযোগ্য করার চেষ্টা বলে মনে হচ্ছে।

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


4
প্রকৃতপক্ষে সঠিক হলেও এটি কোনও দুর্দান্ত নকশা নয়।
রবার্ট হার্ভে

2
@ রবার্টহারভে, আমি কোনও নিয়ন্ত্রণ ব্যবস্থা লিখতে পারি না যার পার্শ্ব প্রতিক্রিয়া নেই এবং আমি ফলাফলটিতে প্রতিক্রিয়া না জানালে আমি সিস্টেমটি সঠিকভাবে নিয়ন্ত্রণ করতে পারি না। অন্য কথায়, এটি শেষ করুন;)।
jwdonahue

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

3
@jwdonahue বিভ্রান্তির ঝুঁকি কম থাকলে "বড় শব্দ" ব্যবহার করা ঠিক আছে। এই জাতীয় কোডের একটি ব্লকের বিভ্রান্তি এবং বিশেষ সূক্ষ্মতা হারিয়ে যাওয়ার ঝুঁকি অত্যন্ত উচ্চ এবং এটি যুক্তির জন্য বিপর্যয়কর হতে পারে। পঠন বিকাশকারীকে খুব শক্তভাবে ভাবা উচিত নয়।
jpmc26

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

20

স্পষ্টতই, আপনার প্রশ্নটি শর্ট সার্কিটের পক্ষে সাধারণত ভাল বা খারাপ হওয়ার বিষয়ে নয়, তবে ভিবি.এনইটি অপারেটরগুলিকে কেন এবং এর বাইরে সরবরাহ করে তা সম্পর্কে। এটি মাথায় রেখে, উত্তর

শর্ট সার্কিট মূল্যায়ন কখন খারাপ?

সহজভাবে: যখন এটি পিছনের সামঞ্জস্যতা লঙ্ঘন করে ।

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

অন্যদিকে, ভিবি.এনইটি ভাষা ডিজাইনাররা সম্ভবত শর্ট সার্কিটকে ভাল জিনিস বলে আপনার মতামত ভাগ করেছেন। যখন আমি সঠিকভাবে মনে রেখেছি, প্রথম VB.NET প্রাক-প্রকাশের সংস্করণগুলি এবং বা বা অপারেটরগুলি সংক্ষিপ্ত-সার্কিট দিয়েছিল, তবে বিকাশকারীদের প্রতিক্রিয়া অবশ্যই খারাপ হবে এমএস ভিবি.এনইটি 1.0 প্রকাশের আগে এই সিদ্ধান্তটি প্রত্যাহার করেছিল। সুতরাং ডিজাইনাররা এটি নতুন কীওয়ার্ডের ক্ষেত্রে ANDALSOএবং ORELSEপিছনের সামঞ্জস্যতা এবং উপযোগিতার মধ্যে একটি বাণিজ্য বন্ধ হিসাবে কার্যকর করার সিদ্ধান্ত নিয়েছে ।

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

আপনি বিশ্বাস না হলে আমি জোএল স্পলস্কাই এর মহান নিবন্ধ পড়তে সুপারিশ মঙ্গল হেডসেট একটি নির্দিষ্ট আকারের একটি ইউজার বেস পৌঁছেছে, কেন সফটওয়্যার উন্নয়ন তাড়াতাড়ি নকশা সিদ্ধান্ত সহজে উপাদানকে ভাষা বা পণ মধ্যে এপিআই পর প্রত্যাহার করা করা যাবে সে বিষয়ে যা ।


ঠিক আছে, এটি একটি অভিজাত হিসাবে যোগ্যতা অর্জন করেছে এবং মার্টিয়ান হেডসেটের লিঙ্কটি মোটেই সম্পর্কিত বলে মনে হচ্ছে না।
jwdonahue

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

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

3
@ সুপের্যাট: এটি ইতিমধ্যে বিদ্যমান এবং ব্যবহারে ট্রিলিয়ন মিলিয়ন বাদাম (বা ভিবি 6 কোডের লাইনগুলি) সম্পর্কে রয়েছে এবং এখন বোল্টগুলি (বা এই ক্ষেত্রে ভিবি সংকলক) একটি নতুন প্রজন্ম দ্বারা প্রতিস্থাপিত হবে। যদি বিদ্যমান বাদামগুলি কেবলমাত্র নন-মেট্রিক বোল্টের সাথে মানানসই হয় তবে কেবলমাত্র নতুন বোল্টকে মেট্রিক-সিস্টেম তৈরি করা অর্থনৈতিক নয়।
ডক ব্রাউন

tl; dr: VB বেসিকের একটি উপভাষা, যা ১৯64৪ সাল থেকে শুরু হওয়া একটি ভাষা এবং বেসিকের ক্ষেত্রে Andঅপারেশন শর্ট সার্কিট হয় না, এটি এসকিউএল (1974), না ফোরট্রান (1956), বা পাস্কাল (1970) -তে নেই।
বেন

3

শর্ট সার্কিট মূল্যায়ন কখন খারাপ?

এগুলি খারাপ হয়ে যায় , আপনি যত তাড়াতাড়ি আপনি বুলিয়ান সামগ্রিক ফলাফলের মূল্যায়নে মৃত্যুদন্ড কার্যকর করার প্রত্যাশা করেছেন সেই অভিব্যক্তির পার্শ্ব প্রতিক্রিয়ার উপর নির্ভর করতে শুরু করেন।


1

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

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


আমি মনে করি আপনি এখন পর্যন্ত কেবলমাত্র একটি যৌক্তিক বক্তব্যকেই অনুকূল করতে পারবেন, শেষ পর্যন্ত আপনাকে শাখা নিতে হবে।
jwdonahue

@jwdonahue আমি আপনার বক্তব্যটি পাই না। দুঃখিত।
জিমি জেমস

আমরা এখানে সংযুক্তি যুক্তি সম্পর্কে কথা বলছি। শর্ট সার্কিট মূল্যায়ন বা না, আপনার এক বা একাধিক পদ রয়েছে যা পূর্ববর্তী শর্তের ফলাফলের উপর নির্ভর করে মূল্যায়ন করতে হবে। সুতরাং, শাখা জড়িত।
jwdonahue

1
@jwdonahue অবশ্যই তবে প্রতিটি শর্ট সার্কিট একটি অতিরিক্ত শাখা। নির্দিষ্ট পরিস্থিতিতে দুটি এক্সপ্রেশন কার্যকর করা (উদাহরণস্বরূপ) দ্বিতীয়টি কার্যকর করার আগে প্রথমটির ফলাফল পরীক্ষা করার চেয়ে দ্রুত হয় এমনকি এটি প্রায়শই দ্বিতীয় ক্ষেত্রে অপ্রাসঙ্গিক ক্ষেত্রেও ঘটে। আবার, এটি খুব কমই গুরুত্বপূর্ণ। আমার জন্য কেউ যে কেসটি তৈরি করেছে তা হ'ল ম্যাট্রিক্স গুণণের মতো জিনিসগুলির জন্য যেখানে আপনার কাছে প্রচুর সরল মূল্যায়ন রয়েছে।
জিমি জেমস

1
আমি আপনাকে আমার updatedণ দিয়ে উত্তরটি আপডেট করেছি।
jwdonahue

0

পাসক্যাল সংজ্ঞা দেয় নি যে এবং ও ও ও শর্ট সার্কিট মূল্যায়ন ব্যবহার করে বা না, আপনাকে উভয় পৃথিবীর মধ্যে সবচেয়ে খারাপ দেয়।

সি এবং সি ++ এর বিটওয়াইজ অপারেশন রয়েছে & এবং and যা বাস্তবে আপনাকে নন-শর্ট সার্কিট ক্রিয়াকলাপ দেয়। এবং সংযোজকরা যদি পর্যবেক্ষণযোগ্য পার্থক্য না করে তবে তাদের যেভাবে পছন্দ হয় তা মূল্যায়ন করতে নির্দ্বিধায়।


@ উত্সাহক: যেমন উল্লেখ করা হয়েছে, পাস্কেল সংজ্ঞা দেয় নি যে, ও / অথবা শর্ট সার্কিট মূল্যায়ন ব্যবহার করে কিনা। তার মানে "না জানা"।
সুপারক্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.