जवाबों:
dc
एक बहुत पुरातन उपकरण है और कुछ हद तक पुराना है bc
। विकिपीडिया पृष्ठ उद्धृत करने के लिए :
यह सबसे पुरानी यूनिक्स उपयोगिताओं में से एक है, यहां तक कि सी प्रोग्रामिंग भाषा के आविष्कार से पहले; उस विंटेज की अन्य उपयोगिताओं की तरह, इसमें सुविधाओं का एक शक्तिशाली सेट है, लेकिन एक अत्यंत जटिल वाक्य रचना है।
वाक्यविन्यास एक रिवर्स पॉलिश नोटेशन है, जिसका मूल रूप से मतलब है कि तर्क (यानी संख्या) पहले ऑपरेटर द्वारा पीछा करते हैं। dc
उपयोग का एक मूल उदाहरण है:
echo '3 4 * p' | dc
जहां p
गणना के परिणाम को प्रिंट करना आवश्यक है। bc
दूसरी ओर अधिक परिचित infix संकेतन का उपयोग करता है और इस प्रकार उपयोग करने के लिए अधिक सहज है। यहाँ bc
उपयोग का एक उदाहरण है :
echo '3 * 4' | bc
bc
POSIX द्वारा मानकीकृत है और इसलिए शायद दोनों में से अधिक पोर्टेबल है (कम से कम आधुनिक प्रणालियों पर)। यदि आप मैन्युअल कैलकुलेटर का काम कर रहे हैं तो यह निश्चित रूप से पसंद है (जब तक कि आप कुछ मसोचिस्ट नहीं हैं)। dc
हालांकि इसके उपयोग अभी भी हो सकते हैं, यहां एक मामला है जहां रिवर्स पॉलिश संकेतन काम में आता है। कल्पना कीजिए कि आपके पास एक कार्यक्रम है जो संख्याओं की एक धारा का उत्पादन करता है जिसे आप कुल करना चाहते हैं, जैसे:
23
7
90
74
29
के साथ ऐसा करने के लिए dc
बहुत सरल है (कम से कम आधुनिक कार्यान्वयन के साथ जहां प्रत्येक ऑपरेटर दो से अधिक नंबर ले सकता है) क्योंकि आपको केवल +p
स्ट्रीम में संलग्न करना है, जैसे:
{ gen_nums; echo +p } | dc
लेकिन bc
यह अधिक जटिल है क्योंकि हमें न केवल प्रत्येक संख्या के +
बीच रखने की जरूरत है और सुनिश्चित करें कि सब कुछ एक ही पंक्ति में है, बल्कि यह भी सुनिश्चित करें कि अंत में एक नई रेखा है:
{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
gen_nums
उदाहरण का उपयोग करके जटिल रूप दिया है bc
। इसका सरलीकरण किया जा सकता है:gen_nums | paste -sd+ | bc
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
dc
आप उपयोग कर रहे हैं? उबंटू 14.04 और ओएस एक्स पर, +
ऑपरेटर हमेशा स्टैक से बिल्कुल दो मानों पर काम करता है
bc -c
कुछ अजीब और अलग होता है (और -c
झंडे को अनिर्दिष्ट है)। अगर मैं इसे पाइप करने की कोशिश करता dc
हूं, तो मुझे त्रुटियों का एक गुच्छा मिलता है (और बिना पाइपिंग के आउटपुट dc
बहुत गूढ़ है @iK3:K4:*W@r\n@i
)।
दोनों के बीच एक बुनियादी अंतर यह है कि रिवर्स पोलिश नोटेशनdc
का उपयोग किया जाता है । आउटपुट का उत्पादन करने के लिए भी स्पष्ट कमांड की आवश्यकता होती है।
आप bc
कहकर दो पूर्णांक जोड़ सकते हैं :
bc <<< "2+4"
और यह 6
एक लाइन पर अपने आप उत्पादन होगा । हालाँकि, dc
आपको यह कहना होगा:
dc <<< "2 4 +p"
तुम भी बहुत मज़ा सामान का उपयोग कर सकते हैं dc
, उदाहरण के लिए उत्पादन के लिए मेरे जवाब यहाँ देखें
Hello World!
का उपयोग कर dc
।
डीसी <<< "8 9 * P101P108P108P111P4 8 8 * P81 6 + P111P114P108P100P33P"
dc
एक कैलकुलेटर है जबकि bc
एक वास्तविक भाषा है। उनके मैन पेज देखें।
बीसीडीसी एक रिवर्स-पॉलिश डेस्क कैलकुलेटर है जो असीमित सटीक अंकगणित का समर्थन करता है। यह आपको मैक्रोज़ को परिभाषित करने और कॉल करने की अनुमति भी देता है। आम तौर पर डीसी मानक इनपुट से पढ़ता है; यदि इसके लिए कोई कमांड तर्क दिया जाता है, तो वे फ़ाइलनाम हैं, और डीसी मानक इनपुट से पढ़ने से पहले फ़ाइलों की सामग्री को पढ़ता है और निष्पादित करता है। सभी सामान्य आउटपुट मानक आउटपुट के लिए है; सभी त्रुटि आउटपुट मानक त्रुटि के लिए है।
bc एक भाषा है जो बयानों के संवादात्मक निष्पादन के साथ मनमाने ढंग से सटीक संख्याओं का समर्थन करती है। C प्रोग्रामिंग भाषा के सिंटैक्स में कुछ समानताएँ हैं। एक मानक गणित पुस्तकालय कमांड लाइन विकल्प द्वारा उपलब्ध है। यदि अनुरोध किया गया है, तो किसी भी फाइल को संसाधित करने से पहले गणित पुस्तकालय को परिभाषित किया गया है। bc सूचीबद्ध क्रम में कमांड लाइन पर सूचीबद्ध सभी फाइलों से प्रोसेसिंग कोड द्वारा शुरू होता है। सभी फ़ाइलों को संसाधित करने के बाद, bc मानक मानक इनपुट से पढ़ता है। इसे पढ़ते ही सभी कोड निष्पादित हो जाते हैं। (यदि किसी फ़ाइल में प्रोसेसर को रोकने की आज्ञा है, तो bc कभी भी मानक इनपुट से नहीं पढ़ेगा।)
यह वास्तव में इस बात पर निर्भर करता है कि आप अंततः गणितीय रूप से क्या करना चाहते हैं। कुछ ऑपरेशन का उपयोग संभव नहीं है dc
। मैंने कई अन्य कमांड लाइन कैलकुलेटर टूल के अलावा दोनों वर्षों में उपयोग किया है। कुछ अतिरिक्त उदाहरणों के लिए " कमांड लाइन एक्सप्रेशन सॉल्वर? " देखें ।
dc
रिवर्स पॉलिश नोटेशन कैलकुलेटर होने के कारण और चूंकि मैंने हमेशा एचपी रिवर्स पॉलिश नोटेशन कैलकुलेटर का उपयोग dc
किया है bc
, जो मैं वास्तव में उपयोग करना पसंद करता हूं, लेकिन मैं कहूंगा कि वे अभी भी दोनों का उपयोग कर रहे हैं कभी भी आपको एक जटिल गणितीय गणना करने की आवश्यकता होती है। मैं अक्सर संख्या बी / डब्ल्यू आधार १० को आधार १६ और आधार २ में परिवर्तित करने के लिए उनका उपयोग करता हूं। लेकिन उन्हें सारणीबद्ध डेटा के साथ-साथ एक AWK स्क्रिप्ट के भीतर टैली कॉलम में भी इस्तेमाल किया है।
bc
इस अर्थ में एक भाषा थी कि इसने dc
मानव-अनुकूल बनाया - यह नहीं कि यह अधिक शक्तिशाली था। इन दिनों एप्लिकेशन लिबास साझा करते हैं, लेकिन bc
एक भाषा और dc
एक कैलकुलेटर कहा जाता था क्योंकि dc
गणित और गणित से bc
बात करता था dc
। यहां एक पुराना man
पृष्ठ है : [1] नामक एक भाषा BC
विकसित की गई है जो उच्च-स्तरीय भाषाओं में लिखे गए कार्यक्रमों को स्वीकार करती है और आउटपुट को संकलित करती है जिसकी व्याख्या डीसी द्वारा की जाती है। नीचे वर्णित कुछ कमांड कंपाइलर इंटरफ़ेस के लिए डिज़ाइन किए गए थे और मानव उपयोगकर्ता के लिए हेरफेर करना आसान नहीं है।
dc
है कि यह भी एक भाषा है। उदा। codegolf.stackexchange.com/a/47921/11259
मेरी विनम्र राय और यथासंभव कुछ शब्दों में, जीएनयू डीसी जीएनयू बीसी से 3 तरीकों से अलग है:
1) यदि bc की गणित लाइब्रेरी चिंता से बाहर है, तो संभव के रूप में कई कीस्ट्रोक्स को बचाने के लिए (जनवरी zukasiewicz के शब्दों में: एक कोष्ठक मुक्त संकेतन) जब प्राथमिक अंकगणित करते हैं, तो आवश्यक पर अधिक ध्यान केंद्रित करने और विक्षेप से बचने के लिए।
2) Microsoft विंडोज 7 की कमांड लाइन में, GNU dc कम मेमोरी (~ 320K) की खपत करता है, जबकि GNU bc करता है (~ 360K)।
3) जीएनयू डीसी की तुलना में जीएनयू डीसी में बहुत दानेदार नियंत्रण, उदाहरण के लिए, जीएनयू डीसी से स्टैक और रजिस्टर कमांड अनुपस्थित हैं।
दोनों के लिए संस्करण 1.07.1 win32 https://embedeo.org/ws/command_line/bc_dc_calculator_windows/ पर है
expr
कमांड लाइन और स्क्रिप्ट्स में सरल गणना के लिए बहुत बार उपयोग करता हूं ।