Gambas-it

Programmazione => Altri linguaggi => Topic aperto da: leo72 - 04 Marzo 2009, 23:28:08

Titolo: Python Vs. Ruby
Inserito da: leo72 - 04 Marzo 2009, 23:28:08
Un annetto fa mi comprai un tomo su Ruby perché volevo imparare qualcosa di alternativo a Gambas.
Dopo un po' di tempo, lasciai perdere... mancanza di tempo e di voglia.

A natale mi sono fatto regalare un altro tomo, questa volta su Python, deciso a studiarmelo per bene al posto di Ruby. Ed avrei continuato se, l'altra sera, non avessi fatto una capatina sul sito di Ruby per leggere della nuova versione 1.9 del linguaggio...

E qui mi sono tornati i dubbi... Meglio l'uno o l'altro? Voi cosa imparereste, Python o Ruby (sempre come _alternativa_ a Gambas, non come sostituto)?

Entrambi sono linguaggi di scripting, sono orientati agli oggetti, sono diffusamente supportati, hanno una numerosa comunità, pubblicazioni alle spalle, editor, possibilità di costruire GUI ecc...
Certo, Python è più diffuso, ha più documentazione, maggior supporto... però lo stile di Ruby mi piace sempre un pochino di più (la costruzione del suo linguaggio è più "naturale"). Per contro, è più difficile trovare binding per le GUI: Python, in questo, è più avvantaggiato potendo usare praticamente tutto ed anche di più (Gtk, Qt, Tk, wxWdigets, ecc...).
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 04 Marzo 2009, 23:42:56
Io ho un libricino sui python davvero carino..lo leggo ma non ho mai provato a scrivere codice...mi hai fatto venire appetito....purtroppo non conosco ruby ma io sceglierei il più versatile e sopratutto quello multipiattaforma (che al giorno d'oggi penso sia importante!)

P.S. all'università trovo sempre volantini di aziende che cercano programmatori python in ambito linux...quindi pare essere apprezzato dalle aziende e potrebbe farti magari guadagnare qualcosina...chi lo sa...
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 04 Marzo 2009, 23:43:13
Che fai, ci tradisci? Mmmmmmmm....

Scherzo!

Qualcosa ho visto anche io, e Python mi è piaciuto molto, tranne quella sua carattersitica che lo rende molto simile al Cobol.... :-P

Di Ruby non sò praticamente nulla, tranne che se non ho capito male, è quasi un fork di Php. Php lo conosco, e ci ho fatto pure qualcosa.

Python, per la sua grande divulgazione, mi sembra un'ottimo scopo, se il tuo è quello di studiarlo per imparare qualcosa; inoltre, proprio per la sua grande divulgazione, può essere un punto a favore a livello lavorativo.

Quali sono le tue intenzioni? Hai parlato con papà? :-)
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 05 Marzo 2009, 00:28:36
A livello lavorativo mi sono ormai messo l'animo in pace. A meno dell'improbabile botta di c..., mi sono rassegnato a morire da non informatico.  :cry:

Per quanto riguarda il Ruby, è un bel linguaggio: www.ruby-lang.org
(potete addirittura provarlo su browser senza installazione).
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 05 Marzo 2009, 00:31:40
Citazione

leo72 ha scritto:
(potete addirittura provarlo su browser senza installazione).


Questa cosa mi ha incuriosito....
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 05 Marzo 2009, 00:45:24
E' qui: http://tryruby.hobix.com/

Quando appare il terminale date "help" per partire con il 1° tutorial e seguite bene le istruzioni in basso. Per avanzare dovete inserire i comandi indicati ma potete comunque fare anche tutte le prove che volete.

A me piace, è un bel linguaggio.
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 05 Marzo 2009, 00:53:45
Boh...non mi convince tanto...non lo so....forse sono troppo abituato alla struttura di gambas....
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 05 Marzo 2009, 00:58:47
Se parti dal presupposto di confrontarlo con Gambas, non ti piacerà per forza. Ne' ti potrà piacere nessun altro linguaggio di scripting quale Python o simili.
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 05 Marzo 2009, 01:01:36
Ma ruby ha un ide di sviluppo con gli oggetti?
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 05 Marzo 2009, 01:24:04
Ruby, come Python, non ha un proprio IDE.
Ci sono diversi editor che supportano tale linguaggio: vim, emacs, geany, geditor, kate, eclipse, netbeans (questi con un plugin), poi quelli a pagamento come ArachnoIDE, Komodo ecc...
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 05 Marzo 2009, 13:33:51
Non è un linguaggio puramente grafico, ma di scripting.

Per Python, ad esempio, vanno molto le librerie WX, che come il linguaggio, sono portabili su sistemi diversi.

Purtroppo, di ambienti per costruire applicazioni grafiche ce ne sono davvero pochi, e quei pochi sono tutti commerciali. Per le librerie wx, esiste wxDesigner, commerciale, ma null'altro...

In PHP ci sono un sacco di ide, che però sono solo degli editor avanzati, con strumenti atti all'evideziazione del testo, l'inserimenti dei tag e delle funzioni, l'help, ecc. ma nulla di grafico. Nella fattispecie, generalmente php viene usato per il web, ma come motore per la costruzioni di pagine statiche, in modo dinamico; io l'ho usato, ma per la parte grafica devi studiarti HTML e CSS (fogli di stile), ma non vedi nulla a livello di costruzione.
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 05 Marzo 2009, 15:59:04
Per Linux e Python c'è wxGlade che è gratuito e creato apposta per generare codice Python. Oppure SPE supporta anche il disegno di GUI tramite sempre wxGlade.
Se invece vuoi usare le Gtk, con PyGtk, puoi usare ad esempio Glade stesso. Ami le Qt? Usa Kdevelop e poi con le PyQt gestisci la GUI da Python.

Insomma, ce n'è di roba, eccome!

Piuttosto, è con Ruby che le cose diventano complicate. Per disegnare GUI c'è ben poco.
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 05 Marzo 2009, 20:43:54
Quello che volevo dire, è che non c'è un ide dedicato a python; il fatto che poi uno smanetta tra un ambiente e l'altro, è un'altro paio di maniche.

A dirla tutta ci sarebbero anche Eclipse e NetBeans, che hanno plugin per tale linguaggio. Non ricordo però se hanno la possibilità di disegnare finestre (per esempio...).

wxGlas o Glade, a me non piace moltissimo, a parte il fatto che è in gtk...
Titolo: Re: Python Vs. Ruby
Inserito da: - 17 Aprile 2009, 09:18:08
Io utilizzo SPE (Stani's Python Editor) come ambiente e mi trovo abbastanza bene (a volte è lentuccio) ma niente a che vedere con l'IDE di Gambas (un miracolo Open Source!!). Per un "non informatico" (dunque senza cecare ottimizzazione del codice o paradigmi corretti di programmazione...) Python è ..... il modo migliore per impazzire.....ma una volta imparato non se ne può fare più a meno. Mi spiego: la quantità smisurata di moduli e librerie disponibili per ogni necessità di programmazione (grafica 2D, 3D, gaming, audio, calcolo numerico puro avanzato,... e chi più ne ha più ne metta) riempe il cuore. Per non parlare della velocità di esecuzione del codice (molti moduli sono scritti in C).

In conclusione: ODIO-AMORE è quello che provo quando scrivo codice in Python. Non si può avere tutto dalla vita.... :-D
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 17 Aprile 2009, 10:07:16
Una curiosità, che librerie grafiche hai usato per il tuo progetto? E con cosa hai disegnato l'interfaccia?

P.S.:
come IDE per Python sono validi anche Eclipse con il plugin PyDev oppure anche Komodo Edit.
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 17 Aprile 2009, 15:59:28
Ma nessuno (dico proprio nessuno) ha mai pensato di puntare a linguaggi di un certo tipo come ad esempio C o C++?
Titolo: Re: Python Vs. Ruby
Inserito da: - 17 Aprile 2009, 16:39:16
Citazione
Una curiosità, che librerie grafiche hai usato per il tuo progetto? E con cosa hai disegnato l'interfaccia?


Utilizzo le librerie GTK (col binding pyGTK) e disegno le interfacce con Glade.

Citazione
Ma nessuno (dico proprio nessuno) ha mai pensato di puntare a linguaggi di un certo tipo come ad esempio C o C++?


A dire il vero l'anno scorso ho comprato un libro su C# (giusto per iniziare) ma ho subito abbandonato vista la complessità del linguaggio.
Python ha l'indubbio vantaggio che possiede una ventina di comandi o poco più, facili da ricordare. Il C o C++ qualche centinaia credo....
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 17 Aprile 2009, 18:05:10
Bè, riguardo ai "pochi" comandi, non è del tutto vero...

Il problema reale è che per imparare a programmare bene con il C/C++ è necessario formarsi un bel pò di esperienza...
Questo, però, è valido con tutti i linguaggi, almeno per quanto riguarda la parola "bene"...
Anche Python è un linguaggio abbastanza articolato e, a parte la particolare sintassi, ha una serie di approcci molto vantaggiosi e simpatici, già di base...

Un paragone tra i due linguaggi è abbastanza difficile da fare, tenendo conto che partono da due presupposti completamente diversi tra loro: codice binario e codice interpretato.

Il concetto di simpatia per uno piuttosto che l'altro, è sempre dipendente dall'esperienza che vi si acquisisce; in seconda viene lo scopo per cui uno sceglie il linguaggio, sulla base del tipo di progetti che andrà a creare.

Io ho lavorato svariati anni con il C/C++, in particolare su applicazioni in real-time, e per cui la scelta è stata quasi obbligatoria, oltre al fatto che c'erano ben poche alternative all'epoca. Allo stesso tempo usavo il Clipper per i gestionali, perchè più veloce e facile da implementare. La simpatia è venuta dopo, con l'esperienza, e quindi mano mano con la facilità con cui riuscivo a tradurre le mie idee.
Insomma, questo per dire che la scelta dipende dallo scopo finale.

Riguardo a Python, per la parte grafica, pare vadano molto le librerie wxPython, che ti permettono anche di portare il progetto su qualsiasi sistema (unix, windox, mac, ecc...).
Titolo: Re: Python Vs. Ruby
Inserito da: - 17 Aprile 2009, 18:21:38
Citazione
Riguardo a Python, per la parte grafica, pare vadano molto le librerie wxPython, che ti permettono anche di portare il progetto su qualsiasi sistema (unix, windox, mac, ecc...).


vero, le wx sono le librerire più gettonate. Per quanto riguarda la portabilità anche le altre non sono da meno: GTK (quelle nate da Gimp) e Qt della Trolltech.

googlando si trovano tutorial (ottimi) sull'uso di queste librerie:

http://www.zetcode.com/

per le wxpython e le pygtk.
E' una questione di gusti (anche se le GTK, forse sono meno avanzate delle altre.....).
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 17 Aprile 2009, 19:17:10
Citazione

Ma nessuno (dico proprio nessuno) ha mai pensato di puntare a linguaggi di un certo tipo come ad esempio C o C++?


Prima di risponderti ho dato una rapida occhiata alla mia piccola libreria informatica: lì, sullo scaffale, c'era il tomo sul C++ di Stroustrup (per chi non lo sapesse, è l'inventore del C++) che mi guardava in cagnesco... Però voglio lo stesso dire la mia: oggigiorno la tendenza è di lasciare linguaggi come il C o il C++ e di orientarsi verso quelli a più alto livello, dinamici ed interpretati come il Python, il Ruby e compagnia bella.

