Revision [64]

This is an old revision of GenieProgramming made by CrustyLobster on 2009-07-21 07:16:06.

 

Getting started with vala/genie.

Ok, here it goes again (seamonkey crashed :@. Now writing from the safety of my Geany). On the past few days i have been incursionating into the world of vala. I am absolutely and completely a noob, so all I will do is tell you how to install it and give you a few links that aren't so easy to find (randomness is on my side).
Installing Vala/Genie Compiler + Val(a)ide on puppy linux.

Step one: Installing Devx.

First of all, according to MU, you need to install devx_xxx.sfs (where xxx is your version number). For example, say i were using Puppy 4.2.1, the devx module i'd have to install would be devx_421.sfs . You can find them all altoghether here:

ftp://ftp.ibiblio.org/pub/linux/distributions/puppylinux/sfs_modules-4/

Installing a sfs is easy, don't worry. All you have to do is download it, check it's checksum with the md5sum command to avoid headaches, and after (or before, please yourself) you have compared it with the checksum the ftp gives, you have to place it in /mnt/home/.

Once that step is completed, you must go to Menu > System > Bootmanager > Load SFS, and ask it to load it at boot. When you reboot, you can open a console and type "make". If it says: "make: * No targets specified and no makefile found. Stop." you have successfully completed step one.
Step 2 :Install vala.

All you have to do is to install these three pet files:

http://dotpups.de/puppy4/dotpups/Programming/Vala/vala-0.7.0-i486.pet
http://dotpups.de/puppy4/dotpups/Programming/Vala/gtksourceview-2.4.2.pe...
http://dotpups.de/puppy4/dotpups/Programming/Vala/valide-0.4-1-i686-svn-...

After that is done, you are all ready to work with vala. You can edit your files in a text editor, and save them with .gs extension for genie, and .vala extension for vala. Once the file has been saved, you can compile it with "valac file.gs" or "valac file.vala"

That will create an executable file in the current working directory.
Extra juice:

Vala tutorial with source examples: (A must check.)
http://live.gnome.org/Vala#head-9c728d151a2a0483d4f3b5837e5b545df9d8499d

Horribly complex tutorial: (sorry)
http://live.gnome.org/Vala/Tutorial

Valadoc:

http://live.gnome.org/Valadoc

C++ reference: (somewhat similar to vala, i think).
http://sistemas.itlp.edu.mx/tutoriales/tutorc/index.htm

What is this?

An introduction to using the Genie Programming language under Puppy Linux



What are the main features of Genie?


*

A true compiler
A "Hello world" console executable is 2.9KB, a GTK GUI "Hello world", with a OK button thrown in, is 5.8KB
*

Easy Python-like language
*

Easy GTK programming
*

Link directly with the system shared libraries
No huge binding libraries, nothing required at runtime. No bloat!
*

Library support
Compile-time bindings available for most shared libraries.
*

Plain-C intermediate code
Only needs Gnu C compiler -- so can be compiled for any operating system and CPU.
*

Object oriented
Objects are not "bolted on" as for some languages that started life as procedural-only. But Genie code can be non-object-oriented if you wish.
*

Programs written in Genie should have have similar performance and resource usage to those written directly in Vala and C

*

Genie has none of the bloat and overhead that comes with many other high level languages which utilize a VM (Eg Python, Mono, et al)

*

Classes in Genie are actually gobjects so Genie can be used for creating platform code like widgets and libraries where gobjects are required for binding to other languages.
*

The generic nature of Glib means that you can use Vala/Genie for any kind of programing, but Glib/Gobject does make it particularly easy for GTK coding.


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?



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.

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.

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

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 examples

Hello world

[indent=2]

init

var a = "hello world"
print("%s" , a)

array

init

a:array of string = {"abc", "def", "xyz"}

for s in a

print(s)

random method

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

Example:

Code:

init

return a random value from 1 to 9

a:int

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

print("%d" ,



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 return GLib.Random.int_range(RangeFrom,RangeTo)

def getRandomChar() : char num:int = getRandomNumber(0,27)
if num
0 num = 32
else
num = num + 96
return (char) num

def addRandomChar(myText:string) : string 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) 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/

http://dotpups.de/puppy4/dotpups/Programming/Vala/ Download
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki