Gibt es eine Programmiersprache, die vollständig im interaktiven Modus programmiert werden kann, ohne dass Dateien geschrieben oder interpretiert werden müssen, die interpretiert oder kompiliert werden? Denken Sie vielleicht an etwas wie IRB für Ruby, aber an ein System, mit dem Sie das gesamte Programm über die Befehlszeile schreiben können.
Smalltalk kann vollständig interaktiv programmiert werden, aber ich würde die Smalltalk-Eingabeaufforderung nicht als "Befehlszeile" aufrufen. Die meisten Lisp-Umgebungen sind auch so. Auch Postscript (wie in Druckern), wenn Speicher dient.
Willst du damit sagen, dass du ein Programm schreiben willst, während du nie mehr Code siehst, als in den Scrollback-Puffer deines Befehlsfensters passt?
Ich nehme an, dass Sie nach etwas suchen, das ähnlich wie BASIC funktioniert (booten Sie zu einer BASIC-Eingabeaufforderung und starten Sie die Programmierung).
IPython ermöglicht es Ihnen, dies intuitiv zu tun. Unix-Shells wie Bash verwenden dasselbe Konzept, aber Sie können Ihre Arbeit nicht so intuitiv wie mit IPython wiederverwenden und speichern. Python ist auch eine weit bessere Allzwecksprache.
Bearbeiten: Ich würde einige Beispiele eingeben und einige Links bereitstellen, aber die Interaktives IPython-Tutorial scheint das viel besser zu machen, als ich es könnte. Gute Ausgangspunkte für das, was Sie suchen, sind die Abschnitte in der Quelle Code-Handling-Tipps und leichte Versionskontrolle . Beachten Sie, dass dieses Tutorial nicht genau beschreibt, wie alles genau zu tun ist, aber es bietet einen Ausgangspunkt, um die interaktiven Funktionen der IPython-Shell zu verstehen.
Sehen Sie sich auch die IPython "magische" Referenz an Es bietet eine Vielzahl von Dienstprogrammen, die Dinge tun, die speziell für das sind, was Sie tun möchten, und ermöglicht es Ihnen, ganz einfach Ihre eigenen zu definieren. Dies ist sehr "Meta", aber das Beispiel, das zeigt, wie man eine IPython-magische Funktion erstellt, ist wahrscheinlich das prägnanteste Beispiel einer "vollständigen Anwendung", die in IPython integriert ist.
Es gibt immer Lispeln, die ursprüngliche Alternative zu Smalltalk mit dieser Eigenschaft.
Die einzige Möglichkeit, das Schreiben von Dateien zu vermeiden, besteht darin, sich vollständig in eine laufende interaktive Umgebung zu bewegen. Wenn Sie so programmieren (also interaktiv wie in IRB oder F # interaktiv), wie verteilen Sie Ihre Programme? Wenn Sie die interaktive IRB- oder F # -Konsole beenden, verlieren Sie den gesamten Code, den Sie interaktiv geschrieben haben.
Smalltalk (siehe moderne Implementierung wie Squeak ) löst das und ich bin mir keiner anderen Umgebung bewusst, in der Sie sich befinden könnte Dateien vollständig vermeiden. Die Lösung besteht darin, dass Sie ein Abbild der laufenden Umgebung (einschließlich Ihres interaktiv erstellten Programms) verteilen. In Smalltalk werden diese Bilder genannt.
Wie bereits erwähnt, hat Python einige gute interaktive Shells, ich würde bpython für Starter anstelle von ipython empfehlen, der Vorteil von bpython ist hier die Unterstützung für Autovervollständigung und Hilfe-Dialoge, die Ihnen helfen zu wissen, welche Argumente die Funktion akzeptiert oder was tut (wenn es Docstrings hat).
Dies ist wirklich eine Frage über Implementierungen, nicht Sprachen, sondern
Smalltalk (probieren Sie die Squeak Version aus) behält Ihre ganze Arbeit in einem "interaktiven Arbeitsbereich", aber es ist grafisch und nicht in Richtung der Befehlszeile ausgerichtet.
APL, das zuerst auf IBM 360 und 370 Systemen implementiert wurde, war vollständig interaktiv und verwendete eine Befehlszeile auf einer modifizierten IBM Selectric Schreibmaschine! Ihre APL-Funktionen wurden in einem "Arbeitsbereich" gespeichert, der keiner gewöhnlichen Datei ähnelt.
Viele, viele Sprachimplementierungen sind mit reinen interaktiven Kommandozeilen-Interpretern ausgestattet, wie zB Standard ML of New Jersey , aber weil sie keinen persistenten Namespace bieten (dh, wenn Sie das Programm verlassen, ist Ihre gesamte Arbeit verloren), glaube ich nicht, dass sie wirklich zählen sollten.
Interessanterweise haben die Hauptakteure hinter Smalltalk und APL (Kay und Iverson) beide Turing Awards gewonnen. (Iverson erhielt seinen Turing-Preis nachdem die Amtszeit in Harvard verweigert wurde.)
TCL kann komplett interaktiv programmiert werden, und Sie können neue tcl-Procs (ohne sie zu speichern) neu definieren (oder bestehende definieren) zu einer Datei.
Natürlich, wenn Sie die gesamte Anwendung entwickeln und irgendwann möchten Sie in eine Datei speichern, sonst verlieren Sie alles. Mit TCLs introspectiven Fähigkeiten ist es relativ einfach, einen Teil oder den gesamten aktuellen Interpreter-Status in eine tcl-Datei zu schreiben (ich habe einen Proc geschrieben, um dies vorher einfacher zu machen, aber meistens würde ich nur in der Datei an erster Stelle entwickeln und haben eine Funktion in der Anwendung für Ressourcen selbst, wenn sich ihre Quelle ändert).
Die meisten Variationen von Lisp machen es einfach, Ihr interaktives Arbeitsprodukt als Programmdateien zu speichern, da Code nur Daten ist.
Charles Simonyis Konzept der intentionalen Programmierung mag zwar auch dort sein, aber es ist nicht so, als könnte man das noch kaufen. Das Intentional Workbench-Projekt könnte eine Erkundung wert sein.
Jemand hat Forth bereits erwähnt, aber ich möchte etwas über die Geschichte von Forth erzählen. Traditionell ist Forth eine Programmiersprache, die ein eigenes Betriebssystem ist. Das traditionelle Forth speichert das Programm direkt auf Plattensektoren, ohne ein "echtes" Dateisystem zu verwenden. Es könnte sich leisten, das zu tun, weil es nicht direkt auf der CPU lief, ohne ein Betriebssystem, so dass es nicht nett gespielt werden musste.
In der Tat haben einige Implementierungen Forth als nicht nur das Betriebssystem, sondern auch die CPU (eine Menge moderner Stack-CPUs sind in der Tat als Forth-Maschinen entwickelt).
In der ursprünglichen Implementierung von Forth wird Code immer dann kompiliert, wenn eine Zeile eingegeben und auf der Festplatte gespeichert wird. Dies ist machbar, weil Forth sehr einfach zu kompilieren ist. Sie starten einfach den Interpreter, spielen mit Forth definierenden Funktionen und beenden den Interpreter einfach. Wenn Sie das nächste Mal den Interpreter erneut starten, sind alle Ihre vorherigen Funktionen noch vorhanden. Natürlich funktionieren nicht alle modernen Implementierungen von Forth so.
Es ist ein funktionales Lisp auf der JVM. Sie können sich mit einem REPL-Server namens nREPL verbinden, und von dort aus können Sie Code in eine Textdatei schreiben und interaktiv laden, während Sie fortfahren.
Clojure gibt Ihnen etwas, das dem Testen von interaktiven Einheiten ähnelt.
Ich denke, Clojure ist interaktiver als andere Lisps, weil es das funktionale Paradigma stark betont. Es ist einfacher, Funktionen auszutauschen, wenn sie rein sind.
Der beste Weg, es auszuprobieren, ist hier: Ссылка
ELM ist wahrscheinlich der interaktivste, den du bekommen kannst, den ich kenne. Es ist eine sehr reine funktionale Sprache mit einer Haskell ähnlichen Syntax. Das Besondere ist, dass es sich um ein reaktives Modell handelt, das Hot-Swapping (Ändern von Code (Funktionen oder Werten)) von Code ermöglicht. Das reaktive Bit macht es, dass jedes Mal, wenn Sie eine Sache ändern, alles neu bewertet wird.
Jetzt wird ELM zu HTML-CSS-JavaScript kompiliert. Du wirst es also nicht für alles verwenden können.
ELM bietet Ihnen etwas, das dem interaktiven Integrationstest ähnelt.
Der beste Weg, es auszuprobieren, ist hier: Ссылка
Tags und Links programming-languages