Questo per diversi motivi:

1) praticità nella scrittura del codice: ti basta un editor di testo e salvi i tuoi programmi. Poi, hai sì 20 comandi 20 ma ricchissime librerie standard con cui fai tutto già "di serie", mentre con il C/C++ ti devi scrivere tanto codice da solo anche per molte cose banali. Il C++, poi, ha una struttura che è molto complessa: molti pensano di scrivere in C++ quando in realtà scrivono programmi in C con giusto l'aggiunta dell'uso delle classi e/o oggetti.

2) Immediatezza nell'esecuzione dello stesso: 20 anni fa il problema della velocità di esecuzione era uno dei fattori principali per cui si sceglieva un linguaggio compilato ma oggi, a meno di applicazioni estreme dove devi comandare hardware o roba simile, la potenza elaborativa degli attuali computer permette tranquillamente l'uso di un linguaggio interpretato senza soffrire l'interpretazione del codice. D'altronde, Gambas è un linguaggio interpretato ma quasi nessuno si lamenta di ciò, a meno che non siano richieste velocità iperboliche.

3) Portabilità: avere un interprete che esegue i programmi permette di scrivere codice slegato dall'hardware sottostante per lasciare a lui il compito di interfacciarsi con il sistema operativo. In questa maniera non devo scrivere 10 versioni diverse del mio programma se lo devo portare su 10 piattaforme: lo scrivo una volta e lo eseguo dove voglio. Se poi ho bisogno di usare una GUI scelgo una libreria grafica multipiattaforma e sono a posto.

Sì, il C ed il C++ sono linguaggi che ancora oggi vanno per la maggiore ma il fatto che diversi applicativi normalmente presenti nel parco software di tante distro sono scritti in linguaggi dinamici ed interpretati deve far riflettere. Se non ricordo male (Luigi correggimi) anche Anaconda, l'installer di Fedora, è scritto in Python. E Ruby assolve a diverse funzioni nei sistemi Mac essendo usato come linguaggio di scripting (mi pare sempre di ricordare).

