HomePage > ComponentHowTo Components and HowTos > HowToProgramming Programming

Vala Genie Intro


What is this?

An introduction to using the Genie Programming language under Puppy Linux

Main features:

- Compile-time bindings available for most shared libraries.
- Only needs Gnu C compiler -- so can be compiled for any operating system and CPU.


What is the difference between Vala and Genie?


Vala is more like C/Java, Genie like Basic.


Who Created Genie?


Jamie McCracken created Genie,
Jürg Billeter and Raffaele Sandrini are the main developers of Vala.



When were Vala and Genie created?


Vala came first in mid-2006, with a C#-like syntax.
Genie followed in mid-2008 influenced in part by Python and Delphi.
These languages use the same compiler and support all the same features


How do I use Genie in Puppy?


Check here

Is Genie a good language to start programming with?


Being like Python it forces an easy to use spaced format with a simple modern syntax. It is more consistent and flexible than BASIC and logo or other languages recommended for beginners. However be aware: Documentation in English is available, but not redundant and not always beginner-friendly. Documentation in other languages, is almost inexistant.

Is it suitable for professionals?


Code is compiled to C, making it fast and efficient. Linux uses C as its main language and the Gnome project is developing Vala

Basic Concepts


Files

Genie code must be written in files with the *.gs extensions. Vala codes must be written in files with the .vala extension.

When you want to compile Genie code, you give the compiler a list of the files required, and Genie/Vala compiler will work out how they fit together.

Syntax

Genie's syntax mixes features of several high level languages including Python, Boo, Delphi and D

Genie is case sensitive as a result of it being compiled into c code - so be careful when mixing case in your code.

An identifier is defined by its name and its type, e.g. i:int meaning an integer called i. In the case of value types this also creates an object of the given type. For reference types these just defines a new reference that doesn't initially point to anything.

Genie has a mechanism called Type Inference, whereby a local variable may be defined using var instead of giving a type, so long as it is unambiguous what type is meant.

Genie support is now in Gtksourceview:

Where can I find out about String handling in Genie?


http://puppylinux.com/blog/?viewDetailed=00609

Genie strings page:

http://puppylinux.com/blog/?viewDetailed=00608

Just to remind to install the gtksourcefile pet as well as the Valide one
Mark has kindly prepared
http://dotpups.de/puppy4/dotpups/Programming/Vala/

Especially Glib is important.
For example the string functions in Genie are the GLib functions:
http://valadoc.org/?pkg=glib-2.0&element=string
A bit difficult to find when you are new, but very essential!



Where is valide code saved?


cd /root/valide/Genie

./Genie

Or:

/root/valide/Genie/Genie



How do you compile code?


valac -C v5.gs

valac -C v4.vala

This just creates v5.c and v5.h.



Can the code be used in other Linux distributions?


Yes

Is Vala available for Windows?


Yes

http://dotpups.de/puppy4/dotpups/Programming/Vala/Vala-for-Windows/



Where can I find out about Valide?


http://valaide.blogspot.com/2009/03/genie-support.html


Code example Vala


class Demo.HelloWorld : GLib.Object {

	public static int main(string[] args) {

		stdout.printf("Hello, World\n");

		return 0;
	}
}


random method

from GLib.
http://valadoc.org/?pkg=glib-2.0&element=GLib.Random

Example:

Code:

// return a random value from 1 to 9

a:int

a = GLib.Random.int_range(1,10)

print("%d" ,
init





Infinite Monkey theorem

// Infinite Monkey Theorem
// Lobster and Shadow, March 2009 LGPL

// use from command line
// imt ["search text"]
// generates random characters and searches for a given pattern eg 'in the beginning was the world'
// warning strings longer than "in the" may take minutes or hours to find

// program demonstrates:
// basic functions
// passing parameters in command line
// random character generation
// constant
[indent=3]
def getRandomNumber(RangeFrom:int, RangeTo:int) : int /* function to create random number between range */
return GLib.Random.int_range(RangeFrom,RangeTo)

def getRandomChar() : char /* function to generate ascii codes from a-z and space (32) */
num:int = getRandomNumber(0,27)
if num == 0
num = 32
else
num = num + 96
return (char) num

def addRandomChar(myText:string) : string /* function add text from command line */
var retText = new StringBuilder
retText.append(myText)
retText.append_c(getRandomChar())
return retText.str

init
USAGE:string = "Usage:\n\t ./imt \"some text for monkeys to generate\" "
theText:string = args[1]
if theText == null
theText = ""
theText = theText.down() /* change any text input to lower case */
myText:string = ""

if theText != ""
do
do
myText = addRandomChar(myText)
while theText.len() != myText.len()
print("%s" , myText)
if theText != myText
stdout.printf("\n")
myText = ""
while theText != myText
stdout.printf("\n")

else
print("%s" , USAGE) /* this appears if program run without text */ a)



Links

http://live.gnome.org/Genie official genie site

http://puppylinux.com/genie/ Barry's site

http://valadoc.org/?

http://www.vala-project.org/doc/vala/
http://live.gnome.org/Vala
http://live.gnome.org/Vala/Tutorial
http://library.gnome.org/devel/glib/

There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki