Kennt ihr bessere Alternativen zu GNU bc (basic calculator) für die Konsole?

Gast #6936588
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?
#6936629
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.
Gast #6936633
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.
#6936711
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.
#6936724
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)
Moderator #6936757
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.
Gast #6937370
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.
Gast #6937377
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.
Gast #6937395
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.
Gast #6937404
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/
Gast #6937428
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.
Gast #6937976
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.
Gast #6940114
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. ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren