Ho fatto Python nel 2003-5, quando ero un consulente Plone / Zope. Poi nel 2006 ho iniziato a raccogliere Ruby. Non ho mai guardato indietro. Penso che persone diverse si sentano più a loro agio con linguaggi e culture di programmazione diversi, ma per me Ruby si sente molto meglio di Python.
Personalmente penso che rispetto a Ruby, Python sia il cavallo di battaglia affidabile che sembra essere anche un po 'sereno e insipido. Ruby è molto più divertente. È un linguaggio dall'aspetto più bello e può essere fatto per fare molte cose divertenti e funky che continuano a stupire i suoi praticanti. Ho sentito che le persone di Python attaccano Ruby perché sono troppo pericolose, dicendo che è troppo facile riaprire le lezioni e fare cose così selvagge e irresponsabili. Ma questo fa parte di ciò che mi fa sentire Ruby come una commedia avventurosa per me. Python, al contrario, è più simile ai mobili Ikea: è piacevole, confortevole e affidabile - ma non ti sorprenderà mai e ti toglierà il respiro.
Le due cose migliori di Ruby, dal mio punto di vista, sono le due cose che lo distinguono nettamente da Python. Primo, Ruby è influenzato molto da Perl. Python sembra essere orgoglioso di essere l'anti-Perl. Ma la roba presa in prestito da Perl è di grande valore pratico. Prendi le espressioni regolari, per esempio. In Ruby puoi scrivere espressioni regolari in modo naturale, ad es if mystring =~ /^\s+hello word!/ ...
. In Python, non tanto, perché Python è così anale nel far sì che tutto segua una sintassi uniformemente prevedibile. In Ruby, puoi ottenere immediatamente STDIN con input = STDIN.read
. In Python, devi import sys
e poi
sys.stdin.read()
. Questi sono solo due esempi in cui lo sforzo di Python di distanziarsi dal Perl e di essere così prevedibilmente regolare è superato dalla volontà di Ruby di fare ciò che è giusto in ogni caso.
L'altra cosa che distingue Ruby da Python è che Ruby è molto più vicino a Lisp mentre Python è praticamente un linguaggio di programmazione imperativo. Penso che questo sia un grande vantaggio a favore di Ruby.
Ci sono molte caratteristiche simili a quelle di Lisp di Ruby che rendono possibile fare di più con meno codice in Ruby che in Python. Ad esempio, ogni istruzione e struttura di controllo in Ruby restituisce un valore: puoi andare via in Ruby senza mai usare l' return
istruzione. Anche le if
dichiarazioni valutano un valore, quindi puoi scrivere cose come questa
result = if output == 'hello'
[some code here]
"world"
else
[some other code here]
"there"
end
In Python dovresti scrivere
if output == "hello":
[some code here]
result = "world"
else:
[some other code here]
result = "there"
Python ti fa scrivere result =
due volte. Non è molto ASCIUTTO (non ripetere te stesso). Ci sono molti casi come questo in cui Ruby sarà più ASCIUTTO di Python a causa delle sue qualità simili a quelle di Lisp. Matz, il creatore di Ruby, proveniva da un background Lisp.
Alcuni dicono che Ruby prende a calci anche il culo di Python in metaprogrammazione (aka programmazione dinamica). Le persone di Python rispondono dicendo che la metaprogrammazione è troppo pericolosa, o dicendo che teoricamente, puoi realizzare tutte le cose di metaprogrammazione che Ruby può fare in Python, in modo diverso. Ma una cosa su cui tutti concordano è che la metaprogrammazione è molto meno comune in Python che in Ruby. E questo è un peccato, perché la metaprogrammazione è un viaggio.
Penso che sia probabilmente vero che alla fine della giornata Ruby e Python possono entrambi fare il lavoro. Rispetto a C e Java, Ruby e Python sono praticamente la stessa cosa. Sono linguaggi espressivi, produttivi e di alto livello.
Quindi si riduce alla tua personalità.
Ti piace che le cose siano prevedibili, regolari e sicure? Ti piace lo stile imperativo della programmazione? Vuoi forse lavorare un giorno per Google? Pensi che Perl sia un caotico spawn dell'inferno? Stick con Python.
Ti piace molto trovare il modo assolutamente più conciso per ottenere qualche risultato di programmazione? Ti annoi di regolarità e uniformità? Ti piace avere la libertà di scrivere codice in uno stile tutto tuo e avere un sacco di spazio per inventare i tuoi trucchi personali? Senti più un'affinità per Lisp che per C? Ti senti grande ammirazione per il contributo epocale di Perl alla programmazione software, ma desideri solo che possa essere solo un po 'meno criptico e brutto? Pensi al codice come gli altri pensano alla poesia? Prova Ruby.