Forum: PC Hard- und Software Kennt ihr bessere Alternativen zu GNU bc (basic calculator) für die Konsole?


von Nano (Gast)


Lesenswert?

Er muss nicht POSIX konform und auch kein Ersatz zu bc sein, aber er 
sollte in der Konsole funktionieren und auch unter Windows als CLI 
Programm verfügbar sein.

Was mir bei bc fehlt oder stört wären:

1. keine integrierte Hilfe.

2. Keine Möglichkeit bereits definierte Funktionen oder eingebaute 
mathematische Funktionen und Variablen einfach auszugeben. Zumindest 
habe ich keine gefunden. So ne Art "list functions" oder "list vars" 
wäre schon toll.

3. Zu viele Funktionen muss man sich selber zusammenbasteln, zwar gibt 
es für GNU bc fertige Bibliotheken zum Downloaden, die man nutzen kann, 
aber von Haus aus sind die nicht dabei. Will man bspw. nur pi haben, 
dann ist das nicht definiert, sondern man muss sich pi mit 4+a(1) erst 
berechnen lassen.

4. Man kann die Eingabe von Zahlen mit unterschiedlicher Basis nicht 
mischen. Man kann bspw. auf direktem Weg keinen Dezimalwert mit einem 
Hexwert addieren.
Man muss erst die Eingabe auf die Basis 16 stellen, also ibase=16 , dann 
kann man den Hexwert eingeben und bspw. in eine temp. Variable speichern 
und anschließend kann man ibase wieder auf Dezimaleingabe ändern und 
erst jetzt kann man den Dezimalwert mit dem in der Variable 
gespeicherten und nun in Dezimal geänderten Wert addieren.
Es wäre toll, wenn man einfach so etwas wie 0xFBFF + 42 schreiben 
könnte.
Oder bspw. o4 + 42 oder wie in C 04+42 für die Addition einer Oktalzahl 
mit einer Dezimalzahl.

5. Das im deutschen verwendete Komma bei Dezimalzahlen führt zu einem 
Syntax Fehler. Es wäre schön, wenn der Dezimalpunkt und das Komma bei 
der Eingabe gleichermaßen behandelt werden würde. Denn das macht das 
Copy&Pasten wesentlich einfacher. Zumal das Komma in GNU bc auch keine 
sonstige Funktion zu haben scheint.
Am sinnvollsten wäre es also, wenn einfach die LANG Umgebungsvariable 
ausgewertet werden würde. Am meisten stört das nämlich, wenn man die 
Zahlen mit dem Nummernblock eingeben will. Das Komma ist da bei einem 
deutschen Tastaturlayout in GNU bc nicht zu gebrauchen.

6. Man kann nicht auflisten, wie definierte Funktionen definiert sind. 
Also der Code aussieht. Und man kann Funktionen auch nicht editieren, 
sondern lediglich nur überschreiben.

7. Die Eingabe einer Matrix um sie bpsw. mit einem Skalar zu verrechnen 
geht auch nicht in bequem.

8. Variablen können nicht auf unveränderlich (immutable) gesetzt werden. 
Bzw. sind es auch nicht sobald man sie definiert hat. Das birgt die 
Gefahr, dass man sie unbeabsichtigt überschreibt. Das man sie 
überschreiben kann, kann aber auch Vorteile haben.


Ich werde mal testen, ob sich der Python Interpreter als Alternative zu 
bc missbrauchen lässt. Immerhin kann man bei dem Hex, Oktal und 
Dezimalwerte gemischt miteinander direkt verrechnen.
Wenn da zumindest nicht das Übel unter Windows 10 wäre, dass bei Aufruf 
von python in einem Terminal der MS Store aufgerufen wird, obwohl man 
python im Path hat.

Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?
Und benutzt ihr den Python Interpreter als Taschenrechner? Falls ja, wo 
sind eurer Meinung  nach da die Probleme?

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Ich verwende meistens den PhyxCalc
Oder auch gerne den http://qalculate.github.io/downloads.html

Es gibt auch noch paar andere die Speziell für Elektronik sind.

Wenn Interesse besteht schaue ich mal auf dem Note welcher das ist, 
welcher ich da meistens verwende.

von Rolf M. (rmagnus)


Lesenswert?

Vielleicht wäre GNU octave eine Alternative?

Nano schrieb:
> Am sinnvollsten wäre es also, wenn einfach die LANG Umgebungsvariable
> ausgewertet werden würde.

LANG wäre die falsche Variable. Das kümmert sich um die Sprache. Für das 
Zahlenformat ist LC_NUMERIC zuständig. Das wird aber von bc wohl 
ignoriert, weil dann Skripte, die es nutzen, abhängig vom im System 
eingestellen Zahlenformat mal funktionieren würden und mal nicht.

: Bearbeitet durch User
von Walter T. (Gast)


Lesenswert?

Nano schrieb:
> Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?

Matlab. Leider teuer. Auf dem Handy eine TI89-Emulation. Aus Gewohnheit.

Nano schrieb:
> Python [...]
> Wenn da zumindest nicht das Übel unter Windows 10 wäre, dass bei Aufruf
> von python in einem Terminal der MS Store aufgerufen wird, obwohl man
> python im Path hat.

Dagegen suche ich auch noch eine Lösung.

von Dirk B. (dirk_b182)


Lesenswert?

Ich benutze Octave unter cygwin. Erfüllt eigentlich alle von Dir 
genannten Anforderungen.

von Klaus H. (klummel69)


Lesenswert?

Walter T. schrieb:
> Nano schrieb:
>> Wenn da zumindest nicht das Übel unter Windows 10 wäre, dass bei Aufruf
>> von python in einem Terminal der MS Store aufgerufen wird, obwohl man
>> python im Path hat.
> Dagegen suche ich auch noch eine Lösung.

In Windows "Aliase für App-Ausführung verwalten" = "App execution 
aliases" öffnen und schalter bei Python installer auf Off.

Darauf achten, dass 
"C:\Users\Username\AppData\Local\Microsoft\WindowsApps\" im PATH nicht 
vor dem richtigen Python Suchpfad liegt.

von Klaus H. (klummel69)


Lesenswert?

Nano schrieb:
> 5. Das im deutschen verwendete Komma bei Dezimalzahlen führt zu einem
> Syntax Fehler.

Das ging mir auch auf den Keks. Inzwischen habe ich das 
Dezimaltrennzeichen in meinen Windows Versionen auf Punkt umgestellt. 
Jetzt verhalten sich Python, Excel und andere Tool überall gleich.

Meine Favoriten sind Python-Console und SpeQ-Mathematics (wird nicht 
mehr weiterentwickelt, läuft aber noch unter Windows 11)

von Mombert H. (mh_mh)


Lesenswert?

Wenn du interaktiv mit python arbeiten willst, nimm ipython. 5. ist 
allerdings unmöglich und 8. ist kompliziert bis unmöglich.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Nano schrieb:
> Ich werde mal testen, ob sich der Python Interpreter als Alternative zu
> bc missbrauchen lässt.

Ich mache das, sehe das aber nicht als Missbrauch :)

Beim Start von Python lasse ich ein paar nützliche Module automatisch
laden:

$PYTHONSTARTUP:
1
from math import *
2
import numpy as np
3
import matplotlib.pyplot as plt
4
from scipy import constants as const
5
from pprint import pprint as pp

Das erfüllt deine Anforderungen wie folgt:

1. help(x)

2. pp(locals()), auch Tab-Completion hilft oft

3. pi, e und viele andere Funktionen sind bereits in math definiert

4. 123 + 0xabc + 0o654 + 0b1100101 ergibt 3400

5. Du möchtest also statt sum(1.2,3.4,5.6) sum(1,2,3,4,5,5) schreiben?
   Schwierig ;-)

6. Das geht höchstens mit irgendwelchen Zusatzmodulen, die alle
   interaktiven Funktionsdefinitionen aufzeichnen.

7. m=np.matrix([[1,2], [3,4]]); 5*m

8. Das geht wohl eher nicht.

von Walter T. (nicolas)


Lesenswert?

Klaus H. schrieb:
> In Windows "Aliase für App-Ausführung verwalten" = "App execution
> aliases" öffnen und schalter bei Python installer auf Off.
>
> Darauf achten, dass
> "C:\Users\Username\AppData\Local\Microsoft\WindowsApps\" im PATH nicht
> vor dem richtigen Python Suchpfad liegt.

DANKE! Das hat mir geholfen!

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

Patrick L. schrieb:
> Ich verwende meistens den PhyxCalc
> Oder auch gerne den http://qalculate.github.io/downloads.html
>
> Es gibt auch noch paar andere die Speziell für Elektronik sind.
>
> Wenn Interesse besteht schaue ich mal auf dem Note welcher das ist,
> welcher ich da meistens verwende.

Mir ging es um einen Rechner in der Konsole.

von Nano (Gast)


Lesenswert?

Rolf M. schrieb:
> Vielleicht wäre GNU octave eine Alternative?

Ebenfalls ein GUI Programm.


>
> Nano schrieb:
>> Am sinnvollsten wäre es also, wenn einfach die LANG Umgebungsvariable
>> ausgewertet werden würde.
>
> LANG wäre die falsche Variable. Das kümmert sich um die Sprache. Für das
> Zahlenformat ist LC_NUMERIC zuständig. Das wird aber von bc wohl
> ignoriert, weil dann Skripte, die es nutzen, abhängig vom im System
> eingestellen Zahlenformat mal funktionieren würden und mal nicht.

Ah, okay, dann LC_NUMERIC.
Und wegen den Skripten, deswegen wäre es toll, wenn es bc gleichgültig 
wäre, wenn das nun ein Punkt oder ein Komma ist.

von Nano (Gast)


Lesenswert?

Walter T. schrieb:
> Nano schrieb:
>> Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?
>
> Matlab. Leider teuer. Auf dem Handy eine TI89-Emulation. Aus Gewohnheit.

Das ist genauso ein GUI Programm, außerdem will ich dafür kein Geld 
ausgeben nur um mal ne Taschenrechnerfunktion wie bei GNU bc zu haben.
So intensiv brauch ich das dann auch wieder nicht, dass eine vollwertige 
numerische Software nötig wäre.

3 GUI Programme wurden genannt, Leute, ich suche etwas, was in einer 
Konsole, also direkt in einem Terminal funktioniert.
Dass sollte also auch dann noch gehen, wenn man remote per ssh mit einem 
externen Rechner verbunden ist und ne Shell wie Bash oder CMD.EXE vor 
sich hat.


Klaus H. schrieb:
> Walter T. schrieb:
>> Nano schrieb:
>>> Wenn da zumindest nicht das Übel unter Windows 10 wäre, dass bei Aufruf
>>> von python in einem Terminal der MS Store aufgerufen wird, obwohl man
>>> python im Path hat.
>> Dagegen suche ich auch noch eine Lösung.
>
> In Windows "Aliase für App-Ausführung verwalten" = "App execution
> aliases" öffnen und schalter bei Python installer auf Off.
>
> Darauf achten, dass
> "C:\Users\Username\AppData\Local\Microsoft\WindowsApps\" im PATH nicht
> vor dem richtigen Python Suchpfad liegt.

Danke.

von Zero V. (Firma: Freelancer) (gnd)


Lesenswert?

Nano schrieb:
> ich suche etwas, was in einer
> Konsole, also direkt in einem Terminal funktioniert.

octave-cli

von Nano (Gast)


Lesenswert?

Yalu X. schrieb:
>
> $PYTHONSTARTUP:
>
1
> from math import *
2
> import numpy as np
3
> import matplotlib.pyplot as plt
4
> from scipy import constants as const
5
> from pprint import pprint as pp
6
>

> ...(gekürzt)

Danke, ich werde das mal mit Python ne Weile versuchen.

von Nano (Gast)


Lesenswert?

Zero V. schrieb:
> Nano schrieb:
>> ich suche etwas, was in einer
>> Konsole, also direkt in einem Terminal funktioniert.
>
> octave-cli

Ah, okay.  Danke.

Ich kannte es nur als QT und fltk GUI Programm.
Aber ja, wenn das direkt in der cli geht und auch unter Windows gehen 
sollte, dann ist das natürlich auch eine Option, die ich dann mal 
ausgiebig nutzen werde.

von Nur_ein_Typ (Gast)


Lesenswert?

Nano schrieb:
> Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?
> Und benutzt ihr den Python Interpreter als Taschenrechner? Falls ja, wo
> sind eurer Meinung  nach da die Probleme?

In meinem Fall kommt es immer darauf an... mal benutze ich den bc(1), 
mal python(1) und auch mal die Features [1], die mir die bash(1) bietet. 
All das sollte sich mit dem Windows Subsystem for Linux "WSL2" IMHO 
leicht installieren und nutzen lassen, aber ich kenne mich mit Windows 
nicht aus und kann daher nur vermuten.

