Tag Archives: Linux

Moj prvi program


Izvršavanje napisanog programa predstavlja vrlo jednostavan proces pri kojem program od korisnika zahtjeva ulazne podatke, a korisnik od programa očekuje da vrati rezultat odnosno da prikaže izlazne varijable kao traženi rezultat. Ovaj jednostavan proces izvršavanja programa nimalo nije sličan procesu njegovog nastajanja odnosno pisanja. Često program koji pišemo predstavlja dug, zamoran i frustrirajući proces implementacije, testiranja, debugiranja i korekcije. Između svake pobrojane stavke možete staviti litre popijene kafe ili čaja. Jednom kada naš program radi ispravno, svodi se na proces koji smo na početku opisali. Pisanje programa u bilo kojem programskom jeziku za mnoge a posebno developere predstavlja poseban izazov. Prije svega program predstavlja zapis određene količine znanja o nekom problemu. Ono je pohranjeno u elektronskom obliku kojeg možemo koristiti kad god želimo bez bojazni da će ono biti zaboravljeno.

Na primjer kada posmatramo program Kalkulator vidimo da on predstavlja skup određenog znanja iz područja algebre odnosno množenja, dijeljenja, logaritmiranja, trigonometrijskih i drugih transcedentnih funkcija. To je znanje trajno zapisano u digitalni oblik i kad god želimo da ga iskoristimo pokrenut ćemo program i obaviti određenu matematičku operaciju. Iz razloga što napisani program predstavlja akumuliranu količinu znanja, ono prije svega predstavlja neku posebnu vrstu ljudskog stvaranja, koju većinom koriste ljudi koji u opće nemaju to znanje. Kod primjera Kalkulator kojeg smo naveli, većina ljudi poznaje sabiranje, oduzimanje množenje, medjutim algebarske operacije mogu biti jako komplikovane za čovjeka ako koristimo velike brojeve, ili pak trigonometrijske ili logaritmaske funkcije manje poznatih uglova i brojeva.
U kontekstu korištenja programa jedan od najboljih primjera je igranje video igara. Opće je poznato da programiranje video igara predstvlja jedan od najkompleksnijih poslova softverskih inženjera. Da bi bili sposobni programirati video igrice ili razvijati engine za razvoj video igara potrebno je pored znanja razvoja softvera imati znanje iz matemtike posebno vektora, analitičke i diferencijalne geometrije i drugih područja matematike i sličnih nauka. Korisnici takvih kompleksnih softverskih proizvoda su uglavnom djeca od nekoliko godina do odraslih. Većina njih ni neposjeduje osnovne vještine razvoja softvera jer im to nije ni potrebno niti se u budućnosti žele s tim baviti. Upravo zbog ove činjenice programi predstavljaju poseban proizvod kod kojeg njegovi kreatori (developeri, razvojni inžinjeri, softverski arhitekti) imaju poseban odnos.

U ovom poglavlju biće prikazana tri jednostavna listinga u tri različita programska jezika, FORTRAN, C++ i C#. Intencija knjige je da općenito približi problematiku programiranja bez obzira kojim jezikom programer piše. Kroz cijeli tekst prikazat će se osnovne osobine svakog programskog jezika, i navesti ključne riječi koje su sasvim dovoljne da se čitalac upozna sa osobinama programskih jezika, te da u svakom od njih može pisati programe. Intencija ove knjige je da rješenje problema bude neovisno od programskog jezika, jer algoritam koji rješava problem predstavlja najvažniji korak u pisanju programa. Kada znamo algoritam rješenja problema, pisanje programa predstavlja samo jednu of faza pisanja programa. Dakle pri rješavanju problema akcenat će biti na algoritmu, dok će implementacija algoritma u specifičnom programskom jeziku biti u drugom planu. Nekada će program biti napisan u pseudo kodu, koji je lahak za razumijeti i prepisati u neki od postojećih programskih jezika. Kada implementacija određenog algoritma bude zahtijevala dodatna obrazloženja ona će biti navedena za svaki programski jezik ponaosob.
Naš prvi program neće imati nikakvih ulaznih podataka, a kad se pokrene kao rezultat prikazat će rečenicu “Moj prvi napisani program”. Napišimo zadatak za pri program.

Zadatak 1: Napisati program koji na konzolu (izlazna jedinica) ispisuje “Moj prvi napisani program”.

U FORTRAN jeziku jedno od rješenja zadatka 1 može biti:

! glavna ulazna funkcija  
program PrviProgram  
  
  implicit none  
  integer re_i  
 
  write(*,*) "Moj prvi napisani program!"  
  
  re_i = system("pause")  
  end

Listing 2.1 Rješenje zadatka 1 u FORTRAN jeziku

Kod FORTRAN jezika za ispis na konzolu koristi se ključnu riječ write koja je sastavni dio programskog jezika. Kod pisanja programa u FORTRAN jeziku potrebno da program započinje ključnom riječju program a zatim nazivom programa (Listing 2.1), dok završava ključnom riječju end, odnosno end program PrviProgram. Svaki program u ovom jeziku mora zadovoljavati ove uvjete. FORTRAN za razliku od C++ i C# nije osjetljiv na velika i mala slova, tako da svaka ključna riječ može se pisati malim ili velikim slovima ili miješanjem velikih i malih slova. Tako da ključna riječ program može biti napisana i PROGRAM ili pRoGrAm.
U C++ jeziku jedno od rješenja zadatka može biti:

#include <iostream>  
using namespace std;  
//glavna ulazna funkcija   
int main()  
{  
    cout << "Moj prvi napisani program!" <<endl;  
  
    system("Pause");  
    return 0;  
}

Listing 2.1 Rješenje zadatka 1 u C++ jeziku

Svaki program napisan u C++ mora imati započinjati sa ključnom riječju include s kojom naš program povezujemo sa eksternim bibliotekama koje su potrebne za pisanje programa. U naš zadatak povezali smo biblioteku iostream koja služi da bi koristili metode za ispis i čitanje sa konzole, odnosno da bi koristili klasu cout za ispis na konzolu. Uviđamo da C++ ne posjeduje ključnu riječ sličnu FORTRAN jeziku za ispis na konzolu, write. Pored uključivanja određenih biblioteka, svaki C++ program kao početnu tački odnosno metodu ima metodu koja se zove main. Ova metoda ima nekoliko varijanti u smislu da prihvata različit broj argumenata. Tako da main metoda ima slijedeće varijante:

int main( );
int main( int argc, const char** argv );

U slučaju kada main metoda prihvata argumenta, tada pri pokretanju programa je moguće postaviti vrijednosti za date argumente.
U C# jeziku jedno od rješenja zadatka 1 moze biti:

using System;  
  
namespace KnjigaCSharp  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
           Console.WriteLine("Moj prvi napisani program!") 
  
        }  
    }  
}

Listing 2.3 Rješenje zadatka 1 u C# jeziku

U koliko posmatamo C# verziju vidimo da smo koristili standardnu metodu WriteLine klase Console koja čini sastavni dio .NET frameworka koji predstvlja okolinu ili okvir u kojem radi C#. Izvan .NET Frameworka C# ne može da radi. Pri pisanju programa u C# potrebno je slično kao u C++, koristiti biblioteke iz .NET Frameworka, definisati prostor imena (en. namespace) i definisati klasu koja sadrži najmanje jednu metodu koja se zove main. Ralog zašto je u C# potrebno sve ovo deklarisati prije same implementacije main metoda jeste što C# predstavlja čisti objektno orijentisani programski jezik kod kojeg sve počinje sa klasama odnosno instancama klasa koje zovemo objekti.

Advertisements

Alati za programiranje II dio


IDE Integrated Development Environment

