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?
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.
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.
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.
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.
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)
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.
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!
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.
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.
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.
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.
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/
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.
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.
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.
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. ;-)
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.