dc
とbc
の計算機の違いは何ですか?
いつdc
を使用し、いつbc
を使用すればよいですか?
dc
は非常に古いツールで、bc
よりも少し古いです。 Wikipediaページ を引用するには:
これは最も古いUnixユーティリティの1つであり、Cプログラミング言語の発明さえもさかのぼります。そのヴィンテージの他のユーティリティと同様に、強力な機能セットを備えていますが、構文は非常に簡潔です。
構文は逆ポーランド記法です。つまり、基本的に引数(つまり、数値)が最初に続き、その後に演算子が続きます。 dc
の基本的な使用例は次のとおりです。
echo '3 4 * p' | dc
計算結果を出力するためにp
が必要な場合。一方、bc
はより馴染みのあるインフィックス表記法を使用しているため、より直感的に使用できます。 bc
の使用例は次のとおりです。
echo '3 * 4' | bc
bc
はPOSIXによって標準化されているため、おそらく2つのうち最も移植性があります(少なくとも最近のシステムでは)。手動で電卓の作業をしている場合は、それが間違いなく選択です(あなたがいくらかマゾヒストでない限り)。 dc
はまだ使用できますが、ここでは逆ポーランド記法が役立つ場合を示します。合計したい数値のストリームを出力するプログラムがあるとします。例:
23
7
90
74
29
dc
でこれを行うのは非常に簡単です(少なくとも、各演算子が3つ以上の数値を取ることができる最新の実装では)+p
ストリームへ、例えば:
{ gen_nums; echo +p } | dc
しかし、bc
を使用すると、+
between各数値を確認し、すべてが同じ行にあることを確認しますが、最後に改行があることを確認します。
{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
私の控えめな意見では、できるだけ少ない言葉でGNU dcはGNU bcと3つの点で異なります:
1)bcの数学ライブラリが心配な場合は、基本的な算術を行うとき、必要なものに集中し、注意散漫を避けるために、可能な限り多くのキーストローク(JanŁukasiewiczの言葉:括弧なしの表記)を保存します。
2)Microsoft Windows 7のコマンドラインでは、GNU dcはGNU bcが消費する(〜360K)よりもメモリを消費します(〜320K))。
3)GNU dcでは、GNU bcよりもdcの方がはるかに細かく制御できます。たとえば、スタックおよびレジスタコマンドはGNU = bc。
両方のバージョン1.07.1 win32は https://embedeo.org/ws/command_line/bc_dc_calculator_windows/ にあります