Drangefrickelt ja, aber: Flash gibt's schon lange nicht mehr, DTMF ist inzwischen sauschnell, Caller ID hoert man ueberhaupt nicht. What's the problem?
Dafuer gibt es Traegerfrequenz. Gab's schon als wir noch in den Windeln lagen.
Drangefrickelt ja, aber: Flash gibt's schon lange nicht mehr, DTMF ist inzwischen sauschnell, Caller ID hoert man ueberhaupt nicht. What's the problem?
Dafuer gibt es Traegerfrequenz. Gab's schon als wir noch in den Windeln lagen.
Joerg schrieb:
Dann ist es aber eben kein POTS mehr, denn Du brauchst auf der Kundenseite ja auch wieder einen Umsetzer.
Christian
Ich dachte die Sprache wurde erfunden um damit Teleskope zu steuern, also sollte man sie bitte auch nur dafuer verwenden. :-)
Olaf
Ja, von Telefunken. Wurde aber nur bei DA-Mangel eingesetzt.
Christian Zietz schrieb:
Das TF-Endgerät besaß einen 9V-NC-Akku.
Wird in der Astronomie und der Raumfahrt auch sehr stark benutzt.
Chuck Moore (Erfinder von Forth, IIRC Elektronik Ing.) verdiente damals als Freelancer sein Geld damit, dass er (Radio) Teleskope für Astronomen steuerte. Jedes Observatorium hatte andere Computer und er fing immer wieder bei Null an mit Assembler... dann wussten die Astronomen auch immer nicht so genau, was sie eigentlich wollten, d.h. er war ständig am ändern... und verballerte reichlich Schlafenszeiten. Wenn er nämlich eigentlich ins Bett wollte, waren die Sternejäger immer hellwach und umgekehrt.
Er hatte einen Traum, wenn alle Rechner gleich wären, könnte er seine Programme einfach mitnehmen und woanders drauf aufbauen und weitermachen.
Ihm war schnell klar, dass er es niemals schaffen würde, dass alle Rechnerhersteller den gleichen Rechner bauen. Hat ja nichtmal im Ostblock gefunzt.
Also kam er auf die geniale Idee eine virtuelle Maschine zu entwickeln, auf der er nur noch die Emulation dieser VM auf das jeweilige Target anzupassen.
Die Forth *engine* ist extrem einfach, sie besteht aus lediglich *6* Elementen:
Parameterstack Parameterstackpointer SP Returnstack Returnstackpointer RP Instructionpointer IP Workregister WP
Das ist alles. Das Ganze läßt sich mit 30 kurzen Assemblerroutinen beschreiben. Diese sog. primitives sind das einzige, was man ändern muss, wenn man an eine neue CPU gerät. Soll 1 Tag - 2 Wochen dauern, bis das läuft. Bei der längeren Zeit werden dann einige Worte in Assembler neu codiert, damits schneller geht.
Die Forth Engine ist 16 bit breit (gibts inzwischen bis 64/128 bit)
Bei Maschinen, die nur 1 Stack haben nimmt man den für den Parameterstack, da braucht man samt pointer nix zu machen, die CPU kanns ja schon.
Bei einem Z80 emuliert man mit dem IX als RP den Returnstack, Workregister ist BC und Instruction pointer DE (oder wars umgekehrt? egal)
Bei einem 8031 ist das etwas mühsamer, der Processor Stack im internen RAM ist nicht gut zu gebrauchen, also macht man beide Stacks im externe Memory als Emulation. Kenne aber auch sehr kl. Forthe, die im 8031 komplett intern laufen.
Der Rest der Kernel Funktionen ist komplett in Forth geschrieben.
Das kleinste vollständige Forth hab ich seinerzeit für den Z80 gesehen. Passte in 2kB!
Weiterhin war Chuck auch schnell klar, dass er niemals eine Sprache entwickeln kann, in der alles für alles Eventualitäten schon definiert ist.
Er machte aus der Not eine Tugend und baute das Forth eben komplett als völlig und einfachst erweiterbare Sprache aus. Einfache Erweiterbarkeit ist gegeben, wenn man interaktiv arbeitet und das Forth während der Eingabe alles kompiliert. Das gibt ein direktes Feedback und gibt direkt an, wenn was flasch läuft oder fehlt. Damit man während der Eingabe kompilieren und neues definieren kann, kam er auf die Idee mit dem Dictionary, in dem alle Worte (so nannte er die benamsten Teile) verzeichnet sind und der integrierte Compiler aus den Wortnamen adressen erzeugen kann.
Die nächste geniale Idee ist es, dass er zur Ablaufsteuerung gefädelte Listen genommen hat. So brauchte er für jeden Aufruf eines Wortes nur die Addresse des Wortes abzulegen und nicht den kompletten CALL xxxx.
Dafür braucht er aber den Inner Interpreter, der diese Listen entfädelt.
Wenn man UPN nimmt, ist der Compiler extrem simpel...
Das geht recht flott, aber es gibt inzwischen auch Implementationen mit Subroutine_Threaded_Code. Die sind noch schneller, brauchen aber mehr Speicherplatz.
Dann die Idee mit 2 Stacks verhindert, das der Programmablauf mit Daten in Konflikt gerät. Er kann die Daten einfach auf dem Stack stehen lassen, die Returnadressen stehen auf dem eigenen Stack. Und schon braucht man Daten nicht mehr durch die Gegend zu werfen, sonder lässt sie solange auf dem Stack, wie man sie braucht. Nur was wirklich für die Nachwelt gebraucht wird, bewegt man in Variablen und zurück.
Damit kann er den Nachteil des etwas langsameren Inner-Interpreter im allgemeinen bei echten Anwendungen locker verschmerzen, im Gegenteil, einige Applikationen werden viel schneller.
Diese Datenschubserei sieht man bei vielen anderen Programmiersprachen nicht, aber es ist ein ziemlicher Overhead immer alles auf den Stack zu bringen und dann anschliessen braucht man Krämpfe um den Kram wieder zurück zu transportieren ohne dass man mit Adressen durcheinander kommt...
Es gibt noch viele weitere kleine Tricks, die das System schnell machen, weil wenig Daten bewegt werden. Aber das führt hier zu weit.
Nochmal zur Klarstellung: viele der Einzelelemente von Forth waren bekannt, aber die Kombination daraus finde ich genial und einmalig.
Der Name Forth sollte eigentlich Fourth heissen, weil Sprache der 4. Generation, aber der damalige IBM 1404(?) liess nur Namen mit maximal fünf Zeichen in Grossbuchstaben zu, also FORTH.
Die erste Programmierer, der Forth anwendete (ausser Chuck), war eine Frau: Elisabeth D. Rather, die dann 1973 die Forth Inc. gründete und bis heute immer noch dort ist.
Chuck ist weiter ständig als Freelancer durch die Gegend gereist und hat an dem Forth ständig gefeilt sowie auch einiges an Forth-Prozessoren entwickelt, die irre schnell sind und waren. Diese Forth Prozessoren haben keinen Assembler sonder Forth Elemente als Maschinensprache. Wie gesagt, 6 Elemente sind nur notwendig für die Forth engine. Er hat auch komplette CAD Systeme in Forth geschrieben um eben die HW für diese Chips zu entwickeln. Novix, ShaBoom sind nur 2 aus der langen Liste.
Saludos Wolfgang
Der ist aber billisch :-)
Die Uebertragung ausserhalb der letzten Meile geschieht eh meist digital, davon merkt der POTS Teilnehmer normalerweise genausowenig wie von TF Umsetzern. Entscheidend ist, dass er weiterhin preisguenstige Hardware benutzen kann.
Auch mein DSL kommt nur noch das letzte Stueckchen auf Kupfer daher, der Rest ist Lichtfaser.
Da gab's letztens auch einen interessanten Thread in comp.lang.forth. Chuck scheint recht gut Geld damit verdient zu haben. Die Webseite wo er seine Lizenzstreitigkeiten darlegte ist leider nicht mehr Online, aber war soviel, daß er sich mehrere nette Häuser davon bauen konnte, wie er schrieb.
Was macht der Forthprogrammierer wenn ein Embedded Controller gerade mal
128 Byte RAM hat und der Code ins Flash gebrannt werden muß? Mit eben mal ein Wort aufrufen wird's dann aber langwieriger - fast wie C.Ich bekomme bei
x = f(y,z);
keine Krämpfe. Stack? Was ist das?
Allein die Existenz des Forth "rot" Befehls steigert meinen Blutdruck.
Forth-Fans denken in UPN. Entweder man wird so geboren oder hats qualvoll gelernt. Anscheinend gibts dann keinen Weg mehr zurück. Naja, der H*mo Forth stirbt ja langsam aus.
Das ist Optimierung per Perversion. Forth hat nun mal das Nadelöhr Stack. Kommt wahrscheinlich oft genug vor um nützlich zu sein.
Es gibt auch Target Compiler, die nur noch drin lassen, was man unbedingt braucht. Ich hab schon div. verschieden Forthe in 8031 gesehen mit den oberen 128 byte RAM des RAM als Stack. 64 byte für jeden Stack. Iss nicht üppig, geht aber. Nur der Compiler im Target läuft da latürnich nicht mehr. Geht also nur mit einem 'Nabelschnur' Forth, wo der Compiler und der Outer-Interpreter auf einem PC liegen und im Target nur noch der Inner-Interpreter läuft.
Süchtig macht das nicht, aber es geht und ist immer noch bequemer als reiner Assembler.
Und mich würgst eher.
Das iss wie Asti Spumante Cincano mit Mövenpick Zitronen Sorbet aus dem Bauchnabel einer Chica :-)
Ich bin glücklich damit. DUP SWAP ROT OVER TUCK NIP sind für mich, was für andere Drugs & Aluhol sind. Mir gibt es ein Hochgefühl.
Saludos Wolfgang
Weder noch, es gibt sogar Leute, die das als Erleichterung ansehen.
Waum sollte man wieder zurück in die Programmier Steinzeit und Sklaverei?
Der H*mo Sabbelfutt scheint im kommen zu sein :-)
Langsam kommt der Zeitpunkt, wo ich NUHR zitieren muss:
Wenn man keine Ahnung hat, einfach mal die Fresse halten!
Du schwadronierst hier über Dinge, von denen Du absolut keine Ahnung hast. Nach eigenen Worten haste gerade mal ein Programm in Forth geschrieben und bist nun der grosse Zampano. Gröhl! Nimm mal die Bahnschwelle vorm Kopp weg, vielleicht gehts dann besser.
Ich hab Jahre gebraucht, um zu verstehen, wie genial einfach Forth intern arbeitet. Nicht dass man das muss, aber es erweitert ganz beträchtlich den Horizont.
Saludos Wolfgang
Wolfgang Allingerschrieb: "
Oh man, da läßt sich aber jemand richtig gut aufziehen =:-(). Ich glaub du nimmst das einfach viel zu persöhnlich. Und nur darum scheint es doch nur noch in dieser Diskussion zu gehen.
Sieh es einfach wie zwei gesprochene Sprachen. Chinesisch will man als Europäer auch nicht unbedingt lernen, aber dennoch kommen damit anscheinend mehr Menschen zum Ziel als z.B. mit Deutsch. Also was soll's.
Am Ende zählt ja doch nur, ob man das Ding erfolgreich verkaufen kann.
Dirk
Sag ich doch! Forth-Fans sind was Spezielles. Die sehen UPN als Erleichterung.
Forth *ist* aus der Minicomputer-Steinzeit. Das heißt nicht, daß das Konzept von Moore schlecht wäre; Es ist lediglich an Mangel angepaßt. Heute hat man einen PC und kann Compiler verwenden.
Seltsamerweise gibts unter Forth-Fans aggressive Missionare, die die Sprache in Verruf bringen. Vielleicht ists auch nicht so seltsam.
Wer missionieren will solls woanders machen. Deine Sprüche passen nicht hierher.
Nein. Ich hab noch *nie* was in Forth geschrieben. Ich kenn lediglich die Implementierung von Threaded Code und hab mir die Sprachdefinition vor 20 Jahren durchgelesen. Das reicht um zu verstehen welche Probleme Forth hat und insbesondere um einzuschätzen wie groß der Performancenachteil ist. Werkzeuge, die mir nur ein Zehntel der Performance liefern sind für mich unbrauchbar. Die primitive Struktur der Sprache ist ein weiterer Grund die Finger davon zu lassen.
Dafür hab ich damals etwa 30 Minuten gebraucht. Du bist nicht der Hellste, wa?
Mich kotzt die Zankerei mit Dir Missionar an. Aber wenn Du weiter große Töne spucken willst verlagern wir das in die Flame-Gruppe. Hier sollte langsam Schluß sein.
Wieso? Ich gehoere ja auch nicht zu den Anbetern der reinen Forth-Lehre, aber mein Taschenrechner kennt das Wort auch und ich finde es ganz praktisch.
Olaf
Das ist einfach die Optimierung fuer eine bestimmte Aufgabe. Aehnlich wenn du zum Beispiel ein Liste sortiert. Da finde ich PICK schlimmer.
Olaf
Die armen Chicas!
Daß es halt einfach Gebastel ist, was auch nicht unter allen Umständen funktioniert.
Und was genau ist da groß anders als an ISDN, außer halt, daß es Steinzeittechnik ist? :) Bei uns ist das zum Glück nicht bis zum Endnutzer vorgedrungen, und aus dem Fernbereich ist es auch abgeschafft, was man an der gestiegenen Qualität der Verbindungen bemerkt hat.
-ras
Eine der Errungenschaften der Hochsprache ist die Benennung von Speicherzellen mit Namen um deren konkrete Adresse ignorieren zu können. Das wird vom Gerödel auf dem Stack vereitelt.
Nö, ich weis ja was ich kann und mit Forth habe. Ich will nur verhindern, dass sich andere Leute durch so ein dämliches Leistungs und 'Durchblicker' Geschwafel des Zweigeist sich ins Boxhorn jagen lassen, und sich nicht mit Forth befassen wollen.
Die Hürden habe ich ja schon erklärt, aber das dummes Gesabbel über was, von dem man keine Ahnung hat, auch eine 3. Hürde ist, hab ich nun immerhin gelernt.
Also Hürde 3: Leute hütet Euch vor Alleskönnern, die schon nach 30min den absoluten Durchblick haben.
Nö, wie gesagt, meine Motivation ist eine andere. s.o.
Zweigeist hat sich ja nun deutlich als 30min Allesblicker geoutet.
Ja sehe ich auch so. Ich wollte nur mal aus dem kleinen Land Forth berichten, wo Leute eine merkwürdige Sprache sprechen und merkwürdige Dinge tun und unbegreifliche Leistungen fertig bringen.
Ja, ich hab diverse Projekte saniert, die vorher mit C an die Wand gefahren wurden. Auch umgekehrt gabs auch schon. Ich hab unter Forth den Prototypen entwickelt und/oder die HW samt Demo- und Testsoftware gangbar gemacht und die C-Truppe hat es dann vermasselt und nicht ans laufen bekommen, obwohl die HW alle Anforderungen erfüllte.
Schlechte C-Programmierer bringen nichts zum laufen und geben auf. Schlechte Forth-Programmierer bringen ihre Programm zum laufen und veröffentlichen das dann in der Vierten Dimension (4th Dimension).
Das heißt nicht, dass es nicht auch gute Forth Programmierer gibt :-)
Saludos Wolfgang
Have something to add? Share your thoughts — no account required.
Ask the community — no account required