ডিসি থেকে বিসি কীভাবে আলাদা?


27

মধ্যে পার্থক্য কি কি dcএবং bcক্যালকুলেটর?

আমি কখন dcএবং কখন ব্যবহার করব bc?


আমি exprকমান্ড লাইনে এবং স্ক্রিপ্টগুলিতে সাধারণ গণনার জন্য প্রায়শই ব্যবহার করি ।
ম্যাটবিয়ানকো

উত্তর:


34

dcএকটি খুব প্রত্নতাত্ত্বিক সরঞ্জাম এবং এর চেয়ে কিছুটা পুরানো bcউইকিপিডিয়া পৃষ্ঠা উদ্ধৃত করতে :

এটি অন্যতম প্রাচীন ইউনিক্স ইউটিলিটিস, এমনকি সি প্রোগ্রামিং ভাষার উদ্ভাবনের পূর্বাভাস দেয়; সেই মদ এর অন্যান্য ইউটিলিটিগুলির মতো এটির বৈশিষ্ট্যগুলির একটি শক্তিশালী সেট রয়েছে তবে একটি অত্যন্ত ক্ষতিকারক বাক্য গঠন রয়েছে।

বাক্য গঠনটি একটি বিপরীত পোলিশ স্বরলিপি, যার মূল অর্থ আর্গুমেন্টগুলি (অর্থাত্ সংখ্যা) প্রথমে অপারেটরের পরে আসে। ব্যবহারের একটি প্রাথমিক উদাহরণ dc:

echo '3 4 * p' | dc

যেখানে pগণনার ফলাফল মুদ্রণ করা প্রয়োজন। bcঅন্যদিকে আরও পরিচিত ইনফিক্স স্বরলিপি ব্যবহার করে এবং এটি ব্যবহারে আরও স্বজ্ঞাত। bcব্যবহারের উদাহরণ এখানে :

echo '3 * 4' | bc

কোনটি ব্যবহার করবেন?

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

23
7
90
74
29

এটি করার dcজন্য খুব সহজ (অন্তত আধুনিক প্রয়োগের সাথে যেখানে প্রতিটি অপারেটর দুটি সংখ্যার বেশি নিতে পারে) যেহেতু আপনাকে কেবল +pস্ট্রিমে একটি যুক্ত করতে হবে, যেমন:

{ gen_nums; echo +p } | dc

তবে bcএটি আরও জটিল কারণ যেহেতু আমাদের কেবল প্রতিটি সংখ্যার + মধ্যে একটি অন্তর্ভুক্ত করা এবং সবকিছু একই লাইনে রয়েছে তা নিশ্চিত করার দরকার নেই, তবে শেষ পর্যন্ত একটি নতুন লাইন রয়েছে কিনা তাও নিশ্চিত করে নিন:

