Online Compiler / Live code

Für allgemeine Fragen zur Programmierung mit PureBasic.
SIRprise
Beiträge: 24
Registriert: 19.03.2016 20:29

Online Compiler / Live code

Beitrag von SIRprise »

Hatte gerade 2 Ideen und wollte keinen extra Thread öffnen. Mir ist nicht klar, ob es rechtlich bzw. technisch überhaupt geht.
  1. Wäre es legal einen Online-Compiler für PB anzubieten, wie es das ja nun schon oft mit solchen Online-IDEs gibt? Also eine Art Build-Service?
  2. Ist eine schnell compile/run-Schleife denkbar für live coding? Auch hot reload bzw. dass ein weiterer Prozess als Datenhalter fungiert bzw. gibt es PB-Interpreter? Würde es mit PB6 und C++ eventuell möglich werden? Zur Inspiration: https://github.com/anael-seghezzi/CToy
P.S.: Falls da etwas möglich ist, habe ich kein Problem damit, wenn sich jemand die Idee schnappt und umsetzt. Über eine Nennung im Kleingedruckten würde ich mich freuen. :)
DoctorWhat
Beiträge: 7
Registriert: 21.10.2020 23:22

Re: Online Compiler / Live code

Beitrag von DoctorWhat »

SIRprise hat geschrieben: 19.10.2021 13:50
  1. Wäre es legal einen Online-Compiler für PB anzubieten, wie es das ja nun schon oft mit solchen Online-IDEs gibt? Also eine Art Build-Service?
PureBasic setzt auf eine anwenderbezogene Lizenz. So lange Du sicherstellen kannst, dass jeder deiner Nutzer seine eigene Lizenz hat (was hoffentlich schon daran scheitert, dass Fred keinen Fremden in seine Kundendatenbank schauen lässt), dürfte nichts dagegensprechen. Willst Du den Service auch Nutzern ohne eigene Lizenz zur Verfügung stellen, ist es definitiv nicht legal.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Online Compiler / Live code

Beitrag von Bisonte »

so etwas gab es schon mal.... Ein PB ServerProgramm mit CGI Schittstelle, frag mich jetzt nicht von wem das war, müsste hier im Forum rumschwirren.... Wurde natürlich aus genau diesem Grund auch wieder eingestellt.

Wobei dies eigentlich eine Idee wäre, Fred ein paar Euro neben den Lizenzeinnahmen (die ja nur einmal fällig werden) zukommen zu lassen ... Man sollte ihn mal darauf ansprechen, wie er so etwas findet (bzw. ihn selbst auf die Idee bringen)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
SIRprise
Beiträge: 24
Registriert: 19.03.2016 20:29

Re: Online Compiler / Live code

Beitrag von SIRprise »

Bisonte hat geschrieben: 19.10.2021 17:07 so etwas gab es schon mal.... Ein PB ServerProgramm mit CGI Schittstelle, frag mich jetzt nicht von wem das war, müsste hier im Forum rumschwirren.... Wurde natürlich aus genau diesem Grund auch wieder eingestellt.

Wobei dies eigentlich eine Idee wäre, Fred ein paar Euro neben den Lizenzeinnahmen (die ja nur einmal fällig werden) zukommen zu lassen ... Man sollte ihn mal darauf ansprechen, wie er so etwas findet (bzw. ihn selbst auf die Idee bringen)
Gut zu wissen, sehe ich ähnlich. Rechtlich bin ich unsicher, denn einerseits soll ja genau fürs compilen (oder auch für den Editor?) gezahlt werden, andererseits könnte mir ja auch ein Freund Quellcode geben und ich kompiliere ihn für ihn... Es dürften vielleicht nicht 2 Compiler gleichzeitig laufen(?)
Interessant ist es in mehrfacher Hinsicht: Für Fred wäre da eine Kombi aus SpiderBasic (fürs Erstellen aus dem Browser heraus; übrigens vermutlich eine Weiterentwicklung von Kevins PBtoHTML5) und PureBasic interessant. Vor allem mit SpiderBasic hätte er damit eine gute Onlinedemo, die ihm die Demoversionen ersparen könnten, wenn man eben nicht exportieren kann. Als User fände ich es interessant, weil ich damit PB nicht installiert haben muss und Crosscompile geht. Privat wäre es interessant, weil man es in Build-Chains wie sie Teamcity hat hängen könnte (das dürfte jetzt schon gehen).

Ich meine auch, dass es mal einen Interpreter gab, der aber letztlich alles wrappte und damit nicht mehr legal war (zum Thema live-coding wäre das interessant)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Online Compiler / Live code

Beitrag von Kiffi »

Bisonte hat geschrieben: 19.10.2021 17:07 Man sollte ihn mal darauf ansprechen, wie er so etwas findet (bzw. ihn selbst auf die Idee bringen)
nee, bitte nicht. Ich wäre schon froh, wenn er mit seinen aktuellen Projekten aus dem Quark kommen würde.
Hygge
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Online Compiler / Live code

Beitrag von STARGÅTE »

SIRprise hat geschrieben: 19.10.2021 13:50 Wäre es legal einen Online-Compiler für PB anzubieten, wie es das ja nun schon oft mit solchen Online-IDEs gibt? Also eine Art Build-Service?
SIRprise hat geschrieben: 19.10.2021 17:24 andererseits könnte mir ja auch ein Freund Quellcode geben und ich kompiliere ihn für ihn...
Ich denke das ist ein klares Nein (bin aber kein Jurist).
Zum einen steht in der Hilfe: "PureBasic hat eine Anwender-basierte Lizenz. Dies bedeutet, Sie können es auf jedem von Ihnen benötigtem Computer installieren, aber Sie können es nicht zwischen zwei oder mehr Personen teilen."
Wenn Person A also Person B fürs Kompilieren nutzt, zählt das für mich als "teilen".
Zum anderen steht in der Hilfe: "Die PureBasic Lizenz verbietet ausdrücklich die Erstellung von DLL's, deren Hauptfunktion es ist, als ein 'Wrapper' für PureBasic-Funktionen zu dienen."
Der Online-Kompiler wäre m.M. nach so eine Art 'Wrapper', denn alle PB Funktionen werden ins Web gewrappt.
SIRprise hat geschrieben: 19.10.2021 13:50 Ist eine schnell compile/run-Schleife denkbar für live coding? Auch hot reload bzw. dass ein weiterer Prozess als Datenhalter fungiert bzw. gibt es PB-Interpreter? Würde es mit PB6 und C++ eventuell möglich werden? Zur Inspiration: https://github.com/anael-seghezzi/CToy
Ich denke nicht. Was du mit "PB6 und C++" meinst ist mir nicht ganz klar aber der C-Kompiler ist noch mal 3 mal langsamer als der ASM-Kompiler und daher alles andere als "live". Ein PB-Interpreter zu schreiben wäre jedoch aus meiner Sicht erst mal kein Lizenzverstoß, denn der Syntax von PB ist ja nicht geschützt (oder?) und solange du alle Funktionen selbst schreibst (ASM oder C) wrappst du ja keine PureBasic-Funktionen nach außen.

Generell ist mir nicht ganz klar, welchen Vorteil ich von einer Online-IDE hätte. Klar, dort wäre es einfacher parallel an Quelltexten zu arbeiten. Auf der anderen Seite müsste ich dann auch alle Ressourcen online bringen. Und im Endeffekt lädt man dann doch wieder n EXE als Download und führt sie lokal auf dem PC aus.
Dieses Live-Coding sieht verlockend aus. Üblicherweise hatte ich sowas immer mit einer internen oder externen GUI realisiert, wo ich bestimmte Konstanten zur Laufzeit variieren konnte. Mit der Art wie PB aktuell Quelltexte kompiliert ist das jedoch nicht vereinbar, ohne immer den ganzen Code zu kompilieren.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Online Compiler / Live code

Beitrag von RSBasic »

Diese Idee hatte ich damals auch schon, aber wie bereits von den Anderen gesagt ist es aus Lizenzgründen nicht möglich. Bei anderen Sprachen wie C#, Pyhton etc. gibt es Online-Tester-Seiten wie z.B. https://rextester.com/
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
SIRprise
Beiträge: 24
Registriert: 19.03.2016 20:29

Re: Online Compiler / Live code

Beitrag von SIRprise »

Ok, also remote compile geht wegen Lizenz nicht, auch vermutlich kein SpiderBasic, weil man ja dann das Resultat laden und abspeichern könnte.

