Seite 3 von 3

Verfasst: 29.06.2008 19:54
von ZeHa
Naja also alle Libs dann auch noch auf andere Libs zu mappen oder so, das kann man im Grunde vergessen, da Libs - wie Du selbst sagst - sich immer wieder weiterentwickeln. Und auch wenn Du Libs haßt ;) es ist nunmal Fakt, daß man auf sie angewiesen ist, sieht man ja schon bei PB (auch wenn sie da integriert ist). Ohne Lib kommt man einfach nicht weit.

.NET ist ja schonmal ein Schritt in die richtige Richtung. Es gibt eine einzige große Plattform, und alle Libs für .NET basieren ebenfalls auf dieser Plattform. Nun kann jede Sprache, die für .NET entwickelt wird, diese ganzen Libs nutzen, so viel sie möchte. Das heißt, mit .NET hast Du bereits heute die Möglichkeit, mit (fast) jeder xbeliebigen Sprache zu programmieren, und diese Sprachen auch miteinander zu mischen. Okay, PB fehlt vielleicht noch, aber deeem2031 (hoffentlich war das jetzt richtig geschrieben) arbeitet ja soweit ich weiß schon an einem PB.NET-Compiler.

Der einzige Nachteil: Du bist an .NET gebunden. Das mag schon etwas stören, aber wenn sich das ein wenig mehr durchsetzt, ist auch das irgendwann nicht mehr ganz so tragisch. Hoffen wir, daß Mono sich weiterhin gut entwickelt und Microsoft solche Vorhaben unterstützt.

Du könntest nun, wenn Du so eine "grafische Programmierumgebung" schaffen willst, Deine Programme direkt auf die CIL mappen. Das läuft dann auf .NET und läßt sich in andere Sprachen zurückübersetzen.

Verfasst: 11.07.2008 17:04
von PMV
Naja, Xaby will ja nicht die Programmiersprache an ein vorhandenes
Framework anpassen, sondern ein Übersetzer schreiben. Ich stell mir das
aber noch lange nicht so einfach vor. Für PB, Java und C++ mag das
vielleicht in der tat möglich sein. Mit hilfe von Compilerbau-Techniken
dürfte das nicht mals so schwirig sein, nur viel viel schreibarbeit. Einen
automatischen übersetzer halte ich für nahe zu unmöglich. Dafür müsste
sich ein eingefleichstes "Forscherteam" drann setzen und mit vielen vielen
Zuschüssen da etwas entwickeln. Das ist sicher nicht so einfach, wie du
es dir vor stellst

Zumal du ja von "allen" Programmiersprachen sprichst ... da fallen mir so
direkt noch Brainfuck, Lisp und Ruby ein ... na viel Spaß. :wink:

MFG PMV

Verfasst: 11.07.2008 17:38
von Xaby
@PMV

Ich hab mich dran gesetzt. Und ich bin gut weit gekommen.

Ich kann schicke Programme mit nur 20 Befehlen + Schleifen, Bedingungen und eventuelle String-Operationen

Die Frage ist, wie komplex man das ganze gestalten möchte.

Code: Alles auswählen

; Folker Linstedt
; 2008-07-07, 2008-07-10
; Tutorial FL2D, DGS-Lite, KidsWin

; Ermöglicht die Benutzung der DGS-Befehle
XIncludeFile "FLDGS.pbi" ; Unit für JAVA, JAVAScript, C# individuell
DisableExplicit

; Diese Zeile startet dein Programm
StartMyProgram_FL2D(0) 
  
Procedure AddObjects_FL2D() 
  ; Am Anfang eines Programms, werden Objekte hinzugefügt
  
  For i=0 To 10
    AddOBJ_FL2D(Str(i),"",Random(600)-300,Random(400)-200,Random(30)+10,Random(30)+10,Random(16700000))
  Next   
  
  ; Fügt einen Stift hinzu, Verzeichnis und Dateiendung werden benötigt
  AddOBJ_FL2D("Stift","C:\F\PureBasic\2008-07\FLDGS\Stift.ico") 
  ; Fügt eine Tastatur hinzu, Verzeichnis und Dateiendung werden wie oben benutzt
  AddOBJ_FL2D("Key","Keyboard") 
  ; Fügt eine Computer-Maus hinzu
  AddOBJ_FL2D("Maus","Mouse") 
  
  ; Fügt noch eine Computer-Maus hinzu, diese heiß´t aber nur "M"
  AddOBJ_FL2D("M","Mouse") 
        
  ; Bewegt die Tastatur etwas zur Seite und nach unten    
  MoveOBJ_FL2D("Key",40,10)
  
  ; bestimmt das Aussehen des Mauszeigers.
  ; Dieser besteht aus einem Stift und der Maus "M"
  
  ;MouseCursor_FL2D("Stift") ; entspricht 
  Attach_FL2D("Stift","#MOUSE")
  
  Attach_FL2D("M","Stift")
    
  MoveOBJ_FL2D("M",20,30)
  
   
  
  AddOBJ_FL2D("Fenster","",-200,-100,150,150)
     
   
  ; Stift wird zum Schluss gezeichnet und ist damit immer sichtbar  
  TheHighest_FL2D("Stift") 
  MoveOBJ_FL2D("Stift",16,16)
  ; Verändert den Hardflag
    

EndProcedure


Procedure Events_FL2D() 
  ; Hier werden die Bedingungen definiert
  ; Verändert die Position des Mauszeigers, der wie ein Stift aussieht
  ; und setzt ihn an die Position der Maus
      
  ; Setzt die Farbe des Hintergrunds auf zufällige Farben
  
  ;If MouseButton_FL2D() ; MousePushed, MouseReleased, MouseClick
;      
  ;EndIf  
    
  DragDrop_FL2D("Maus Key Fenster")
  
  For i=0 To 10
     ; DragDropOBJ_FL2D(Str(i))
      DragDrop_FL2D(Str(i))
  Next     

EndProcedure
Demonstartion (EXE):

http://www.folker-linstedt.de/pureforum/FLDGS.zip

Verfasst: 11.07.2008 17:50
von Xaby
Es geht also nicht drum, mehrere tausend Befehle zu übersetzten, sondern eine Bibliothek zu haben, die auf allen Programmiersprachen gleichermaßen funktioniert.

Dass JAVA objektorientiert ist und PureBasic nicht, dass spielt keine Rolle, der Nutzer wird eine QuellCode-Datei haben, wie die hier gepostete, oder mit ganz anderem Code.

In PureBasic sieht das Ergebnis dann so aus. Wenn man ein Interface bereit stellt, welches ohne Programmiercode, sondern mit fertigen Bausteinen daher kommt, schränkt man zwar die Möglichkeiten ein, stellt aber gleichzeitig damit sicher, dass diese vorhandenen Befehle auf allen Systemen das gleiche Ergebnis liefern.

Der "Quell-Code" kann dann in JAVA, C# oder PureBasic ausgegeben werden und mit dem JDK oder dem PureBasic-Compiler lauffähig gemacht werden.

Klar sind die internen Befehle bei JAVA anders als bei PureBasic und die Frage ist auch, ob man nur in eine Richtung übersetzen kann oder in beide.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Wieso das Ganze? So kann man eine Art VisualDesigner / PureFORM für Fenster und Spiele nutzen, der dann Code ausgibt, den man beliebig erweitern kann.

Das Erweitern wäre dann für erfahrene Nutzer.

Und da kann dann auch gleich der Hinweis kommen, dass der Code nach individueller Veränderung eventuell nicht mehr SprachenConverter-Kompatibel ist.

Eine Art RISC-Sprache :roll:

Aber nicht Urschleim wie bei ASM, sondern halt weniger Befehle, die es leicht ermöglichen Spiele, GUIs und was es sonst noch gibt, zu erstellen.

Einen kleinen Aufwand wird die Übersetzung der StandardBefehle machen wie: Str(), Left(), Right(), ... (String-Operatoren)
und Sqrt(), Sin(), Cos() ...

Aber man muss ja am Anfang nicht gleich alles auf einmal können.
Es würde ja reichen wenn man * + / - richtig umsetzt und die Klammern.

Es soll als Einstieg in die Programmierung dienen und den "Kindern" bzw. den Neulingen keine Sprache vorschreiben. Und ihnen den Umstieg leichter machen. Und wenn man einmal Code geschrieben hat, finde ich es immer lästigt, wenn man diesen dann selbst umschreiben muss. Das demotiviert ja.

:roll:

Mein Programm ist natürlich noch nicht perfekt und dass die Maus, die am Stift klebt unter dem großen Viereck verschwindet, ist Absicht, die Layertechnologie ist schon integriert, wie man sehen kann, wird nur der Stift ganz nach oben gesetzt.

Genauso das Clicken und Ziehen, zurzeit werden alle Ebenen gleichermaßen abgefragt. Dadurch passiert es, dass man mit einem Ziehen alle Teilchen zusammenschieben kann.

Das ist kein Bug, es ist im Moment nur nicht integriert, dass es anders berücksichtigt wird. :freak: