Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
mr2dark opened this issue Dec 25, 2020 · 3 comments

Comments

@mr2dark
Copy link
Contributor

mr2dark commented Dec 25, 2020

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

@ud1
Copy link

ud1 commented Dec 26, 2020

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

@mr2dark
Copy link
Contributor Author

mr2dark commented Dec 26, 2020

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

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

@ud1
Copy link

ud1 commented Dec 27, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants