কেন ক্যারেটটি এক্সওরেন্সির পরিবর্তে এক্সওআর ব্যবহার করা হয়েছিল?


32

এর আগে যে কেউ এই সিন্ট্যাকটিক সমস্যাটির মুখোমুখি হয়েছেন তা আসলেই সমস্যা নয়, তবে আমি ক্যারেট ( ^) ব্যবহার করে বিস্তৃত পরিমাণে বিভ্রান্তি দেখছি যা ব্যাপকভাবে গৃহীত গাণিতিক এক্সপেনসিয়েশন অপারেশনের পরিবর্তে এক্সওআর অপারেশন হিসাবে ব্যবহৃত হয়েছে।

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

এটা কি সুবিধার বিষয় ছিল? একটি দুর্ঘটনা? স্পষ্টতই বিভিন্ন ভাষার পক্ষে যুক্তি ভিন্ন হতে পারে, সুতরাং যে কোনও বিষয়ে তথ্য অন্তর্দৃষ্টিপূর্ণ হবে।


উত্তর:


58

যদিও এখানে পুরনো পূর্বসূর ছিল, প্রভাবশালী ফরাসি গণিতবিদ রেনি ডেসকার্টস সাধারণত মহাকাব্যগ্রন্থের গায়ে গাণিতিক রচনায় সুপারি লিপি প্রকাশকারীকে ( ) পরিচয় করিয়ে দেওয়া হয়, তাঁর রচনা জ্যামিতি যা ১omet3737 সালে প্রকাশিত হয়েছিল। এটি আজও গণিতের সর্বজনীনভাবে ব্যবহৃত হয়।

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

ক্যারেটটি ধারণ করে এমন প্রথম বিস্তৃত চরিত্রের সেটটি ^ছিল AS- বিট এএসসিআইআই এনকোডিং যা ১৯৩63 সালে প্রথম প্রমিত করা হয়েছিল that সময় আইবিএম গৃহীত EBCDIC অক্ষর এনকোডিং, যা ক্যারেট অন্তর্ভুক্ত ^

সি ভাষাটি ১৯ 197২ সালে অস্তিত্ব নিয়ে আসে। এটি কোনও ক্ষতিকারক অপারেটর সরবরাহ করে না, বরং এটি লাইব্রেরির ক্রিয়াকলাপের মাধ্যমে ক্ষয়ক্ষতি সমর্থন করে pow()। সুতরাং সি, এবং অন্যান্য, পরবর্তীকালে, সি-পরিবারে সি ,+ এবং সিইডিএ-তে ভাষাগুলির জন্য কোনও চিহ্নকে আলাদা করার দরকার নেই।

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

রিচি বা কার্নিঘান প্রদত্ত কোনও প্রকাশিত যুক্তি সম্পর্কে আমি অবগত নই যে কেন তারা ^বিশেষভাবে এক্সওরকে চিহ্নিত করতে বেছে নিয়েছিল ; রিচির সি এর সংক্ষিপ্ত ইতিহাস এই বিষয়ে নীরব। সি, অগ্রদূত জন্য স্পেসিফিকেশন এ চেহারা ভাষা বি , জানায় যে এটি একটি XOR যাও অপারেটর ছিল না, কিন্তু ইতিমধ্যে সব বিশেষ অক্ষর ছাড়া অন্য ব্যবহার ^, $, @, #

[আপডেট] আমি বি এর স্রষ্টা এবং সি এর অন্যতম সহ-নির্মাতা কেন থম্পসনকে ^সি-এর এক্সওআর অপারেটর হিসাবে বেছে নেওয়ার যৌক্তিকতা সম্পর্কে জিজ্ঞাসা করে এবং উত্তরটি এখানে ভাগ করে নেওয়ার অনুমতি চেয়েছিলাম। তার উত্তর (পাঠযোগ্যতার জন্য সামান্য পুনরায় ফর্ম্যাট করা):

