Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 11 лет назад, По-русски

Как известно майские праздники — это праздник труда и трудящихся. Поэтому 2-го мая бездельничать не пришлось (надо же соответствовать названию праздника). Встречайте новые языки на Codeforces:

  • Python 3 (3.3.1)
  • MS C# .NET 4
  • Go (1.1 RC1)

Я даже предпринял попытку настроить Clojure, но выяснилось, что благодаря его динамической натуре и прочим AOT, простейшее решение A+B работает на нем около 1 секунды. Видимо как-то можно компилировать решения прям в байткод сразу, но пока я не разобрался. Может есть специалисты?

А пока раунд далеко я призываю вас попробовать новые языки.

С праздником!

P.S. В качестве дополнительного бонуса — Python 2 был обновлен до 2.7.4.

  • Проголосовать: нравится
  • +216
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

а в полигоне не появился python3?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    Есть определенные трудности с его поддержкой. Например, язык загружаемых файлов определяется по расширению, а для Py2 и Py3, видимо, принято простое .py. Как вариант — если это Py3, то обязательно первой строкой чтобы включали #!/usr/bin/env python3. Ну или заставить расширение py3 ставить (это мне меньше нравится).

    Вторая неприятность, это то, что для сборки пакета задачи будет нужен еще и установленный Py3. А еще нельзя рассчитывать, что он в PATH (опять-таки как минимум под Windows оба интерпретатора называются одинаково python).

    Еще момент — поддержка языка в Полигоне должна быть более обдумана, чем просто добавить на Codeforces. Ведь потом с этими задачами предстоит еще долго жить и работать (возможно, будущим поколениям). Хотя Py3 выглядит правильным кандидатом.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +14 Проголосовать: не нравится

      1) достаточно проверять наличие строки python3 в первой строке входного файла.

      2) над этим сейчас работают разработчики python

      3) безусловно рассчитывать на то, что через 2-3 года у всех будет 3й питон, и редко у кого второй — более рационально.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится
        1. Ну вроде как далеко не все и всегда ставят #...python3. Я посмотрел несколько случайных файлов из архивов — такого нет. Я не знаю Python, но опасаюсь вот чего — пользователь не поставит python3, на стадии проверки синтакса или даже пробных запусков код не будет палиться, а потом выяснится, что код определился как python2 и из-за этого вылезут ошибки. Такое возможно?

        2. Отлично. Кажется, Python3 был зарелизен около 4.5 лет назад. Надеюсь, скоро сделают.

        3. Видимо да. Но семимильными шагами этот процесс не идет. Не прошло и 5 лет, как вышел Django 1.5, наконец поддерживающий Python 3. Опять же существует огромное количество кода на Python 2, которые еще долго будет использоваться. Полагаю, двум версия еще долго придется сосуществовать.

»
11 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Мольбы питонистов наконец были услышаны!

»
11 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

Awesome !! .. .

»
11 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится

Sweet! For a long time I've wanted a good as fall back language when Python gets too slow. Now I might just code everything in Go

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +7 Проголосовать: не нравится

Спасибо за MS C# .NET 4!

Однако, актуальная версия платформы уже 4.5 довольно давно.

  • »
    »
    11 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +2 Проголосовать: не нравится

    Кстати, да. Я не нашел папочку вида v4.5.что-то в C:\Windows\Microsoft.NET\C:\Windows\Microsoft.NET\Framework, но вот что выводит csc:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc.exe
    Microsoft (R) Visual C# Compiler version 4.0.30319.17929
    for Microsoft (R) .NET Framework 4.5
    

    Наверное, все работает под .NET 4.5. Тем более в установленных программах значится .NET 4.5.

»
11 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Sorry, I have a question. Can there new languages solved almost problems in 2 secs and 256 megabytes memory?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +33 Проголосовать: не нравится

    It's not guaranteed. Some of these languages can work up to 10-20 times slower than C++/Pascal and I think (as Mike probably do) that split TLs is a bad idea — you should know your favorite language, with all its pros&cons, including syntax sugar and big execution time.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится -37 Проголосовать: не нравится

      There's work too slow for solving many problems. But someone like Python or C# than other language so I think split TLs is good idea :D

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      My C++ code often takes a second to compile on my machine. I assume compile times on the judge are nearly instant and don't alter the run time.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Judge machines are rather old, and compilation takes some time. However, it is not counted in 'execution time'. Solution compiles once and then the resulting executable is being runned on a test.

        Stupid question: what's your message have to do with mine?

»
11 лет назад, # |
  Проголосовать: нравится -15 Проголосовать: не нравится

О нет! Надо все отбросить и пускать, Pascal, C++, C, C#, Java.

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится +20 Проголосовать: не нравится

УРА! Настоящий, майкрософтовский, .NET! Теперь на C# можно использовать глубокие рекурсии и все доступные в .NET коллекции, не боясь, что в mono этого нету :) Спасибо! :)

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    На всякий случай предупрежу. На данный момент размер стэка дефолтный (1 мб) и менять его нельзя. Надеюсь в будущем это пофиксят. Все остальное вроде работает и плюс добавили поддержку System.Numerics, т.е. теперь можно BigInteger использовать.

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Спасибо! Проверил — действительно, нельзя. Эх. Будем надеяться :)

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Я даже предпринял попытку настроить Clojure, но выяснилось, что благодаря его динамической натуре и прочим AOT, простейшее решение A+B работает на нем около 1 секунды. Видимо как-то можно компилировать решения прям в байткод сразу, но пока я не разобрался. Может есть специалисты?

Насколько я знаю, у него всегда такое ужасное время загрузки (вроде бы, потому что он каждый раз компилирует всю свою стандартную библиотеку).

Может быть, вот эта штуковина может помочь.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Она вроде под Windows не работает. Да и персистентные JVM в условиях контеста не уверен что лучшая идея.

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Does anyone know , how Codeforces manages malware programs/code ! How they have implemented SandBox ? Is the System on Windows or Linux ?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I don't know about sandboxing, but it definitely runs Windows.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится -20 Проголосовать: не нравится

    It cannot self-replicate and access the internet and the file system, thats enough to make sure server is OK.

»
11 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

В clojure макросы очень и очень мощные. В compile time можно делать значительный препроцессинг. С этим как-то планируется бороться?

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    Есть же какой-то лимит на время компиляции (30 секунд?). Успеет ли за это время Clojure сделать то, что скомпилированный код на C++ делает за две секунды?

»
11 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Стоило было устроиться шарпистом и разочароваться, что на кф нету майкрософтовского компилятора, как на тебе:)

»
11 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Great news! Thanks!

»
11 лет назад, # |
  Проголосовать: нравится -9 Проголосовать: не нравится

GJ!

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

в Go функции ввода-вывода из пакета fmt работают очень медленно, даже с bufio. Никогда ими не пользуйтесь, если не хотите получить TL

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    И что тогда использовать? Кстати, какую литературу можешь посоветовать по Go?

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      если во входных данных нет строк длиннее 65536 символов, то лучше всего bufio.Scanner.

      Никакая особая литература не нужна — язык очень простой, проще чем Си. Для начального знакомства есть http://tour.golang.org, документация по стандартной библиотеке — здесь http://golang.org/pkg/ (из нее на контестах могут пригодиться пакеты bufio, suffixarray, math, os для файлового ввода-вывода, sort и strconv)

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Is it guaranteed that C# Array.Sort is implemented as Introsort or is it still Quicksort with worst case O(n2)?

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Python 3.4.2 is available now :) please put on your system as soon as possible

»
9 лет назад, # |
  Проголосовать: нравится -14 Проголосовать: не нравится

i write simple code for an easy problem using C# but i found"Runtime error"? please any one help me??

»
8 лет назад, # |
  Проголосовать: нравится +27 Проголосовать: не нравится

Даёшь Kotlin! )