Danas programi se pišu u posebnim programima za editovanje izvornog koda. Ovi programi sadrže mnoštvo pomoćnih alata koje programerima pomažu tokom pisanja programa. Svi ovi programi integrirani su u jednu aplikaciju koju zovemo Integrated Development Environment, IDE, odnosno integrirana razvojna okolina.
Editor koda predstavlja osnovni alat a jedna od osnovnih mogućnosti editora jeste da ključne riječi, komentare, brojeve, stringove i druge dijelove koda prikazuje različitim bojama i različitim fontom. Ovaj alat zove syntax highlighting ili u prevodu označavanje sintakse.
Pored editovanja koda, druga najvažnija mogućost ovih programa je debugiranje ili mogućnost prolaska kroz linije koda u toku izvršavanja programa. Ovakav alat koji služi za pronalaženje grešaka u programu za vrijeme njegovog izvršavanja kratko zovemo debugger. Na ovaj način programeri imaju mogućnost da ispitaju kod kada program radi. Ovo je jedan od najvažnijih alata koje danas programeri imaju na raspolaganju, i prosto je nemoguće zamisliti razvoj nekog većeg projekta bez debuggera.
Pored editora koda i debuggera treći po važnosti alat za programiranje jeste tzv „Code Compleation“ programi, koji pomažu u odabiru naziva biblioteka i metoda tokom pisanja koda. Naime, kada programer započne da piše neku ključnu riječ ili naziv neke metode, program mu preko plivajućeg prozora nudi nazive metoda koje su dostupne. Različiti programi imaju različite nazive za ovaj alat, ali se generalno može nazvati „Code Compleation“. U Microsoftovom Visual Studio ovaj alat se zove Intellisense. Na slici 2.5 možemo vidjeti Intellisense u akciji.

knjig_ubuntu_terminal 05

Slika 2.5 Intellisense iskačući prozor u Visual Studio 2013

Microsoft Visual Studio

Danas sa sigurnošću možemo tvrditi da je Visual Studio kompanije Microsoft najpoznatiji, najsofisticiraniji IDE za pisanje programa. Ovaj IDE podržava nekoliko programskih jezika: C++, F#, C#, VB, JavaScript, Typescript, Python. A moguće je programirati za nekoliko platformi poput Windows Desktop, Windows Stope App, Windows Phone, Web Sites, Android i iOS. Sadrži bezbroj alata za olakšavanje pisanja koda, pregršt debuggerskih alata, alata za analizi koda, testiranje aplikacija, kontrola performansi i mnoge druge alate. Možemo slobodno kazati da je Microsoft najdalje otišao u razvoju alata za programiranje.

knjig_ubuntu_terminal 06

Slika 2.6 Visual Studio 2013 Ultimate Startni prozor
Moguće ga je skinuti i u besplatnoj verziji u tzv Express ili Community verziji koju ćemo koristiti tokom demonstarcije prijemjera u C++ i C#. Instalacija ovog alata je vrlo jednostavna dovoljno je pokrenutu web Installer datoteku koja se može skinuti sa http://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx, te u nekoliko klikova instalirati ovaj IDE.
Verzija Visual Studia koja će se koristiti ovdje, a koja se može skinuti besplatno sa pomenute stranice ima naziv: Visual Studio 2013 for Windows Desktop.

knjig_ubuntu_terminal 07

Slika 2.7 Web Site za Visual Studio 2013 Express for Windows Desktop
Klikom na link Download, pokreće se proces preuzimanja i instalacije programa. Instrukcije o instalaciji i preuzimanje nalazi se na datoj web stranici.

Code::Blocks Open Source IDE za C++ i FORTAN

Drugi program koji će se koristiti za demontraciju pisanja programa u FORTRANu jeste Code::Blocks. Ovaj program predstavlja open source projekat koji je dostupan kako na Windows tako i Linux baziranim OS. Zvanična web stranica ovog IDE je http://www.codeblocks.org. Preuzimanje programa za Windows OS se nalazi na adresi: http://www.codeblocks.org/downloads/26#windows.
Prilikom instalacije ujedno se instalira i C++ kompajler, te nakon završetka procesa instaliranja moguće je odmah pisati i pokretati C++ programe.
Međutim, u koliko želimo programirati u FORTRAN programskom jeziku, moguće je preuzeti prilagođenu verziju Code::Blocksa za FORTRAN sa adrese: http://sourceforge.net/projects/cbfortran. Ova verzija IDE dolazi bez FORTRAN kompajlera koji se može instalirati sa http://sourceforge.net/projects/mingw-w64/ lokacije. Prije samog korištenja pisanja programa potrebno je podesiti putanje za kompajler. Putanje za kompajler podešavamo preko menia Settings->Compilers.

knjig_ubuntu_terminal 08

Slika 2.8 Podešavanje putanje kompajlera za FORTRAN
Code::Blocks posjeduje i debugger za fortran pa ga je dobro podesiti na samom početku instalacije. Slijedeći dijalog prikazuje putanju i podešavanje debuggera.

knjig_ubuntu_terminal 09

Putanje koje se podešavaju, dobijaju se sa lokacije na kojoj je instaliran MinGW. Preporučena lokacija za instalaciju MinGW je C:\MinGW. Nakon uspješno podešenog kompajlera IDE je spreman za pisanje programa.

knjig_ubuntu_terminal 10

Slika 2.9 Code::Blocks verzija prilagođena za FORTRAN

Alati za programiranje I dio


Pisanje programa danas i prije 20 i više godina se razlikuje u nekoliko segmenata. Nekada su programi pisani u običnim tekstualnim programima a kompajlirani i linkani preko komandi koje su se unosile tekstualno u programe koje prihvataju komande u obliku tekstualnih linija. Npr. u Linux baziranim operativnim sistemima poput Fedora, Ubuntu, Open SUSE programi su pisani u nekom od editora teksta poput vi ili vim programa, dok se proces kompajliranja, linkanja i pokretanja realizira preko Terminala. I danas se ovakav način pisanja i pokretanja programa održao, posebno na fakultetima i akademskim zajednicama. Kompajliranje i pokretanje programa preko komandne linije moguće je raditi i u Windowsima, mada je ovakav pristup manje zatupljen na ovom OSu.

Programiranje u Linuxu

Ukoliko posjedujete jedan od Linux verzija OSamoguće je programirati samo sa običnim editorom teksta i instaliranim kompajlerom. vi ili vim editor teksta ugrađen je u sami terminal tako da u terminal prozoru možete obavljati cjelokupan proces programiranja, kompajliranja i pokretanja programa. Na slici 2.1 imamo prikazan početni izgled Ubuntu OSa, sa otvorenim Terminalom. Ubutnu verzija Linuxa predstavlja pored Fedore jednu od najpolularnijih verzija i najviše korištenu.

knjig_ubuntu_terminal

Slika 2.1 Izgled Desktopa i Terminala u Ubuntu 13
Prije samog pisanja programa potrebno je instalirati c++ kopajler u koliko već nije instaliran. Da bi instalirali c++ kompajler Na Ubuntu ilia bolo kojoj Linux distribuciji potrebno je unijeti slijedeći skup komandi:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ gcc -v
$ make -v

Sada smo u mogućnosti da kampajliramo i pokrećemo napisane c++ programe.
Za pokretanje editora teksta potrebno je unijeti slijedeću komandu:

$ sudo vi faktorijel.cpp

Ovom komandom pokrećemo vi editor u administratorskom modu, te prilikom pokretanja editora formira se nova datoteka pod nazivom faktorijel.cpp.
Pritiskom na tipku ENTER, potrebno je unijeti lozinku za administratorski nalog. Ukoliko smo ukucali ispravnu lozinku dobijamo startni prozor editora u kojem se nalaze osnovne komande za rad sa ovim jednostavnim editorom.

knjig_ubuntu_terminal 02

Slika 2.2 vi startni pozor

Prije početka editovanja, potrebno je program staviti u INSERT mod koji nam dozvoljava unos teksta. Insert mode pokrećemo ako pritisnemo tipku i. Editor je u insert modu i možemo unijeti text. Napišimo jedan C++ program koji izračunava faktorijel unesenog broja. Takav jedan program prikazuje naredna slika.

knjig_ubuntu_terminal 03

Slika 2.3 C++ program faktorijel u vi editoru

Pritiskom na tipku ESC, prekidamo insert mode i prelazimo u command mod. Sada je potrebno datoteku zapisati na disk na nazivom faktorijel.cpp. Da bi spasili datoteku potrebno je poslije pritiksa na tipku ESC upisati:

:wq

Zadnjom komandom smo sačuvali izmjene napravljene u datoteci i izašli iz vi editora. Sada smo u mogućnosti da kompajliramo i pokrenemo program. U terminal upišimo komandu:

g++ -o FAKTOR faktorijel.cpp

Ukoliko nema kompajlerskih grešaka naš program je spreman za pokretanje. Program pokrećemo na način da u komandnu liniju ukucamo:

./FAKTOR

Naredna slika prikazuje test programa za unos broja 3.

knjig_ubuntu_terminal 04

Slika 2.4 Test programa FAKTOR za unos broja 3
Pisanje programa na ovakav način može služiti samo za male i demonstratorske primjere kada imamo nekoliko datoteka i jednostavnu strukturu programa.

nastavlja se…

Linux version of GPdotNET v2.0 now on code.google.com


GPdotNET tree based genetic programming tool

GPdotNET LOGO

For Linux version of  GPdotNET v2.0 I have decided to publish on code.google.com. In the future GPdotNET will be developed separately for this two OSs. The second reason for publishing Linux version is that people don’t know for Linux version of GpdotNET.

So these two reason is enough to start separate hosting . When the final version of GPdotNET v2.0 will come, it would be the same as previously announced. After version 2, probably development of Linux and Windows version will be separated because of my preferred platform and some future plans and implementation with specific features for Windows 8.

Project home page for code.google.com is http://code.google.com/p/gpdotnet

GPdotNET v2.0 Tutorial: Working with optimization module


1. Optmization of analitycaly defined function

As it was announced GPdotNET v2.0 has new optimization modul based on Genetic Algorithm. In fact you can perform two kind of optimization in GPdotNET.

1. Optimization of analytic defined function

2. Optimization of GPModel

In tihis tutorial it will be presented how you can optimize classic mathematic function. For example we need to optimize the following function:

f(x)= x^{3}-6x^{2}+4x+12, on interval [-1; 5]

First lets see how this function looks like, and what is the optimum (maximum) of the function in defined interval. For this propose we are going to use WolframAlpha, great online mathematical tool. All you need to do in order to calculate optimum of our functionis just click the following link: http://www.wolframalpha.com/input/?i=maximize+x%5E3+-+6x%5E2+%2B+4x+%2B+12+inteval+-1%2C5

After we click on the link above internet explorer show the picture similar with below.clip_image002

As we can see maximum value is depicted with red point, and corespond with Max(0.367; 12.7). If you dont belive just calculate x=2-2*\sqrt{(\frac{2}{3})} and put in to function to get f(x).

Now our problem is how to do that with GPdotNET v2.0.

Working with Analytic Function edito in GPdotNET

1. Open GPdotNET v2.0 and press “New” Button.

2. The following dialog box appears:

clip_image004

3. Every time you want to create a new Model you got this dialog to choose what kind of model you want to create. As you previously know you can create 4 diferent models, and the last one is going to be show now.

4. Choose Optimization of analytic function (the last one), and the following windows appears:

clip_image006

On this picture we have 3 different. 1: Area for drawing three structures, 2: command for manipulation of analytic function and 3: register of constants and variables. The combo box Function contain all available function in GPdotNET, so if you want to add one just choose from the combo box and press Add Fun button.

To define our function we need to analyze it and start inserting operation by operation. If we look the function we have 3 addition, 1 substract, 2 multiplication, cube and quadrat. So first we are going to insert 1 addition.

5. From Function Combo box choose +, and press Add Funbutton, the following picture is appear.

clip_image008

After we inser + function, GPdotNET is automatically added to child, because addition operation has two argument.

6. Now click on Left child node, and Add “-” function similar like picture below:

clip_image010

7. Also on the left leaf node Add X^3 as picture show.

clip_image012

8. Select left node and add “*” function like picture below.

clip_image014

9. Now we are going to add X1- independent variable. Press Left mouse button on leaf node below X^3 function. In Param Name enter “X1” and press Add Param button. Notice that X1 is inserted in to right ListView control as register of variables.

Rule for Entering variable: You can only add variables in the form of : X1, X2, x3 ,….. The following picture shows the result of adding variable.

clip_image016

10. Now select left empty node “o” and insert constant 6. It is the same procedure as inserting variable. Type 6 in parame name and oress Add Param button. The rest of the job is similar so the final result mus be similar like picure below:

clip_image018

11. When we finish with defining the function press Finish button, and registered variables and constants are transferred to Terminals need to make program.

Running optimization module in GPdotNET

12. After you press Finish button, select Optimize Model tab, and we are ready to star finding optimum value for our function. Before we press RUN button on the toolbar we need to define maximum and minimum values for variable X1. To do this:

13. Select X1 in listView located in Optimize Model panel, enter minimum and maximum value and then press updatebutton.Now Optimum panel is rey for running simulaton.

clip_image020

14- Now that we have all needed information to run program, press Optimize toolbar button. In few millisecond program is started and simulation begins. After some evolution best solution (optimum) ius found so you can stop the program if you want to by pressing STOP toolbar button.

