Nein, das muß nicht so sein. Bei SwiftForth gibt es da meines Wissens nach keinen Unterschied: wenn du ein neues Wort im interaktiven Modus eintippst, dann wird es auf dem PC compiliert und zum Target transferiert, genauso, als würdest du ein komplettes Projekt compilieren. Kann mich aber auch irren, aber technisch wäre das kein Problem. Ein wenig komplizierter wird es, wenn man über mehrere Wörter per Inlining usw. optimieren will, da der Compiler ja nicht weiß, ob jetzt noch neue Wortdefinitionen kommen oder ob der Anwender das Wort oder andere Wörter ausprobieren möchte.
Meist ist aber das Vorgehen sowieso folgendermaßen (zumindest ich habe so gearbeitet) : Man testet interaktiv ein paar Wörter, die man ggf. auch interaktiv definiert. Wenn was gut läuft, wird es in eine Textdatei übertragen, die per needs andere includieren kann, wenn es umfangreicher wird. Zwischendurch mal wird das aktuelle Projekt komplett neu compiliert und daran anschließend wieder interaktiv getestet und weiterentwickelt.
Der Vorteil der Forth-Interaktion gegenüber einem C-Debugger ist, daß man das Programm schrittweise aufbauen kann und insbesondere in einem einmal erreichten Systemzustand interaktiv testen kann. Wenn du bei (herkömmlichen) C Debuggern mal ein Breakpoint an der falschen Stelle gesetzt hast, oder an einer Stelle eine bestimmte Funktion aufrufen möchtest, dann steht man auf dem Schlauch und muß das System von vorne starten (im Falle des Funktionsaufrufs mit vorherigem Compilieren) und irgendwie zu diesem Punkt wieder hinkommen, was zeitaufwendig sein kann. Hat man das einmal ausprobiert, dann vermisst man diese direkte Interaktion sehr. Daher habe ich auch bei einem anderen Projekt einen interaktiven JavaScript-Interpreter mit Kommandozeile in ein C++ Programm integriert :-)