Ruby czy Python? [Zamknięte]

24

To pytanie jest niezwykle subiektywne i otwarte. Może to nawet zabrzmieć jak coś, co powinienem po prostu zbadać dla siebie i podjąć własną decyzję. Ale chciałbym to tam przedstawić i uzyskać od innych przemyślenia.

Krótko mówiąc - wypaliłem się w wyścigu szczurów i w tym roku jestem na samofinansującym się urlopie naukowym. W dużej mierze chodzi o to, aby odpocząć od grindu korporacyjnego i podróżować, ale chcę również bawić się nowymi technologiami i realizować projekty samokształcenia, aby być na bieżąco z programowaniem i dobrze - po prostu uwielbiam majstrować przy programowanie, gdy nie ma presji!

Oto rzecz: jestem dożywotnim programistą C / C ++ / Java. Jestem trochę snobistycznym snobem, odkąd pracuję z tą rodziną języków przez całą moją karierę programistyczną. Chciałbym więc nauczyć się języka, który nie jest tak ściśle związany składni z tą grupą. To, czego właściwie szukam, to język, który jest względnie ogólny, fajnie się go uczy, ma kilka nowych koncepcji, które różnią się od C ++ / Java i ma dobrą społeczność. Drugą kwestią jest to, że ma dobre ramy programistyczne. Trzecim aspektem jest to, że nie jest on całkowicie akademicki (czytaj: są tam rzeczywiste miejsca pracy, które go używają).

Zawęziłem to do Ruby lub Python. Mam wrażenie, że Ruby jest bardzo zorientowana na sieć - że jedyną jego prawdziwą aplikacją jest język skryptowy po stronie serwera do robienia rzeczy w sieci (głównie Ruby on Rails). W ogóle nie mam wrażenia na temat Pythona, poza tym, że wydaje się, że ma on pasjonatów i jest dość uniwersalnym językiem.

TL; DR i mówiąc tak zwięźle, jak to możliwe: które z nich byłyby lepsze dla faceta C ++ / Java, aby nauczył się nowych perspektyw na programowanie? A który jest bardziej otwarty i ma ogólne zastosowanie i ma zastosowanie do szerszego zestawu aplikacji? Obecnie pochylam się w kierunku Ruby, ale martwię się do tego stopnia, że ​​wygląda na to, że jest on używany jako język WWW po stronie serwera.

Stoły Bobby'ego
źródło
„Dla Pythona nie jestem tego taki pewien”? Czego? Jak to jest istotne?
S.Lott,
O wiele więcej znajdziesz w Ruby vs Python na StackOverflow. Dziwi mnie, że sam Lennart jeszcze nie skomentował. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Job
@ S.Lott: Niestety, nie był jasny ebough. Oznaczało to, że nie mam jeszcze szczegółowego wrażenia na temat Pythona. Tyle że jest wszechstronny i ma silną bazę fanów.
Tabele Bobby'ego
9
Oczywiście Perl.
Bruce Alderman
To mieści się w „Która technologia jest lepsza?” kategoria pytań, które zgodnie z często zadawanymi pytaniami są uważane za nie na temat.
ChrisF

Odpowiedzi:

35

Nie daj się zwieść faktowi, że Ruby stało się popularnym językiem, głównie z powodu Rails (frameworka aplikacji internetowych). Jest to język programowania ogólnego zastosowania i można go używać do wszystkiego, do czego można użyć dowolnego innego języka.

Baw się z Ruby i sprawdź, czy się w niej zakochasz. Albo to zrobisz, albo nie. To trochę jak muzyka Grateful Dead; albo to kochasz, albo nie możesz tego znieść.

Ruby rozciąga mózg. Pod wieloma względami jest tak daleko od C ++ / Java, jak to tylko możliwe. Pochodzę z języka C i C # i odkryłem, że dynamika Ruby i moc metaprogramowania są dość odurzające.

Biorąc to pod uwagę, Python jest absolutnie wyjątkowym językiem i wyrwie cię z kręconości.

Dlaczego nie nauczyć się obu? Używam obu na bieżąco: Ruby do programowania w Railsach i Python do pracy z Google AppEngine.

Adam Crossland
źródło
2
+1 za martwe odniesienie;;)
cschol
1
Dzięki. Najpierw pójdę z Ruby i zobaczę, czy się w tym zakocham. :)
Tabele Bobby
8
Jestem trochę spóźniony na imprezę, ale trypython.org i tryruby.org to świetne strony do wypróbowania języków.
Michelle Tilley,
17

