Cosa dovrebbe sapere uno sviluppatore Python mentre impara Ruby? [chiuso]


16

Sono stato un programmatore Python per circa 18 mesi, composto da uno stage e alcuni progetti collaterali, e mi considero abbastanza a mio agio nella lingua.

Tuttavia, sembra esserci molta attenzione su Ruby nel campo della programmazione, ma non molto su Python.

Quindi, nell'apprendimento di Ruby, ci saranno cose Pythonic che sono solo cattive pratiche in Ruby? Cosa devo fare attenzione e cosa devo evitare?


4
Ho sempre considerato un programmatore di Ruby se dovessi imparare Python perché è tutto ciò di cui tutti parlano: P
Earlz,

Nonostante il ronzio sembra che Python sia ancora usato il doppio di Ruby (almeno secondo TIOBE -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Daniel Scocco,

10
Invece di essere un "programmatore Python" o un "programmatore Ruby", dovresti cercare di essere un grande programmatore. Quindi, puoi usare qualsiasi lingua tu voglia e passare a quelle nuove quando è il momento giusto.
BlackJack,

Risposte:


31

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 syse 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' returnistruzione. Anche le ifdichiarazioni 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.


11
"E questo è un peccato, perché la metaprogrammazione è un viaggio" ... E proprio come un viaggio, sarà fantastico per una notte, ma alla fine ti svegli la mattina e hai dimenticato quello che hai fatto. Penso che la metaprogrammazione sia enfatizzata in Ruby, e preferisco Ruby a Python. La maggior parte delle soluzioni di Ruby ai problemi di sintassi è "puoi aggirare il problema con la meta-programmazione"
Earlz,

23
Che cosa? result = "world" if output=="hello" else "there"Python è perfettamente valido (e tre caratteri più brevi).
Tim Pietzcker,

3
@Tim OK grazie per avermi corretto. Ma puoi fare la stessa cosa con un'istruzione if / elsif / elsif / else - cioè if / elif / elif / else in Python? Puoi fare la stessa cosa anche se nella clausola if or else sono presenti più istruzioni?
dan

1
Aspetta, Python non ha un operatore ternario?
PP.

3
"Matz, il creatore di Python, proveniva da un background Lisp." aspetta ... AFAIK Matz è il creatore di Ruby ...
Eimantas,

6

Dipende.

Per me Python è di gran lunga più facile da afferrare del rubino, inoltre entrambe le lingue hanno uno scopo diverso.

Python è più un linguaggio classico con molte cose fantasiose di basso livello, che lo mantengono pulito e facile rispetto ad esempio a C. Python non ha l'ambizione di Ruby, che per me ha molte più funzionalità di alto livello.

Non ti farà male imparare Ruby, scoprirai cose nuove, ma tieni presente che Python è più vicino ai semplici paradigmi di programmazione che hanno reso il successo di C, con molti booster di produttività. Ruby è più per le persone che vogliono andare oltre nella programmazione dei concetti in generale: Schema e tutti quei linguaggi "superiori".


3

Risposta breve: Sì e sì.

L'apprendimento di una nuova lingua è quasi sempre utile e vale soprattutto per Ruby poiché Rails è ancora molto popolare. E sì, conoscendo bene Python sarà facile prendere Ruby. Hanno alcune differenze sintattiche e diverse convenzioni nella denominazione, ma c'è anche molto terreno comune.

Non è un investimento importante, ed è sempre utile avere più strumenti nella tua cassetta degli attrezzi, quindi provaci!

(Ho usato Python per circa 10 anni e ho raccolto Ruby l'anno scorso. Attualmente lavora a tempo pieno nel progetto RoR)


2

Tutto ha una nicchia. Ad esempio Python (django) è un cittadino di prima classe in GoogleApp Engine, mentre è la lingua o la scelta per molti progetti bioinformatici. Python ha molto valore di mercato (ho molte prospettive di lavoro non richieste semplicemente perché ho fatto molto con Python), ma anche Ruby - in diverse aree. Come avrai sicuramente sentito qui molte volte, ti aiuterà sempre ad imparare più lingue, quindi sì, impara Ruby. Sarà complicato? Sarà molto meno complicato dell'apprendimento di COBOL, poiché le lingue e i framework disponibili sono simili tra loro. Un esempio sono le gemme di Ruby e il pip di Python .

Ricorda che le lingue sono strumenti e ogni strumento come uno scopo. Più strumenti conosci, più veloce, più facilmente e più correttamente puoi costruire la casa sull'albero.


Volevo rispondere sulla stessa linea, spero che non ti dispiaccia la modifica ...
Dimitrios Mistriotis

2

Dovrei imparare il rubino? Sì.

Imparare una nuova lingua vale sempre la pena (specialmente se impone un diverso paradigma di programmazione rispetto a quelli che conosci) e talvolta può renderti più competente anche durante la programmazione in altre lingue. Ad esempio ho raccolto la maggior parte della programmazione funzionale che conosco da Lisp e la applico quando ne ho bisogno a Python e Ruby.

Sarà difficile? Se hai imparato Python puoi sicuramente imparare anche Ruby.

È anche utile se ora stai cercando un lavoro, mostra che sei curioso di conoscere la tecnologia e che puoi imparare le cose da solo.

C'è un buon confronto tra Ruby e Python su c2.com .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.