«Питон или Руби» — это один из самых горячо обсуждаемых топиков в мире программирования. Впереди него только “emacs или vim” и “pro-skub или anti-skub” по важности и сложности. Сегодня мы изучим разницу и ответим на вопросы, а также объективно и окончательно решим, что лучше.


Что такое Питон?


Питон это крупная змея, которая обитает в юго-восточных регионах планеты. Они не ядовитые и нейтрализуют врагов в основном удушением. Многие из сохранившихся видов находятся под угрозой исчезновения.


Что такое Руби(н)?


Руби (рубин) — это яркий, красный драгоценный камень. Его принято относить к группе четырех драгоценных камней, наряду с изумрудами, бриллиантами и сапфирами. Существует большой спор: рубины — это красные сапфиры или сапфиры — это голубые рубины.


В чем схожесть?


Для незнакомого с темой человека рубин и питон могут показаться идентичными:


  • Динамическая типизация: Тип, к которому относится слово, динамически определяется из контекста. Питон может относится к семейству (питонов), роду (broghammerus) или к виду (сетчатый питон). Аналогично, рубин может быть конкретным минералом (корунд с примесями хрома), или относиться к общей категории красных камней.
  • Интерпретируемый: Питоны и рубины часто используются как символы и метафоры, особенно в поэзии и мифологии.
  • Объектно-ориентированные: Они оба — объекты, но некоторым людям некомфортно относиться к животным как к объектам.
  • Высокоуровневые: Я изучал в университете физику, и все, что больше атома водорода считаю «высокоуровневым». Я не шучу. Мы еще не нашли решение уравнению Шредингера для атома гелия, а это все лишь атом водорода с дополнительной болтающейся хреновиной.

В чем отличия?


Не смотря на кучу схожих черт, существует и значительные отличия:


  • У Рубинов есть блоки, то есть рубины можно складывать в блоки. Если сложить питоны в блоки, то они расползутся.
  • У Питонов есть списковое включение (comprehensions). Рубины — неодушевленные предметы, и не способны ничего включать. ("comprehension" — понимание, поэтому в оригинале получается забавнее: «рубины не способны ничего понимать», — прим. пер.)
  • Питон считается более легко читаемым (на питоне можно написать большие слова фломастером), а Рубин считается более элегантным (естественно).

Какие есть важные примеры?


  • Рельсы (Rails): Рубин можно положить на рельсы, и он останется на рельсах, если только не укатится.
  • Панды (Pandas): Питон скорее всего сможет съесть панду, если хорошенько постарается.
  • Шеф (Chef): Может показаться, что речь идет о питоне, однако шеф-повары обычно избегают рептилий. Но иногда принимают рубины в качестве оплаты.
  • Джанго (Django): Гитарист, который любил змей.

Что лучше?


Зависит от ситуации!!!


Ты обещал объективный, окончательный ответ!


Серьезно. Зависит от ситуации. Что вы пытаетесь сделать?


  • Играть в скраббл: Рубин стоит 9 очков, питон стоит 14 очков, и с вариантами множественно числа можно дойти до бинго. Преимущество: Питон
  • Толкание ядра: Не кидайте змей. Преимущество: Рубин
  • Моделирование соленоидного электромагнита когда в наличии есть цилиндр, но веревку и провод забыл дома: Нужно быть достаточно сильным, но в остальном — отличный способ применения питона. Преимущество: Питон
  • Украшения: С одно стороны, рубины — популярные украшения. С другой стороны, озмерелье это кру-то-та. Преимущество: Ничья
  • Организация будки для поцелуев: Люди предпочитают целовать рубины, а не питонов. Возможно, это связано с повышенным риском заболевания сальмонеллёзом. Преимущество: Рубин

Можно заметить, что в примерно в половине случаев можно сделать выбор в пользу рубина, и в другой половине случаев — в пользу питона. Скорее всего, есть еще несколько мелких случаев, которые ломают красивое отношение 1:1, но они — нишевые и эзотерические.


Какой язык программирования использовать в своем стартапе?


PHP.

Поделиться с друзьями
-->

Комментарии (28)


  1. GreyCat
    26.09.2016 15:38
    +9

    Забавно, но эдак 4/5 шуток выглядят как-то странно при переводе.


    1. freetonik
      26.09.2016 15:39
      +1

      Мне кажется, проблема только в comprehensions :)


      1. GreyCat
        26.09.2016 15:48
        +5

        Да много в чем на самом деле проблема. Начиная от заголовка, где приходится делать «Руби(н)», все эти русскоязычные «Рельсы» и «Панды», скраббл, который, внезапно в русском варианте «рубин» = 1+2+3+1+1 = 8 (а не 9), и «питон» = 2+1+1+1+1=6, что несколько переворачивает аргументацию в прямо противоположную. Весьма неказисто, на мой взгляд, переведенный «sneklace». Что такое «skub» и, тем более, мем про «pro-skub vs anti-skub» практически никто не знает в рунете. И т.д. и т.п.


        1. freetonik
          26.09.2016 15:55
          +9

          Но… я считал «озмерелье» своей лучшей работой… :(


          1. Meklon
            27.09.2016 08:25
            +2

            Отлично получилось)


          1. beatcracker
            27.09.2016 08:40
            +2

            Не слушайте его, «озмерелье» прекрасно. Вот остальное, увы, не очень.


        1. KlimovDm
          26.09.2016 15:58

          Запоминается последняя фраза. (с) Штирлиц :)


      1. hdfan2
        26.09.2016 16:41
        +2

        Варианты:
        1) (далеко от первоисточника): «В рубинах включения считаются дефектом». Можно добавить «поэтому в хороших рубинах их нет».
        2) (Похуже) «Рубины неодушевлённые и не понимают, что такое список».


  1. fireSparrow
    26.09.2016 15:55
    +3

    «Толкание ядра: Не кидайте змей.»

    Напомнило советский мультик «Волшебное кольцо»:

    — Вы пошто животину тираните?
    — Да вот, змею воздушную запускаю.

    PS: Нужно было под статьёй сделать опрос — Питон или Руби. Я — за Питона :)


    1. hdfan2
      26.09.2016 16:47
      +10

      И один вариант в опросе: PHP.


  1. q1x
    26.09.2016 15:55
    +14

    Только мне все эти аллегории показались странными ?!


    1. snuk182
      26.09.2016 17:46
      +8

      Я бы больше сказал: это не остроумно и даже не смешно.


      1. zooks
        27.09.2016 08:41

        Да, довольно плоский юморок. Видимо, после PHP в конце все должны падать под стол.


        1. 3aicheg
          28.09.2016 20:11

          Англоязычное сообщество временами исторгает из себя подобный «йумор». Т. к. вполне годный айтишный юмор оно тоже вполне в состоянии производить, возможно, временами суть теряется, не поддаваясь даже не переводу на русский, а кросс-культурной трансляции на русскоязчыную среду, вроде шуток про Канаду или «твою маму». Хотя в данном случае там и в комментариях к англоязычному оригиналу у автора спрашивают, как от него отписаться…


  1. Diaskhan
    26.09.2016 16:48

    Вообще это конечно все хорошо.Но.
    Я Searchil на HH, там такая статистика по поиску

    ruby — 507
    python — 1800
    php — 3208
    C#- 2271
    Java- 3742


    1. TimsTims
      26.09.2016 17:20

      python: 2, ruby: 1
      Спор разрешен! (на какое-то время, пока спрос не вырастет еще больше)


  1. izac
    26.09.2016 16:54
    +2

    После прочтения в голове промелькнула мысль что сегодня пятница, а нет сегодня понедельник.


  1. Nakilon
    27.09.2016 06:00
    +2

    Разница между Python и Ruby всегда была и будет в том. что первый хвалят только если не знакомы ос вторым:

    https://habrahabr.ru/post/85459/#comment_6190771


    1. Symphel
      28.09.2016 12:44

      Лучший tip, trick and hack – забыть этот вполне заменимый язык

      Ну тогда руби лучше вообще не изучать, или он не заменим по-вашему?
      result = reduce(lambda a,b: a*b, numbers)
      vs
      result = numbers.inject :*

      for index, string in enumerate(strings): print index, string,
      vs
      puts strings.each_with_index.to_a.join " "

      len(numbers) == len(set(numbers))
      vs
      !numbers.dup.uniq!


      Конечео, я очень поверхностно знаком с питоном и не знаю руби. Но что делает код на питоне очевидно, а вот то же самое на руби я не понимаю вообще. Выглядит отталкивающе.

      puts? to_a? Названия функций обфускатором генерировали?
      each_with_index? Класс, а как насчет each_with_index_reverse? each_with_index_until_index_is_greater_than_10?
      !numbers.dup.uniq! — что вообще происходит? Префиксное и постфиксное отрицание?
      Скобок не завезли? Авторы языка травмировали психику лиспом?

      Ну вот с этим согласен, в питоне коряво:
      " ".join(reversed(sentence.split()))
      vs
      sentence.split.reverse.join ' '


      1. Kane
        28.09.2016 15:24
        +1

        • putstring
        • to_array
        • Почти угадал [1, 2, 3].reverse.each_with_index и array.each_with_index.select { |number, index| index < 10 }
        • !numbers.dup.uniq! — не знаю откуда ты эту срань скопировал. Но на руби этот код должен выглядеть так numbers.length == numbers.uniq.length


  1. 3aicheg
    27.09.2016 08:41
    +4

    Мне редко бывает жаль потраченного на что-то собственного времени, но сейчас как раз такой случай…


  1. antonksa
    27.09.2016 08:41

    Какой-то просто неистовый бред. Как питонист ничего плохого не могу сказать про руби, но мне не очень нравятся гемы, то как они организованны, и мне сложнее читать код на руби. Код питона вообще один из наиболее легкочитаемых, так как многие элементы семантики осуществлены отступами.

    Наиболее всего удивляет последняя строчка этого пассажа, написанного под воздействием ~~наркотиков~~ чудного озарения. Несомненным преимуществом пхп было то, что язык встраивался прямо в html, как кстати и js, но это, плюс изобретение языка на коленке, плюс нижайший порог вхождения нанесли пхп тяжелую родовую травму, с которой он живет по сей день.

    Лично я во время чтения кода на пхп испытываю чувства как доктор в анекдоте:
    — Хорошо, хорошо, очень хорошо. Что хорошо доктор? Хорошо, что не у меня.

    Если честно, уж ради хоть сколько нибудь стоящей неожиданности автор мог рекомендовать nodejs из-за сомнительного преимущества писать на языке, который еще распространеннее пхп и бек и фронт.

    Но предложить пожевать кактус в 2016? Автор испытывает радость от мучений окружающих?


    1. riko
      27.09.2016 12:38
      -1

      на первый тег «юмор» обратили внимание?


    1. izac
      27.09.2016 15:54

      >Как питонист
      Давайте не начинать этот «из пустого в порожнее» холивар, php прекрасно справляется со своими задачами, низкий порог входа? ну во 1 давайте включим E_NOTICE в php.ini и посмотрим на код совершенно по новому, во 2 на чистом php вакансий не так много, а порог вхождения в ZF2 Symfony уже куда по более высокий.

      Например я не переношу код питона, совершенно, не нравиться он мне и всё тут, но от этого питон в моих глазах хуже не стал, да мне не по вкусу, но язык решает задачи на которые он нацелен, и прекрасно решает и это не может не радовать. Хотя курс по Ruby и RoR в институте прошёл, даже мини проект какой-то написал.

      Как говориться на вкус и цвет фломастеры все разные.


      1. antonksa
        27.09.2016 22:18

        > Как говориться на вкус и цвет фломастеры все разные.
        Ага, только php это не фломастер, а лужа краски на полу, откуда каждый уважающий себя начинающий программист черпает сполна и наносит широкие мазки на холст окружающей нас реальности.


  1. FForth
    27.09.2016 11:41

    Тема языка Эйфории (Euphoria) не раскрыта :)


    1. fireSparrow
      27.09.2016 12:39

      Роскомнадзор же.


  1. dmtrrr
    27.09.2016 13:03
    +5

    Зачем здесь это?