Flua 0.4.5

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

E. Urbach

ehemals "Basicprogger"

Betreff: Flua 0.4.5

BeitragMo, Mai 21, 2012 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
bp (welches seit einiger Zeit in Flua umgetauft wurde) ist mein derzeitiges Projekt, welches ich Ende April wieder aufgegriffen habe und plane dieses Mal mit mehr Erfahrung endlich vollenden zu können.

user posted image

In diesem Projekt geht es um die Entwicklung einer Programmiersprache und einer dazugehörigen Entwicklungsumgebung. blitzprog soll mehrere Probleme in derzeitigen Sprachen lösen, die die Wiederverwendbarkeit von Code quasi unmöglich machen und im endgültigen 1.0-Release folgende Features beinhalten:

Arrow Manuelle und automatische Parallelisierung von Software um Code auf mehreren Prozessorkernen gleichzeitig ausführen zu können
Arrow Eine Standard-Library, die jederzeit auf den neuesten Stand gebracht werden kann
Arrow Strenge Einhaltung des DRY-Konzepts
Arrow Jeder Entwickler kann seinen eigenen Ordner bzw. sein eigenes Kürzel in der Library besitzen, in der IDE wird festgelegt ob man beim Updaten der Module auch Module von Drittanbietern herunterladen möchten. Drittanbieter können ihre Module und Projekte unter einem Kürzel veröffentlichen (z.B. "bp" für die offiziellen Module, ähnlich zu "brl" und "pub" in BMax).
Arrow Keine Festlegung auf eine bestimmte Syntax: Es können Syntaxmodule geladen werden, welche denselben Code in einer anderen Ansicht darstellen und auch die Bearbeitung dessen ermöglichen, realistisch gesehen kann ich mich jedoch momentan nur um eine Implementation kümmern und das ist das standardmäßig aktivierte BPC-Syntaxmodul
Arrow Keine Festlegung auf ein bestimmtes Ausgabeformat: Standardmäßig wird binärer Output mithilfe von g++ produziert, jedoch ist die Compiler-Pipeline modular aufgebaut und erlaubt das Hinzufügen von weiteren Ausgabemodulen. Beispielsweise ist ein Web-Ausgabemodul geplant, welches ermöglicht, die in bp entwickelte Software auch online anzubieten ohne viel Code zu ändern.
Arrow Eine offizielle Entwicklungsumgebung, die "einfach alles hat was man braucht" Smile Autocompleting mit Kürzeln, Projektmanagement, Highlighting von eigenen Funktionen und Klassen, Kontext-bezogene Funktionsdefinitionsansicht (beispielsweise sieht man beim Bearbeiten eines Codes sofort, welche Funktionen benutzt werden und kann sich sowohl deren Definition als auch den Fluss der Werte der Parameter anschauen). Ebenso gibt es einen Abhängigkeitsbaum, der anzeigt wie die Daten in der Software angeordnet sind bzw. was von was abhängt.
Arrow Immutable + Mutable Datenstrukturen, welche STM (Software Transactional Memory) verwenden wenn der Zugriff auf diese parallel erfolgt.
Arrow Automatische Optimierung und Parallelisierung bei Nutzung des funktionalen Programmierstils.
Arrow Analyse von Funktionen auf "Thread-safeness", ob diese sicher in Threads benutzt werden können und entsprechend angepasstes Syntaxhighlighting

Wie ihr seht verfolge ich ein gänzlich anderes Konzept als Bismuth, welches stärker an BMax angelehnt ist. Ich habe aus BMax das (meiner Meinung nach) tolle Modulkonzept wiederaufgenommen und versuche die Library in einem ähnlichen Stil zu entwerfen, außer der Funktionsumfang würde dadurch eingeschränkt werden. Ich und Noobody haben bis vor Kurzem nicht einmal gewusst, dass der jeweils andere an einer Sprache arbeitet und da die Projekte ohnehin verschiedene Konzepte und Ziele haben kommen sie sich auch nicht in die Quere.

bp setzt sich die Kombination aus Performance und (dennoch) komfortabler Arbeitsweise als höchste Priorität. Ebenso ist Parallelisierung ein wichtiges aktuelles Thema, welches in bp stark vereinfacht wird um es in eigener Software ohne die sonst üblichen Probleme wie Deadlocks und Race conditions zu benutzen. Wiederverwendbarkeit ist ebenso wichtig für Modulentwickler, deswegen wird an jeder Ecke versucht, in bp geschriebene Funktionen optimal wiederverwendbar zu machen.

