Привет, Хабр!

В прошлом году мы запустили игру для программистов CodeBattle. Напомню, идея игры очень простая: вам и сопернику дается задача, вы решаете её на выбранном вами языке. Вы видите код соперника в реальном времени, результаты запуска тестов и можете общаться с ним и зрителями в чате. Кто первый решит задачу (удовлетворит тестам) — тот победил.

С тех пор были сыграны тысячи игр, и мы собрали интересную статистику. По состоянию на 31 декабря 2015 года, какие страны и какие языки программирования чаще побеждали?

Иными словами, мы наконец можем ответить на вопрос «какой язык круче?» :) Шучу-шучу, давайте не холиварить. Вот статистика за три последних месяца прошлого года:





Сыграем?

Инфографика: Наталия Басс

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


  1. Bringoff
    26.01.2016 12:48
    +3

    Насколько я помню, изначально java была недоступна.


    1. freetonik
      26.01.2016 12:54
      +2

      Да, и Erlang.
      Но для показателя процента побед это не важно.


  1. Smi1e
    26.01.2016 13:13
    +11

    Инфографика хороша, но флаг Украины на ней перевернут относительно остальных по какой-то причине.


    1. dmirogin
      26.01.2016 14:03
      +3

      И Python почему-то «pyton».


      1. maxru
        26.01.2016 14:14
        +3

        Чтобы с Монти Пайтоном не путали


        1. bolk
          27.01.2016 07:39
          +2

          Какой мастерский саркзам! :)


      1. freetonik
        26.01.2016 14:23
        +3

        Поправили обе детали, спасибо.


        1. LeoCcoder
          26.01.2016 18:52

          Хром не пускает:

          Your connection is not private

          Attackers might be trying to steal your information from battle.hexlet.io (for example, passwords, messages, or credit cards). NET::ERR_CERT_COMMON_NAME_INVALID


  1. impwx
    26.01.2016 13:55
    +5

    Есть планы добавить в список поддерживаемых языков C#?


    1. toxicmt
      26.01.2016 14:03
      +5

      Есть


      1. meln1k
        26.01.2016 14:46
        +5

        а Scala?


      1. Yuuri
        26.01.2016 20:18
        +3

        И Haskell, пожааалуйста!


      1. monah_tuk
        27.01.2016 06:49

        C++14 + Asio (можно как и Boost так и просто Standalone Asio) :-)


        1. monah_tuk
          27.01.2016 08:51

          Хотя, я смотрю там сетевого взаимодействия нет. чисто алгоритмы. Тогда просто C++14.


  1. domix32
    26.01.2016 14:53

    А что значат проценты? Процент побед от той цифры внизу? Что-то вроде «3377 игры из них 2128 побед»?


    1. freetonik
      26.01.2016 16:59

      Это процент побед. Например, у Ruby 3651 игр, среди них в 51% случаев Ruby выигрывал.
      Тут не учитываются игры, где участвовало два одинаковых языка (например, Ruby vs Ruby)


      1. domix32
        26.01.2016 23:18

        Стоило уточнить что я про второй график по странам


  1. Antelle
    26.01.2016 14:59
    +6

    Европа — не страна.


    1. eldarmusin
      26.01.2016 15:33
      +9

      а %language% — не язык


  1. murr
    26.01.2016 15:43
    +2

    Добрый день. По вашей ссылке хром выдает:

    Your connection is not private

    Attackers might be trying to steal your information from battle.hexlet.io (for example, passwords, messages, or credit cards). NET::ERR_CERT_COMMON_NAME_INVALID


    1. Plugin73
      26.01.2016 16:55
      +2

      Мы используем новейший let's encrypt — в старых операционках (вроде windows xp) он не поддерживается, из-за строгих правил именования сертификата (как вам и написало). В поддержке пишут, что можно попробовать последнюю версию Firefox — он должен использовать свои сертификаты, не обращая внимания на операционку. Либо поставить современную ОС :)


      1. murr
        26.01.2016 18:08

        У меня OS X El Capitan с последними апдейтами, выражаю надежду, что это достаточно современная ОС :) Свежий хром и сафари ругаются на сертификат.


        1. Semmaz
          26.01.2016 19:54

          Добавлю к списку Firefox под El Capitan + Chrome и Edge под Win 10


      1. alekciy
        26.01.2016 21:03

        Проблема точно имеет место быть. Firefox 43.0.4 на Ununtu 12.04LTS тоже ругается.

        Код ошибки: ssl_error_bad_cert_domain:

        battle.hexlet.io использует недействительный сертификат безопасности.

        Сертификат действителен только для следующих имён:
        www.github.com, *.github.com, github.com, *.github.io, github.io, *.githubusercontent.com, githubusercontent.com

        (Код ошибки: ssl_error_bad_cert_domain)



        1. Plugin73
          26.01.2016 21:06

          Всем спасибо за комментарии, разбираемся.


        1. Plugin73
          26.01.2016 21:12

          Хах, мы разобрались :)
          В статье указана не верная ссылка, правильная без https — battle.hexlet.io
          В статье исправим, всем спасибо!


  1. denis-isaev
    26.01.2016 16:40

    Т.е. если будет 100 игр «perl vs perl» и 0 игр «perl vs not-perl», то процент побед будет 50% и perl автоматом на втором месте? :)
    Или, рассчитывая процент, вы исключали игры между однинаковыми языками? Если нет, то стоит :)
    Аналогично со странами.
    И вообще, хочется статистики вида язык1 vs язык2 для всех комбинаций языков :)


    1. freetonik
      26.01.2016 17:00

      В статистике не учитываются игры, где участвовало два одинаковых языка (например, Ruby vs Ruby). Со странами так же.
      Язык1 vs язык2 как-нибудь попозже тоже опубликуем, отличная идея, спасибо!


  1. elimoon
    26.01.2016 16:52
    +2

    Скажите, как добавить или помочь добавить тот или иной язык? (Мои пожелания: Elixir) Плюс в том, что можно уже использовать erlang тесты для проверки эликсир программ(только добавить elixir и компилировать по-другому). Готов оказать любую помощь бесплатно, при необходимости.


    1. toxicmt
      26.01.2016 16:54

      Заходите к нам в slack-ru.hexlet.io в канал #codebattle. Там мы как раз обсуждаем такие моменты.


      1. elimoon
        27.01.2016 01:19

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


  1. Bringoff
    26.01.2016 18:13
    +1

    Еще очень странно, что в метод в java всегда передается список объектов типа Object, и класс возвращает Object. Было бы неплохо это прояснять, так как только что была задача вернуть вектор векторов, и немного непонятно, что надо вернуть (ну, не Vector же джавовский, в самом деле, им никто не пользуется уже).


    1. toxicmt
      26.01.2016 18:48

      Просто код универсальный для всех задач. Динамические языки позволяют это через `apply`. Изначально в батле только они были. А для java в коде специальный комментарий есть, который это объясняет.


      1. Bringoff
        26.01.2016 21:21

        Тогда java в изначально проиграшной позиции. Вот задача была:

        Скрытый текст
        Calculate the sum of all natural numbers smaller than n (first argument) which are divisible by a or/and b (second and third arguments) without remainder.

        Example: 23 == solution(10, 3, 5)


  1. Bringoff
    26.01.2016 20:54

    И еще: ассерты выкладывать в открытый доступ — не комильфо. Теоретически кто-то может либо все перерешать, либо можно вообще написать скрипт, автоматически генерирующий такое себе решение, возвращающее требующиеся результаты. В результате выйдет бот, накручивающий рейтинг. В принципе, человек, написавший такого бота, будет заслуживать первого места, но все же :)


    1. Plugin73
      26.01.2016 21:14

      Такие боты встречались, легко отслеживаются и не приносят никакого профита :)


  1. withkittens
    26.01.2016 22:38
    +1

    Почему вы требуете регистрацию, чтобы наблюдать за играми?


  1. Andriyevski
    27.01.2016 01:11
    -5

    Если прировнять победы:
    Украина в 1246 побед при численности населения ( 45 миллионов человек);
    России в 3877 побед при численности населения (146 миллионов человек);
    Разница численности человек между странами 3.2(444) раза, легко подсчитать что при такой же численности как и России в Украины было бы 4042 побед.
    Это просто статистика и простой анализ, не берите в голову!


    1. stas404
      27.01.2016 03:49
      +4

      По поводу «простых анализов», например, такой вариант:
      Пошел муж простые анализы сдавать — положил в спичечный коробок.
      День проходит, второй, мужа все нет и нет.
      Жена обзвонила все больницы — нашла в палате всего в гипсе.
      — Что случилось?
      — Помню только, как прикурить попросили…


      1. Andriyevski
        27.01.2016 21:47
        -3

        Интересно получается, я написал простой анализ темы и меня понизили, stas404 написал какой то бредовый анегдот и дали 3 лайка…
        Каким боком это к теме относится? Адекватностью и вминяемостью ваш ответ не пахнет — это бред!
        Я мог бы так же написать тупенький анегдот, но думаю дальше продолжать разговор смысла нет.


        1. Stepanow
          31.01.2016 22:00

          Если Вы не заметили, то победы даны не в абсолютном значении, а в процентном. То есть размер страны и количество программистов от неё никакого значения не имеет. Значение имеет только качество.
          А те числа, которые Вы приняли за количество побед — это количество игр. Анекдот про анализы должен был заставить перечитать инфографику и понять что с анализами поторопились.


  1. GreenPeace
    27.01.2016 03:21

    Я вот тут посмотрел на ваши данные:
    3651+9576+684+9325+6105+145+1720 = 31206
    0.52*3651+0.5*9576+0.48*684+0.39*9325+0.36*6105+0.21*145+0.14*1720=
    13120.64
    31206/2 = 15503 > 13120.64

    Или у вас бывают ничьи или что-то не сходиться.


    1. Bringoff
      27.01.2016 10:36

      Ну, видимо, бывают. Оба учасника посмотрели на задачу, плюнули и ушли.


  1. monah_tuk
    27.01.2016 06:54
    +3

    Смотрю текущий батл, там PHP вообще ничего не вводит, может думает, а может просто забил. Такие победы засчитываются?


  1. funnybanana
    27.01.2016 07:30
    +1

    Зашел поиграть… только вник в суть задания, а соперник уже код настрочил…
    Играл несколько раз и тот же результат… уже разочаровался в себе, а как оказалось — мало того что задания там повторяются, так готовые решения давно опубликованы на git…
    Но задумка интересная…


    1. Stepanow
      27.01.2016 09:36
      +2

      Если так, то это фигня а не баттл…


    1. Bringoff
      27.01.2016 10:38
      +1

      мало того что задания там повторяются, так готовые решения давно опубликованы на git…

      Задания — да, бывает, повторяются, но готовых решений на гитхабе я не находил.


  1. OyraOyra
    27.01.2016 08:43

    Perl будет?