Im Falle von Python ist es natürlich schön, daß ich meine Berechnungen 
in Funktionen und meine Ein- und Ausgangsgrößen in Variablen speichern 
und wiederverwenden kann, was bei längeren und / oder komplizierteren 
Berechnungen durchaus Tipparbeit spart.

Obendrein hat Python ein paar feine Features wie List- und 
Dict-Comprehensions und verschiedene andere Möglichkeiten, mit 
strukturierten Daten zu arbeiten, also etwa Builtins wie map(), sum() 
sowie die Funktionen aus den Modulen math und statistics, außerdem 
natürlich functools.reduce(). Und mit matplotlib, Pandas, Altair, Bokeh 
und ähnlichen lassen sich verschiedene Daten auch gleich hübsch 
visualisieren. Noch komfortabler wird es, wenn man anstelle des 
Standardinterpreters python(1) eine interaktiven Interpreter auf 
Steroiden benutzt, etwa ipython, bpython oder ptpython, die unterstützen 
dann auch gleich readline(3), Profiling, und ein paar andere nifty 
Features, die mir das Leben deutlich einfacher machen. Und je nachdem, 
wie die Daten vorliegen, kann Python die natürlich auch aus Datenbanken 
oder Dateien in CSV, JSON, YAML lesen... Das geht dann über einen 
einfachen Taschenrechner zwar schon hinaus, aber zuviele Features sind 
ja in der Regel kein allzu großes Problem...

[1] https://www.shell-tips.com/bash/math-arithmetic-calculation/

von Einer (Gast)


Lesenswert?

Code aufmachen (läuft eh immer), und STRG-SUPER-ALT-N und neuen 
Jupyter-Notebook aufmachen.

Hat den Vorteil, dass man seine Berechnungen gleich dokumentieren und 
abspeichern kann. Ein bisschen Text zwischen den Zellen und eine 
einleitende Erklärung ist nach ein paar Monaten Gold wert...

Wenn man sich erst daran mal gewöhnt hat, will man nichts anderes mehr.

von Walter T. (nicolas)


Lesenswert?

Octave, Matlab, Scilab lassen sich alle in der Konsole nutzen.

von rbx (Gast)


Lesenswert?

Nano schrieb:
> Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?

Ich finde den ghci ganz gut. Der Vorteil vom bc ist vor allem seine 
leichte Einbindung in Unterprogramme bzw. Shellskripts.
Tatsächlich könnte man (heutzutage) mal schauen, ob das mit den 
Alternativen nicht ähnlich gut geht - also z.B. Octave, runghc, 
c-Programm, python(1?,2?,3?) usw.

von Yalu X. (yalu) (Moderator)


Lesenswert?

rbx schrieb:
> Ich finde den ghci ganz gut.

Ja, den nehme ich hin und wieder auch, vor allem dann, wenn ich eigene
Funktionen und Operatoren definieren oder Berechnungen iterieren möchte.
Das geht in Haskell (insbesondere im interaktiven Modus) viel leichter
als in Python.

von Nur_ein_Typ (Gast)


Lesenswert?

rbx schrieb:
> Nano schrieb:
>> Was nehmt ihr als schnell zugänglichen Taschenrechner in einer Konsole?
>
> Ich finde den ghci ganz gut. Der Vorteil vom bc ist vor allem seine
> leichte Einbindung in Unterprogramme bzw. Shellskripts.
> Tatsächlich könnte man (heutzutage) mal schauen, ob das mit den
> Alternativen nicht ähnlich gut geht - also z.B. Octave, runghc,
> c-Programm, python(1?,2?,3?) usw.

Natürlich Python3, alles andere ist EOL. ;-)

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Nur_ein_Typ schrieb:
> Natürlich Python3, alles andere ist EOL. ;-)

Insbesondere Octave ist so etwas von Nicht-EOL.

von Nur_ein_Typ (Gast)


Lesenswert?

Andreas S. schrieb:
> Nur_ein_Typ schrieb:
>> Natürlich Python3, alles andere ist EOL. ;-)
>
> Insbesondere Octave ist so etwas von Nicht-EOL.

Es ist aber auch nicht der Kontext von "python(1?,2?,3?)" meines 
Vorposters, auf welchen ich mich bezogen habe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.