Cosa deve sapere uno sviluppatore Python durante l'apprendimento di Ruby? [chiuso]

16

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

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

Quindi, imparando Ruby, ci saranno cose pitoniche che sono solo cattive pratiche in Ruby? A cosa devo fare attenzione, e cosa dovrei evitare?

    
posta C J 11.02.2011 - 07:40
fonte

5 risposte

31

Ho fatto tornare a Python nel 2003-5, quando ero un consulente Plone / Zope. Poi nel 2006 ho iniziato a raccogliere Ruby. Non ho mai guardato indietro. credo persone diverse si sentono più a loro agio con diverse programmazioni lingue e culture, ma per me, Ruby si sente molto meglio di Python.

Personalmente ritengo che, rispetto a Ruby, Python sia affidabile cavallo di battaglia che capita anche di essere un po 'sereno e insipido. Rubino è molto Più divertimento. È una lingua più carina e può essere fatta per fare molto di cose divertenti e funky che continuano a stupire i suoi praticanti. Ho sentito I Python attaccano Ruby perché è troppo pericoloso, dicendo che è troppo classi facili da riaprire e fare cose selvagge e irresponsabili del genere. Ma questo fa parte di ciò che fa sembrare Ruby una commedia d'azione romanticismo per me. Python, al contrario, è più simile ai mobili Ikea: lo è piacevole, constrongvole e affidabile, ma non ti sorprenderà mai e togli il fiato.

Le due cose migliori di Ruby, dal mio punto di vista, sono le due cose che lo distinguono nettamente da Python. Primo, il Ruby è influenzato molto di Perl. Python sembra essere orgoglioso di essere l'anti-Perl. Ma il roba Il rubino preso in prestito da Perl ha un grande valore pratico. Prendi regolarmente espressioni, per esempio. In Ruby puoi scrivere espressioni regolari naturalmente, ad es. %codice%. In Python, no così tanto, perché Python è così anale nel far sì che tutto segua a sintassi uniformemente prevedibile. In Ruby, puoi ottenere immediatamente STDIN con if mystring =~ /^\s+hello word!/ ... . In Python, devi input = STDIN.read e poi %codice%. Questi sono solo due esempi in cui lo sforzo di Python la distanza stessa da Perl ed essere così prevedibilmente regolari viene troncata da La volontà di Ruby di fare ciò che sembra giusto in ogni caso.

L'altra cosa che distingue Ruby da Python è che Ruby è molto più vicino a Lisp mentre Python è praticamente una programmazione imperativa linguaggio. Penso che questo sia un grande vantaggio a favore di Ruby.

Ci sono molte caratteristiche simili a Lisp di Ruby che rendono possibile fare di più con meno codice in Ruby che in Python. Ad esempio, ogni affermazione e la struttura di controllo in Ruby restituisce un valore: puoi farla franca in Ruby con mai usando l'istruzione import sys . Anche le dichiarazioni sys.stdin.read() valgono su a 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 digitare return due volte. Non è molto ASCIUTTO (no Ripeti te stesso). Ci sono molte istanze come questa dove Ruby lo farà essere più ASCIUTTO di Python per le sue qualità simili a Lisp. Matz, il creatore di Ruby, proveniva da uno sfondo Lisp.

Alcuni dicono che Ruby dica anche il culo a Python in metaprogrammazione (aka programmazione dinamica). La gente di Python risponde o dicendo questo metaprogramming è troppo pericoloso, o dicendo che, teoricamente, tu in grado di eseguire tutte le cose metaprogramming Ruby può in Python, solo in modo diverso. Ma una cosa su cui tutti sono d'accordo è 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 può entrambi portare a termine il lavoro. Rispetto a C e Java, Ruby e Python lo sono praticamente la stessa cosa Sono espressivi, produttivi, di alto livello le lingue.

Quindi si riduce alla tua personalità.

Ti piace che le cose siano prevedibili, regolari e sicure? Ti piace il stile imperativo di programmazione? Vuoi forse lavorare un giorno per Google? Pensi che Perl sia una generazione caotica dell'inferno? Attenersi Python.

Sei molto contento di trovare il modo più conciso di farlo realizzare qualche risultato di programmazione? Ti annoi per regolarità e uniformità? Ti piace avere la libertà di scrivere codice in uno stile questo è tutto tuo, e avere un sacco di spazio per inventare il tuo bei trucchi? Ti senti più affine a Lisp che a C? Fare provi una grande ammirazione per il contributo epocale di Perl al software programmazione, ma vorrei solo che potesse essere solo un po 'meno criptico e brutto? Pensi al codice come gli altri pensano alla poesia? Prova Ruby.

    
risposta data 11.02.2011 - 08:45
fonte
6

Dipende.

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

Python è più un linguaggio classico con un sacco di cose di basso livello, mantenendolo pulito e facile rispetto ad esempio per C. Python non ha l'ambizione di Ruby, che per me ha molte più caratteristiche di alto livello.

Non ti farà male imparare Ruby, scoprirai cose nuove, ma sappi che Python è più vicino ai semplici paradigmi di programmazione che hanno reso il successo di C, con molti aumenti di produttività. Ruby è più per le persone che vogliono andare oltre nella programmazione dei concetti in generale: Scheme e tutte quelle lingue "superiori".

    
risposta data 11.02.2011 - 14:05
fonte
3

Risposta breve: sì e sì.

Imparare una nuova lingua è quasi sempre utile, e va soprattutto per Ruby dato che Rails è ancora molto popolare. E sì, conoscere bene Python renderà più semplice la raccolta di Ruby. Hanno alcune differenze sintattiche e diverse convenzioni nella denominazione, ma c'è anche molto terreno comune.

Non è un grande investimento in termini di tempo, ed è sempre vantaggioso avere più strumenti nella tua cassetta degli attrezzi, quindi fallo!

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

    
risposta data 11.02.2011 - 07:58
fonte
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 un sacco di valore di mercato (ottengo un certo numero di prospettive di lavoro non richieste semplicemente perché ho fatto molto con Python), ma lo stesso vale per 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, dal momento che le lingue e i framework disponibili sono simili tra loro. Un esempio è gemme di Ruby e python pip .

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

    
risposta data 11.02.2011 - 08:08
fonte
2

Devo imparare il rubino? Sì.

Vale sempre la pena imparare un nuovo linguaggio (specialmente se applica un diverso paradigma di programmazione a quelli che conosci) e qualche volta 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 della tecnologia e che puoi imparare le cose da solo.

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

    
risposta data 25.11.2011 - 14:09
fonte

Leggi altre domande sui tag