MailRuChamps / raic-2020

GNU General Public License v3.0
26 stars 27 forks source link

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

Open mr2dark opened 3 years ago

mr2dark commented 3 years ago

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

ud1 commented 3 years ago

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

mr2dark commented 3 years ago

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

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

ud1 commented 3 years ago

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