Programmazione



Confronto prestazioni tra linguaggi


Confronto prestazioni tra linguaggi

[code]
def fib(n)
if n>2
n
else
fib(n-2)+fib(n-1)
end
end
print(fib(30), "\n");
[/code]

Il codice sopra è stato "tradotto" in vari linguaggi di programmazione moderni; [b]Java[/b] e [b]C#[/b] sono linguaggi ibridi semicompilati, mentre i restanti [b]Ruby[/b], [b]Python[/b] e [b]Perl[/b] sono interpretati.
Il comando [u]time[/u] misura il tempo impiegato a generare l'output, con questo difficilmente si deduce che un linguaggio è più veloce di un'altro, comunque sia, ci si può fare una vaga idea delle loro prestazioni in piccoli programmi.
Concludendo, ogni linguaggio ha la sua peculiarit? e i propri vantaggi/svantaggi, personalmente mi affascinano molto Ruby e C#, ma se cercate delle soluzioni più mature forse Java, Python e Perl sono le più collaudate...

Come sempre a voi la scelta ;-)

[code]
pc01:~$ dmesg | grep CPU
CPU0: AMD Athlon(TM) XP1700+ stepping 02
pc01:~$
pc01:~$ uname -a
Linux pc01 2.4.22.tutto #1 SMP gio ott 16 17:35:03 CEST 2003 i686 GNU/Linux
pc01:~$
pc01:~$ time java fib
832040

real 0m1.892s
user 0m0.100s
sys 0m0.210s
pc01:~$ time mono fib.exe
832040

real 0m0.928s
user 0m0.100s
sys 0m0.060s
pc01:~$ time ruby fib.rb
832040

real 0m3.829s
user 0m3.650s
sys 0m0.040s
pc01:~$ time python fib.py
832040

real 0m2.484s
user 0m1.880s
sys 0m0.040s
pc01:~$ time perl fib.pl
832040

real 0m4.160s
user 0m3.670s
sys 0m0.010s
pc01:~$
[/code]


Ruby-GNOME2 mini-howto: come fare semplici applicazioni multipiattaforma

|

Dedicato a tutti quelli che cercano un'alternativa a Visual Basic o semplicemente vogliono un modo semplice per fare applicazioni per GNU/Linux, Windows, ma non solo..

[b]Premessa[/b]

Ci sono molti modi per programmare a finestre in GNU/Linux, con molteplici linguaggi(C, C++,Python, Ruby, PHP,..) e con diverse librerie grafiche(GTK,Qt,..), in queste righe verr? trattato l'accoppiata: Ruby + GTK2 con le estensioni ruby-libglade2; questa scelta non è ovviamente vincolante, ma penso che sia un'alternativa facile e veloce per sviluppare applicazioni multipiattaforma per GNU/Linux, Windows, Freebsd,.. (soprattutto per chi proviene dall'ambiente Visual Basic). [url=images/node/4_full.png][img]images/node/4_summ.png[/img][/url]

[b]Gli ingredienti[/b]

Ruby: è un linguaggio interpretato completamente ad oggetti multipiattaforma. Riferimento [http://www.ruby-lang.org] Ruby-GNOME2: sono le estensioni di Ruby per GTK2. Riferimento [http://ruby-gnome2.sourceforge.jp/it/] GTK2: si tratta di una libreria multipiattaforma sviluppata in C. Riferimento [http://www.gtk.org] Glade2: è un costruttore di interfacce per GTK2. Non è possibile scrivere codice Ruby all'interno di Glade2. Anjuta: è un IDE che ha la colorazione della sintassi Ruby, terminale integrato e molto altro ancora.

[b]Primi passi[/b]

Per installare il tutto, non dovrebbero esserci particolari problemi, tutte le distribuzioni attuali dovrebbero avere i pacchetti per tutto. Per esempio sotto Debian unstable, basta aggiungere (forse non più necessario) il repertorio deb http://ruby.yi.org/debian/ sid ruby-gnome2 nel file /etc/apt/sources.list e poi digitare sul terminale: [code] apt-get install ruby ruby-gnome2 anjuta glade2 [/code]

[b]Iniziamo[/b]

Iniziamo a creare l'interfaccia del nostro programma con Glade2, in questa fase non viene definito il linguaggio di programmazione, ma solo come apparir? il programma; nel nostro caso: 1. Click sul tasto con la finestra. 2. Dividere la finestra cliccando il tasto con i 3 divisori orizzontali. 3. Inserire in ogni spazio un oggetto (esempio: etichetta, testo, pulsante).

Nel nostro caso gli oggetti si chiamano testo(oggetto testo), invia(pulsante), esci(pulsante), dopodichè bisogna assegnarli le azioni da compiere (segnali/eventi). Si aggiunge un segnale a un pulsante selezionandolo e andando a impostare nella paletta delle propriet? il segnale voluto, nel caso di invia, Segnale:clicked, Gestore:saluta e poi aggiungi (saluta è la funzione, ancora da definire, che verr? chiamata quando sar? cliccato).

Salvare il tutto in prova.glade e si otterr? la nostra bellissima interfaccia in xml.

Adesso è ora di aggiungere il codice Ruby, per mio gusto personale userò Anjuta, ma è ovvio che qualsiasi elaboratore di testi va bene. [code] =begin prova.rb - il mio programma di prova in Ruby/Libglade2 =end require 'libglade2' class Prova def initialize @glade = GladeXML.new("prova.glade") {|handler| method(handler)} @testo = @glade.get_widget("testo") @esci = @glade.get_widget("esci") @invia = @glade.get_widget("invia") end def saluta @testo.set_text("Ciao, "+@testo.text) @testo.set_editable(FALSE) end def esci Gtk.main_quit end end Gtk.init Prova.new Gtk.main [/code]

Come è abbastanza intuitivo notare, le prime righe inizializzano gli oggetti presenti nell'interfaccia, mentre def saluta è la funzione che viene attivata quando invia è cliccato: imposta il testo al testo corrente con Ciao davanti, poi disabilita la modifica di testo.. facile no? Salvare il listato come prova.rb

Per eseguire il tutto usare il terminale integrato in Anjuta (o uno qualsiasi) e digitare: [url=immagini/rbbr.png]rbbr[/url] [code]ruby prova.rb[/code]

[b]Ultima chicca[/b]

[url=immagini/rbbr.png]rbbr[/url] è un grazioso strumento che trovate insieme a ruby-GNOME2 che vi permette di visualizzare tutti i metodi, propriet? disponibili ;-)

Ciao a tutti e buon divertimento!!!!!!


Syndicate content