Forum: PC-Programmierung Lua IDE um schnell mal was auszuprobieren


von Bri (bri)


Angehängte Dateien:

Lesenswert?

Vielleicht ist es euch auch schon mal so wie mir gegangen, das ihr nur 
mal schnell einen kleinen Algorithmus ausprobieren wolltet und dann 
festgestellt habt, das ihr mehr Zeit in das drumherum (GUI etc.) 
investiert habt, als in die Programmierung des Algorithmus.

Ich hab mir jetzt zu dem Zweck eine kleine IDE für Lua programmiert und 
besonderen Wert darauf gelegt, dass man schnell und mit wenig 
Programmieraufwand Pixelgrafik, Vektorgrafik, Diagramme und Tabellen 
erzeugen kann.

Für die, die Lua noch nicht kennen: Lua ist eine leicht zu lernende, 
einfache Skriptsprache mit an Pascal angelehnter Syntax. Unter den 
Skriptsprachen ist sie eine der schnellsten, was die Ausführung von 
Programmen angeht.

Falls ihr euch die Lua IDE mal anschauen wollt, hier ist der Link:

http://www.aaabbb.de/Lua-Quick-Try-Out/Lua-Quick-Try-Out.html

Die Lua IDE ist kostenlos und steht unter der GPLv3. Den Sourcecode und 
Installer für Windows und Linux könnt ihr auf der Seite downloaden. Die 
EXE ist statisch mit der QT Bibliothek gelinkt. Das macht sie zwar etwas 
größer, aber es sollte keine Probleme bei der Installation geben.

: Verschoben durch Admin
von Simon K. (simon) Benutzerseite


Lesenswert?

T. B. schrieb:
> Vielleicht ist es euch auch schon mal so wie mir gegangen, das ihr nur
> mal schnell einen kleinen Algorithmus ausprobieren wolltet und dann
> festgestellt habt, das ihr mehr Zeit in das drumherum (GUI etc.)
> investiert habt, als in die Programmierung des Algorithmus.
>
> Ich hab mir jetzt zu dem Zweck eine kleine IDE für Lua programmiert und
> besonderen Wert darauf gelegt, dass man schnell und mit wenig
> Programmieraufwand Pixelgrafik, Vektorgrafik, Diagramme und Tabellen
> erzeugen kann.

Die Logik versteh ich nicht. Eine kleine GUI zu basteln ist also 
aufwendiger als eine komplette IDE?

Damals(tm) hätte man zum Testen von Algorithmen ganz einfach ein 
Konsolenprogramm geschrieben. Ein paar printfs und scanfs und fertig.

von Bri (bri)


Angehängte Dateien:

Lesenswert?

@Simon
Wenn ich nur einmal etwas ausprobieren wollen würde, wäre die GUI zu 
programmieren schneller, keine Frage. Du wirst es vielleicht nicht 
glauben, aber ich habe meine Lua IDE schon mehr als einmal verwendet, um 
was auszuprobieren. Z.B. auch für die Simulation von einem digitalen 
Regelalgorithmus (Bild). Und dabei kommt man mit printf() bezüglich der 
Anschaulichkeit des Ergebnisses doch recht schnell an Grenzen.
Ich hatte das Programm schon mal an zwei Leute weitergegeben, die das 
ganz nützlich fanden. Also dachte ich mir, ich stell das der 
Allgemeinheit zur Verfügung. Wenn du mit einem Konsolenprogramm 
schneller zum Ziel kommst, kannst du das selbstverständlich auch so 
machen.

Die Lua IDE ist aber gerade dafür gedacht, auch mal kleine Programme mit 
Grafikausgabe zu schreiben, um z.B. die Mandelbrotmenge oder die 
Kochkurve zu zeichnen.

Mir war auch noch wichtig, das ich die Lua Programme unter Windows und 
Linux nutzen kann, weil ich auch mal zu Hause (Linux) Simulationen 
gemacht habe, die ich dann auf Arbeit (Windows) weiterverwenden wollte.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Gefällt mir sehr gut :)

Genau wie du kenne ich noch die Zeiten, wo man in einem Basic-Programm
mit einer Anweisung den Grafikbildschirm initialisieren und mit der
nächsten schon eine Linie zeichnen konnte. Die heutigen Grafik- und
GUI-Bibliotheken sind zwar ungleich mächtiger, aber um ein paar Pixel
oder Linien auf den Bildschirm zu zaubern, bedarf es jedesmal so viel
Boilerplate-Code, dass sie für kleine Mal-Eben-Progrämmchen eigentlich
kaum akzeptabel sind.

Für solche Progrämmchen nehme ich normalerweise Python. Da gibt es
Bibliotheken für fast alles Erdenkbare, nur nicht für das wirklich
einfache Erstellen von Grafiken. Zum Plotten von Diagrammen schreibe ich
die Ergebnisse meist in eine Datei und lasse sie von Gnuplot anzeigen.
Das ist ganz praktikabel, wenn auch nicht sehr komfortabel. Für Vektor-
und Pixelgrafiken habe ich schon etliche Bibliotheken mit Python-Anbin-
dung ausprobiert, konnte mich aber mit keiner so richtig anfreunden.

