Ruby чи Python? [зачинено]


24

Це питання є надзвичайно суб’єктивним та відкритим. Це може навіть звучати як щось, що я повинен просто дослідити для себе і прийняти своє власне рішення. Але я хотів би викласти це там і отримати деякі думки від інших.

Довга коротка історія - цього року я перегорів під час щурячої гонки і перебуваю на самофінансування. Багато чого в тому, щоб відпочити від корпоративної роботи та подорожувати, але я також хочу пограти з новими технологіями та зробити декілька проектів самонавчання, щоб не відставати від програмування, і добре - я просто люблю займатися програмування, коли тиску немає!

Ось у чому річ: я пожиттєвий програміст C / C ++ / Java. Я трохи хитро скрутний кронштейн, оскільки працюю з цією сімейкою мов протягом усієї кар’єри програмування. Тому я хотів би вивчити мову, яка не так синтаксично пов'язана з цією групою. Що я в основному шукаю, це мова, яка є загальнозагальною метою, цікавою для вивчення, має нові поняття, які відрізняються від C ++ / Java, і має гарне співтовариство. Друге значення - це те, що він має хороші рамки для веб-розробки. Третинна думка полягає в тому, що він не зовсім академічний (читайте: там використовуються реальні робочі місця).

Я звузив його до Рубі або Пітона. Моє враження від Ruby полягає в тому, що він надзвичайно орієнтований на веб - що єдине реальне його застосування - це як скриптова мова на серверній мові для веб-матеріалів (в основному Ruby on Rails). У мене взагалі немає особливого враження про Python, за винятком того, що він, мабуть, має пристрасну фан-базу і, здається, є досить універсальною мовою.

TL; DR і сказати це якомога коротше: що з них було б краще, щоб хлопець C ++ / Java навчився отримувати нові перспективи програмування? А яка більш відкрита та загальна мета та застосовна для більш широкого набору програм? На даний момент я схиляюся до Рубі, але я переживаю, що схоже, що він використовується як інший веб-мову на стороні сервера.


"Для Python я не дуже впевнений"? Якого? Наскільки це актуально?
S.Lott

На Ruck vs Python можна знайти багато іншого на StackOverflow. Я здивований, що сам Леннарт ще не коментував. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611 / ...
Робота

@ S.Lott: Вибачте, не був ясний ебаф. Це просто означало, що я ще не маю дуже детального враження про Python. За винятком того, що він універсальний і має міцну вентиляторну базу.
Столи Бобі

9
Перл, звичайно.
Брюс Олдермен

Це підпадає під "Яку технологію краще?" категорія питань, які відповідно до FAQ часто вважаються позатематичними.
ChrisF

Відповіді:


35

Не дозволяйте факту, що Ruby перетворився на загальну мову багато в чому через Rails (рамки веб-додатків) вас обдурить. Це мова програмування загального призначення, і ви можете використовувати її для всього, для чого ви можете використовувати будь-яку іншу мову.

Пограйте з Рубі і подивіться, чи закохаєтесь у неї. Ви або хочете, або не хочете. Це схоже на музику вдячних мертвих; ви або любите це, або ви не можете терпіти.

Рубі розтягне ваш мозок. Багато в чому це далеко від C ++ / Java. Я походжу з фонів C і C #, і я виявив, що динамічність і сила метапрограмування Рубі є досить п'яними.

Попри це, Python - це абсолютно видатна мова, і це позбавить вас від вашої кучерявості.

Чому б не навчитися обом? Я використовую обидва на регулярній основі: Ruby для програмування з Rails та Python для роботи з Google AppEngine.


2
+1 для мертвої посилання,;)
cschol

1
Спасибі. Я спершу піду з Рубі і побачу, чи закохаюсь у неї. :)
Столи Бобі

8
Я трохи запізнююся на вечірку, але trypython.org і tryruby.org - це чудові сайти для випробування мов.
Мішель Тіллі

17

Я, звичайно, не користувався Рубі, але ось мої враження від Python:

  • коли я пишу псевдокод для олівця функції, я виявляю, що те, що я практично пишу, - це Python, а іноді надзвичайно мало переписування потрібно, щоб зробити його фактичним кодом. Ви можете навіть пропустити псевдокод всі разом і просто висловити свої думки прямо в Python
  • коли мені потрібно зробити щось, що здається загальним завданням, Python прагне мати необхідні функції (на високому рівні), вбудовані у свою стандартну бібліотеку. Наприклад, на початку, коли я хотів відкрити файл і сканувати його по черзі, відповідь була такою ж простою як "для рядків у myFile: dostuff (рядки)". Це я вважаю, що вони називають підхід "включені батареї", і він відрізняється від деяких інших мов, якими я користувався, коли щоденні операції набагато легше

Ці дві речі мені виділяються.


Я думаю, що саме з цих причин я віддаю перевагу Рубі. Ruby - більше OO і має менше ключових слів. Напр. У Ruby "[1,3,5] .length ()" та "[1..10] .each () ..." vs Python "len ([1,3,5])" та "for i в діапазоні (1,11) "
LennyProgrammers

6
@Lenny - у Ruby насправді є більше ключових слів: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - для Python 2.6, це 31 ключове слово для Ruby's 38. Також, здається, "більше OO" тут використовується досить суб’єктивно, оскільки в обох мовах "усе є об'єктом" (а ще більш буквально з Python 3.x, як і все з підкласів object). Також len(obj)є ярликом для виклику obj.__len__(), а for i in rangeтакож конспектує оперативні деталі операційних об'єктів генератора. Я думаю / еквівалент, але різний / є більш точним.
Уейн Вернер

У мене є відчуття, що Ленні мав на увазі, що ви використовуєте менше ключових слів у своєму типовому висловлюванні, наприклад, «для i в діапазоні (1,11) є 3 ключові слова (для, в, діапазоні). Звичайно, іноді більше слів краще.
Ендрю М

5
range не є ключовим словом, це функція
Kugel

9

Якщо ви проходите цілий рік у суботу, то я б запропонував витратити тиждень-два на навчання, а потім вирішити для себе, який вам найбільше подобається. Я маю досвід роботи з обома, і на мою думку, вони обоє настільки здатні, що вам справді просто потрібно вирішити, який з них ви віддаєте перевагу.


+1, обидва здаються досить легкими. Clojure, з іншого боку ... дуже весело, але також важче.
Робота

7

ІМО, вам слід піти з Python. Причина в тому, що він більш універсальний, ви можете використовувати його практично для всього. Як ви зауважили, Ruby більше використовується в веб-розробці завдяки своїм веб-рамкам. На відміну від Python, Ruby не так добре підходить для розробки програм для настільних комп'ютерів gui, чисельних, статистичних програм або програм обробки зображень.


1
Чи можете ви вказати, що робить Ruby "не таким хорошим для розробки програм для настільних комп'ютерів gui, чисельних, статистичних програм або програм обробки зображень"? Коли я програмував у Рубі в 2001/2002, я із задоволенням робив усі ці речі.
LennyProgrammers

7
@ Lenny222. У Ruby немає таких бібліотек, як numpy, scipy, sympy, PIL, matplotlib. Якими б чисельними бібліотеками вони не були, вони набагато відстають від Python. Аналогічно з документацією та бібліотеками для розробки програм gui.
Марцін

1
Ви кажете, що Python є більш універсальним, і тоді вказуєте на бібліотеки. Я дозволю вам, що робити щось у Ruby не так просто через відсутність хорошої бібліотеки, але це не означає, що Ruby сама по собі дещо менш універсальна.
Twisol

@Twisol саме тому: чому: Python дуже простий (і послідовний) є причиною того, що він такий універсальний і чому так багато корисних бібліотек (IMO).
Надір Сампаоолі

6

Рубі вже довше, ніж рейки, тому дозвольте мені виставити її там, у світі Ruby != web, хоча це і дуже добре. Існує безліч системних речей, які він може і робить. Просто здається, що вся рамка Рейки поглинула решту світу Рубі. І так, я фанат Рубі.

З іншого боку, Python для цього багато працює, і він інтегрований майже з усім на Linux. Це говорить мені, що, ймовірно, досить легко включити у більші програми (порівняно з Ruby, Java тощо). Існує велика кількість інфраструктури Ubuntu Linux, написаної з Python, що говорить про те, що Python має застосування в системному програмуванні. Я чую, що його веб-структура дуже приємна, я ще не грав з нею.

Однак, Ruby і Python - однаково здатні мови, і ви виявите, що вони значно полегшать ваше життя. У Ruby є набагато більше веб-голів у своїй громаді, але це ще не все. Я також використовував це в ряді інфраструктурних проектів.


5

Це особливий випадок " Ідеальне програмування послідовності вивчення мови" та подібні запитання . Те, що вам потрібно, це не «єдина ідеальна мова», для відкриття думки вам потрібні декілька мовних парадигм та багаторічний досвід навчання.

Я знаю, ви сказали, що ви звузили його до Ruby і Python, але я пропоную почати з Racket (популярна схема). Він створений для навчання, і він добре розтягне ваш мозок до функціонального програмування, інтерактивного програмування та динамічного набору тексту. Немає ніяких робочих місць (буквально нульових), дуже невелика, роздроблена спільнота та жодних основних веб-рамок, саме тому ви не зациклюєтесь на ній; смажимо мізки на деякий час, а потім рухайся далі.

По-друге, ви хочете навчитися Ruby або Python для можливої ​​роботи. Я пропоную вам навчитися обом. Вивчити другий з цих двох буде набагато простіше, ніж перший, незважаючи на їх відмінності. Що стосується можливих робочих місць, моє відчуття в кишках - це те, що Рубі через роботу Рейлів більше, але я знаю, що в цій галузі також є робота Zope. Інвестуйте принаймні в одну з них, а також перевірте іншу хоча б достатньо довго, щоб створити щось невелике.

Чесно кажучи, ви, мабуть, дізнаєтесь більше свого першого тижня на роботі з будь-яким з них, ніж ви коли-небудь дізналися самі; вони обоє мають великі екосистеми з великою кількістю інструментів і культури та ідіоми.

tl; dr: І те, і схема.


1
+1 Я бачив лише "єдину ідеальну мову" та "схему". :)
dietbuddha

1

Я теж походив з Java / C ++ та програмував у Python за допомогою програми Django протягом останніх 4 місяців, і це справді чудово. Кожен раз, коли у мене є проблеми або питання, я можу знайти пояснення в існуючих публікаціях. Я не можу поручитися за Рубі, оскільки я ще не користувався ним, але обов'язково спробую, коли у мене буде деякий час.

Мені особисто подобається, як ви можете робити речі дуже швидко за допомогою Python, оскільки в ньому вбудовано багато корисних функцій.


1

Я голосував за Рубі. Я прийшов
. Він здатний як Python в системному програмуванні, і в Інтернеті дивовижний. І мені здається більш відполірованим ..

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.