You are not logged in.

karl-der-tester

Unregistered

1

Wednesday, December 17th 2008, 11:12pm

Erster Test

Hi,

ich hab mal gerade das Teil mit ein paar Testprojekten getestet. Hier mal, was mir aufgefallen ist und dringend geändert werden müsste:

  • Option Compare Text - kennt er nicht.
  • Optional als Schlüsselwort in Funktionen - das ist nun mal eine Technik, die in VB-Programmen relativ häufig eingesetzt wird. Müsste automatisch in überladene Funktionen umgewandelt werden.
  • Dass ByRef als Schlüsselwort erhalten bleibt, ist zwar schön, bringt einem aber nichts, wenn es dann im fertigen Programm nicht umgesetzt wird. Dadurch entstehen zahlreiche unerklärliche Fehler bzw. verursachen eine halbe Neugestaltung der Software.
  • Probleme beim API-Import - VB-Programme verwenden diese üblicherweise. Ebenso VarPtr bzw. AddressOf
So in diesem Stadium ist der Import vorhandener Projekte nicht machbar. Ansonsten sieht das Projekt schon vielversprechend aus - ein OpenSource-Projekt draus machen, und es könnte sich zu einem Renner entwickeln.

Karl

karl-der-tester

Unregistered

2

Wednesday, December 17th 2008, 11:19pm

RE: Erster Test

Mit mehreren Anweisungen in einer Zeile (Doppelpunkt) hat er scheinbar ebenfalls Probleme; außerdem werden Zeilennummern als fehlerhaft angekreidet, die nicht existieren (Datei ist nicht so lang). Und "End Sub" vermisst er ebenfalls - obwohl vorhanden. Im Moment also leider nicht wirklich großteils fehlerfrei und damit verwendbar.

Manuel

Administrator

  • "Manuel" is male

Posts: 252

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

3

Thursday, December 18th 2008, 1:23am

vorweg: dein hauptziel ist die konvertierung von vb6-projekten. das ist nicht die hauptaufgabe von jabaco, aber wird in zukunft natürlich noch weiter verbessert. z.b. bietet jabaco einem vb6-entwickler die mögilchkeit java-technologie zu verwenden ohne java zu lernen. es ist also möglich mit sehr wenig aufwand eine anwendung zu erzeugen ohne die strenge typisierung von java zu beachten, oder durch doevents auf threads zu verzichten, .... jabaco bietet dir viele einzigartige möglichkeiten und löst einige probleme die ein unerfahrener java entwickler auf jeden fall haben wird.

> Option Compare Text - kennt er nicht

ok - notiert.

> Optional als Schlüsselwort in Funktionen - das ist nun mal eine Technik,
> die in VB-Programmen relativ häufig eingesetzt wird. Müsste automatisch
> in überladene Funktionen umgewandelt werden.

"optional" gibt es in java bytecode leider nicht. per überladung wäre das evtl. machbar - werde das noch genauer prüfen...

> Dass ByRef als Schlüsselwort erhalten bleibt, ist zwar schön, bringt einem aber nichts,

java bytecode unterstützt kein byref, aber es geht auch ohne. evtl. wird die nächste version eine fehlermeldung ausgeben, oder dem benutzer diese entscheidung überlassen.

> Probleme beim API-Import - VB-Programme verwenden diese üblicherweise. Ebenso VarPtr bzw. AddressOf

das ist nicht so einfach => du könntest versuchen es zu implementieren => ich verwende die sourcen von "nativecall" für native calls in jabaco: http://johannburkard.de/software/nativecall/

----

> Mit mehreren Anweisungen in einer Zeile (Doppelpunkt) hat er scheinbar ebenfalls Probleme;

wann genau?

> außerdem werden Zeilennummern als fehlerhaft angekreidet,
> die nicht existieren (Datei ist nicht so lang).

wann genau?

> Und "End Sub" vermisst er ebenfalls - obwohl vorhanden.

wann genau?

> Im Moment also leider nicht wirklich großteils fehlerfrei und damit verwendbar.

natürlich gibt es noch ein paar herausforderungen, aber deine probleme sind vermutlich nur kleine fehler in der sprachdefinition und leicht zu beheben.

> ein OpenSource-Projekt draus machen, und es könnte sich zu einem Renner entwickeln.

das framework ist bereits opensource @ sf

Manuel

Administrator

  • "Manuel" is male

Posts: 252

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

4

Thursday, December 18th 2008, 7:46pm

wäre wirklich ganz gut, wenn du mir genau sagen könntest wie du das gemacht hast. folgender source (viel schlimmer kann man das garnicht machen) funktioniert bei mir problemlos:

Jabaco Source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Public Sub Command1_Click()

Goto 1
EXITSUB: Exit Sub
1: msgbox "test": Dim i As Integer = 3: Goto 3
2: msgbox i: Goto FORNEXT
3: Goto 2
FORNEXT: For i = 1 To 10: v = v + i: Next
99: Select Case i: Case 1: Case 2: Case 11: msgbox "fornext": End Select:
GOTO EXTREMFALL
EXTREMFALL:
i = _
i + 9: i = _
i - _
10
Goto 10
10
msgbox i
Select Case i: _
      Case 5: _
            Case 10: msgbox _
"extrem" & _
"fall"
      Case 11: _
                  End Select
Goto EXITSUB
End Sub

Posts: 9

Date of registration: Nov 30th 2008

  • Send private message

5

Thursday, December 18th 2008, 8:23pm

Sorry, wenn ich kurz dazwischenlabere, aber wenn hier schon Dinge aufgelistet werden, die nicht funktionieren, ist mir noch folgendes aufgefallen (wollte auch ein VB6-Projekt portieren): Option Base 1

Achja, ist eigentlich irgendwo ein Menü-Editor "versteckt"?

Manuel

Administrator

  • "Manuel" is male

Posts: 252

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

6

Thursday, December 18th 2008, 9:09pm

> Option Base 1

danke - es fehlen noch ein paar mehr vb6-befehle (while wend, foreach, ...). die meisten davon kann man sehr leicht implementieren - aber momentan konzentriere ich mich auf die vorhandenen funktionen, das deployment und die dokumentation. danach kommen wieder angenehmere arbeiten wie sprachdesign / neue features. wobei ich lieber funktionen implementiere die ich auch selbst verwende :rolleyes: also vermutlich wird es generics vor "option base" geben.

> Achja, ist eigentlich irgendwo ein Menü-Editor "versteckt"?

Create Jabaco-Menu / Jabaco-ToolBar

karl-der-tester

Unregistered

7

Thursday, December 18th 2008, 10:23pm

Quoted

vorweg: dein hauptziel ist die konvertierung von vb6-projekten.


Wäre ganz nett, also inklusive API etc. Ich hätte ein paar Anwendungen, die ich gerne auch gerne unter Linux zum Laufen bringen würde. Allerdings wie gesagt: In VB-Programmen verwendet man nun mal gern die Windows-API, die man nicht ohne weiteres durch Java-eigene Funktionen ersetzen kann. Wenn ich nur an den Code denke, mehrere Bildschirme zu identifizieren, Bildmanipulationen über Speicherzugriffe, CallWindowProc und ASM... Dann die Sachen, die man in Java mehr durch Vererbung löst statt durch Subclassing... das alles per Hand anzupassen, würde meistens eine Software-Neuentwicklung bedeuten.

Quoted

bietet jabaco einem vb6-entwickler die mögilchkeit java-technologie zu verwenden ohne java zu lernen.


Nun ja, ob ein VB6-Entwickler Jabaco nimmt, nur um Java verwenden zu können?

Quoted

oder durch doevents auf threads zu verzichten, ....


Gerade Threads wäre ein super Aspekt, Jabaco zu verwenden. Das wäre die Einfachheit von VB (ohne sich mit Swing rumschlagen zu müssen) verbunden mit Threads. Und Multi-Threading in VB6 ist... nun ja, sehr instabil. Man muss aufpassen was man macht und erlebt hin und wieder Totalausfälle von Controls. Siehe Winsock - SendData in nem neuen Thread? Vergiss es. Ansonsten die Plattformunabhängigkeit, wenn man Anwendungen von Grund auf entwickelt. Dann könnte man über #If Win32 Then Api-Funktionen verwenden, bei #If Linux Then entsprechende Alternativen.

Quoted

"optional" gibt es in java bytecode leider nicht. per überladung wäre das evtl. machbar - werde das noch genauer prüfen...


Klar machbar. Eine Funktion machen, die alle Parameter erwartet, und entsprechend viele überladene, die einfach den Defaultwert (bei Optional) übergeben an die Original-Funktion. IsMissing dürfte noch ein Problem werden, aber vielleicht könnte man dafür eine Konstante NIL/NULL einführen?

Quoted

java bytecode unterstützt kein byref, aber es geht auch ohne.