Wprawdzie prawie nie używałem Ruby, ale oto moje wrażenia z Python:

  • kiedy piszę pseudokod, aby wyrysować funkcję, stwierdzam, że to, co piszę, to praktycznie Python, a czasem potrzeba bardzo niewielkiego przepisywania, aby uczynić go rzeczywistym kodem. Możesz nawet pominąć pseudokod razem i po prostu wyrazić swoje myśli bezpośrednio w Pythonie
  • kiedy muszę zrobić coś, co wydaje się być zwykłym zadaniem, Python zwykle ma wbudowane niezbędne funkcje (na wysokim poziomie) w swojej standardowej bibliotece. Na przykład na początku, kiedy chciałem otworzyć plik i zeskanować go linia po linii, odpowiedź była tak prosta, jak „dla linii w moim pliku: dostuff (linie)”. Sądzę, że nazywają to podejściem „dołączone baterie” i różni się od niektórych innych języków, w których używałem, gdzie codzienne operacje są znacznie bardziej skomplikowane

Te dwie rzeczy mnie wyróżniają.

Andrew M.
źródło
Myślę, że to są powody, dla których wolę Ruby. Ruby jest bardziej OO i ma mniej słów kluczowych. Np. W Ruby „[1,3,5] .length ()” i „[1..10] .each () ...” vs Python „len ([1,3,5])” i „dla i w zakresie (1,11) ”
LennyProgrammers
6
@ Lenny - Ruby ma więcej słów kluczowych: krijnhoetmer.nl/stuff/ruby/ke words vs. zetcode.com/tutorials/pythontutorial/ke words - dla Pythona 2.6, to 31 słów kluczowych dla Ruby's 38. Wydaje się też, że „więcej OO” to używane tutaj dość subiektywnie, ponieważ w obu językach „wszystko jest przedmiotem” ma zastosowanie (a nawet bardziej dosłownie w Pythonie 3.x, ponieważ wszystko jest podklasą object). Ponadto, len(obj)jest to skrót do wywoływania obj.__len__(), a for i in rangetakże abstrakty szczegółów operacyjnych działających obiektów generatora. Myślę, że / równoważny, ale inny / jest bardziej dokładny.
Wayne Werner
mam przeczucie, że Lenny oznaczał, że używasz mniej słów kluczowych w typowym zestawieniu, na przykład „dla i w zakresie (1,11) ma 3 słowa kluczowe (dla, w, zakres). Oczywiście czasem więcej słów jest lepszych.
Andrew M
5
zakres nie jest słowem kluczowym, jest funkcją
Kugel
9

Jeśli bierzesz urlop naukowy przez cały rok, proponuję spędzić tydzień lub dwa na nauce, a następnie sam zdecydować, który z nich najbardziej Ci się podoba. Mam doświadczenie w obu przypadkach i moim zdaniem oba są tak zdolne, że naprawdę musisz po prostu zdecydować, który z nich wybierzesz.

Jason Webb
źródło
+1, oba wydają się dość łatwe. Z drugiej strony Clojure ... jest świetną zabawą, ale jest też trudniejszy.
Job
7

IMO, powinieneś iść z Pythonem. Powodem jest to, że jest bardziej wszechstronny, można go używać do prawie wszystkiego. Ruby jest, jak zauważyłeś, częściej wykorzystywany w tworzeniu stron internetowych ze względu na swoje frameworki. W przeciwieństwie do Pythona, Ruby nie jest tak dobry do tworzenia aplikacji komputerowych GUI, programów numerycznych, statystycznych lub do przetwarzania obrazów.

Marcin
źródło
1
Czy możesz wskazać, co sprawia, że ​​Ruby „nie jest tak dobra do tworzenia aplikacji komputerowych GUI, programów numerycznych, statystycznych lub przetwarzających obrazy”? Kiedy programowałem w Ruby w 2001/2002, z radością robiłem te wszystkie rzeczy.
LennyProgrammers,
7
@ Lenny222. W Ruby nie ma bibliotek takich jak numpy, scipy, sympy, PIL, matplotlib. Niezależnie od tego, jakie są biblioteki numeryczne, daleko im do Pythona. Podobnie jest z dokumentacją i bibliotekami do tworzenia aplikacji GUI.
Marcin
1
Mówisz, że Python jest bardziej wszechstronny, a następnie wskaż biblioteki, dlaczego. Przyznaję, że nie jest tak łatwo robić pewne rzeczy w Ruby z powodu braku dobrej biblioteki, ale to nie znaczy, że sam Ruby jest w jakiś sposób mniej wszechstronny.
Twisol,
@Twisol właśnie dlatego: Python jest bardzo prosty (i spójny), dlatego jest tak wszechstronny i dlaczego jest tak wiele przydatnych bibliotek (IMO).
Nadir Sampaoli
6

