raic-2020 icon indicating copy to clipboard operation
raic-2020 copied to clipboard

В будущих соревнованиях использовать для RPC более оптимизированную для совокупности языков технологию

Open mr2dark opened this issue 4 years ago • 3 comments

Текущая технология для некоторых языков генерирует заметно неоптимальные реализации (см. #86, #90) или же языки не поддерживаются (#72, #73). Я предлагаю использовать protobuf/gRPC (используется, например, в StarCraft 2). Для него есть много официальных реализаций для разных языков и очень много сторонних open-source реализаций, в том числе для Rust (например, tonic). Для него есть оптимизированная реализация, например, для Python. Но есть и другие, такие как Apache Thrift. Помимо прочего, это также должно снизить нагрузку на организаторов по сопровождению разных языков.

mr2dark avatar Dec 25 '20 12:12 mr2dark

Вызывает большие сомнения целесообразность прикручивания доп библиотек. Думаю, чтоб протокол должен быть простой, что без библиотек легко можно было написать клиента. И дальше одно из двух, либо код кривой и поэтому тормозной, тогда его можно улучшить, пусть "профессионалы" покажут как правильно и в следующих соревнованиях будут использовать улучшенный код. Либо язык ни на что не пригоден, тогда либо #119, либо смириться с положением вещей и не жаловаться, ведь вы сами выбрали такой язык.

ud1 avatar Dec 26 '20 15:12 ud1

Самый простой вариант реализации протокола - на основе стандартных текстовых потоков stdin/stdout. Но если будет взят вариант на основе сетевого взаимодействия, то тут лучше использовать распространённые библиотеки, где вопросы оптимизации и кодогенерации для клиентов на разных языках уже решены и отработаны на большом количестве проектов (это как раз совет от "профессионала". как правильнее). Всё-таки конкурентоспособность подобных мероприятий ИМХО больше в качестве и богатстве возможностей Local Runner'а и сервера, в плане визуализации и отладки. Пусть лучше ресурсы организаторов/разработчиков будут потрачены туда.

Про поддержку языков - это вопрос целей соревнования и акцентов в нём. Я не знаю ни на что не пригодных языков. Есть разные парадигмы и приоритеты в оптимизации в разных языках. Плюс возможности, которыми мало кто умеет пользоваться, типа numba или PyPy (если говорить о Python).

mr2dark avatar Dec 26 '20 23:12 mr2dark

Было уже в миниках stdin/stdout, крайне неудобно это отлаживать, ведь надо потоки перенаправить, из коробки мало какие иде это умеют. Плюс было, что по ошибки или какая-то либа тоже выводит в stdout и потом из-за этого номера строк разъезжаются.

ud1 avatar Dec 27 '20 17:12 ud1