Seite 1 von 2

Bildersprache für PureBasic

Verfasst: 26.07.2008 00:17
von Xaby
Ich wollte das eigentlich selbst mal basteln, wegen der Kinder und so.
Dass man kleine Symbole hat, am besten bewegte Animationen, die einen Befehl darstellen, dann ist mir heute im ICQ etwas aufgefallen.

http://www.zlango.com/landing?LinkInID=1901080400002000

Und da dachte ich mir, vielleicht entwickeln wir alle zusammen mal ein paar Bildchen, die man mit Befehlen verbinden kann :?

So ähnlich wie es schon Bildchen für die Gadgets gibt, nur halt für viele Befehle :D

Verfasst: 26.07.2008 00:30
von Kaeru Gaman
da würde ich dann aber auch eine Game-Maker artige Oberfläche vorschlagen,
und eine vorgefertigte Basis, nicht von grundauf coden müssen wie mit PB,
eher so etwas wie ne Scriptsprache.

Verfasst: 26.07.2008 00:53
von Xaby
Hatte auch schon überlegt, einige häufig benutzte Befehle zusammen zu packen und einfacher verwendbaren Prozeduren.

So dass man vielleicht nur noch 40 verschiedene Befehle hat und mit denen dann arbeiten kann.

Und je nach dem wie weit der "Programmierer" ist, kann er neue Befehle dazu bekommen.

Man könnte auch eine Art Adventure daraus machen.

Wie Pokémon. Nur dass man keine Pokémon sammelt, sondern neue Befehle, die dann wieder mehr Macht bedeuten.

:shock:

vielleicht sollte ich mal meine bisherigen Ansätze veröffentlichen nach diesem Wochenende vielleicht :D

Verfasst: 26.07.2008 01:00
von STARGÅTE
ohne hier jemandem zu nahe zu treten, ich ich finde das völlig überflüssig, vorallem dein letztes Post Xaby.

Programmieren sollte weiter hin Text bleibung und nicht durch eine überflutung von Bilder gestört werden.

Außerdem kommt bei gleichartigen Befehlen irgendwann zu unerkennbaren Bildern bzw zu verwechselungen oder fehdeutungen.

alleine schon die Befehle (OpenWindow, OpenWindowedScreen, OpenScreen) sind (meiner Meinung nach) auf kleinen Icons (32*32) kaum unterscheidbar.

Verfasst: 26.07.2008 01:44
von Vermilion
Ich sehe das wie Stargate. Denn was der C++ Compiler im Vergleich zum ASM Compiler ausspuckt ist schon erschreckend genug. Ein Hello World in Assembler ist 22 Byte groß. In PureBasic mehr als das 100-fache. Und dann will man noch ankommen mit so einem Kram? Was soll da bitteschön für ein Müll rauskommen? Ok, man kann es sich langsam leisten da genug Performance zur Verfügung steht. Aber warum nicht mit text, wenn man damit noch mehr Performance erreicht? Assembler hat wirklich den Grund, dass es etwas unproduktiv und insgesamt umständlich ist. Aber Hochsprachen im Vergleich zu Bildern die man zusammenfügt...


(Stehe gerade etwas unter Einfluss von Alkohol, also inhaltliche sowie sprachliche Fehler nicht so genau nehmen, ihr wisst schon weiß ich meine, hoffe ich... Naja, wenn man sich schon versucht klar auszudrücken, wird man ohnehin missverstanden :D (Verweis auf anderen Thread vor ein paar Tagen))

Verfasst: 26.07.2008 01:58
von hardfalcon
In Zeiten wo's Terrabyte-Platten für 120€ gibt, sollte die Größe der EXEn grade in einem Sonderfall wie diesem absolut sch**ßegal sein... :wink:

Verfasst: 26.07.2008 02:21
von ZeHa
Jetzt mal langsam...

So wie ich das verstanden habe geht es nicht drum, für jeden xbeliebigen Befehl ein Icon zu finden, sondern Xaby will ja ein paar Dinge auch zusammenfassen. Ein Fenster z.B. könnte sowieso direkt durch ein Design-Tool gemacht werden, wozu soll man das auch "programmieren".

Soooo schlecht finde ich die Idee nichtmal. Grafische Programmier-"Sprachen" sind in der Tat auch schon verfügbar, zwar nicht speziell für Kinder aber es ist möglich. Da diese Sprachen ja auch dem Zweck dienen sollen, schön einfach und übersichtlich zu sein, kann man auch ruhig in Kauf nehmen, wenn einem die Flexibilität ein wenig genommen wird. Das ist ja nix für die Hardcore-C++-Programmierer, sondern das soll für Nicht-Programmierer gedacht sein.