Genau diese Probleme sind in Lua-Quick-Try-Out gelöst, zwar einfach,
aber für die meisten Fälle völlig ausreichend. Und die Einfachheit
erspart es einem das Durcharbeiten von tonnenweise Dokumentation.

Sehr praktisch finde ich die interaktiven Scroll- und Zoom-Möglichkeiten
bei den Diagrammen und Grafiken, die man ohne zusätzlichen Programmier-
aufwand nutzen kann. Das gab es zu Atari/Apple/Commodore-Zeiten noch
nicht ;-)

Lua kannte ich bisher nur vom Namen, aber deine IDE ist für mich ein
Grund, mir die Lua-Doku mal etwas näher anzuschauen. Die Sprache scheint
ja recht übersichtlich zu sein, so dass man in einer oder zwei Stunden
wahrscheinlich das meiste verinnerlicht hat.

Zwei Fragen hätte ich aber noch:

Gibt es einen Grund dafür, dass Diagramme antialiased angezeigt werden,
Vektorgrafiken aber nicht?

Wie kann man vom Programm aus Benutzereingaben lesen? Ich habe es mit
io.read() versucht, da friert aber die ganze IDE ein. Ist das gar nicht
vorgesehen (was bei meinen Quick&Dirty-Programmen nicht so schlimm wäre)
oder mache ich etwas falsch?

Auf jeden Fall ein herzliches Dankeschön dafür, dass du deine IDE (und
sogar den Quellcode dazu) uns allen zur Verfügung stellst.

von Qt und Lua Tester (Gast)


Lesenswert?

Ich versuche gerade die Lua Ide aus den Quellen mit Qt Creator
und installiertem Visual Studio 2008 zu übersetzen.

Nach den Download des fehlendem stdint.h

http://msinttypes.googlecode.com/svn/trunk/stdint.h

und Kopieren nach ..\Lua-Quick-Try-Out\src

lassen sich sowohl Debug als auch Release-Version übersetzen
und starten. Super !!!

Allerdings fehlt im ausgeführtem Programm die Startleiste und
die Hilfe bringt ein leeres Fenster ?

von Bri (bri)


Lesenswert?

@Yalu X.

Bei der Vektorgrafik hab ich das antialiasing nicht explizit 
eingeschaltet und es ist standardmäßig deaktiviert. Ich werde mal 
nachschauen, wie ich das anschalten kann.

Bei der aktuellen Version habe ich nur das stdout in der Konsole 
implementiert. Es sollte kein goßes Problem sein, das stdin auch noch 
einzubauen. Ich werde das heute gleich mal ausprobieren.

@Qt und Lua Tester

stdint.h gehört zum C99 Standard, der leider erst ab VS2010 komplett 
unterstützt wird.

Damit die Icons und die Doku angezeigt werden, müssen die beiden 
Verzeichnisse in das Arbeitsverzeichnis kopiert werden, wo die EXE 
ausgeführt wird. Wenn die EXE durch Doppelklick gestartet wird, ist es 
das Verzeichnis in dem die EXE liegt. Wenn man das Programm im QT 
creator startet, ist das Arbeiteverzeichnis das, in dem die Ordner 
release und debug liegen.

von Qt und Lua Tester (Gast)


Lesenswert?

Danke, Icons und die Doku werden jetzt angezeigt, funktioniert 
wunderbar, und
das aus dem Compilieren der Quellen heraus, hervorragende Arbeit.

von klausr (Gast)


Lesenswert?

Ich finde deine Lua-Quick-Try-Out IDE wirklich gelungen! Ich verwende ab 
und zu Lua, um schnell Dinge berechnen zu können. Deine IDE vereinfacht 
viele Dinge. Schön wäre im gfx Modul die Möglichkeit, png images zu 
zeichnen. Was mir aufgefallen ist: Gibt man in der Lua-IDE Console 
io.write("Ein Test\n") ein, so erscheint der output im Terminal, von dem 
aus Lua-Quick-try-Out gestartet wurde. Absicht?

von Bri (bri)


Lesenswert?

@klausr

Die Funktion zum Speichern der Grafik heißt gfx.save_img(). Diese 
speichert das Bild als PNG ab. Bei Vektorgrafik hast du die Wahl 
zwischen PNG und SVG.

Die Ausgabe von io.write() sollte nicht im Terminal erscheinen. Ich hab 
bis jetzt immer print() verwendet, deshalb war mir das nicht 
aufgefallen. Ich werd das noch ändern.

von Qt und Lua Tester (Gast)


Lesenswert?

Könnte man auch QT-Script-Programme mit der LUA-IDE ala libqtlua
entwickeln?

von Bri (bri)


Lesenswert?

Theoretisch wäre es denkbar, mit Lua und entsprechenden Funktionen eine 
Qt Oberfläche von Hand zusammen zu bauen. Die Lua Funktionen müssten 
aber erst noch programmiert werden.