থেকে: কেন থম্পসন
প্রেরিত: বৃহস্পতিবার, 29 সেপ্টেম্বর, 2016 4:50 পূর্বাহ্ন
থেকে: নরবার্ট জুফা
বিষয়: পুনরায়: সি-তে এক্সওআর অপারেটর হিসাবে ক্যারেটের পছন্দের পিছনে যুক্তি ?

এটি বাম অক্ষরের একটি এলোমেলো পছন্দ ছিল।

যদি আমার আবার কাজটি করতে হয় (যা আমি করেছি) আমি একই অপারেটরটি xor (^) এবং বিট পরিপূরক (~) এর জন্য ব্যবহার করব।

যেহেতু ^ এখন অধিকতর পরিচিত অপারেটর, in x হ'ল এক্সওর এবং পরিপূরকও।

ব্যবহারের ^মধ্যে "গণিত" এর জন্য পড়ুন exponentiation জন্য আসলে যা খেজুর 1988 যেমন ম্যাথামেটিকাল যেমন বীজগণিত সিস্টেমের জন্য যেমন Knuth এর TeX যেমন ব্যবস্থা ছাপাখানার অক্ষরস্থাপন 1978 যা তারিখ, কমান্ড লাইন ইন্টারফেস, এবং গ্রাফিং জন্য অনেক পরের কোন তারিখে প্রতিষ্ঠিত ব্যবহার হয় 1990 এর দশকের গোড়ার দিকে ক্যালকুলেটরগুলি।

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


4
এটি কিছু চমৎকার ইতিহাস পাঠ। সুতরাং আসল প্রশ্নটি হবে "টেক্সের সফ্টওয়্যার (এবং সেই সময়কালের অন্যান্য) কেন এক্সওর প্রতীকটি ঘনিষ্ঠভাবে ব্যবহার করার সিদ্ধান্ত নিয়েছে?" ;)
এক্সেল এইচ

5
@ অ্যাক্সএলএইচ আসলে এটি তা করে না। টেক্স এক্স সুপারস্ক্রিপ্টের^ জন্য ব্যবহার করে । এবং সুপারস্ক্রিপ্টের জন্য একটি "আপ" অক্ষর এবং সাবস্ক্রিপ্টের জন্য "ডাউন" অক্ষর ( ) ব্যবহার করা আমার কাছে বোধগম্য । _
এসভিক

2
@ অ্যাক্সেলএইচ আমি এসভিকের সাথে একমত হয়েছি যে ^প্রস্তাবিত একটি তীরটি প্রস্তাব করে যা একটি সুপারস্রিপ্টেড এক্সপোনেন্টের চিরাচরিত অবস্থানের দিকে ইঙ্গিত দেয়, তাই এটি কিছুটা প্রাকৃতিক ফিট। আমি নিশ্চিত যে ডোনাল্ড নথ ^টেক্সে ক্ষয়ক্ষতির জন্য তাঁর সিদ্ধান্তের বিষয়ে জিজ্ঞাসা করা একটি ইমেলের প্রতিক্রিয়া জানাবে , তবে তিনি যে টিএওসিপি সমাপ্ত করার মতো আরও গুরুত্বপূর্ণ বিষয়ে ব্যস্ত রয়েছেন, আমি সেই পদক্ষেপ নিতে চাইনি (আমি বিবেচনা করেছি) এটা)।
njuffa

7
এন.ইউইকিপিডিয়া.আর / উইকি / ক্রেটের মতে , অ্যালগল 60০ ব্যাখ্যার জন্য একটি উপরের দিকে নির্দেশকারী তীর ব্যবহার করেছে এবং নোটগুলি যে মূলত ASCII তে একই কোড পয়েন্টে যেখানে একটি ক্যারেট চিহ্ন রয়েছে সেখানেও একটি তীর ছিল, সুতরাং দু'টি স্পষ্ট ছিল একই সময়ে প্রায় একে অপরের সমান।
পেরিটা ব্রেটা

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