The solution of our optimization shows below picture.It is very closed to previous one calculated by WolframAlpha.

clip_image022

15. Press Save toolbar button and save your work.

2. Optimization of GPModel v2.0

Optimization of GPModel begins after you find solution to yout model.

1. When you create new model, choose second option instead of first for Modelling and optimization.

2. How to perform modelling in GPdotNEt you can see in previous post.

3. After you finish modeling refer to ste 12. the procedure is the same. Definie maximum and minumu value of vaiables and press Optimize button.

GPdotNET v2.0 first look


GPdotNET is artificial intelligence tool for applying Genetic Programming and Genetic Algorithm in modeling and optimization of various engineering problems. It is .NET (Mono) application written in C# programming language which can run on both Windows and Linux OS. This tool started in 2006 within postgraduate project for modeling and optimization with evolutionary algorithms. As open source project, GPdotNET is first published on November 5 2009 on codeplex.com. If you want to use GPdotNET you need to have at least basic knowledge about Genetic Programming and Genetic Algorithm. Since version 2, GPdotNET became cross-platfrom and cross-OS application.

GPdotNET v2.0 supports the following types of modeling and optimizations:

  1. Modeling of discrete data by using SymbolicRegression modeling with GP
  2. Modeling of discrete data by using SymbolicRegression with GP and optimization GPModel by using GA
  3. Time Series modeling data by using SymbolicRegression with GP
  4. Optimization of analytical defined function by using GA

GPdotNET v2.0 as Cross-Platform and Cross-OS application

GPdotNET v2 is developed against .NET 4.0 and Mono 2.8. Both frameworks share 100% of all code. Except of exporting model to Excel, all source code are the same. The pictures below show look of GPdotNET on Windows 7 (first one) and Fedora 17 (second one). GPdotNET v2.0 is tested only on Fedora OS.

image_thumb11
Picture above shows GPdotNET and its GP simulation panel in Windows 7.

image_thumb10
Picture above shows GPdotNET and its GP simulation panel in Fedora 17.

Optimization main new feature in GPdotNET

The main new feature among several other is Optimization based on Genetic Algorithm. You can either optimize GPModel calculated in previously thought GP modeling, and also optimize analytically defined function defined with analytic function editor. The picture below shows sample of defining f(x)=x^3 – 6x^2 + 4x + 12 in the analytic function editor. During construction of the function, right table is filled automatically with variables and constants. End of process of defining analytic function is finished when the Finish button is pressed to transfer variables and constants in to Optimization panel.

image_thumb15
Analytic function editor in GPdotNET

After the Finish button is pressed, switch to Optimize model tab and define maximum and minimum values for input variables. More information how to work with function editor can be found at this blog post.

image_thumb27

The picture above, show optimization panel, with defined min,max values (-1, 5) and also finished optimization proces founded result of f(0.36713)=12.7093. The process of optimization is similar with GP showing standard properties during of running program.

“*.gpa” – new file format for persisting GP and GA models

GPdotNET v2.0 introduce new textual file format for persisting GP and GA models and information during the program run. The file format is simple and easy, so sometimes you can edit in order to correct some minor changes. For example if you create GPModel without optimization, but later on you need to optimize this mode, you can easily change the type of model to enable optimization. The picture below shows sample GPdotNET “gpa” file format opened in Notepad++ with syntax highlighting.

image_thumb31

Before every line there is a comment with description.

GPdotNET 2.0 beta 1 is coming


GPdotNET v2.0

GPdotNET v2.0

In the few days I will release the first beta of the second version of GPdotNET open source project for modelling and optimization by using Genetic Programming and Genetic Alogorithm. Comparing with previous version, this version brings several new features as well as improvements of existing. The following is the main feature which this beta brings:

  1. GPdotNET v2 is runnign od Windows and Linux based OS.
  2. GPdotNET v2 now supports optimization modul which is integrated with existing GP modeling, as well as a separate module for finding optimum of analytic defined function, please see my previous post about it.
  3. New simplified GUI with only one big toolbar containing all avaliable options.
  4. New File format which you can open in Notepad and modify manually.
  5. New memory improvement, with using memory pooling.

For each of this main features I will write blog post as well as User Guide and Tutorials.

Here is some screen shoots how GPdotNET looks like in Fedora 17.

This slideshow requires JavaScript.