P.S. per Alessandro:
il C# non c'entra molto con il C. E' un mix fra C++ e Java inventato da Microsoft perché a Redmond devono fare sempre la propria versione di ogni cosa che esiste al mondo altrimenti non sono contenti (vedi Moonlight per Flash) ed usare il C++ si vede che non gli bastava...
Titolo: Re: Python Vs. Ruby
Inserito da: d199631 - 17 Aprile 2009, 19:21:07
Io conosco c++ e php.
Ho appena scoperto Gambas, ma nel frattempo stò anche approfondendo Python con le PyGtk e c++ con le Gtk+...
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 17 Aprile 2009, 19:31:24
Non per essere di parte ma io continuo a suggerire di provare anche Ruby. Dopo aver provato il Python, passare al Ruby è stato come rinascere: un linguaggio molto naturale e veramente orientato agli oggetti. Il Python, poi, è troppo rigido: a me pare che i veri programmatori Python (non quelli come me che scribacchiano 2 righe così per fare) passino più tempo a cercare la soluzione perfetta piuttosto che a portare avanti il loro progetto. Nel senso che ho visto dei perfezionismi sintattici che rasentavano l'illeggibilità (per un conoscente del linguaggio come me), cosa che dovrebbe andare poi contro lo stesso "zen" del Python, che afferma di tenere sempre il codice semplice e di preferire la leggibilità alla complessità.

Chi è interessato al Ruby, faccia un salto qui:
http://tryruby.hobix.com/
potrà provare il linguaggio direttamente nel proprio browser senza installare nulla.
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 17 Aprile 2009, 22:26:41
@ yeo72

Secondo me i progettisti di ruby ti pagano per fare pubblicità....:-D :-D
Titolo: Re: Python Vs. Ruby
Inserito da: - 18 Aprile 2009, 10:38:22
Per leo72: Ricevuto capo!! :-)
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 18 Aprile 2009, 10:46:25
L'hai provato? ;-)
A me piace di più. Te l'ho detto, non amo tutta questa ricerca della perfezione a discapito della produttività. Ho assistito su it.comp.programmazione.python a mere gare sintattiche per la trasformazione di un codice di 2 o 3 righe con, diciamo, 7/8 istruzioni in un codice monoriga con 2 o 3 istruzioni dalla sintassi talmente ingarbugliata da non capirci nulla.

