rausfinden ob gerade oder ungerade Zahl



  • ~fricky schrieb:

    aber 3-+-3 auch nicht. ausserdem ist ein vorzeichen kein operator, das macht ja nichts mit der zahl, sonder gehört zu ihr.
    🙂

    nicht? kann man vorzeichenoperatiren nicht überladen? das wäre aber doof. dann könnte ich meine langzaglklasse ja nicht mehr wie ints aussehen lassen.



  • volkard schrieb:

    ~fricky schrieb:

    aber 3-+-3 auch nicht. ausserdem ist ein vorzeichen kein operator, das macht ja nichts mit der zahl, sonder gehört zu ihr.
    🙂

    nicht? kann man vorzeichenoperatiren nicht überladen?

    nö, kennste nicht noch aus der schule die reellen zahlen? null in der mitte, links die negativen und rechts die positiven.
    🙂



  • ~fricky schrieb:

    volkard schrieb:

    ~fricky schrieb:

    aber 3-+-3 auch nicht. ausserdem ist ein vorzeichen kein operator, das macht ja nichts mit der zahl, sonder gehört zu ihr.
    🙂

    nicht? kann man vorzeichenoperatiren nicht überladen?

    nö, kennste nicht noch aus der schule die reellen zahlen? null in der mitte, links die negativen und rechts die positiven.
    🙂

    ah, verstehe.

    (-5) ist -5 //vorzeichen
    aber
    (- 5) ist operator-(5) //unärer minus-operator



  • ~fricky schrieb:

    ... upn ist 'ne eingabemethode, die mehr der maschine entgegenkommt, nicht der schreibweise, wie menschen berechnungen auf papier kritzeln.

    Du hast Dich also gar nicht damit auseinandergesetzt. Mit klammerfreien Darstellungen hat sich Gottlob Frege schon 1879 befaßt, es ist eher eine Sache der Schwerfälligkeit des Konventionalismus als der pragmatischen Betrachtung und hat mit Maschinenfreundlichkeit erstmal gar nichts zu tun. Warum brauchen wir einen Klammern- und Vorzeichenmüllhaufen, den wir genausowenig auf einen Blick auflösen können, wie die Maschine?

    ~fricky schrieb:

    sich mit zwei verschiedenen notationen, für ein und dieselbe sache, herumzuschlagen, ist daher nur was für echte freaks, aber nix für normale anwender. 🙂

    Also ist jemand, der Steno kann, ein Freak? Die Darstellung ist kompakter, wenn man sie zu lesen gelernt hat, gibt es einen flüssigeren Arbeitslauf und schnelleren Überblick.

    UPN ist so einfach wie nützlich.

    Die eigentlichen Freaks sind eher Leute, die einen sinnvollen Kalkül für 3+-++-4 suchen oder C-Wettbewerbe für das unübersichtlichste Programm veranstalten.



  • volkard schrieb:

    ah, verstehe.
    (-5) ist -5 //vorzeichen
    aber
    (- 5) ist operator-(5) //unärer minus-operator

    so ungefähr. bei einer taschenrechnereingabe kannst du z.b. machen: 3 + -5, dabei ist nur ein operator im spiel, das +. in programmiersprachen geht auch a = -b; das minus ist dann ein vorzeichen-umkehroperator.

    pointercrash() schrieb:

    Mit klammerfreien Darstellungen hat sich Gottlob Frege schon 1879 befaßt, es ist eher eine Sache der Schwerfälligkeit des Konventionalismus als der pragmatischen Betrachtung und hat mit Maschinenfreundlichkeit erstmal gar nichts zu tun.

    das wenigste, was mathematiker so austüfteln, hat in der realität einen hohen gebrauchswert. ausserdem schmeckt diese stackbasierte upn einer maschine ganz vorzüglich. ich glaube irgendwo mal was darüber gelesen zu haben.

    pointercrash() schrieb:

    Die Darstellung ist kompakter, wenn man sie zu lesen gelernt hat, gibt es einen flüssigeren Arbeitslauf und schnelleren Überblick.

    stell dir vor, es gäbe nur upn. was wäre dann 123*? 12*3 oder 1*23?. schon bräuchten wir ein zusätzliches trennzeichen und die kurze schreibweise wäre fast dahin.
    🙂



  • ~fricky schrieb:

    das wenigste, was mathematiker so austüfteln, hat in der realität einen hohen gebrauchswert. ausserdem schmeckt diese stackbasierte upn einer maschine ganz vorzüglich. ich glaube irgendwo mal was darüber gelesen zu haben.

    Achnee, kein Gebrauchswert? Deswegen folgen also die meisten shells den Prinzipien der polnischen Notation. Die Koinzidenz, daß Mensch und Maschine die freundlichen Häppchen gleichermaßen gut lesen können, bedeutet ja gerade, daß ein Mathematiker was Sinnvolles erdacht hat, das Datum der Erfindung ist der Beleg, daß der Mensch als Leser Ziel der Notation war.

    ~fricky schrieb:

    stell dir vor, es gäbe nur upn. was wäre dann 123*? 12*3 oder 1*23?...

    Zunächst einmal ein Stack- Error und zweitens kein UPN.
    Faktisch braucht es natürlich Trenner und erst mit komplexen Termen spielt UPN seine Stärken aus. Wer als Mensch lieber auf Krücken geht, als mal einen Rollstuhl auszuprobieren, weil ihm das zu maschinenfreundlich ist, hat noch lange keinen Grund, sich darüber lustig zu machen, daß andere Vorteile sehen und nutzen.



  • pointercrash() schrieb:

    Die Koinzidenz, daß Mensch und Maschine die freundlichen Häppchen gleichermaßen gut lesen können, bedeutet ja gerade, daß ein Mathematiker was Sinnvolles erdacht hat...

    soll das ein witz sein? wenn ich z.b. habe: sin(cos(13 * 4^3)) * 7 kann ich das, so wie's da steht, in einen taschenrechner eintippen und er spuckt mir das ergebnis aus. umgeformt nach upn muss ich zuerst die innere klammer eingeben (was schon ziemlich doof ist), was dann etwa so aussehen würde: 4|3|^|13||cos|sin|7|** das ist nur unwesentlich kürzer, dafür aber viel unleserlicher als das original und den anfang suchen muss man auch noch selber.
    🙂



  • ~fricky schrieb:

    soll das ein witz sein? wenn ich z.b. habe: sin(cos(13 * 4^3)) * 7 kann ich das, so wie's da steht, in einen taschenrechner eintippen und er spuckt mir das ergebnis aus. umgeformt nach upn muss ich zuerst die innere klammer eingeben (was schon ziemlich doof ist), was dann etwa so aussehen würde: 4|3|^|13||cos|sin|7|** das ist nur unwesentlich kürzer, dafür aber viel unleserlicher als das original und den anfang suchen muss man auch noch selber.

    Kein Witz, denn wenn Du in den Taschenrechner mal eine Klammer zuviel oder zuwenig reinhaust, kriegst Du kein Ergebnis oder sogar ein falsches, am Besten noch unbemerkt. Warum haben denn die "praktischen" AEL- TR denn alle memoryfunktionen? Weil kaum jemand einen längeren Term am Stück korrekt eingibt. Das Editieren einer Fehleingabe ist meist so grauenhaft gelöst, daß die meisten Benutzer lieber neu eintippen, aber diesmal vom Bruch zuerst nur den Nenner (speichern), dann den Zähler und zum Schluß durch "recall memory", aber hoffentlich nicht einmal zuviel oder zuwenig "=" gedrückt. Aha, die Leute sortieren von sich aus schon um, manche gehen sogar soweit, sich Zwischenergebnisse auf Zetteln zu notieren, mit allen Nachkommastellen - eigentlich ist das benutzerunfreundlicher Bullshit, aber die Leute haben sich daran gewöhnt.

    Der UPN- sortierte Term ist hingegen sehr handlich, auch für Umformungen, er steht ja links nach rechts entsprechend innen nach außen schon da. Bei jeder aufgelösten Operation hast Du ein Zwischenergebnis und Kontrolle. Nach einem Jahrzehnt FORTH und 20 Jahren HP- Taschenrechnern hab' ich mich so daran gewöhnt, daß ich zumindest bei Taschenrechnern nichts anderes anfasse - sogar den Windows- Rechner habe ich durch einen HP48G- Emulator getauscht. Es ist nur mangelnde Übung, UPN unübersichtlicher zu finden als AES.

    Und was PN anbelangt, ist das sogar für die Konsole allgemein akzeptiert. Also definitiv keine Freakshow.



  • pointercrash() schrieb:

    Kein Witz, denn wenn Du in den Taschenrechner mal eine Klammer zuviel oder zuwenig reinhaust, kriegst Du kein Ergebnis oder sogar ein falsches, am Besten noch unbemerkt. Warum haben denn die "praktischen" AEL- TR denn alle memoryfunktionen? Weil kaum jemand einen längeren Term am Stück korrekt eingibt. Das Editieren einer Fehleingabe ist meist so grauenhaft gelöst, daß die meisten Benutzer lieber neu eintippen, aber diesmal vom Bruch zuerst nur den Nenner (speichern), dann den Zähler und zum Schluß durch "recall memory", aber hoffentlich nicht einmal zuviel oder zuwenig "=" gedrückt. Aha, die Leute sortieren von sich aus schon um, manche gehen sogar soweit, sich Zwischenergebnisse auf Zetteln zu notieren, mit allen Nachkommastellen - eigentlich ist das benutzerunfreundlicher Bullshit, aber die Leute haben sich daran gewöhnt.

    ok, ich sehe ein, dass bei den uralt-rechnern mit 7segment-LED displays, upn vorteilhafter ist, wenn's ums ausbessern von tippfehlern geht. aber spätestens seit es matrixdisplays gibt, d.h. der ganze term sichbar ist, man hin-, herscrollen und editieren kann, bringt upn rein gar nichts mehr.
    🙂



  • ~fricky schrieb:

    ok, ich sehe ein, dass bei den uralt-rechnern mit 7segment-LED displays, upn vorteilhafter ist, wenn's ums ausbessern von tippfehlern geht. aber spätestens seit es matrixdisplays gibt, d.h. der ganze term sichbar ist, man hin-, herscrollen und editieren kann, bringt upn rein gar nichts mehr.

    Nene, auch jetzt noch. Klammer zuviel oder zuwenig? Wenn das Ding gut ist, zeigt es Dir wenigstens an, wo es auf's Maul gefallen ist. Dann geht es ans Klammernzählen und die Stelle finden, wo sie eigentlich weg- oder hingehörte, hoffentlich machst Du's diesmal richtig 🙄 . Ein Term, der sich über mehr als zwei Zeilen erstreckt, ist so fast nicht mehr zu bändigen 😡 .
    Wenn Du hingegen bei UPN die instant evaluation abgeschaltet hast, ist er beim Auflösen sofort genau da, wo der Hund steckt, da gibt es keine Mehrdeutigkeiten. Daß auch diese Lösung vom mehrzeiligen Display profitiert, ist wohl logisch.

    Daß man übrigens über UPN auch ganz prima formal rechnen kann, hast Du wohl auch schon gewußt?

    Also bitte tu' mir das nicht als veralteten Quatsch oder Snobzeugs ab.



  • pointercrash() schrieb:

    Daß man übrigens über UPN auch ganz prima formal rechnen kann, hast Du wohl auch schon gewußt?

    wusste ich nicht, hab's mir aber schon gedacht, dass dem upn-erfinder nicht nur daran gelegen war, klammern aus der welt zu schaffen. bestimmt gibt's für upn-ausdrücke vereinfachungsregeln und andere tricks, wie bei algebraischen ausdrücken auch.

    pointercrash() schrieb:

    Also bitte tu' mir das nicht als veralteten Quatsch oder Snobzeugs ab.

    naja, in anbetracht der damaligen, leistungsschwachen hardware, war upn damals für taschenrechner sicherlich eine gute idee. aber heute, wo (übertrieben gesagt) jedes prepaid-handy dir 'ne kurvendiskussion hinplotten kann, sehe ich keinen grund mehr für upn. dass upn u.ä. für mathematiker interessant sein kann, will ich aber nicht abstreiten.
    🙂



  • ~fricky schrieb:

    ... aber heute, wo (übertrieben gesagt) jedes prepaid-handy dir 'ne kurvendiskussion hinplotten kann, sehe ich keinen grund mehr für upn. dass upn u.ä. für mathematiker interessant sein kann, will ich aber nicht abstreiten.

    Das Konzept ist nicht nur für Mathematiker interessant, in der Praxis liefern auf UPN basierende lexikale Sprachen unglaublich kompakte Lösungen. Und in puncto Kryptik kann es C mit den schrägsten Vögeln aus der Ecke durchaus aufnehmen.
    Mag schon sein, daß das auf den ersten Blick abschreckend aussieht und auf den zweiten vermutlich auch noch, aber wenn man da mal reingefunden hat, wird man die fehlenden Möglichkeiten im "Rest der Welt" schmerzlich vermissen. Hat aber mit lahmer Hardware eigentlich weniger zu tun, die Verknüpfung entsteht nur, weil man das links liegengelassen und seit einem Jahrzehnt nicht mehr echt gepflegt hat. Unkomfortabler sind UPN- Geschichten jedenfalls nicht grundsätzlich.



  • pointercrash() schrieb:

    Das Konzept ist nicht nur für Mathematiker interessant, in der Praxis liefern auf UPN basierende lexikale Sprachen unglaublich kompakte Lösungen.

    hast du mal'n beispiel, wo upn heute noch sinnvoll eingesetzt wird?

    pointercrash() schrieb:

    Hat aber mit lahmer Hardware eigentlich weniger zu tun...

    doch, die damaligen taschenrechner hatten nämlich keine mikroprozessoren drin, sondern asics. alles war hartverdrahtet mit flipflops und logik-gattern. eine auswertung für normale, arithmetische ausdrücke mit sowas zu entwickeln, ist nicht lustig, weil u.a. klammern und operatoren-rangfolge beachtet werden müssen. bei upn fällt das alles weg, weil's der benutzer selber machen muss. und, du weisst ja wie das ist: bei hohen stückzahlen zählt jedes schräubchen, das man einsparen kann. deshalb war upn damals das zaubermittel schlechthin, um die herstellungskosten gering zu halten. wenn den kunden diese einschränkung auch noch als feature verkauft wird, ist die sache perfekt.

    btw, allein die methode, mit der taschenrechner winkelfunktionen, quadratwurzeln, logarithmen, etc. berechnet haben (eine wahrhaft technische meisterleistung), kennt heute kaum jemand mehr.
    🙂



  • ~fricky schrieb:

    hast du mal'n beispiel, wo upn heute noch sinnvoll eingesetzt wird?

    Wurde schon erwähnt, z.B. RPL (Reverse Polish Lisp) ist die bequemste Möglichkeit, mit Termen zu hantieren, die ich kenne.
    Aber auch FORTH ist der Erwähnung wert. Einen FIG- Port sollte man in drei, vier Tagen hinkriegen, wie lange schustern die Compilerbauer an einen GCC- Port hin? Beide sind dann gleichermaßen unperformant, wenn man den Prozessor besser nutzen will, muß man bei FORTH zwei, drei Wochen investieren, bei GCC reichen Jahre oft nicht aus.

    ~fricky schrieb:

    doch, die damaligen taschenrechner hatten nämlich keine mikroprozessoren drin, sondern asics. alles war hartverdrahtet mit flipflops und logik-gattern.

    Die allerersten waren sowieso analog aufgebaut (mit OPVs als Rechenwerk). Die ersten digitalen Generationen vielleicht, mein TI-58C hatte bereits einen Prozessor, es gab 1978 schon keinen technisch zwingenden Grund mehr, Upperclass- Rechner mit UPN auszustatten. Tatsächlich ist es so, daß HP Ende der 80er, Anfang der 90er extra RPL entwickelt, aber dem ersten Modell ein algebraisches MMI drübergeklatscht hatte und erst später RPL zugänglich gemacht, wohl nicht grundlos. Obwohl RPL auch algebraische Ausdrücke auswerten kann, bevorzuge ich UPN. Nachzulesen bei http://www.hpmuseum.org/rpl.htm.

    ~fricky schrieb:

    btw, allein die methode, mit der taschenrechner winkelfunktionen, quadratwurzeln, logarithmen, etc. berechnet haben (eine wahrhaft technische meisterleistung), kennt heute kaum jemand mehr.

    Meine ASIC- Abschlußarbeit war ein trig. Cordic- Automat (http://de.wikipedia.org/wiki/CORDIC) und in meiner VHDL- Sammlung gammelt auch einer 'rum, hab' mal in der ELRAD drüber artikelt. Keine Angst, das Zeug hat keiner vergessen, wir benutzen es nur so gedankenlos wie Papiertaschentücher.

    Bevor man nicht intensiv mit UPN- Sprachen gespielt hat, kann man kaum ermessen, wie bequem damit vieles wird.



  • pointercrash() schrieb:

    z.B. RPL (Reverse Polish Lisp) ist die bequemste Möglichkeit, mit Termen zu hantieren, die ich kenne.

    hab' mir gerade die beispiele angeschaut: http://www.hpmuseum.org/rpl.htm
    das sieht ja absolut krank aus. RPL werde ich demnächst vorschlagen, wenn mal wieder jemand 'ne einsteigersprache sucht und 'scheme' schon genannt wurde (nee, nicht wirklich).

    pointercrash() schrieb:

    Die allerersten waren sowieso analog aufgebaut (mit OPVs als Rechenwerk).

    analoge taschenrechner mit op-amps? hihi, die operanden wurden wohl mit trimmpotis eingegeben und richtige ergebnisse gab's nur, wenn die batterie randvoll war. aber wenigstens konnten solche rechner die schlimmsten differentialgleichungen x'ter ordnung in windeseile ausrechnen. ich kenne analogrechner jedenfalls nur als riesige kisten aus grauer vorzeit.

    pointercrash() schrieb:

    Meine ASIC- Abschlußarbeit war ein trig. Cordic- Automat (http://de.wikipedia.org/wiki/CORDIC) und in meiner VHDL- Sammlung gammelt auch einer 'rum...

    :daumen hoch: ist das cordic-design auf opencores etwa von dir?
    🙂



  • ~fricky schrieb:

    das sieht ja absolut krank aus.

    pointercrash() schrieb:

    ... ist die bequemste Möglichkeit, mit Termen zu hantieren, die ich kenne.

    ~fricky schrieb:

    RPL werde ich demnächst vorschlagen, wenn mal wieder jemand 'ne einsteigersprache sucht und 'scheme' schon genannt wurde ...

    Das nicht, aber wer würde für ein Mathesystem ernsthaft C/C++, Java&Co vorschlagen? Das ist wie von hinten durchs Knie ins Hirn geschossen.

    ~fricky schrieb:

    analoge taschenrechner mit op-amps? hihi, die operanden wurden wohl mit trimmpotis eingegeben und richtige ergebnisse gab's nur, wenn die batterie randvoll war.

    Quatsch, damals gab's auch schon rail-to-rail OPVs, virtuelle Masse sowieso. So wie bei beschränkter Bitbreite reale Ergebnisse nur bedingt richtig sind, war das auch damals so. Nur, bei Eingabe ist ein DA- Wandler und am Eingang ein AD-Wandler am Ausgang. Hab' den HP meines Onkels erst in "totem" Zustand geschenkt bekommen, aber im Kopf, daß eine eingegebene '6' meist eine '6.000001" oder so war.

    ~fricky schrieb:

    aber wenigstens konnten solche rechner die schlimmsten differentialgleichungen x'ter ordnung in windeseile ausrechnen.

    Kann ich nicht beschwören, aber wenn man mit dem Ding gerechnet hat, war das Ergebnis immer "sofort" da.

    ~fricky schrieb:

    :daumen hoch: ist das cordic-design auf opencores etwa von dir?

    Daumen runter, umgekehrt: das opencores- script hat sich mit irgendeinem Paket auf meine Platte verirrt, funktioniert aber wirklich gut. Ich habe als Student auf 'ner Mentor- Station einen Cordic- Automaten entwickelt, der allerdings nur die trigonometrischen Dinge konnte (kein Log usw.). Dann kam jemand auf mich zu, der das unter FORTH implementiert hatte, das war der Artikel (als Co- Autor). Zuletzt habe ich die CORDIC- Mühle auf einem MELPS77 in nativem ASM realisiert, bevor ich das per VHDL fertig gebacken (und schöner, als ich's je gemacht hatte) serviert bekam. Wollte nur klarmachen, daß zumindest da nichts verlorengegangen ist, ich zieh' per drag&drop das Script ins Projekt und denk' nicht weiter drüber nach.

    Papiertaschentuch halt. Irgendwie ist es nimmer so, daß wir Zwerge sind, die auf den Schultern eines Riesen sitzen, sondern Zwerge, die auf einem Berg toter Zwerge stehen.

    Aber wir sind weit OT, wir haben uns da von der Materie entfernt, als ich Virodingsda UPN als Eingabeschema vorgeschlagen habe. Dir lege ich nahe, mal RPL näher anzusehen, wenn Dir mal fad' ist. Dir gefällt's derzeit nicht, ich find's immer noch logisch und konsequent, machen wir ein Hakerl drunter und lassen den Thread sein ...


Anmelden zum Antworten