Das ist aber einer der Gründe, warum VB6-Programmierer kein Java mögen :) Als Alternative könntest du bei ByRef vor dem Funktionsaufruf die Sache in eine Klasse stecken (also bspw. new Integer() in Java), darin dann die Funktion arbeiten lassen, und nach dem Funktionsaufruf das wieder in einem primitiven Datentyp kopieren. Muss der Nutzer ja nicht mitkriegen, ist Aufgabe des Compilers.

Quoted

> Mit mehreren Anweisungen in einer Zeile (Doppelpunkt) hat er scheinbar ebenfalls Probleme;

wann genau?

> außerdem werden Zeilennummern als fehlerhaft angekreidet,
> die nicht existieren (Datei ist nicht so lang).

wann genau?

> Und "End Sub" vermisst er ebenfalls - obwohl vorhanden.

wann genau?


Diese zwei Zeilen in ein leeres Form einfügen:

Source code

1
2
Option Explicit
Private Sub VS_Change(): Redraw: End Sub


Reproduzierbare Fehlermeldung von wegen dem fehlenden End Sub, und Zeile 4 gibt's darin auch nicht.

Quoted

das framework ist bereits opensource @ sf


Muss ich mir mal näher ansehen.

Ich hab mir auch mal so ein Projekt vorgenommen - aber ich wollte das ganze dann durch den FreeBasic-Compiler jagen (für ordentliche Anwendungen ohne Abhängigkeiten für mehrere Plattformen). Dummerweise kann der immer noch keine Vererbung, und das wäre schon recht nett und arbeitserleichternd :(

Manuel

Administrator

  • "Manuel" is male

Posts: 252

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

8

Thursday, December 18th 2008, 11:40pm

Quoted

Wäre ganz nett, also inklusive API etc.
über jni ist alles möglich. es gibt keine einschränkung. es ist nur leider nicht ganz so einfach wie der jabaco-wrapper

Quoted

Nun ja, ob ein VB6-Entwickler Jabaco nimmt, nur um Java verwenden zu können?
natürlich nicht nur deshalb. vielleicht auch weil man .net nicht mag, oder software für linux entwickeln möchte, oder weil man einen objektorientierten basic dialekt mit threading haben möchte, oder weil es wenige komfortable entwicklungsumgebungen gibt, oder weil man ein applet entwickeln möchte, oder java servlets, oder ja - um einfach nur die java technologie zu verwenden. nicht ohne grund hat java die größte marktmacht mit über 20 % - afair liegt .net bei 4-5 % warum auch immer sich jemand für jabaco entscheidet - es ist eine gute wahl :) und wenn du eine alternative verwenden möchtest:"just do it".

Quoted



Quoted

oder durch doevents auf threads zu verzichten, ....
Gerade Threads wäre ein super Aspekt, Jabaco zu verwenden.
jabaco unterstützt natürlich threading. aber wenn man zb. nur eine simple berechnung, oder abfrage machen möchte - wieso sollte man sich dann mit threading und sychronisierung arbeiten? dafür gibt es in jabaco den einfachen weg über doevents. es ist beides möglich - die entscheidung liegt beim entwickler.

Quoted

Dann könnte man über #If Win32 Then Api-Funktionen verwenden, bei #If Linux Then entsprechende Alternativen.
verwende java-funktionen, dann brauchst du keine winapi und keine unterscheidung. für den entwickler sollte das transparent sein.

Quoted

Klar machbar. Eine Funktion machen, die alle Parameter erwartet, und entsprechend viele überladene, die einfach den Defaultwert (bei Optional) übergeben an die Original-Funktion. IsMissing dürfte noch ein Problem werden, aber vielleicht könnte man dafür eine Konstante NIL/NULL einführen?
hmm. ja - vermutlich. aber vorerst verweigere ich da die aussage :) evtl. wird es der konverter machen. evtl. wird es das "optional"-statement in der sprache jabaco geben und evtl. werde ich das auch komplett anders lösen.

Quoted

Das ist aber einer der Gründe, warum VB6-Programmierer kein Java mögen :) Als Alternative
ich glaube dafür gibt es noch mehr gründe.

Quoted

[...] könntest du bei ByRef vor dem Funktionsaufruf die Sache in eine Klasse stecken (also bspw. new Integer() in Java), darin dann die Funktion arbeiten lassen, und nach dem Funktionsaufruf das wieder in einem primitiven Datentyp kopieren. Muss der Nutzer ja nicht mitkriegen, ist Aufgabe des Compilers.
ja - vermutlich würde auch das gehen. vielleicht sollte ich ein prio-voting einführen.

Quoted

Option Explicit
Private Sub VS_Change(): Redraw: End Sub
omg ;) ok - das ist eine minimale änderung im sprachdesign. ist in ein paar tagen behoben.

Quoted

Reproduzierbare Fehlermeldung von wegen dem fehlenden End Sub, und Zeile 4 gibt's darin auch nicht.
was meinst du?

Quoted

Ich hab mir auch mal so ein Projekt vorgenommen - aber ich wollte das ganze dann durch den FreeBasic-Compiler jagen (für ordentliche Anwendungen ohne Abhängigkeiten für mehrere Plattformen). Dummerweise kann der immer noch keine Vererbung, und das wäre schon recht nett und arbeitserleichternd :(
ok - vielleicht hast du jabaco missverstanden? jabaco selbst ist ein compiler, ein debugger, eine ide, eine sprache, ein framework und eine community. welchen teil davon hättest du denn umsetzen wollen, wenn du den freebasic compiler verwenden willst?

karl-der-tester

Unregistered

9

Friday, December 19th 2008, 12:56am

Quoted

verwende java-funktionen, dann brauchst du keine winapi und keine unterscheidung.


Damit könnte sich ein normaler Programmierer gleich in Java einarbeiten :) Ja, auf Dauer wird es wohl sinnvoller sein, für alles die entsprechende Java-Alternative zu verwenden. Wobei es sicherlich nicht für alle Probleme sinnvolle Java-Lösungen geben wird (ich denke da nur an wildes handieren mit CopyMemory *g*).

Quoted

Quoted

Ich hab mir auch mal so ein Projekt vorgenommen - aber ich wollte das ganze dann durch den FreeBasic-Compiler jagen (für ordentliche Anwendungen ohne Abhängigkeiten für mehrere Plattformen). Dummerweise kann der immer noch keine Vererbung, und das wäre schon recht nett und arbeitserleichternd :(
ok - vielleicht hast du jabaco missverstanden? jabaco selbst ist ein compiler, ein debugger, eine ide, eine sprache, ein framework und eine community. welchen teil davon hättest du denn umsetzen wollen, wenn du den freebasic compiler verwenden willst?


Ich hätte gerne eine Entwicklungsumgebung mit ordentlichem Editor, Compiler, evtl. mit Framework (aber ohne JIT, Virtual Machine etc.), daraus sollten EXE-Dateien (und Linux-Binaries etc.) entstehen, ohne feste Abhängigkeiten (mal abgesehen von denen, die ich wissentlich selbst absichtlich einbaue). Das gaze in einer Sprache, die mir ein bisschen die Lesbarkeit von Basic bringt, aber gleichzeitig die Flexibilität von C/Java/etc. in Hinsicht der Schreibweise mit Semikolon am Ende, Blöcken etc. ohne Zeilenumbruchpflicht und so. Und natürlich mit der Freiheit von bspw. PHP - dort darf ich alles schreiben, was ich möchte - wenn es Sinn macht, ist es in Ordnung (wenn ich $$$a(&$b)[4]; schreiben will - warum nicht?). Nette Features wie Pointer auf Variablen, auf Funktionen (die man auch leicht wieder aufrufen kann), Inline-Assembler... Alles halt :)

Sobald FreeBasic eine vernünftige Möglichkeit hat, Klassen inklusive Vererbung zu verwenden, könnte man mit den ersten Libraries in FreeBasic beginnen (ein Abstraktionslayer für das System, darauf aufbauend das Framework). Dann eine IDE basteln - Formulareditor wie aus VB gewohnt, netter Code-Editor dazu (mit den technischen Features der letzten Jahre) und ab die Post. Das ganze als OpenSource veröffentlicht, und wenn es sauber gemacht ist und gut klingt, ne Community dazu aufziehen.

Posts: 9

Date of registration: Nov 30th 2008

  • Send private message

10

Friday, December 19th 2008, 8:34am



Sobald FreeBasic eine vernünftige Möglichkeit hat, Klassen inklusive Vererbung zu verwenden, könnte man mit den ersten Libraries in FreeBasic beginnen (ein Abstraktionslayer für das System, darauf aufbauend das Framework). Dann eine IDE basteln - Formulareditor wie aus VB gewohnt, netter Code-Editor dazu (mit den technischen Features der letzten Jahre) und ab die Post. Das ganze als OpenSource veröffentlicht, und wenn es sauber gemacht ist und gut klingt, ne Community dazu aufziehen.