Xaby hat zwar sehr viele Ideen und philosophiert gerne etwas über den Rand hinaus, aber ich habe immer wieder den Eindruck, daß grundsätzlich alles erstmal aus Prinzip schlecht gefunden wird, was er hier vorstellt. Auf der anderen Seite wäre es für Xaby vielleicht mal an der Zeit, ein etwas ausgewachseneres Konzept vorzustellen, sodaß man es leichter hat, den Sinn dahinter zu verstehen, gebe ich natürlich auch zu.

@ Xaby, ich hab hier mal ein interessantes Konzept gelesen, allerdings war das als Feature innerhalb von Spielen vorgesehen. Es handelt sich nur rein um eine Idee, ein passendes Spiel existiert (noch) nicht:
http://www.squidi.net/three/entry.php?id=25

So in die Art könnte man das auch machen. Hier geht's zwar irgendwie um komplette Programm-Bruchstücke, aber solche "Bausteine" könnte man ja auch direkt für Ifs und Schleifen usw. einsetzen. Ein paar gruppierte Bausteine könnten dann Prozeduren darstellen, etc... also ich fand halt die Art der grafischen Darstellung recht interessant (obwohl es natürlich auch seine Probleme hat, z.B. wenn einem die Richtungen ausgehen, in die man weitercoden kann). Vielleicht inspiriert Dich das ja auch ein bißchen.

Hier sind auch ein paar interessante Dinge zu lesen bzw. zu sehen: http://www.squidi.net/three/entry.php?id=81

Verfasst: 26.07.2008 02:56
von Franky
Jungs, ich bin euch weit vorraus und präsentiere hier meinen Konverter

Smiliefuck -> Brainfuck

Code: Alles auswählen

Global NewList LInes.s()
adr.s=ProgramParameter(1)
If ReadFile(1,adr.s)
      ;Einlesen
      While Loc(1)<Lof(1)
            AddElement(LInes())
                LInes()=ReadString(1)
      Wend  
      CloseFile(1)
      ;Überschreiben
      If CreateFile(1,adr)
          ForEach LInes()
              text.s=LInes()
              text=ReplaceString(text,":-)","+")
              text=ReplaceString(text,":-(","-")
              text=ReplaceString(text,":-D","[")
              text=ReplaceString(text,":-P","]")
              text=ReplaceString(text,":-/",">")
              text=ReplaceString(text,"8-)","<")
              text=ReplaceString(text,";-)",",")
              text=ReplaceString(text,"\o/",".")
              WriteStringN(1,text)
         Next       
         CloseFile(1)
      EndIf
EndIf

Verfasst: 26.07.2008 09:16
von STARGÅTE
ZeHa hat geschrieben:So wie ich das verstanden habe geht es nicht drum, für jeden xbeliebigen Befehl ein Icon zu finden, sondern Xaby will ja ein paar Dinge auch zusammenfassen. Ein Fenster z.B. könnte sowieso direkt durch ein Design-Tool gemacht werden, wozu soll man das auch "programmieren".
Aber genau das ist doch ein größer Fehler.

Leute die dnan anfangen mit Programmieren freuen sich erst, "Ui, ich kann ein Fenster machen, blabla blub...", stellen (Monate) später aber fest das sich beim "verfeinern" und individualisieren ihrend Werken keine Ahnung haben was sie im Code seber machen müssen.
Denn alles kann man einfach nicht mit Grafik ausdrücken, nicht um sonst würde damals die Schrift erfunden, sodass wir heute nicht mehr mit Bildchen uns verständigen.

@hardfalcon

das mit den TByte kann ja sein, aber ein UPLOAD von einem MByte dauert trotzdem noch seine Zeit.

Verfasst: 26.07.2008 10:02
von Xaby
Ihr alten Schwarzmaler :mrgreen:

Ich hab schon eine Unit geschrieben, die meinen Befehlssatz auf ca. 25 Befehle für den Nutzer nach außen hin sichtbar macht.

Leider kann man in PureBasic keine Öffentlichen und Privaten Prozeduren sowie Variablen definieren.

Meine Idee ist schon sehr ausgereift, ich habe mich damit schon etwas länger als nur einen Nachmittag beschäftigt.

Es gibt auch Ansätze, die das ganz schick hinbekommen:

- StageCastCreator
- Scratch (MIT)
- Alice.org
Stargate hat geschrieben: alleine schon die Befehle (OpenWindow, OpenWindowedScreen, OpenScreen) sind (meiner Meinung nach) auf kleinen Icons (32*32) kaum unterscheidbar.
Da hast du zwei Denkansätze, die so nicht richtig sein müssen.
Erstens wie ZeHa richtig erkannt hat, müssen nicht alle Befehle ein Symbol bekommen.

Ich umgehe das zum Beispiel in dem es für alle 3 Befehle nur einen Befehl gibt und der nennt sich: StartProgram()

Zweitens, wer sagt, dass die kleinen Bildchen nur 32*32 groß sein dürfen?
Bei Dune 2077 sind ja auch Gebäude und bewegliche Einheiten nicht alle gleich groß.
Stargate hat geschrieben: Aber genau das ist doch ein größer Fehler.

Leute die dnan anfangen mit Programmieren freuen sich erst, "Ui, ich kann ein Fenster machen, blabla blub...", stellen (Monate) später aber fest das sich beim "verfeinern" und individualisieren ihrend Werken keine Ahnung haben was sie im Code seber machen müssen.
Denn alles kann man einfach nicht mit Grafik ausdrücken, nicht um sonst würde damals die Schrift erfunden, sodass wir heute nicht mehr mit Bildchen uns verständigen.

@hardfalcon

das mit den TByte kann ja sein, aber ein UPLOAD von einem MByte dauert trotzdem noch seine Zeit.
Die Sprache ist nicht für dich gedacht, du kannst ja schon programmieren.
Meine EXE-Dateien werden ohne integrierte Metadaten mit JPEG-Unterstützung ca. 50 KByte groß, wenn man die als RAR oder ZIP macht, kommt man auf ca. 25 kByte.

Es geht nicht um Hardware nahe Programmierung, Performance ist auch erstmal zweitrangig.

Was das Lernen von Logik angeht, kann man das genauso mit Bildern wie mit Befehlen.

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

Jetzt kommt der Knaller, ich hatte mir lange überlegt, ob ich eine Zwischensprache einführe, die einfacher ist als PureBasic,

und egal wie bin ich immer auf zwei Möglichkeiten gestoßen.
Entweder ich nehme Bilder oder ich nehme einfach PureBasic-Befehle.

Bilder haben den großen Vorteil, dass sie in jeder Sprache gleich aussehen können und mehr oder weniger verstanden werden.

Siehe PhotoShop. Ein Pinsel ist zum Malen da und ein Farbeimer zum Füllen von Flächen.

Das wären schon zwei mögliche Symbole für 2D-Drawing-Befehle.

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

Meine Idee war auch, dass der Nutzer immer die Möglichkeit hat, zwischen dem Code und den Bildchen hin und her zu schalten, bzw. so wie es bei ZLango ist, dass das Wort in eigener Sprache darunter steht.

Das würde aber wieder eine Übersetzungsbibliothek voraussetzen.

Der Vorteil davon, dass der Nutzer den Code sehen kann ist, dass er immer die Befehle mit den Bildchen verbindet und so auch begreift, was hinter den Bildchen steht.

Hier mal ein Beispielcode, allerdings haben erste Alphatests schwerwiegende Grafikstörungen angezeigt.

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  
  Highest_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
      

  DragDrop_FL2D("Maus Key Fenster")
 ; "Fenster" ist fliederfarbend und unter dem Stift, aber über der Maus angeordnet
  
  For i=0 To 10
     ; DragDropOBJ_FL2D(Str(i))
      DragDrop_FL2D(Str(i))
  Next     

EndProcedure
Hier die EXE:
http://www.folker-linstedt.de/pureforum/FLDGS.zip

Mit dem Befehl

Code: Alles auswählen

StartMyProgram_FL2D(1) 
Würde das Programm im Vollbildmodus starten.

Zoomfunktionen und Bildschirmauflösungsveränderung sind zurzeit nur bedingt integriert.

Bei 800 x 600 hat man aber etwas Platz, um sich ausleben zu können.

Wenn man das später vor hat, kann man Optional dann noch angeben, wie hoch und breit die Ausgabe sein soll.

Der Vorteil von PureBasic als Sprache ist hier, dass ich alle PureBasic-Befehle ebenfalls nutzen kann.
Stargate hat geschrieben:Programmieren sollte weiter hin Text bleibung und nicht durch eine überflutung von Bilder gestört werden.

Außerdem kommt bei gleichartigen Befehlen irgendwann zu unerkennbaren Bildern bzw zu verwechselungen oder fehdeutungen.
Nachsatz an Stargate, ohne dass du es als persönlichen Angriff interpretierst, aber bei deinem ersten Posting, hätte ich an deiner Stelle lieber Bilder gemalt als Schrift zu benutzen :roll: :allright:
bleibung :mrgreen:
verwechselungen :D
fehdeutungen :lol:

Ist nicht böse gemeint. Aber damit zeigst du selbst, welchen Vorteil Bildchen hätten <)