Im Moment bin ich dabei, die IDE noch etwas zu verbessern.

Das antialiasing habe ich eingeschaltet und das io.write() funktioniert 
jetzt wie es soll. Das io.read() muss ich noch ändern. Bei der 
Gelegenheit baue ich, wenn es geht, QScintilla als Lua Editor ein. Das 
hat mehr Funktionen und sieht besser aus als die jetzige Komponente.

von Qt und Lua Tester (Gast)


Lesenswert?

Schaust du  hier: http://code.google.com/p/qtlua/source/browse/

Unter VS2008 bedurfte es 2 kleiner Codeänderungen, danach läßt
es sich übersetzen und läuft.

von W.S. (Gast)


Lesenswert?

T. B. schrieb:
> Vielleicht ist es euch auch schon mal so wie mir gegangen

Ähnlich, aber da ich immer noch das gute alte Delphi habe, ist das GUI 
drumherum ruckzuck fertig.

Aber LUA gefällt mir trotzdem. Ist übrigens erstaunlich weit verbreitet, 
wenngleich auch kaum einer darüber redet.

W.S.

von Bri (bri)


Lesenswert?

So, es hat etwas länger gedauert aber jetzt habe ich eine neue Version 
online gestellt. (Ich hatte Probleme das Package für Linux zu bauen.)

Folgende Änderungen gibt es bei der neuen Version:

- als Sourcecodeeditor verwende ich jetzt QScintilla, damit ist jetzt 
beim Editieren alles möglich, was man auch von anderen IDEs kennt (z.B. 
Code Blöcke ausblenden)

- io.read() und io.write funktionieren jetzt auch in der Konsole

- bei der Grafik ist anti aliasing eingeschaltet



@Qt und Lua Tester

Möchtest Du eine GUI mit Lua zusammenbauen, damit du dann dort Werte in 
Textfelder eingeben kannst? Ich hatte die Idee, in der nächsten Version 
einen kleinen GUI Editor einzubauen, mit dem man sich Buttons und 
Textfelder usw. platzieren kann. Mit den Buttons soll man dann 
Lua-Funktionen verknüpfen können, die beim Drücken auf den Button 
aufgerufen werden. Die Werte der Textfelder kann man dann mit Funktionen 
wie z.B. gui.get_text("Textfeld1") abrufen können. Das ist bedeutend 
einfacher, als die GUI von Hand zusammen zu bauen und auf Ereignisse 
etc. zu reagieren.

von Qt und Lua Tester (Gast)


Lesenswert?

Mir ging es darum das beste aus beiden Welten zu verbinden,
Qt z.B. für die GUI, aber nicht nur, und Lua als Scriptsprache.

Als Beispiel verwendet z.B. torch lua und qtlua.

http://www.torch.ch/index

von Bri (bri)


Lesenswert?

Ich wollte euch kurz informieren, das ich eine neue Version zum download 
bereit gestellt habe, in der paar kleine Bugs gefixt sind.

von Fixer (Gast)


Lesenswert?

Autor: T. B. (bri)
Datum: 11.09.2012 22:42

>Ich wollte euch kurz informieren, das ich eine neue Version zum download
>bereit gestellt habe, in der paar kleine Bugs gefixt sind.

Ich wollte euch kurz informieren, dass ich eine neue Version zum 
Download
bereit gestellt habe, in der ein paar kleine Fehler behoben sind.

von W.S. (Gast)


Lesenswert?

sehr schön - und wo?

W.S.

von Mehmet K. (mkmk)


Lesenswert?


von Michael F. (startrekmichi)


Lesenswert?

Ich habe zwar bisher nix mit Lua gemacht, aber ich schau es mir mal an, 
scheint ja nicht so kompliziert zu sein.

Das Tool sieht schon sehr gut aus, aber ein bissl meckern muss man ja 
aus Prinzip ;-)

- Was ist alles an Keyboard-Shortcuts definiert (durch Ausprobieren habe 
ich bisher F5 als Ausführen identifiziert)? Wäre ev praktisch, wenn das 
als mouseover o.ä. angezeigt würde. Gerade beim Programmieren will man 
ja nicht ständig zur Maus greifen.

- Eigentlich unwichtig: Ein Rechtsklick auf die Symbolleiste gibt ein 
unbeschriftetes Kontextmenü mit einem Haken. Man merkt zwar schnell, 
dass der zum Ein/Ausblenden der Symbolleiste gedacht ist, aber eine 
Beschriftung wäre trotzdem schöner.

mfg
 Michael

von Mr. E. (mistere)


Lesenswert?

Danke,
sehr schönes Programm!
Kann man in Plots auch die Achsen beschriften oder allg. Text 
platzieren?
Ein Hinweis für den Save-on-Exit-Dialog: http://www.dict.cc/?s=lose :-)

von Michael (Gast)


Lesenswert?

Hallo,
da kannst Du auch PatControl verwenden mit Serial -Unterstützung und Lua 
Editor -Haltepunkte usw. Incl Bildverabreitung .
www.FlexxVision.de

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.