Protobuf. Нам лгали про тебя

Многие начиная изучать protobuf считают, что это это универсальный протокол между всеми языками/устройствами. Сериализовал на одном языке, потом десериализовал на другом и получил те же данные. А что, если я вам скажу, что это не так? Что, если там есть типы, которые не поддерживают полную совместимость? Возьмём в пример 2 языка: java и c. В с я могу запихнуть любое число в переменную типа enum. Могу даже десериализовать его без потери значения. Java это не умеет. Чтобы поддержать совместимость между двумя приложениями в рамках прото, при добавлении нового enum, стоит обновить прото с обоих сторон. C++ Vs java 1:0?) Возникает вопрос. Зачем тогда вообще добавили этот тип, если такие проблемы могут быть? Остаётся только запомнить, что Int - наш лучший друг =) #protobuf #cpp #java #grpc