Was sind die Unterschiede zwischen dc
und bc
Taschenrechner?
Wann soll ich verwenden dc
und wann bc
?
command-line
bc
calculator
syntagma
quelle
quelle
expr
sehr oft für einfache Berechnungen in der Kommandozeile und in Skripten.Antworten:
dc
ist ein sehr archaisches Werkzeug und etwas älter alsbc
. So zitieren Sie die Wikipedia-Seite :Die Syntax ist eine umgekehrte polnische Notation, was im Grunde bedeutet, dass die Argumente (dh Zahlen) zuerst vom Operator gefolgt werden. Ein grundlegendes Beispiel für die
dc
Verwendung ist:Wo
p
ist das erforderlich, um das Ergebnis der Berechnung zu drucken.bc
Auf der anderen Seite wird die vertraute Infix-Notation verwendet und ist daher intuitiver zu bedienen. Hier ist einbc
Anwendungsbeispiel:Welches verwenden?
bc
ist von POSIX standardisiert und wahrscheinlich auch portabler (zumindest auf modernen Systemen). Wenn Sie manuelle Taschenrechnerarbeiten ausführen, ist dies definitiv die Wahl (es sei denn, Sie sind ein Masochist).dc
kann immer noch verwendet werden, hier ist ein Fall, in dem die umgekehrte polnische Notation nützlich ist. Stellen Sie sich vor, Sie haben ein Programm, das einen Zahlenstrom ausgibt, den Sie summieren möchten, z.Dies zu tun
dc
ist sehr einfach (zumindest bei modernen Implementierungen, bei denen jeder Operator mehr als zwei Zahlen annehmen kann), da Sie nur ein+p
an den Stream anhängen müssen , z.Dies
bc
ist jedoch komplexer, da wir nicht nur+
zwischen die einzelnen Zahlen ein Trennzeichen setzen und sicherstellen müssen, dass sich alle in derselben Zeile befinden, sondern auch sicherstellen müssen, dass am Ende eine neue Zeile steht:quelle
gen_nums
Beispiel mit schrecklich komplex gedrehtbc
. Es könnte vereinfacht werden:gen_nums | paste -sd+ | bc
bc
war es nur ein Front-End-Tool, das diebc
Notation in die Notation von kompiliertedc
und in diese umwandelte,dc
um das Ergebnis zu erhalten. Unter FreeBSD gibt es noch das-c
Flag,bc
mit dem Sie noch dasdc
Notationsecho. For example
'3 * 4' | übersetzen können bc` ist unglaublich ähnlich zuecho '3 * 4' | bc -c | dc
. Siehe linux.die.net/man/1/bc und freebsd.org/cgi/man.cgi?query=bc&sektion=1dc
du? Unter Ubuntu 14.04 und OS X bearbeitet der+
Bediener immer genau zwei Werte vom Stapeldc
Nutzung:gen_nums_nonnegative | dc -e '0 0 [+?z1<m]dsmxp'
. Dieses Skriptdc
liest und addiert die Zahlen nacheinander in einer Schleife und gibt dann das Ergebnis aus. Beachten Sie den Hinweis zu negativen Zahlen.bc -c
macht man etwas komisches und anderes (und die-c
Flagge ist undokumentiert). Wenn ich versuche, es weiterzuleitendc
, erhalte ich eine Reihe von Fehlern (und die Ausgabe ohne Weiterleitungdc
ist sehr kryptisch@iK3:K4:*W@r\n@i
).Ein grundlegender Unterschied zwischen den beiden ist, dass
dc
die umgekehrte polnische Notation verwendet wird . Es werden explizite Befehle benötigt, um eine Ausgabe zu erzeugen.Sie können zwei Ganzzahlen hinzufügen,
bc
indem Sie sagen:und es würde
6
auf einer Linie von selbst produzieren. Indc
würden Sie jedoch sagen müssen:Sie können auch viel Spaß damit machen
dc
, z. B. finden Sie in meiner Antwort hier Informationen zum Produzierenmit
dc
.quelle
dc bcdc
ist ein Taschenrechner, währendbc
eine tatsächliche Sprache ist. Siehe ihre Manpages.Es kommt wirklich darauf an, was Sie letztendlich mathematisch machen wollen. Einige Operationen sind mit nicht möglich
dc
. Ich habe beide im Laufe der Jahre zusätzlich zu mehreren anderen Befehlszeilen-Rechner-Tools verwendet. Weitere Beispiele finden Sie unter " Solver für Befehlszeilenausdrücke? ".quelle
dc
ich ein Umkehrpolitur-Notationsrechner bin und ich immer HP Umkehrpolitur-Notationsrechner verwendet habe, bevorzuge ich die Verwendung vondc
,bc
aber ich würde sagen, dass beide immer noch verwendet werden, wenn Sie eine komplexe mathematische Berechnung durchführen müssen. Ich verwende sie oft, um Zahlen s / w Basis 10 in Basis 16 und Basis 2 umzuwandeln. Aber ich habe sie auch verwendet, um Spalten in Tabellendaten aus einem AWK-Skript heraus zu zählen.bc
war eine Sprache in dem Sinne, dass siedc
menschenfreundlich machte - nicht, dass sie mächtiger war. In diesen Tagen die Apps teilen libs, aberbc
wurde eine gerufene Sprache unddc
einen Rechner , weildc
Mathe tat undbc
sprach Mathematik - zudc
. Hier ist eine ältereman
Seite : Es wurde eine Sprache namensBC
[1] entwickelt, die Programme akzeptiert, die in höheren Sprachen geschrieben sind, und die von DC interpretierte Ausgabe kompiliert. Einige der nachfolgend beschriebenen Befehle wurden für die Compiler-Oberfläche entwickelt und sind für einen menschlichen Benutzer nicht einfach zu manipulieren.dc
ist auch eine Sprache. zB codegolf.stackexchange.com/a/47921/11259Meiner bescheidenen Meinung nach und in so wenigen Worten wie möglich unterscheidet sich GNU dc in drei Punkten von GNU bc:
1) Wenn die Mathematikbibliothek von bc kein Interesse hat, so viele Tastenanschläge wie möglich zu speichern (in Jan Łukasiewiczs Worten: eine Notation ohne Klammern), wenn elementare Arithmetik ausgeführt wird, um sich mehr auf das Wesentliche zu konzentrieren und Ablenkungen zu vermeiden.
2) In der Befehlszeile von Microsoft Windows 7 verbraucht GNU dc weniger Speicher (~ 320K) als GNU bc (~ 360K).
3) In GNU dc gibt es eine weitaus genauere Steuerung als in GNU bc, zum Beispiel fehlen Stapel- und Registerbefehle in GNU bc.
Version 1.07.1 win32 für beide ist unter https://embedeo.org/ws/command_line/bc_dc_calculator_windows/ verfügbar.
quelle