Falls ihr mal reinschnuppern wollt in den momentanen Alpha-Status, es stehen ein einmaliger user posted imageDownload für Windows (aufgrund von Abhängigkeiten 88 MB, es aktualisiert sich automatisch) und die user posted imageInstallationsanweisungen für Linux bereit. Bei Feedback könnt ihr gerne hier posten, jedoch schaue ich auf GitHub öfter als im Blitzforum vorbei und dieser hat auch eine Art Bug Tracker wo ihr Bugs und Feature Requests posten könnt. Ich entwickle bp sowohl auf Windows- als auch Linuxsystemen, dementsprechend kümmere ich mich gleichermaßen um diese Plattformen. Auf MacOS kann es in der Theorie installiert werden, jedoch besitze ich keinen Mac und kann dazu eben keinen Support leisten.

bp ist Open Source, das heißt: Jeder, der möchte und die entsprechenden Kenntnisse hat, kann die Sprache erweitern und eigene Module schreiben (es stehen momentan keine Grafikmodule zur Verfügung).

Ich hoffe dadurch einige interessierte Alphatester und Feedback zu finden.

Offizielle Website (engl.)
  • Zuletzt bearbeitet von E. Urbach am Mi, Nov 21, 2012 20:28, insgesamt 14-mal bearbeitet
 

Freak123

BeitragDi, Mai 22, 2012 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Da steckt ja eine menge Arbeit drinnen.
Schaut gut aus. Werde ich auf jeden Fall testen.

lg
 

E. Urbach

ehemals "Basicprogger"

BeitragDo, Mai 31, 2012 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe die IDE nun sowohl funktional als auch optisch etwas erweitert. Außerdem gibt es nun For-Each Schleifen mit beliebig definierten Iterationsarten. Es ist nicht so einfach das in einem Post zu erklären, aber vielleicht hilft ein Code-Beispiel weiter:
Code: [AUSKLAPPEN]
iterator
   default
      pos = 0
      end = my.getLength()
      
      while pos < end
         yield my.start[pos]
         pos += 1

Dieser Code, den ich der Array-Klasse entnommen habe, reicht aus um eine Klasse iterierbar zu machen und er ist anpassbar. Mit dem yield-Keyword gibt man quasi ein Objekt an die Foreach-Schleife weiter was in diesem Fall das Array-Element an der Iteratorposition ist. Anschließend kann man Objekte der Klasse wie folgt verwenden:
Code: [AUSKLAPPEN]
for x in array
   print x

Weitere Änderungen sind z.B. die On-The-Fly Sourcecode Ansicht, AutoComplete Verbesserungen (trotzdem noch miserabel...) und zahlreiche Bugfixes.
Über Feedback würde ich mich freuen Smile
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
  • Zuletzt bearbeitet von E. Urbach am Mo, Jun 18, 2012 14:38, insgesamt einmal bearbeitet

SM3D

BeitragDo, Mai 31, 2012 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Nettes Projekt, darf man Fragen in welcher Sprache Du das entwickelst? Sprich Deine Sprache und die IDE.

Was auf jeden Fall ein guter Ansatz ist das sich so etwas langfristig erweitern und weiter entwickeln lässt, denn nichts ist so ärgerlich wie bei meinem geliebten Blitz3D, welches dann irgend wann eingestellt wird und aus stirbt.

Hut ab für das Projekt und weiter so, wünsche Dir sehr das es erfolgreich wird.

MfG SM3D
 

E. Urbach

ehemals "Basicprogger"

BeitragFr, Jun 01, 2012 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Kommentar, beides wird in Python 3 entwickelt um deine Frage zu beantworten und ich bereue die Entscheidung nicht, bis auf ein paar Kleinigkeiten wie z. B. keine echten parallelen Prozesse für die IDE aufgrund von Pythons GIL, aber damit kann ich leben.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
 

E. Urbach

ehemals "Basicprogger"

BeitragSo, Jun 10, 2012 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Update 0.3.4
Arrow Sämtliche OpenGL-Funktionen und -Konstanten sind nun integriert
Arrow Laden von Vertex- und Fragment Shadern funktioniert und wurde stark vereinfacht
Arrow Weitere String-Funktionen wie z.B. replace() und count() implementiert
Arrow Die IDE hat viele Bugfixes bekommen.

Wer es schon heruntergeladen hat braucht nur "Help > Reset all local changes" aufzurufen und die IDE neu zu starten.
Unter bp.Examples findet sich unter 5 - Graphics ein Beispielcode, der ein GraphicsWindow initialisiert, es wäre nett wenn ihr mir kurz sagen könntet ob es auf eurem PC / eurer Grafikkarte läuft (es sollte ein Farbverlauf zu sehen sein).

user posted image Windows | user posted image Linux
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

FireballFlame

BeitragSo, Jun 10, 2012 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup, läuft bei mir und sieht richtig aus.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Starwar