Ruby istnieje już o wiele dłużej niż szyny, więc pozwólcie, że przedstawię to na świecie Ruby != web, chociaż robi to bardzo dobrze. Istnieje wiele rzeczy związanych z systemami, które można i robi. Wygląda na to, że cała platforma Rails pochłonęła resztę świata Ruby. I tak, jestem fanem Ruby.

Z drugiej strony Python ma wiele do zrobienia i został zintegrowany z prawie wszystkim w Linuksie. To mówi mi, że prawdopodobnie dość łatwo można go włączyć do większych programów (w porównaniu do Ruby, Java itp.). Jest sporo infrastruktury Ubuntu Linux napisanej w Pythonie, co mówi mi, że Python ma zastosowanie w programowaniu systemów. Słyszałem, że jego platforma internetowa jest naprawdę fajna, jeszcze z nią nie grałem.

To powiedziawszy, zarówno Ruby, jak i Python są równie sprawnymi językami, a przekonasz się, że znacznie ułatwią ci życie. Ruby ma o wiele więcej głów internetowych w swojej społeczności, ale to nie jest cała społeczność. Użyłem go również w wielu projektach infrastrukturalnych.

Berin Loritsch
źródło
5

Jest to szczególny przypadek „ idealnej sekwencji uczenia się języków programowania” i podobnych pytań . To, czego potrzebujesz, nie jest „jednym idealnym językiem”, potrzebujesz wielu paradygmatów językowych i wielu doświadczeń uczenia się, aby otworzyć umysł.

Wiem, że powiedziałeś, że zawęziłeś go do Ruby i Pythona, ale sugeruję zacząć od Rakiety (popularnego schematu). Jest zbudowany do nauki i ładnie rozciąga mózg w kierunku programowania funkcjonalnego, programowania interaktywnego i dynamicznego pisania. Nie ma miejsc pracy (dosłownie zero), bardzo mała, rozdrobniona społeczność i nie ma dużego frameworka internetowego, i właśnie dlatego nie utkniesz w nim; usmaż mózg na chwilę, a następnie idź dalej.

Po drugie, chcesz nauczyć się Ruby lub Pythona dla możliwych zadań. Proponuję nauczyć się obu. Nauka drugiego z tych dwóch będzie znacznie łatwiejsza niż pierwszego pomimo różnic. Jeśli chodzi o możliwe prace, mam przeczucie, że jest więcej pracy w Ruby z powodu Railsów, ale wiem, że jest też trochę pracy Zope w tym obszarze. Zainwestuj w co najmniej jedną z nich, ale sprawdź też drugą co najmniej wystarczająco długo, aby zbudować coś małego.

Szczerze mówiąc, prawdopodobnie nauczysz się więcej w pierwszym tygodniu pracy w jednym z nich, niż sam nauczyłeś się; oba mają duże ekosystemy z dużą ilością narzędzi, kultury i idiomów.

tl; dr: Both and Scheme.

Jesse Millikan
źródło
1
+1 Wszystko, co widziałem, to „jeden idealny język” i „schemat”. :)
dietbuddha,
1

Ja także pochodzę z języka Java / C ++ i programowałem w języku Python w środowisku Django przez ostatnie 4 miesiące i jest naprawdę świetny. Ilekroć mam problem lub pytanie, mogę znaleźć wyjaśnienia na temat istniejących postów. Nie mogę poręczyć za Ruby, ponieważ jeszcze jej nie użyłem, ale na pewno spróbuję, gdy będę miał trochę czasu.

Osobiście podoba mi się to, jak możesz robić rzeczy naprawdę szybko dzięki Pythonowi, ponieważ ma on wiele przydatnych wbudowanych funkcji.

chiurox
źródło
1

Głosuję na Ruby. Pochodzę z tła .Net i C #, najpierw wypróbowałem Pythona, ale Ruby mnie po prostu oczarowała =)
Piszę w nim wiele rzeczy systemowych, a niektórzy z Railsów się tym zajmują. Jest zdolny jako Python w programowaniu systemu i jest świetny w sieci. I wydaje mi się, że jest bardziej dopracowany ...

Aleksiej Anufrijew
źródło