Що повинен знати розробник Python під час навчання Ruby? [зачинено]


16

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

Однак, як видається, у Ruby приділяється багато уваги в області програмування, але вже не багато на Python.

Тож, вивчаючи Рубі, чи будуть пітонічні речі, які є лише поганими звичаями в Рубі? На що слід стежити, і чого слід уникати?


4
Я завжди вважав програміста Ruby, якщо мені слід вивчити Python, тому що це все, про що всі говорять: P
Earlz

Незважаючи на кайф, здається, що Python як і раніше використовується вдвічі більше, ніж Ruby (згідно з принаймні TIOBE -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Даніель Скокко

10
Замість того, щоб бути "програмістом Python" чи "Ruby програмістом", ви повинні намагатися бути чудовим програмістом. Потім ви можете використовувати будь-яку мову, яку хочете, і переходити до нової, коли настане час.
BlackJack

Відповіді:


31

Я робив Python ще в 2003-5 роках, коли був консультантом Plone / Zope. Потім у 2006 році я почав збирати Рубі. Я ніколи не оглядався. Я думаю, що різні люди відчувають себе комфортніше з різними мовами та культурами програмування, але для мене Рубі відчуває себе набагато краще, ніж Python.

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

З моєї точки зору, дві найкращі речі про Рубі - це дві речі, які різко відрізняють її від Python. По-перше, на Рубі сильно впливає Перл. Здається, Python пишається тим, що є антиперлом. Але речі, які Рубі запозичив у Perl, мають велику практичну цінність. Візьміть, наприклад, регулярні вирази. У Ruby ви можете регулярно писати регулярні вирази, наприклад if mystring =~ /^\s+hello word!/ .... У Python не так багато, тому що Python настільки анальний, що змушує все слідувати рівно передбачуваному синтаксису. У Ruby можна відразу отримати STDIN input = STDIN.read. У Python ви повинні import sysі тоді sys.stdin.read(). Це лише два приклади, коли намагання Python дистанціюватися від Perl і бути таким передбачувано регулярним, піддається бажанням Рубі робити те, що відчуває себе правильно у кожному випадку.

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

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

result = if output == 'hello'
           [some code here]
           "world"
         else
           [some other code here]
           "there"
         end

У Python вам доведеться писати

if output == "hello":
  [some code here]
  result = "world"
else:
  [some other code here]
  result = "there"

Python змушує вас вводити result =двічі. Це не дуже СУХО (не повторюй себе). Існує дуже багато таких випадків, коли Ruby буде більше DRY, ніж Python через свої Lisp-подібні якості. Мац, творець Рубі, походив з фона Lisp.

Деякі люди кажуть, що Рубі також б'є попку Python у метапрограмуванні (він же динамічне програмування). Люди Python відповідають або кажучи, що метапрограмування занадто небезпечно, або кажучи, що теоретично ви можете виконати всі метапрограмування, які Ruby може робити в Python, по-різному. Але одна річ, з якою всі згодні, полягає в тому, що метапрограмування набагато рідше зустрічається в Python, ніж у Ruby. І це дуже погано, адже метапрограмування - це подорож.

Я думаю, що це, мабуть, правда, що наприкінці дня Рубі та Пітон можуть виконати роботу. Порівняно з C та Java, Ruby та Python - це майже однакове. Вони виразні, продуктивні, мови високого рівня.

Так воно зводиться до вашої особистості.

Чи любите ви, щоб речі були передбачуваними, регулярними та безпечними? Вам подобається імперативний стиль програмування? Ви хочете, можливо, колись попрацювати для Google? Ви вважаєте, що Perl - хаотичний нерест пекла? Палиця з Python.

Ви з великим задоволенням знаходите абсолютно стислий спосіб досягти певного результату програмування? Вам нудно регулярності та одноманітності? Вам подобається мати свободу писати код у стилі, який є власним, та маєте багато місця, щоб придумати свої власні круті трюки? Чи відчуваєте ви більше спорідненість до Lisp, ніж до C? Ви відчуваєте велике захоплення епохальним внеском Перла в програмування програмного забезпечення, але хочете лише зробити, що це може бути лише трохи менш дурним і потворним? Ви думаєте про код, як інші люди думають про поезію? Спробуйте Рубі.


11
"І це дуже погано, тому що метапрограмування - це поїздка" ... І так само, як поїздка, це буде чудово на ніч, але врешті-решт ти прокинешся вранці і забудеш, що ти робив. Я думаю, що метапрограмування перебільшується в Ruby, і я віддаю перевагу Ruby перед Python. Більшість рішень проблем із синтаксисом Рубі - це "ви можете обійти це за допомогою метапрограмування"
Earlz

23
Що? result = "world" if output=="hello" else "there"цілком дійсний Python (і на три символи коротший).
Тім Піцкер

3
@Tim Добре дякую, що мене виправили. Але чи можете ви зробити те ж саме із заявою if / elsif / elsif / else - тобто, якщо / elif / elif / else в Python? Чи можете ви зробити те ж саме, навіть якщо всередині пропозиції if або else є кілька заяв?
дан

1
Зачекайте, у Python немає термінального оператора?
ПП.

3
"Мац, творець Python, походив з фона Lisp". зачекайте ... AFAIK Мац - це Рубі творець ...
Еймантас

6

Це залежить.

Для мене python набагато легше наздогнати, ніж рубін, плюс обидві мови мають інше призначення.

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

Вам не зашкодить вивчити Рубі, ви відкриєте для себе нові речі, але будьте в курсі, ніж Python ближче до простих парадигм програмування, які досягли успіху C, маючи велике підвищення продуктивності. Ruby - це більше для людей, які хочуть іти далі в концепціях програмування взагалі: Scheme та всі ті "чудові" мови.


3

Коротка відповідь: Так і так.

Вивчення нової мови майже завжди корисне, і це особливо стосується Ruby, оскільки Rails все ще дуже популярний. І так, якщо добре знати Python, це дозволить легко підібрати Рубі. У них є синтаксичні відмінності та різні умовності в іменуванні, але існує також багато спільних позицій.

Це не велика інвестиція в часі, і завжди вигідно мати більше інструментів у своєму інструментарі, тому йдіть на це!

(Я використовував Python близько 10 років і брав Ruby минулого року. Зараз працюю повний робочий день у проекті RoR)


2

Все має свою нішу. Наприклад, Python (django) є першокласним громадянином GoogleApp Engine, хоча це мова або вибір для багатьох біоінформаційних проектів. Python має велику ринкову цінність (я отримую ряд непотрібних перспектив роботи просто тому, що я багато зробив з Python), але Ruby - у різних сферах. Як ви, без сумніву, чули тут багато разів, це завжди допоможе вам вивчити більше мов, так що так, вивчіть Рубі. Чи буде це складно? Це буде набагато менш складним, ніж вивчення COBOL, оскільки наявні мови та рамки схожі між собою. Одним з прикладів є Рубі дорогоцінних каменів і пітона піп .

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


Я хотів відповісти так само, сподіваюся, ви не заперечуєте з редагуванням ...
Dimitrios Mistriotis

2

Чи слід вивчати рубін? Так.

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

Це буде важко? Якщо ви навчилися Python, ви, безумовно, можете навчитися і Рубі.

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

На сайті c2.com гарне порівняння між Ruby та Python .

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