Ansonsten habe ich nun alles durchsucht und keinen Wrapper oder Interpreter gefunden (PBScript war jedenfalls keiner soweit ich sah). Ersteres könnte man vielleicht als Gemeinschafts(?)projekt mal noch ansetzen - wobei man dann auch direkt einen Interpreter machen könnte, wenn das das Ziel ist.

Live-Coding würde mit einem Interpreter gehen - oder es müsste auch gehen, wenn man eine App drum herum hat, die eine dll zyklisch aufruft (bzw. alternierend eine a.dll und eine b.dll, wobei die eine immer aktuell Ziel vom Compiler ist und die Container-App merkt, wenn ein neues Kompilat fertig ist) und sich alle Zustandsdaten merkt (im einfachsten Fall würde ja ein byte-array reichen in dem man sich alle Zustände der aktuellen Bewegung usw. merkt), damit ein herumfliegender Ball nicht immer von vorne startet etc. Achso: Den Screen oder das Fenster muss die ContainerApp natürlich auch halten.
Das mit dem "PB6 und C++" dachte ich könnte den Vorteil bringen, dass es für C++ schon Setups gibt, die so ein hot reload (also Zustandsspeicher) / Compileschleife bieten, siehe CToy-Link oben.
SIRprise
Beiträge: 24
Registriert: 19.03.2016 20:29

Re: Online Compiler / Live code

Beitrag von SIRprise »

Hmm, irgendwie mag mich PB wohl nicht mehr... es liefert nur noch Speicherfehler (noch bevor die DLL-Funktion ausgeführt wird!) - vorhin gings aber noch.
Da wollte ich mir das mit dem schnellen Recompile selbst zusammenbasteln...

Hier ist die ContainerApp:

Code: Alles auswählen

Global k.b = 0
Prototype Test(x.b)
Declare DLL_Loader()

If InitSprite() = 0
  MessageRequester("Error", "Can't open screen & sprite environment!", 0)
  End
EndIf


If OpenWindow(0, 100, 200, 300, 200, "Live Coding Test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  CreateStatusBar(0, WindowID(0))
  AddStatusBarField(300)
  
  StatusBarText(0, 0, "Recompile...?")  
  
  If OpenWindowedScreen(WindowID(0), 0, 0, 290, 190, #True, 0, 20)
    
    CreateSprite(0, 50, 50)
    
    Repeat
      Repeat
        Event = WaitWindowEvent(10)
        
        If Event = #PB_Event_CloseWindow
          End
        EndIf
      Until Event = 0
      
      FlipBuffers()
      ClearScreen(RGB(0, 0, 200)) ; Ein blauer Hintergrund
      DLL_Loader()
      
    ForEver
    
  Else
    MessageRequester("Error", "Can't open windowed screen!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
    End
  EndIf
  
  
  
Else
  MessageRequester("Error", "Can't open screen!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
  End
EndIf

End

Procedure DLL_Loader()
  dllHandleNumber.b = 0
  If OpenLibrary(dllHandleNumber.b, "./test.dll") <> 0
    dllFunction.Test = GetFunction(0, "test")
    If dllFunction.Test <> 0
      k.b + 1
      Delay(100)
      dllFunction(k.b)
      CloseLibrary(dllHandleNumber.b)
    Else
      MessageRequester("Error", "Can't find function in library!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
    EndIf
  Else
    MessageRequester("Error", "Can't open library!", #PB_MessageRequester_Ok | #PB_MessageRequester_Error)
    End
  EndIf
EndProcedure 
Und hier die test.dll:

Code: Alles auswählen

ProcedureDLL test(x.b)
  DisplaySprite(0, 10, 10); Darstellung unserer schwarzen Box in der linken oberen Ecke
  Debug ("Ich bin eine DLL-Datei und bekam als Argument "+Str(x.b)+" übergeben")
EndProcedure
Zuletzt geändert von SIRprise am 20.10.2021 07:57, insgesamt 1-mal geändert.
H.Brill
Beiträge: 356
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Online Compiler / Live code

Beitrag von H.Brill »

Bei einem Online - Interpreter gingen da wohl auch viele PB-Funktionen nicht mehr,
wie z.B. Schreiben/Lesen von Dateien auf Datenträger.
Ich meine damit die Libs wie File, Filesystem, Database, auch Serialport usw.

Wie will man das das denn online realisieren ?

Dann würde ich doch lieber die eingeschränkte Demoversion nutzen.
PB 5.60
Antworten