একটি REPL এবং ইন্টারেক্টিভ শেলের মধ্যে পার্থক্য


37

নুব প্রশ্ন। আমি কেবল উইকিপিডিয়ায় সংজ্ঞা পড়ে কেবল একটি আরপিএল এবং একটি ইন্টারেক্টিভ শেলের মধ্যে পার্থক্যটি বলতে পারছি না ।

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

বিশেষত, আইপিথনকে একটি আরপিএল বলা কি সঠিক হবে?

উত্তর:


24

রিপল: এটি এমন একটি পদ্ধতি যা কেবল লুপ করে, একবারে একটি কমান্ড গ্রহণ করে, কার্যকর করে এবং ফলাফল মুদ্রণ করে।

লুপের প্রতিটি পুনরাবৃত্তির তিনটি ধাপ হ'ল:

  1. কীবোর্ড ইনপুট বাফার থেকে একটি পাঠ্য অভিব্যক্তি তৈরি করে এমন অক্ষরগুলি পড়তে পড়তে কল করা এবং এটি উপস্থাপনের জন্য একটি ডেটা কাঠামো তৈরি করে,
  2. অভিব্যক্তিটির মূল্যায়ন করার জন্য কলকে কল করা - স্বজ্ঞাতভাবে, eval "এই অভিব্যক্তির অর্থ কী তা বোঝায়" এবং "এটি করার জন্য যা বলে," তা "এক্সপ্রেশনটির মান ফিরিয়ে দেওয়া - এবং
  3. লিখিত কলকে কল হিসাবে ফলস্বরূপ ফলাফলের একটি পাঠ্য উপস্থাপনা মুদ্রণ করা হয়, যাতে ব্যবহারকারী এটি দেখতে পারে।

আপনি নিজের প্রোগ্রামগুলির জন্য আপনার নিজের পঠন-evভাল-প্রিন্ট লুপটি লিখতে পারেন, যাতে ব্যবহারকারীরা প্রকাশ করতে পারেন এবং আপনি যেভাবে চান সেগুলি ব্যাখ্যা করতে পারেন। আপনি আপনার পঠন-ইভাল-প্রিন্ট লুপটি শুরু করতে পারেন (টাইপ করে (রিপ-লুপ)), এবং এটি আপনার অভিব্যক্তিকে ব্যাখ্যা করে, সাধারণ স্কিম রিড-ইভাল-প্রিন্ট লুপ থেকে গ্রহণ করবে।

এখানে একটি খুব সাধারণ পঠনযোগ্য alভাল-প্রিন্ট লুপ:

  (define (rep-loop)
  (display "repl>")      ; print a prompt
  (write (eval (read)))  ; read expr., pass to eval, write result
  (rep-loop))            ; loop (tail-recursive call) to do it again

লক্ষ্য করুন যে অভিব্যক্তি (লিখুন (eval (পড়ুন)) যথাযথ পঠন-evওয়াল-মুদ্রণ ক্রমে কাজ করে, কারণ প্রতিটি প্রক্রিয়া কলের যুক্তিটি আসল কল করার আগে গণনা করা হয়।

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

     #!/bin/bash
     echo -n "Enter the value of variable 'var1': "
     read var1
     echo "var1 = $var1"
     echo

    echo -n "Enter the values of variables 'var2' and 'var3' "
    echo =n "(separated by a space or tab): "
    read var2 var3
    echo "var2 = $var2      var3 = $var3"
    #  If you input only one value,
    #+ the other variable(s) will remain unset (null).

    exit 0

এখন উপরের স্ক্রিপ্টটি ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করে, এটি ব্যবহারকারীকে ইনপুট লিখতে বলে যার ভিত্তিতে এটি তার গণনা করে। এ কারণেই এটি একটি ইন্টারেক্টিভ শেলের মতো আচরণ করে।

সিমিলারি, পাইথন দোভাষী যা বেশিরভাগ লোক পাইথন শিখতে ব্যবহার করে এটি একটি ইন্টারেক্টিভ যা এটি ব্যবহারকারীর সাথে যোগাযোগ করে।


1
@ দ্য ডার্ক নাইট: সুতরাং উপরোক্ত তত্ত্বের ভিত্তিতে, আমরা কি বলতে পারি যে বিকাশকারী সরঞ্জামদণ্ড (ক্রোমে) বা ফায়ারবগ এক্সটেনশান (ফায়ারফক্সে) কিন্ডা রিপাবল?
রাজকিশোর

9

প্রযুক্তিগতভাবে, এটি বলা ঠিক যে শেলটি একটি REPL এর উদাহরণ। তবে এটি প্রোগ্রামের সংজ্ঞা হিসাবে বিবেচ্য বিষয় নয় কারণ এটি সাধারণ ব্যবহারের দৃশ্যের একটি।

উদাহরণস্বরূপ, বাশ সি-তে লেখা ছিল, তবে পাইথনে এটি ভাল লেখা যেতে পারে। এই মুহুর্তে, আপনি যদি প্রোগ্রামের বৈশিষ্ট্য এবং ক্ষমতা সম্পর্কে কথা বলেন, বাশটি পাইথন না থাকার সময় শাঁস বলে কি সঠিক হবে?

আপনি এটিও বলতে পারেন যে শেলগুলি চলমান কমান্ড সম্পর্কে এবং আরএইপিএলগুলি চলমান নির্দেশাবলী এবং ফাংশন কলগুলি সম্পর্কে। তবে আপনি কি আরপিএলগুলিতে (পাইথনের ওস.সিস্টেম, ওস.পোপেন, ইত্যাদি) কমান্ড চালাতে পারবেন না এবং এর অনেকগুলি বিল্ট-ইন ব্যবহার করে আপনি বাশে ফাংশন (বা সংজ্ঞায়িত) পরিচালনা করতে পারবেন না?

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

আশা করি এইটি কাজ করবে.


3

এই স্ট্যাকওভারফ্লো প্রশ্নটি সেই একই প্রশ্নটি (অন্যান্য বিষয়গুলির মধ্যে) নিয়ে আলোচনা করে।

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


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