{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc

10
আপনি gen_numsব্যবহার করে উদাহরণটিকে মারাত্মক জটিল করে তুলেছেন bc। এটি সরল করা যেতে পারে:gen_nums | paste -sd+ | bc
ডিভনুল

14
মজাদার ঘটনা: ditionতিহ্যগতভাবে bcকেবলমাত্র একটি সামনের শেষ সরঞ্জাম ছিল যা bcচিহ্নিতকরণের জন্য স্বরলিপিটি সংকলন করে dcএবং dcফলাফলটি পেতে পাইপ দেয় । FreeBSD 'র উপর এখনও -cজন্য তা পতাকাঙ্কিত bcযার সাহায্যে আপনি এখনও কম্পাইল করতে dcস্বরলিপি . For example প্রতিধ্বনি' 3 * 4 '| bc` সমান echo '3 * 4' | bc -c | dc। দেখুন linux.die.net/man/1/bc এবং freebsd.org/cgi/man.cgi?query=bc&sektion=1
রাফায়েল Ahrens

14
হুম, আপনি কোনটি dcব্যবহার করছেন? উবুন্টু ১৪.০৪ এবং ওএস এক্স-এ +অপারেটর সর্বদা স্ট্যাকের বাইরে ঠিক দুটি মানের উপর পরিচালিত হয়
ডিজিটাল ট্রমা

2
সঠিক উদাহরণ dcব্যবহার: gen_nums_nonnegative | dc -e '0 0 [+?z1<m]dsmxp'। এই স্ক্রিপ্টটি dcপড়ার জন্য এবং লুপে একের পর এক সংখ্যা যুক্ত করে ফলাফল মুদ্রণ করে। নেতিবাচক সংখ্যা সংক্রান্ত নোট দেখুন ।
রুভিম

1
@ রাফেলআহরেন্স আকর্ষণীয়, ম্যাকোজে bc -cঅদ্ভুত এবং ভিন্ন কিছু করে (এবং -cপতাকাটি অনির্ধারিত )। যদি আমি এটিতে পাইপ দেওয়ার চেষ্টা করি dc, তবে আমি বেশ কিছু ত্রুটি পেয়েছি (এবং পাইপ না করে আউটপুটটি dcখুব ক্রিপ্টিক @iK3:K4:*W@r\n@i)।
কনরাড রুডলফ

9

উভয়ের মধ্যে একটি প্রাথমিক পার্থক্য হ'ল বিপরীত পোলিশ স্বরলিপিdc ব্যবহার করে । এমনকি আউটপুট উত্পাদন করার জন্য এটি সুস্পষ্ট কমান্ডের প্রয়োজন।

আপনি এই bcবলে দুটি পূর্ণসংখ্যার যোগ করতে পারেন :

bc <<< "2+4"

এবং এটি 6নিজেই এক লাইনে উত্পন্ন হবে । তবে, dcআপনার এই কথাটি বলা দরকার:

dc <<< "2 4 +p"

আপনি ব্যবহার করে অনেক মজাদার জিনিসগুলিও করতে পারেন dc, যেমন উত্পাদন করার জন্য আমার উত্তরটি এখানে উল্লেখ করুন to

Hello World!

ব্যবহার dc

ডিসি <<< "8 9 * P101P108P108P111P4 8 * P81 6 + P111P114P108P100P33P"


"ডিসি-র ফ্রন্ট-এন্ড হিসাবে বিসি লেখা হয়েছিল"
অ্যাডাম

3

dcএকটি ক্যালকুলেটর যেখানে bcএকটি আসল ভাষা। তাদের ম্যান পৃষ্ঠাগুলি দেখুন।

ডিসি

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

খ্রিস্টপূর্ব

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

এটি আপনি গাণিতিকভাবে শেষ পর্যন্ত যা করতে চাইছেন তার উপর নির্ভর করে depends কিছু অপারেশন ব্যবহার করা সম্ভব নয় dc। আমি বেশ কয়েকটি অন্যান্য কমান্ড-লাইন ক্যালকুলেটর সরঞ্জাম ছাড়াও কয়েক বছর ধরে ব্যবহার করেছি। কিছু অতিরিক্ত উদাহরণের জন্য " কমান্ড লাইন এক্সপ্রেশন সলভার? " দেখুন।


3
@ রিচুস - আমি নিশ্চিত না যে আপনি যা জিজ্ঞাসা করছেন তা আমি বুঝতে পেরেছি? dcএকটি বিপরীত পলিশ স্বরলিপি ক্যালকুলেটর হওয়ার কারণে এবং যেহেতু আমি সবসময় এইচপি বিপরীত পোলিশ নোটেশন ক্যালকুলেটর ব্যবহার করেছি আমি আসলে ব্যবহার dcকরতে পছন্দ করি bcতবে আমি বলব যে কোনও জটিল গাণিতিক গণনা সম্পাদন করার জন্য যে কোনও সময় তারা উভয় এখনও ব্যবহার করা হয়েছে। আমি প্রায়শই তাদের সংখ্যা বি / ডাব্লু বেস 10 কে বেস 16 এবং বেস 2 তে রূপান্তর করতে ব্যবহার করি তবে এগুলি টবুলার ডেটাতে পাশাপাশি একটি এডব্লিউ স্ক্রিপ্টের মধ্যে থেকে কলামগুলি টালি করতে ব্যবহার করেছি।
SLM

3
bcএটি এমন একটি ভাষা ছিল যা এটি dcমানব-বান্ধব করে তোলে - এটি আরও শক্তিশালী ছিল না। আজকাল অ্যাপস লিব ভাগ, কিন্তু bcএকটি নাম ছিল ভাষা এবং dcএকটি ক্যালকুলেটর কারণ dcগণিত করেনি এবং bcগণিত স্পোক - এতে dcএখানে একটি পুরানো manপৃষ্ঠা : [1] নামক একটি ভাষা BCতৈরি করা হয়েছে যা উচ্চ স্তরের ভাষায় লিখিত প্রোগ্রামগুলি গ্রহণ করে এবং ডিসি দ্বারা ব্যাখ্যা করা আউটপুট সংকলন করে। নীচে বর্ণিত কয়েকটি কমান্ডগুলি সংকলক ইন্টারফেসের জন্য ডিজাইন করা হয়েছিল এবং কোনও মানব ব্যবহারকারীর পক্ষে ম্যানিপুলেট করা সহজ নয়।
মাইকজার্ভ

2
আমি দাবিও dcএকটি ভাষা। উদাহরণস্বরূপ কোডগল্ফ.স্ট্যাকেক্সেঞ্জঞ্জ.com
ডিজিটাল ট্রমা

1
@ ডিজিটাল ট্রামুমার যুক্তি দেওয়া যে এটি কোনও ভাষা নয় তা যেহেতু এর মধ্যে একটি লেক্সার এবং পার্সার রয়েছে। তবে যুক্তি হিসাবে এটি মানব পাঠযোগ্য, উদাহরণ হিসাবে দেওয়া অযৌক্তিক হবে। মানে ... জঘন্য।
পার্থিয়ান শট

1
@ পার্থিয়ানশট সম্মত আমার "ডিসি পড়া একটি ক্যালকুলেটর যেখানে বিসি একটি প্রকৃত ভাষা" হ'ল এসএমএল ইঙ্গিত দিচ্ছে যে ডিসি কোন ভাষা নয়, যার সাথে আমি একমত নই। তবে আমি কেবল উত্তরটি ভুলভাবে পড়ছি ...
ডিজিটাল ট্রমা

0

আমার নম্র মতামত এবং যতটা সম্ভব কথায় কথায়, GNU ডিসি GNU বিসি থেকে 3 উপায়ে পৃথক:

1) যদি বিসি-র গণিত পাঠাগারটি উদ্বেগের বাইরে থাকে, প্রাথমিক গাণিতিক করার সময় যতটা সম্ভব কী-স্ট্রোক সংরক্ষণ করা (জান Łukasiewicz এর কথায়: একটি প্রথম বন্ধন মুক্ত স্বরলিপি), প্রয়োজনীয়গুলিতে আরও মনোনিবেশ করা এবং বিঘ্ন এড়ানোর জন্য।

2) মাইক্রোসফ্ট উইন্ডোজ 7 এর কমান্ড লাইনে, জিএনইউ ডিসি জিএনইউ বিসি (~ 360K) এর চেয়ে কম মেমরি (320 কে) খরচ করে।

৩) জিএনইউ বিসি-র তুলনায় জিএনইউ ডিসিতে অনেক দানাদার নিয়ন্ত্রণ, উদাহরণস্বরূপ, স্ট্যাক এবং রেজিস্টার কমান্ডগুলি জিএনইউ বিসি থেকে অনুপস্থিত।

উভয়ের জন্য 1.07.1 সংস্করণ সংস্করণটি https://embedeo.org/ws/command_line/bc_dc_calculator_windows/ এ রয়েছে

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