প্রোগ্রামিং ভাষার ইনফিক্স অপারেটররা কতটা কার্যকর?


13

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


5
আপনি অবশ্যই একটি লিস্টার হতে হবে। আমি কি সঠিক?
মিসিংফ্যাক্টর

@ মিসিংফ্যাক্টর: সবেমাত্র এটি ব্যবহার করেছেন
কেসব্যাশ

1
ইনফিক্স অপারেটরগুলি অপারেটর ওভারলোডিং সম্পর্কিত কীভাবে?
রিন হেনরিচস ২

3
এটি লক্ষণীয় যে জনপ্রিয় ওও (ইশ) ভাষার বেশিরভাগ ভাষা পদ্ধতির নামের জন্য ইনফিক্স ব্যবহার করে। প্রকৃতপক্ষে কিছু ভাষাগুলি কিছু দৈর্ঘ্যে চলে যায় "স্ট্যাটিক" পদ্ধতির arg1.method(arg2)পরিবর্তে , বলার অপেক্ষা রাখে না method(arg1, arg2)
টম হাটিন - ২

উত্তর:


16

আমি মনে করি ইনফিক্স অপারেটরগণ গণিত থেকে আগত।

এই:

2 + 3 * 4

এর চেয়ে বেশিরভাগ লোকের কাছে বেশি পঠনযোগ্য

(+ 2 (* 3 4))

কারণ বেশিরভাগ লোক গণিতের সাথে পরিচিত।

হাসকেলে যথেষ্ট আকর্ষণীয় আপনি ইনফিক্স এবং উপসর্গের মধ্যে হ্যাপ করতে পারেন। এটি একই মজাদার "(+)" ব্যবহার করছে:

(+) 1 2
1 + 2

এবং এটি একই ফাংশনটি "এলেম" ব্যবহার করছে:

elem 42 [1,2,42]
42 `elem` [1,2,42]


1
@ ক্যাসাব্যাশ: এই "সাধারণ" অপারেটররা কখনও কখনও ইনফিক্স হয়।
লাইওরি

2
আমি চেয়ে মাত্র অদ্ভুত হতে হবে আমি এটি (+ 1 2) আরো অনেক কিছু চেয়ে পাঠযোগ্য 1 + 2। খুব কমপক্ষে (+ 1 2 3 4 5)চেয়ে ভাল 1 + 2 + 3 + 4 + 5
জো ডি

আরপিএন এছাড়াও রয়েছে: উপাদানগুলি চাপুন, তারপরে অপারেটরটি।
ফিলিহো

@ ফিফহো পোস্টফিক্স অপারেটরও বলা হয়! এমন: 1 2 +বা 1 2 3 4 5 +বা পদবি ক্ষেত্রে জন্য আরো সাধারণত 1 2 + 3 + 4 + 5 +। প্রকৃতপক্ষে এটি একটি স্ট্যাক-ভিত্তিক সিস্টেমের মডেল করে তাদের জন্য একটি নিফটি সুবিধা রয়েছে এবং খুব কমই (যদি কখনও হয়?) অপারেটরের অগ্রাধিকার সামঞ্জস্য করার জন্য প্রথম বন্ধনী প্রয়োজন।
কোডেক্সআরকানাম

6

কম্পিউটারের ভাষা মেশিন নয় মানুষের জন্য ডিজাইন করা হয়েছে। আর প্রাক বা পোস্টফিক্সের চেয়ে অপারেটরদের ইনফিক্স করার ক্ষেত্রে মানুষ বেশি ব্যবহৃত হয়।


6

ইনফিক্স অপারেটরগুলির একমাত্র আসল কারণটি হ'ল মানুষ সাধারণত তাদের পড়া সহজ করে। এটি মূলত দুটি সত্যের কারণে:

  • আমরা অল্প বয়স থেকেই গণিত আকারে ইনফিক্স অপারেটরদের শিখি এবং সেজন্য তাদের সাথে পরিচিত: 2 * 2 = 4ইত্যাদি etc.
  • একটি ইনফিক্স অপারেটরের দুটি আর্গুমেন্ট "দৃষ্টিভঙ্গি" পৃথক করার সুবিধা রয়েছে। যেমন(some complex expression) + (some other complex expression)

লজিকাল / মেশিনের দৃষ্টিকোণ থেকে, ইনফিক্স অপারেটররা সত্যিকার অর্থে কোনও মান যুক্ত করে না এবং কিছু ক্ষেত্রে একটি উপদ্রব হয়:

  • আপনি ইনফিক্স থেকে সর্বদা দুটি আর্গুমেন্টের সাথে একটি সমতুল্য ফাংশন কলে রূপান্তর করতে পারেন - সুতরাং ইনফিক্স অপারেটরগুলি কখনই "সিনট্যাকটিক চিনির" চেয়ে বেশি হয় না
  • আপনি দুটি প্যারামিটারের বেশি ব্যবহার করতে চাইলে ইনফিক্স অসুবিধা হতে পারে। (* 1 2 3 4 5)উদাহরণস্বরূপ লিস্পে সংখ্যার সেটকে গুণিত করার পক্ষে যুক্তিযুক্তভাবে অনেক ক্লিনার সিনট্যাক্স।
  • পার্সিং দৃষ্টিকোণ থেকে, প্রথমে অপারেটরটি পড়ার জন্য প্রায়শই এটি কার্যকর হয় যাতে আপনি কীভাবে বাক্সের বাকী অংশটি ব্যাখ্যা করতে পারেন তা জানতে পারেন। ইনফিক্স অপারেটরগুলির সাথে এটি আরও জটিল হতে পারে (উদাহরণস্বরূপ, আপনি কোনও স্ট্যাক বা কোনও অপারেটর কোন যুক্তিতে প্রযোজ্য তা নির্ধারণের মতো কিছু বজায় রাখতে হবে)
  • স্ট্যাক-ভিত্তিক / কনটেইনেটিভ ভাষায় যেমন ফোর্থে, আপনি চান অপারেটরটিকে শেষের দিকে স্ট্যাকের দিকে ঠেলে দেওয়া উচিত, যাতে এটির ইতিমধ্যে সঠিক অবস্থানে যুক্তি রয়েছে। আবার, টোকেনের ক্রমের মাঝখানে অপারেটরকে কবর দেওয়া কেবল বিষয়গুলিকে জটিল করে তোলে।
  • ইনফিক্স অপারেটররা সত্যিই খুব বিভ্রান্ত হয়ে উঠতে পারে যখন তারা ওভারলোড হয় - উদাহরণস্বরূপ দুটি হ্যাশম্যাপে প্রয়োগ করার পরে "+" এর অর্থ কী? এখানে, ইনফিক্স অপারেটরের স্বজ্ঞাত মানবিক বোধগম্যতা আপনার বিরুদ্ধে কাজ করে কারণ এটি এমন কোনও অর্থ অনুমান করা সহজ যা আসলে উদ্দেশ্য নয় .....

আমার মনে হয় শেষ যুক্তিটি বোগাস। প্রতীক বা অক্ষর ব্যবহার করা যাই হোক না কেন এটি ফাংশনগুলির জন্য বুদ্ধিমান নামগুলি ব্যবহার করা প্রোগ্রামারের উপর নির্ভর করে।
টম হাটিন - ২

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