Ma io devo scrivere un programma mica partecipare alla gara del codice più corto ed ingarbugliato. Se volevo scrivere criptico imparavo il Malborge (http://it.wikipedia.org/wiki/Malbolge):
Codice: [Seleziona]

(aBA@?>=<;:9876543210/.-,JH)('&%$#"!~}|{zy\J6utsrq
ponmlkjihgJ%dcba`_^]\[ZYXWVUTSRQPONMLKJIHGF('C%$$^
K~<;4987654321a/.-,\*)
j
!~%|{zya}|{zyxwvutsrqSonmlO
jLhg`edcba`_^]\[ZYXWV8TSRQ4
ONM/KJIBGFE>CBA@?>=<;{9876w
43210/.-m+*)('&%$#"!~}|{zy\
wvunslqponmlkjihgfedcEa`_^A
\>ZYXWPUTSRQPONMLKJIH*FEDC&
A@?>=<;:9876543210/.-m+*)(i
&%$#"!~}|{zyxwvutsrqpRnmlkN
ihgfedcba`_^]\[ZYXWVU7SRQP3
NMLKJIHGFEDCBA@?>=<;:z8765v
3210/.-,+*)('&%$#"!~}_{zyx[
vutsrqjonmlejihgfedcba`_^]@
[ZYXWVUTSRo


Anche questa storia dello Zen del Python.... Ma è una filosofia o un linguaggio? E poi lo Zen afferma che esiste uno ed un solo modo per fare una cosa ma anche che devo scegliere la semplicità alla complessità. Se son complesso non si legge, se si legge non ho scelto l'unico modo...
Titolo: Re: Python Vs. Ruby
Inserito da: Ceskho - 18 Aprile 2009, 14:35:33
Ma a me questo tipo di gente da un fastidio incredibile...oppure perchè non menzionare quelli che vogliono scrivere codici senza IF? Che senso ha? e se io volgio usare trentamila If che problema c'è? alla fine il programma deve svolgere il suo lavoro...come l'ho scritto saranno affari miei...
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 18 Aprile 2009, 15:43:02
Esatto, è questo il punto che non tollero.
Alla fine il codice deve fare quello che voglio io, non sono io che devo adattarmi a lui.

Se a me piace usare un SELECT CASE invece di una cascata di IF/THEN/ELSE oppure cose simili, non vedo il problema.

I pythonisti convinti, invece, pare che lo vedano perché capisco sfruttare al max. le potenzialità del linguaggio ma se io voglio arrivare al risultato attraverso un altro metodo non vedo dove sta il problema.
Il bello del Basic, alla fine, è che non esiste un solo modo per fare una cosa ma ne esistono diverse.
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 20 Aprile 2009, 19:40:04
Come in tutte le cose, ci sono quelli che vogliono raggiungere uno scopo a prescindere da cosa venga usato, e quelli che danno molta importanza a come viene fatto.

Questo, credo, è un concetto che è nato con l'essere umano, e come per altre cose, è una di quelle cose che ci rendono diversi uno dall'altro...

Comunque, da parte mia, posso dire che lavorativamente parlando, lo scopo ultimo è quello di produrre un software che funzioni, a prescindere da come viene scritto, o che sistemi si usino per ottimizzarlo.
A livello teorico, o semplicemente per diletto, la ricerca di un linguaggio il più possibile semplice e leggibile, mi pare sacrosanta, e permette di evolvere l'informatica in genere.

Nelle mie esperienze, ho usato svariati linguaggi, e ognuno aveva delle particolarità che lo contraddistinguevano, ma non ho ancora trovato il linguaggio perfetto.
A suo tempo, il Basic era nato per permettere a chiunque di scrivere due righe e considerarsi un programmatore; poi il linguaggio si è evoluto ed è stato portato ad uno stadio molto simile a linguaggi più importanti (vedi C).
Il Cobol, nonostante il suo schema molto rigido (molto più di Python), aveva un suo perchè, e ancora oggi detta legge su grandi sistemi.
Il "C" è stato il sostituto (in grandi linee) dell'Assembler, permettendo di scrivere codice molto potente e veloce, e di rendere più leggibili i programmi (diversamente dal linguaggio macchina puro e semplice; il C++ è stata un'evoluzione, obbligata dal nuovo concetto degli oggetti.
Una volta che l'hardware ha raggiunto uno stato di potenza molto alto, lo scopo di scrivere programmi veloci, utilizzando linguaggi a basso livello, è passato in secondo piano, per cui sono nati linguaggi come Java, Python ecc.
Ora vanno di moda questi ultimi, ma la diversità di pensiero tra purista e non è rimasta la stessa.

Io, comunque, attendo che qualcuno tiri fuori il linguaggio "perfetto"... :-)
Titolo: Re: Python Vs. Ruby
Inserito da: leo72 - 21 Aprile 2009, 00:02:47
Dato che l'uomo non è perfetto, i linguaggi di programmazione, in quanto creati dall'uomo, non potranno mai essere perfetti ;-)

A parte le battute, molti programmatori studiano più linguaggi e scelgono in base al compito che devono svolgere il linguaggio più adatto al loro scopo. Io invece preferisco scegliermi un lingaggio di quelli che si definiscono "general-purpose", vale a dire buoni per ogni tempo, e con quello farci (o cercare di farci) tutto quello di cui ho bisogno.
Gambas risponde a questi requisiti: ho la possibilità di scrivere del buon codice, che anche a distanza di mesi riesco a comprendere; ho un disegnatore di interfacce semplice ed usabile; ho un editor di codice funzionale. E poi riesco a farci un po' di tutto, che è l'importante per me.
Titolo: Re: Python Vs. Ruby
Inserito da: md9327 - 23 Aprile 2009, 19:50:23
:good:
Titolo: Re: Python Vs. Ruby
Inserito da: - 18 Maggio 2009, 10:12:34
caro leo, tu hai messo la pucle nell'orecchio, Sketchup ha fatto il resto::: ho iniziato a scribacchiare qualcosa in Ruby....un nuovo mondo si è dischiuso davanti a me....Ruby è davvero naturale, semplice (almeno mi sembra---)

Hai proprio ragione, Python è troppo rigido e formale, anche se potente.

Parlavo di SketchUp, il soft 3D di Google, perchè al suo interno è integratpo un interprete di Ruby.....wow!!
Quasi quasi lo uso come preprocessore e postoprocessore per i miei programmi di calcolo. Tanto già lo uso per il disegno tecnico (addio AutoCAD..... :ble: )

Tutto quello che mi serve nello stesso programma, non è open, ma pazienza almeno è free....