BeitragSo, Jun 10, 2012 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert mit Intel HD 3000 (Nvidia Optimus).

Was mir an der IDE noch fehlt ist eine Fehlerausgabe mit Verlinkungen und allem.
Das Konzept hinter bp finde ich aber interessant, wenn ich auch skeptisch bin, weil alles so abstrakt ist.
Und ich enttäuscht auf der angegeben Webseite kein iNothing zu finden. Sad Wink

Fazit: Weiter machen! Very Happy
MFG

PS: Der += Operator funktioniert nicht für Strings Wink
 

E. Urbach

ehemals "Basicprogger"

BeitragSo, Jun 10, 2012 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Starwar hat Folgendes geschrieben:
PS: Der += Operator funktioniert nicht für Strings Wink

Sollte nun funktionieren. Danke für die Info, dass es auch auf Intel GPUs läuft - Ich hatte schon befürchtet die würden Probleme verursachen.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Jun 11, 2012 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Update 0.3.5
Arrow Man kann nun mit dem 'in' keyword prüfen ob ein String in einem anderen enthalten ist (Shortcut für: a.contains(b))
Arrow String-Funktionen padLeft() und padRight() um einen String auf eine Seite zu verschieben
Arrow String-Operator * mit dem man einen String mehrfach aneinanderhängen kann
Arrow Arbeit an der Benchmark-Suite begonnen welche ein paar kleine Tests enthält.

Im Detail:

in keyword
Code: [AUSKLAPPEN]
if "a" in "abc"

ist die Kurzform für
Code: [AUSKLAPPEN]
if "abc".contains("a")


String-Funktionen
Code: [AUSKLAPPEN]
"abc".padRight(10)

ergibt
Code: [AUSKLAPPEN]
       abc

padLeft ist damit selbsterklärend.

Man kann einen String nun auch multiplizieren (wie in Python):
Code: [AUSKLAPPEN]
"Hello" * 5

ergibt
Code: [AUSKLAPPEN]
HelloHelloHelloHelloHello


Benchmark-Suite
Bei mir ergeben die Tests mit bp.Compiler.Benchmark (F6) auf meinem Dual-Core Laptop folgendes:
Code: [AUSKLAPPEN]
Use parallel execution? [y/n]
y
Strings.Concat:                                           1,494,494 microseconds
Math.Distance:                                            2,894,894 microseconds
FileIO.ReadAll:                                           2,066,066 microseconds
Time.Now:                                                 2,881,881 microseconds
Strings.Replace:                                          1,489,489 microseconds
Math.Factorial:                                           1,733,733 microseconds
--------------------------------------------------------------------------------
All benchmarks:                                           3,131,131 microseconds

(auf Lubuntu x86)

Falls einer der Tests eine übertrieben hohe Ausführungszeit hat, bitte lasst es mich wissen damit ich die Ursache identifizieren kann. String-Appends habe ich einigermaßen optimiert und es ist noch ein wenig Spielraum für Optimierungen offen. Generell ist bp dank g++ Optimierungen und manuellen Optimierungen ziemlich flott.

Edit: Parallele Ausführung verursacht unter Windows momentan Probleme mit dem GC, ich kümmere mich so bald wie möglich drum.
Edit 2: Das Problem mit paralleler Ausführung sollte nun behoben sein für 32-Bit Windows.
 

E. Urbach

ehemals "Basicprogger"

BeitragSa, Jun 16, 2012 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Update 0.3.7
Arrow Man kann nun DataFlow statements verketten wie z.B. hier: http://pastebin.com/FxRtpaBB
Arrow Es gibt für faule Programmierer wie mich die Möglichkeit einen Counter für eine Foreach-Schleife zu erstellen: http://pastebin.com/vKGtdjmw
Arrow Man kann nun bestehende Klassen in fast jeder Datei "erweitern" (nicht erben, die Klasse bleibt gleich)
Arrow FreeImage-Library hinzugefügt, d.h. es wird bald möglich sein Texturen zu laden
Arrow Forum eingerichtet.
Arrow Viele Bugfixes im Compiler.

Um die neue Version zu erhalten einfach oben im Hilfemenü auf Reset all local changes gehen und den Editor neustarten.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

hamZta

Administrator

BeitragSo, Jun 17, 2012 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Es gibt für faule Programmierer wie mich die Möglichkeit einen Counter für eine Foreach-Schleife zu erstellen


Was passiert bei verschachtelten Schleifen? Wie komme ich an den Counter der äusseren? Finde ich nicht sehr schön gelöst, vor allem das mit dem Pseudoobject "loop". Was passiert wenn ich eine andere Variable namens loop haben möchte?
Blog.
 

E. Urbach

ehemals "Basicprogger"

BeitragSo, Jun 17, 2012 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hamZta hat Folgendes geschrieben:
Was passiert bei verschachtelten Schleifen? Wie komme ich an den Counter der äusseren? Finde ich nicht sehr schön gelöst, vor allem das mit dem Pseudoobject "loop". Was passiert wenn ich eine andere Variable namens loop haben möchte?

Hi hamzta, die Kritik ist berechtigt, daher habe ich es wie folgt angepasst:
http://pastebin.com/0Pd39aCa

Man kann nun sowohl auf die äußere als auch die innere Schleife zugreifen, der Zählervariable einen eigenen Namen geben und dabei immer noch "counting" als Variable verwenden weil dieses Keyword nur kontext-sensitiv in foreach-Schleifen verwendet wird.

Ist es nun in Ordnung für deinen Geschmack oder würdest du eine andere Lösung vorschlagen?
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

hamZta

Administrator

BeitragSo, Jun 17, 2012 11:59
Antworten mit Zitat
Benutzer-Profile anzeigen
So sieht das besser aus, ja. "Magic objects" sind einfach nicht schön Smile
Blog.
 

dont_know_to_use

BeitragSo, Jun 17, 2012 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man auch schon seinen Quellcode kompilieren? Finde gerade Gefallen an deiner Programmiersprache und würde gerne wissen, ob man auch schon ein ausführbares Programm aus seinem Code machen kann? Smile

EDIT: Hat sich erledigt, eine ausführbare Datei habe ich im Ordner /bp/src/C++ gefunden.
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Jun 18, 2012 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
dont_know_to_use hat Folgendes geschrieben:
EDIT: Hat sich erledigt, eine ausführbare Datei habe ich im Ordner /bp/src/C++ gefunden.

Du solltest deine Dateien unter einem eigenen Kürzel speichern, nicht im Top-Level-Directory, sonst passieren beim Löschen böse Dinge.
Rechtsklick im Modulbrowser -> Neuen Benutzer anlegen
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
 

dont_know_to_use

BeitragMo, Jun 18, 2012 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay

Sieht auf jeden Fall sehr interessant aus. Ich würde gerne einige mehr Beispielcodes sehen, vielleicht welche, die auch zeigen, was sie so grafisch drauf hat? Wink
 

E. Urbach

ehemals "Basicprogger"

BeitragMi, Jun 20, 2012 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
dont_know_to_use hat Folgendes geschrieben:
Ich würde gerne einige mehr Beispielcodes sehen, vielleicht welche, die auch zeigen, was sie so grafisch drauf hat? Wink

Ich verstehe, dass in diesem Portal die meisten Leute natürlich auf das Grafikmodul aus sind, jedoch muss ich Prioritäten setzen. Es fehlen noch einige Sprachfeatures, die entwickelt werden müssen. Die Entwicklung von einem einzigen Modul ist bei weitem nicht so wichtig, das kann immer noch (theoretisch) jemand anders machen, denn das hat mit der Sprache an sich nichts am Hut.

Update 0.3.8
Arrow 'on' keyword um bequem Methoden desselben Objekts aufzurufen: http://pastebin.com/jRH5f2U1
Arrow Nun sind auch mehrere Rückgabewerte in Funktionen möglich: http://pastebin.com/tarKNbyn
Arrow Namespaces sind nun für Variablen und Funktionen möglich: http://pastebin.com/dN8rtQXG
Arrow Die Nutzung von GMP / BigInt ist optional geworden, d.h. die Library wird nur eingebunden wenn BigInt auch vorkommt (dadurch schnellere Kompilierzeit)
Arrow Netzwerkmodul für Linux etwas verbessert (IPv4 / IPv6), ebenso hat Vector3 das Licht der Welt erblickt (fehlt noch vieles)
Arrow Wie immer - viele Bugfixes.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
 

E. Urbach

ehemals "Basicprogger"

BeitragSa, Jun 23, 2012 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Update 0.3.9 enthält Python-äquivalentes String-Slicing
Code: [AUSKLAPPEN]
print "Hello World"[6:]

und ich habe nebenbei noch einige Stunden mit der teils sehr verwirrenden OGL-Doku verbracht, wodurch ich jedoch das Laden von Texturen endlich geschafft habe:

user posted image

Das Beispiel liegt unter bp.Examples.6 - Graphics und ist äußerst experimentell. Keine Ahnung ob es bei euch läuft, es braucht Shader. Die/das API ist keinesfalls final, da wird sich noch einiges dran ändern.

Zum Updaten oben im Hilfemenü auf Reset all local changes gehen und den Editor neustarten.

FireballFlame

BeitragSa, Jun 23, 2012 3:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Läuft hier.
Allerdings macht das "An empty window"-Programm beim Umschalten der Syntax komische Dinge.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group