Я робив 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? Ви відчуваєте велике захоплення епохальним внеском Перла в програмування програмного забезпечення, але хочете лише зробити, що це може бути лише трохи менш дурним і потворним? Ви думаєте про код, як інші люди думають про поезію? Спробуйте Рубі.