Sicher nett, aber dann sollte es endlich einen 64bit-Port von FreeBasic unter Linux geben ...
Wie wäre es mit FreePascal/Lazarus ? :rolleyes:

karl-der-tester

Unregistered

11

Friday, December 19th 2008, 3:50pm

Quoted

Sicher nett, aber dann sollte es endlich einen 64bit-Port von FreeBasic unter Linux geben ...
Wie wäre es mit FreePascal/Lazarus ? :rolleyes:


In Pascal müsste ich mich erst aufwändig einarbeiten - hab damit bisher noch überhaupt keine Bekanntschaft gemacht. Syntax wäre nicht das Problem, eher die Zeit, die dafür drauf geht...

Posts: 9

Date of registration: Nov 30th 2008

  • Send private message

12

Friday, December 19th 2008, 5:45pm

Ich habe mal einen Vergleich zwischen FreeBASIC und Freepascal gemacht:
http://forum.basicprogramming.org/index.php?topic=139.0
War über die Ähnlichkeit selber überrascht. Natürlich ähneln sich Delphi/Lazarus und VB-Syntax nicht so sehr

Manuel

Administrator

  • "Manuel" is male

Posts: 252

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

13

Friday, December 19th 2008, 7:52pm

Quoted

Damit könnte sich ein normaler Programmierer gleich in Java einarbeiten :)
ich weiß nicht genau was ich mit dieser aussage anfangen soll - willst du die vorteile von jabaco gegenüber java wissen? es ist unmöglich da wirklich alle zu erfassen - es kommt auf deinen anwendungsfall an. wenn du für dich persönlich keinen nutzen siehst, dann verwende doch einfach eine alternative?

Quoted

Wobei es sicherlich nicht für alle Probleme sinnvolle Java-Lösungen geben wird (ich denke da nur an wildes handieren mit CopyMemory *g*).
wieso sollte es keine sinnvolle java-lösung für deine probleme geben? du hast die möglichkeit mit copymemory zu arbeiten - aber es zwingt dich niemand dazu. die funktion copymemory würde in jabaco (in den meisten fällen) einfach keinen sinn machen.

mein standpunkt zu der java / x86 diskussion:

es ist möglich aus java-bytecode direkt x86 binarys zu erstellen und selbstverständlich könnte man die implementierten ressourcen auf das nötigste beschränken. das ist aber nicht meine aufgabe - mit jabaco biete ich die grundlage diese technologie zu verwenden. evtl. teste ich mal gcj, oder einer gcj-alternative. aus meiner sicht ist dieser weg aber falsch. auf den meisten rechner existiert bereits eine vorinstallierte java-version. sollte diese nicht vorhanden sein, dann wird diese einfach aus dem internet installiert - genau so funktioniert das jabaco-setup und ich habe keine probleme damit.

java bytecode bietet dem entwickler diverse vorteile:

  • java hat eine sehr sehr hohe verbreitung auf servern, pcs (windows, linux, mac), pdas, handys, set-top-boxen, usw. (vermutlich gibt es mehr java vm's als windows-pc's)
  • es gibt sehr viele ressourcen für java bytecode (s. sourceforge.net)
  • es gibt sehr viele techniken für die java technologie (jnlp, signierung, remote debugger, servlets, java me, ...)
  • es gibt sehr viele konverter für java bytecode (bytecode=>x86, bytecode=>msil, ....)
  • java verifiziert die arbeit vom compiler (im classloader, in arrays, ...)
  • ...

und wieder ist es einfach unmöglich eine komplette liste zu schreiben. die stärkte von jabaco liegt in der java technologie. es gibt unglaublich viele basic compiler für nativecode und basic interpreter. ich selbst würde das aus verschiedenen gründen nicht tun:

  • man müsste ein passendes framework für die ziel-architektur finden oder jahre in die entwicklung investieren
  • es ist mehr aufwand einen guten debugger dafür zu entwickeln
  • es ist mehr aufwand eine objektorientierte sprache zu entwickeln
  • es ist kompliziert eine einfache sprache ohne garbage collecter zu entwickeln
  • es ist mehr aufwand deine binarys zu optimieren
  • deine binarys sind nur auf einer zielplatform lauffähig
  • es gibt zu viel konkurrenz
  • ...

und wieder eine endlos lange liste... die vorteile sind, zumindest aus meiner sicht, ganz klar. wenn du sie erkennen kannst - dann verwende jabaco.

Rate this thread
WoltLab Burning Board