Subject: Experiment - Simple windowed application
This is an attempt to translate a Rosetta Code task into what I think VF might look like.
Code:
require stdwindows #windows

object #demo is window
    title = "Rosetta Task: Simple windowed application"
    button #btn, "Click Me", btnClick, 20, 50, 100, 25
    statictext #num, "There have been no clicks yet.", 20, 100, 240, 30
    sub btnClick #sender
        static nClicks
        nClicks += 1
        #num "The button has been clicked ";nClicks;" times."
    end sub
end object

#demo show()
do wait while #windows count?
end

Require - a list of modules the program requires. The handle is optional and allows access to module-level methods.
Object - defines an object commonly called a Singleton. This is convenient when we don't need a full-blown class.
Is - indicates the parent from which a child class/object inherits some functionality.
Title - a method exposed by the Window class. The line could also be written title("Rosetta blah blah"). The equals sign can be used when a method has just one argument.
Button - a class exposed by StdWindows. The line it starts declares an object that is private to #demo. btnClick is the name of a subroutine. (I think no labeled event handlers for VF.) Unlike LB, UL and the like are optional. The button constructor literally takes a Rect object from which UL is derived. In VF, anywhere an object argument is expected, we can pass what that object's constructor expects instead. This may also allow for a flowing arrangement rather than pixel coordinates.
Sub - looks and works very much like LB. Subs and functions are private inside classes. If this were to use Method instead, that would be exposed.
Static - similar to LB's Global but the variable is local in scope to the sub. It lives as long as the object does.
+= - assigns the sum of the variable and the RHS expression to the same variable. Copied from C-like languages.
Show() - calls the method exposed by the Window class. Windows are hidden until explicitly shown.
Do - permits defining a very tight loop - one with just a single statement. The line waits for all windows to close. The question mark is an optional replacement for the empty parentheses.

Subject: Re: Experiment - Simple windowed application
I like the idea and the code is clean.

Subject: Re: Experiment - Simple windowed application
Brent,

I've been looking this stuff over. Pretty neat stuff!!

Just a thought here............

I am not sure how I would feel about this:
Code:
static nClicks


Maybe something like:
Code:
protected nClicks

'or

local nClicks


When I see the word "static" I just think of something that is unchanging.


{:0)

Brandon

EDIT: ..... What is all this garbage that is showing up down here? It doesn't show up in the preview. Looks like something from Stefan's post. .....

Subject: Re: Experiment - Simple windowed application
@Brandon, I don't have experience with too many languages, so I cannot speak with a lot of confidence, but...

In Visual Basic, a static variable (sounds like a contradiction in terms) is one that is local in scope, but retains its value even after a function returns. The next time the function is called, the value persists. It's not visible to the main program like a variable declared globally. To me, it seems like a way to include OOP features in a non-OOP language.

http://www.1sayfa.com/1024/diger/vb/ch07.htm#Heading12

Subject: Re: Experiment - Simple windowed application
nukesrus21 wrote:
Maybe something like:
Code:
protected nClicks
'or
local nClicks

My personal preference is for:
Code:
private nClicks

I share your dislike of static. It originates from C, I think, in which it has multiple (and confusing IMHO) meanings. To me local doesn't imply that the value is preserved from one call to the next, which is the key feature.

Richard.

Subject: Re: Experiment - Simple windowed application
The "static" keyword may have originated with C, but my usage in the example derives from its use in QBasic. The following is valid QBasic.
Code:
SUB counter
    STATIC c
    c = c + 1
END SUB

If you want to know more about the concept, try http://en.wikipedia.org/wiki/Static_variable.

The original example could be rewritten (including updated naming) as
Code:
require StdGUI #gui

object #demo is window
    var nClicks ' private to the object
    title = "Rosetta Task: Simple windowed application"
    button #btn, "Click Me", btnClick, 20, 50, 100, 25
    statictext #num, "There have been no clicks yet.", 20, 100, 240, 30
    sub btnClick #sender
        nClicks += 1
        #num "The button has been clicked ";nClicks;" times."
    end sub
end object

#demo show()
do wait while #gui WindowCount?
end

Subject: Re: Experiment - Simple windowed application
If this is how it ends up, this could quite possibly be the most wonderful programming language ever created. I'm going to start reading about this.


Page 1 of 1


Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Full Version
Powered by phpBB © phpBB Group
Design by phpBBXS.Com | Lo-Fi Mod.