Ruby o Python? [chiuso]


24

Questa domanda è estremamente soggettiva e aperta. Potrebbe anche sembrare qualcosa che dovrei solo cercare da solo e prendere la mia decisione. Ma mi piacerebbe metterlo là fuori e ottenere alcuni pensieri dagli altri.

Per farla breve: mi sono esaurito con la corsa dei topi e quest'anno sono un anno sabbatico autofinanziato. Gran parte di esso è quello di prendersi una pausa dalla routine aziendale e viaggiare, ma voglio anche giocare con le nuove tecnologie e fare alcuni progetti di autoapprendimento, rimanere al passo con la programmazione e bene - Adoro armeggiare con programmazione, quando non c'è pressione!

Ecco la cosa: sono un programmatore C / C ++ / Java a vita. Sono un po 'snob snob da quando ho lavorato con questa famiglia di lingue per tutta la mia carriera di programmatore. Quindi mi piacerebbe imparare una lingua che non è così strettamente sintatticamente correlata a questo gruppo. Quello che sto sostanzialmente cercando è un linguaggio che è relativamente generico, divertente da imparare, ha alcuni nuovi concetti che sono diversi da C ++ / Java e ha una buona comunità. Una considerazione secondaria è che ha buoni framework di sviluppo web. Una considerazione terziaria è che non è del tutto accademico (leggi: ci sono posti di lavoro nel mondo reale che lo usano).

L'ho ridotto a Ruby o Python. La mia impressione di Ruby è che è estremamente orientato al web - che l'unica vera applicazione di esso è come un linguaggio di scripting lato server per fare cose sul web (principalmente Ruby on Rails). Non ho molta impressione di Python, tranne per il fatto che sembra avere una base di fan appassionati e sembra essere un linguaggio abbastanza versatile.

TL; DR e per dirla nel modo più sintetico possibile: quale di questi sarebbe meglio per un ragazzo C ++ / Java imparare a ottenere alcune nuove prospettive sulla programmazione? E qual è lo scopo più aperto e generale e applicabile a un più ampio set di applicazioni? Al momento mi sto sporgendo verso Ruby, ma mi preoccupo al punto da sembrare che sia usato solo come linguaggio web lato server.


"Per Python non ne sono così sicuro"? Di cosa? Come è rilevante?
S.Lott

Puoi trovare molto di più su Ruby vs Python su StackOverflow. Sono sorpreso che lo stesso Lennart non abbia ancora commentato. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/...
Job

@ S.Lott: Siamo spiacenti, non era ancora chiaro. Volevo solo dire che non ho ancora un'impressione molto dettagliata di Python. Solo che è versatile e ha una forte base di fan.
Tabelle Bobby

9
Perl, ovviamente.
Bruce Alderman,

Questo rientra nel "Quale tecnologia è migliore?" categoria di domande, che secondo le FAQ sono considerate fuori tema.
ChrisF

Risposte:


35

Non lasciarti ingannare dal fatto che il Ruby è salito nel linguaggio comune in gran parte a causa di Rails (il framework delle applicazioni web). È un linguaggio di programmazione generico e puoi usarlo per tutto ciò per cui puoi usare qualsiasi altro linguaggio.

Gioca con Ruby e vedi se te ne innamori. O lo farai o no. È un po 'come la musica dei Grateful Dead; o lo ami o non lo sopporti.

Ruby allungherà il tuo cervello. Per molti aspetti, è il più lontano possibile da C ++ / Java. Vengo da uno sfondo C e C # e ho trovato la dinamicità e il potere di meta-programmazione di Ruby abbastanza inebrianti.

Detto questo, Python è un linguaggio assolutamente eccezionale, e ti farà uscire dalla tua fragilità.

Perché non imparare entrambi? Uso entrambi regolarmente: Ruby per la programmazione con Rails e Python per lavorare con Google AppEngine.


2
+1 per un riferimento morto,;)
cschol

1
Grazie. Prima andrò con Ruby e vedrò se me ne innamorerò. :)
Bobby Tables

8
Sono un po 'in ritardo alla festa, ma trypython.org e tryruby.org sono ottimi siti per provare le lingue.
Michelle Tilley,

17

Non ho quasi mai usato Ruby, ma ecco le mie impressioni su Python:

  • quando scrivo pseudocodice per disegnare una funzione, trovo che ciò che scrivo praticamente è Python, e talvolta è necessaria una riscrittura notevolmente ridotta per renderlo codice reale. Potresti anche saltare lo pseudocodice tutti insieme ed esprimere i tuoi pensieri direttamente in Python
  • quando devo fare qualcosa che sembra un compito comune, Python tende ad avere le funzioni necessarie (ad alto livello) integrate nella sua libreria standard. Ad esempio, all'inizio quando volevo aprire un file ed eseguirne la scansione riga per riga, la risposta era semplice come "per le righe in myFile: dostuff (linee)". Questo credo che chiamino l'approccio "batterie incluse", e differisce da alcune altre lingue che ho usato dove le operazioni quotidiane sono molto più complicate

Queste due cose si distinguono per me.


Penso che questi siano esattamente i motivi per cui preferisco Ruby. Ruby è più OO e ha meno parole chiave. Ad esempio in Ruby "[1,3,5] .length ()" e "[1..10] .each () ..." vs Python "len ([1,3,5])" e "for i in range (1,11) "
LennyProgrammers

6
@Lenny - Ruby in realtà ha più parole chiave: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - per Python 2.6, sono 31 parole chiave per Ruby 38. Inoltre, 'more OO' sembra essere usato qui in modo abbastanza soggettivo, poiché in entrambe le lingue si applica "tutto è un oggetto" (e ancora più letteralmente con Python 3.x, da cui tutto subclasse object). Inoltre, len(obj)è una scorciatoia per la chiamata obj.__len__()e for i in rangeconsente inoltre di estrarre i dettagli operativi degli oggetti del generatore operativo. Penso / equivalente ma diverso / è più preciso.
Wayne Werner,

ho la sensazione che Lenny intendesse usare meno parole chiave nella tua dichiarazione tipica, ad esempio 'per i nel range (1,11) ha 3 parole chiave (per, in, range). Certo, a volte più parole è meglio.
Andrew M,

5
range non è una parola chiave, è una funzione
Kugel

9

Se stai prendendo un anno sabbatico per intero, allora suggerirei di passare una settimana o due a imparare ciascuno e poi decidere da solo quale ti piace di più. Ho esperienza con entrambi e secondo me sono entrambi così capaci che devi solo decidere quale preferisci.


+1, entrambi sembrano abbastanza facili. Clojure, d'altra parte ... è molto divertente, ma è anche più difficile.
Lavoro

7

IMO, dovresti andare con Python. Il motivo è che è più versatile, puoi usarlo per quasi tutto. Come hai notato, Ruby è più utilizzato nello sviluppo web grazie ai suoi framework web. A differenza di Python, Ruby non è così buono per lo sviluppo di applicazioni desktop gui, programmi numerici, statistici o di elaborazione di immagini.


1
Puoi indicare cosa rende Ruby "non adatto allo sviluppo di applicazioni desktop gui, programmi numerici, statistici o di elaborazione delle immagini"? Quando stavo programmando in Ruby nel 2001/2002, facevo felicemente tutte queste cose.
LennyProgrammers,

7
@ Lenny222. In Ruby non ci sono librerie come numpy, scipy, sympy, PIL, matplotlib. Qualunque siano le librerie numeriche, sono molto indietro rispetto a quelle di Python. Allo stesso modo con la documentazione e le librerie per lo sviluppo di applicazioni gui.
Marcin,

1
Dici che Python è più versatile e quindi indica le librerie per il perché. Ti garantirò che non è così facile fare alcune cose in Ruby per mancanza di una buona biblioteca, ma ciò non significa che Ruby stesso sia in qualche modo meno versatile.
Twisol,

@Twisol è esattamente il Perché: Python essendo molto semplice (e coerente) è il motivo per cui è così versatile e perché ci sono così tante librerie utili (IMO).
Nadir Sampaoli,

6

Ruby è stato in giro molto più a lungo di quanto non facciano le rotaie, quindi permettetemi di pubblicarlo nel mondo Ruby != web, anche se lo fa molto bene. C'è una miriade di cose relative al sistema che può e fa. Sembra che l'intera struttura di Rails abbia inghiottito il resto del mondo di Ruby. E sì, sono un fan di Ruby.

Python d'altra parte ha molto da fare ed è stato integrato con quasi tutto su Linux. Questo mi dice che è probabilmente abbastanza facile da integrare in programmi più grandi (rispetto a Ruby, Java, ecc.). C'è una buona quantità di infrastrutture Ubuntu Linux scritte con Python, il che mi dice che Python ha un'applicazione nella programmazione dei sistemi. Ho sentito che il suo framework web è davvero bello, non ci ho ancora giocato.

Detto questo, sia Ruby che Python sono linguaggi altrettanto capaci e li troverai che ti renderanno la vita molto più semplice. Ruby ha molti più web head nella sua community, ma non è la totalità della community. L'ho usato anche su numerosi progetti infrastrutturali.


5

Questo è un caso speciale di " Sequenza ideale di apprendimento del linguaggio di programmazione" e domande simili . Ciò di cui hai bisogno non è "l'unica lingua perfetta", hai bisogno di più paradigmi linguistici e molteplici esperienze di apprendimento per aprire la tua mente.

So che hai detto di averlo ristretto a Ruby e Python, ma ti suggerisco di iniziare con Racket (uno schema popolare). È costruito per l'apprendimento e allungherà il cervello verso la programmazione funzionale, la programmazione interattiva e la digitazione dinamica. Non ci sono posti di lavoro (letteralmente zero), una comunità molto piccola e frammentata e nessun framework web importante, motivo per cui non rimarrai bloccato; friggi il cervello per un po 'e poi vai avanti.

In secondo luogo, vuoi imparare Ruby o Python per possibili lavori. Ti suggerisco di imparare entrambi. Imparare il secondo di quei due sarà molto più facile del primo nonostante le loro differenze. Per quanto riguarda i possibili lavori, la mia sensazione è che ci sia più lavoro su Ruby a causa di Rails, ma so che c'è anche un po 'di lavoro su Zope in quest'area. Investi in almeno uno di essi, ma controlla anche l'altro almeno abbastanza a lungo per costruire qualcosa di piccolo.

Onestamente, probabilmente imparerai di più con la tua prima settimana di lavoro rispetto a quanto tu abbia mai imparato da solo; entrambi hanno grandi ecosistemi con molti strumenti, cultura e modi di dire.

tl; dr: Both e Scheme.


1
+1 Tutto quello che ho visto è stato "l'unico linguaggio perfetto" e "schema". :)
dietbuddha,

1

Anch'io sono venuto da Java / C ++ e ho programmato in Python con il framework Django negli ultimi 4 mesi ed è davvero fantastico. Ogni volta che ho un problema o una domanda, posso trovare spiegazioni sui post esistenti. Non posso garantire Ruby poiché non l'ho ancora usato, ma lo proverò sicuramente quando avrò del tempo.

Personalmente mi piace il modo in cui puoi fare le cose molto velocemente con Python in quanto ha molte funzioni utili integrate.


1

Ho votato per Ruby. Vengo da .Net e C # background, ho provato prima Python, ma Ruby mi ha semplicemente incantato =)
Sto scrivendo un sacco di roba di sistema in esso, e alcuni Rails si dedicano a. È capace come Python nella programmazione del sistema ed è fantastico sul web. E mi sembra più raffinato ...

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.