Kategorie: IT
Technikbezogene Themen
Taschenrechner programmieren
Diesen Artikel habe ich erst 2015 aus dem alten CMS übernommen, der war 2012 noch nicht im Blog.
Ich weiß ehrlich gesagt nicht woher mein Faible für Taschenrechner kommt. Ich bin kein Mathematiker, und ehrlich gesagt kann ich mir auch nur den Bruchteil der Funktionen eines ‚großen‘ Taschenrechners schlüssig erklären. Aber die Dinger verarbeiten Einsen und Nullen, also muss auch da mal programmiert werden. 
Auf Rechner des Herstellers Hewlett Packard bin ich seinerzeit durch einen Emulator auf meinem Nokia N800 aufmerksam geworden. Der heißt Free42, und den gibt es für jedes halbwegs gängige Betriebssystem. Ungewohnt war erstmal die umgekehrte polnische Notation (RPN), das war ein Konzept das ich verstehen wollte. Der Gedanke mir so einen Rechner als Original zuzulegen ist in dem Moment gestorben als ich gesehen habe dass das emulierte Modell — ein HP-42S — immer noch für weit über 150 Euro den Besitzer wechselt. Gebraucht, wohlgemerkt. Der wird seit 1990 nicht mehr hergestellt. Das macht neugierig…
Nun denn, zum Spielen reicht sicher auch die Emulation. Und da ich — außer einem Basic-programmierbaren Sharp PC-1402 Anfang der 90er — nie einen programmierbaren Taschenrechner hatte musste auch das mal ausprobiert werden.
HP-42S
Zufällig hatte ich auch gleich ein passendes Problem für die Lösung: zur Zeit arbeite ich in einem Unternehmen in dem Kaffee mit der Geldkarte bezahlt wird. Also mit dem Chip auf der Bankkarte, den man vorher mit Geld aufladen muss. Aufladen kann man nur um ganze Euro-Beträge. Ein Kaffee kostet aber 26 Cent, und ich würde die Karte gerne sauber ‚leer trinken‘. Also muss ich zu meinem Restbetrag den passenden ganzzahligen Euro-Betrag finden damit eine Summe zustande kommt die sich durch 26 Cent teilen lässt. Ein Mathematiker kann das sicher in eine Formel gießen. Wie gesagt: ich bin keiner.Auf dem Gerät arbeitet man in der Programmiersprache FOCAL, also giesse ich das Problem in ein Programm:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
01 LBL "GELD" 02 0 03 STO 01 04 LBL B 05 RCL 01 06 100 07 + 08 STO 01 09 2 10 + 11 26 12 / 13 1 14 MOD 15 X!=0? 16 GTO B 17 RCL 01 18 100 19 / 20 .END. |
Dieses Programm ist alles andere als perfekt, reichte aber um mir zu zeigen wie man auf so einer merkwürdigen Hardware programmiert. Zur Funktionsweise: zunächst wird die Zahl 0 in Speicher 01 gespeichert. ‚LBL B‘ ist eine Sprungmarke. Dann wird der Wert aus Speicher 01 geholt, um 100 inkrementiert und wieder zurückgeschrieben. Der Wert steht jetzt noch bereit. Mit ‚2 +‘ wird 2 addiert (wir erinnern uns: umgekehrte polnische Notation. Zur Zahl 2 später mehr.), mit ’26 /‘ wird durch 26 Cent geteilt. Vom Ergebnis wird Modulo 1 gezogen. Ist das Ergebnis ungleich 0 wird zu Label B gesprungen, ansonsten wird der aktuelle Wert aus Speicher 01 geholt und durch 100 geteilt. Übrig bleibt der zu ladende Betrag in Euro.
Sicher kann man hier vieles verbessern. Die Zahl 2 ist der Restbetrag in Cent den ich noch auf der Karte habe, so eine ‚Magic Number‘ im Programm ist nicht schön. Außerdem kann es passieren — wenn ich beispielsweise doch mal 25 Cent am Parkautomaten investiert habe — dass mein Restbetrag eine ungerade Zahl ist. Da kann ich Euros addieren bis ich schwarz werde: es wird keine Summe rauskommen die glatt durch 26 Cent teilbar ist.
Aber immerhin: ich kann behaupten, schon einen Taschenrechner programmiert zu haben. 
HP-48G
Das hat eine Weile vorgehalten. Irgendwann hat mich das Fieber aber wieder gepackt, ich glaube weil ich für mein Android-Handy andere Emulatoren gefunden habe. Mit Droid48 oder go48g kann man einen HP-48G emulieren. Unter Linux nimmt man x48 um zu spielen.Der 48G hat gegenüber dem 42S eine Reihe von Vorteilen, einer der gewichtigsten dürfte der weitaus geringere Anschaffungswiderstand der Hardware sein. Das Ding wurde zwischen 1990 und 2003 produziert, 2012 habe ich 30 Euro für einen gebrauchten bezahlt.
Also das gleiche Problem nochmal:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
< < "Restguthaben:" "" INPUT OBJ-> 0 26 -> rest betrag tasse < < DO betrag 100 + 'betrag' STO UNTIL betrag tasse 100 * >= rest betrag + tasse MOD 0 == OR END IF rest betrag + tasse MOD 0 == THEN betrag "Aufladen" ->TAG rest betrag + "Guthaben neu" ->TAG rest betrag + tasse / "Tassen" ->TAG ELSE "Keine Loesung" END |
Na das sieht doch schon deutlich weniger nach Assembler aus. Die Sprache nennt sich Reverse Polish LISP (RPL) und wirkt auf den ersten Blick wesentlich erwachsener. Auf den zweiten Blick fallen Zeilen auf in denen sehr merkwürdige Folgen von Variablen, Konstanten und Operatoren stehen. Aber auch eine Abbruchbedingung wie
|
1 |
betrag tasse 100 * >= rest betrag + tasse MOD 0 == OR |
lässt sich erklären. Wenn man die umgekehrte polnische Notation im Hinterkopf hat und lange genug drüber nachdenkt kommt man in etwa bei sowas raus (mit reichlich Klammern, um wirklich eindeutig zu sein:
|
1 |
(betrag >= (tasse * 100)) OR (((rest + betrag) MOD tasse) == 0) |
Wenn also in der Schleife der zu ladende Betrag grösser als 100 Tassen wird, oder die Summe aus Rest- und Ladebetrag ohne Rest durch 100 teilbar ist wird abgebrochen.
Zugegeben: ich hätte vielleicht auch übersichtlicher programmieren können. Aber etwas Spaß muss ja auch dabei sein, oder? 
Und weiter?
Ich habe hier noch einen Rechner, günstig geschossen während ich auf der Suche nach dem HP-48G war. Das ist ein TI-Nspire von Texas Instruments. Der arbeitet zwar per Default nicht mit umgekehrter polnischer Notation, zeichnet sich aber durch andere Eigenschaften aus.Als erstes fällt wenn man das Ding in die Hand nimmt das Display auf. Riesengroß, und mit einer Auflösung von 320×240 Punkten. Das schreit geradezu danach, darauf Grafiken zu plotten. Diese Auflösung macht auch eine richtige grafische Benutzeroberfläche möglich. Die ist zwar etwas gewöhnungsbedürftig, funktioniert aber nach einiger Zeit wirklich gut. Darin enthalten sind dann sogar komplexere Anwendungen, wie zum Beispiel eine Tabellenkalkulation.
Auf dem Foto ist auch zu sehen dass dieses Modell über zwei Tastaturen verfügt. Wenn man gerade mal einen ‚einfachen‘ wissenschaftlichen Taschenrechner vorzieht steckt man einfach die zweite Tastatur in das Gerät. Deren Layout ist dem TI-84 plus nachempfunden, und sobald man einschaltet wird eben dieser emuliert. Vollständig. Einschliesslich der vergleichsweise dürftigen Displayauflösung. 
Programmiert habe ich diesen Taschenrechner noch nicht. Dabei verspricht das, spannend zu werden: als TI-84 plus unterstützt das Ding TI-Basic, als TI-Nspire sogar die ausgewachsene Skriptsprache Lua — die der eine oder andere vielleicht sogar vom großen Computer her kennt…
Siehe auch…
- hp42s.com – alles zum HP-42S
- hpcalc.org – alles zum HP-48G
- hpmuseum.org – Museum mit HP Taschenrechnern
- ticalc.org – alles zum TI-Rechnern
Taschenrechner programmieren
Heute habe ich mal was zu dem Thema auf der Schatenseite veröffentlicht. Das ist — ähnlich wie Mikrocontroller oder Smartphone — wieder eine komplett neue Plattform zum Programmieren. Andere Sprachen, andere Herangehensweise. Ich bin da alles andere als ein Experte. Bis jetzt zumindest. Aber was ich bislang gesehen habe hat mir schon gefallen. 
Steve Wozniak zu Apple / Samsung
Bloomberg hat ein Interview mit Steve Wozniak geführt, in dem er wirklich goldene Worte über den Ausgang des Gerichtsverfahrens Apple gegen Samsung sagt:
„I hate it,“ Wozniak said when asked about the patent fights between Apple and Samsung. „I don’t think the decision of California will hold. And I don’t agree with it — very small things I don’t really call that innovative.
I wish everybody would just agree to exchange all the patents and everybody can build the best forms they want to use everybody’s technologies.“
Er war schon immer der sympathischere Steve. 
Kindertablet
Interessant: Toys’r’us stellt mit dem Tabeo ein Android-Tablet vor mit dem Kinder sich ’sicher‘ im Netz bewegen können. Sicherheit ist relativ, aber die Idee an sich finde ich nicht schlecht.
NASA: Mini-Satelliten mit Android-Bordrechner
Klingt wie ein Aprilscherz, scheint aber wahr zu sein: die NASA baut zu Test- oder Demozwecken Mini-Satelliten die handelsübliche Handys als Bordcomputer benutzen. Verbaut sind je nach Modell HTC Nexus One oder Samsung Nexus S, ein kompletter Satellit kostet ab 3.500 Euro.
CDE ist Open Source
Kulturverstümmelung durch Apple, Teil II
Vor einem Monat habe ich noch geranted weil die Firma Apple es sich anmaßt, die Inhalte von Musikstücken zu verändern. Und während ich mich noch darüber aufrege — nein, nicht durchgehend, aber immer mal wieder — lese ich schon wieder was in die Richtung.
Diesmal ist es vielleicht nicht ganz so kraß, da Apple in diesem Fall nicht selbst die Inhalte verstümmelt. Trotzdem wird versucht Einfluss zu nehmen, und das wie ich finde in einem Maß das nicht toleriert werden kann.
Es geht um ein Buch der amerikanischen Autorin Holly Lisle. Normalerweise verfasst sie Romane, aber seit einigen Jahren auch Bücher für Schriftsteller. Offenbar hat sie ein Werk geschrieben in dem sie die Vermarktung von Büchern beschreibt. Natürlich gehört dazu Heutzutage auch der Umgang mit Internet-Händlern, und speziell in der Branche zuvorderst der Platzhirsch Amazon. Und genau den Teil hätte sie in den Augen von Apple offenbar besser unterschlagen…
Zumindest in Apples iBook-Store scheint die bloße Erwähnung der Konkurrenz ausreichend für den Ausschluss zu sein. Die ursprünglich enthaltenen Links — und das kann ich in Grenzen noch nachvollziehen — hatte sie auf Aufforderung schon gelöscht. Im nächsten Schritt verlangt Apple die nicht-Erwähnung eines der für den Inhalt des Buches wichtigsten Themengebiete.
Sie hat die einzig richtige Konsequenz gezogen und ihre Bücher aus dem iBook-Store genommen. Meine Hochachtung dafür!
Schlechteste Analogie zum schnellsten Rechner
In München ist letzte Woche ein neuer Supercomputer in Betrieb genommen worden, zur Zeit ist das der schnellste Rechner in Europa. Was fällt dem Bayerischen Rundfunk ein um die beeindruckende Geschwindigkeit von knapp 3 PetaFLOPs ein?

75.000 Mal um die Erde nageln…
Danke, so kann sich sicher jeder was drunter vorstellen.
Boodler: Monitoring mit Klanglandschaften?
Leider weiß ich nicht mehr genau wer mich auf Boodler gestoßen hat. Falls Du dies liest: Danke nochmal. 
Boodler ist ein ‚Open-Source Soundscape Tool‘. Das bedeutet, dass man damit Klanglandschaften erzeugen kann. Ein greifbares Beispiel dürfte ein Gewitter sein. Der Klang eines Gewitters besteht in erster Linie aus Regen, Donner und vielleicht Sturm. Boodler verfügt über Module die diese Klänge wiedergeben können. Und es gibt eben ein Modul das dafür sorgen kann dass es durchgehend regnet, es dabei mal mehr, mal weniger stark stürmt, und in natürlich wirkenden Abständen donnert. Ich war skeptisch, muss aber sagen dass die Ergebnisse halbwegs überzeugen.
Kurz zur Technik: Boodler ist in Python geschrieben. Die verschiedenen Module lassen sich einzeln herunterladen, dabei können heruntergeladene Ressourcen von mehreren Modulen benutzt werden. Ressourcen sind nach meinem bisherigen Verständnis die Sounds, sowie die ‚Agenten‘ die wissen wie man die Sounds wiederzugeben hat.
Dabei kann Boodler auch extern angesteuert werden. Es kann am Netz lauschen und Events von anderen Rechnern verarbeiten. Um im Beispiel zu bleiben: man kann es sicher mit vertretbarem Aufwand hinkriegen, das Gewitter von weitem zu steuern. Also Intensität von Regen und Sturm, und Auftreten des Donners.
OK, soviel dazu.
Jetzt bin ich ein großer Freund von Monitoring. Ich habe hier zu Hause aktuell ein Icinga im Einsatz, den Nachfolger von Nagios. Sicher kann man das einfach so weit kriegen dass es bei Boodler bescheid sagt und es gewittermäßig ordentlich krachen lässt wenn irgendwo ein Alarm auftritt. 
Im Moment habe ich anderes zu tun, und ein Dauergewitter würde dem einen oder anderen hier zu Hause auf den Keks gehen. Aber irgendwer sollte das dringend mal umsetzen, finde ich…





