Login
Newsletter
Werbung

Thema: Google gibt »Protocol Buffers« frei

24 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
mehr N+1
0
Von Joerg am Mi, 9. Juli 2008 um 12:11 #
Um Corbet zu zitieren (http://lwn.net/Articles/289067/):
In other words, it's another XDR/RPC/pickle implementation, but tuned to Google's performance needs.
[
| Versenden | Drucken ]
  • 0
    Von LH am Mi, 9. Juli 2008 um 12:18 #
    Nur ist der Performance Faktor sehr wichtig.
    [
    | Versenden | Drucken ]
0
Von gttt am Mi, 9. Juli 2008 um 13:06 #
Ich habe auf die Schnelle nichts zum Quoting gefunden. Einfach mit Backslashes? bspw.

person {
name: "John \"Hunter\" Doe"
email: "jdoe@example.com"
}

Ist zwar im Moment noch nicht wichtig, aber so etwas finde ich immer interessant bei solchen Formaten.

[
| Versenden | Drucken ]
  • 0
    Von Sprotznock am Mi, 9. Juli 2008 um 15:38 #
    Immer *alles* lesen:

    --snip--

    # Textual representation of a protocol buffer.
    # This is *not* the binary format used on the wire.
    person {
    name: "John Doe"
    email: "jdoe@example.com"
    }

    --snip--

    Hier nochmal der wichtige Teil: "This is *not* the binary format used on the wire". Diese Schreibweise ist nur symbolisch zur Erklärung gedacht.

    Sprich: es geht ja gerade darum, dass dem Entwickler die interne Repräsentation herzlich egal sein kann und er nur über die generierte API auf die Datenstrukturen zugreift.

    Google sagt ja auch, dass dies gegenüber XML ein Nachteil ist: protobuf hat keine "human readable" und selbstbeschreibende Notation.

    [
    | Versenden | Drucken ]
    • 0
      Von gttt am Mi, 9. Juli 2008 um 15:44 #
      Ah ok, Danke. Ich hatte das mit der Binärform zwar gelesen, mir war aber nicht klar, dass man sie nur über eine API zusammenstöpseln kann. Ich hatte gedacht, man könne zwischen Text- und Binärform hin und her konvertieren.
      [
      | Versenden | Drucken ]
      • 0
        Von Erik am Mi, 9. Juli 2008 um 15:49 #
        Kannst Du sicher, indem Du es (z.B. für C++) in einen stringstream synchronisieren lässt und Dir hinterher den Buffer ansiehst, bzw. den umgekehrten Weg zurück. Allerdings soll protobuf dem Entwickler ja gerade die Kodierung in jeglicher Form abnehmen und dabei so effizient wie möglich übertragen.

        Vielleicht kann man ja (zu Debugging-Zwecken?) den Encoder auswechseln und durch eine XML generierende Engine ersetzen, wer weiß.


        lg
        Erik

        [
        | Versenden | Drucken ]
0
Von Christian am Mi, 9. Juli 2008 um 14:15 #
... ist doch eine feine Sache!
[
| Versenden | Drucken ]
  • 0
    Von LH am Mi, 9. Juli 2008 um 14:27 #
    Ja, aber wesentlich langsamer in der Verarbeitung als diese Lösung hier, zumal die Googlelösung nicht nur das Datenformat festlegt, sondern auch den genauen Inhalt festlegt.

    Beispiel für eine der Protodateien auf denen das System bassiert:

    message Person {
    required int32 id = 1;
    required string name = 2;
    optional string email = 3;
    }

    Mehr infos gibts hier:
    http://code.google.com/p/protobuf/

    [
    | Versenden | Drucken ]
    • 0
      Von Christian am Mi, 9. Juli 2008 um 16:04 #
      Gibts da Benchmarks?
      [
      | Versenden | Drucken ]
      • 0
        Von LH am Mi, 9. Juli 2008 um 17:36 #
        Ich hatte welche gesehen mir aber den Link nicht gemerkt.

        Aber es dürfte wenig überraschen das ein optimiertes Binärformat schneller zu parsen ist als ein relativ grobes Textformat ;)

        [
        | Versenden | Drucken ]
0
Von fuffy am Mi, 9. Juli 2008 um 14:59 #
Die C++-Lösung hätte man mit Operatorüberladung viel eleganter gestalten können.
[
| Versenden | Drucken ]
  • 0
    Von Erik am Mi, 9. Juli 2008 um 15:34 #
    Tja, warum man das wohl nicht gemacht hat, ist mir auch ein Rätsel.


    lg
    Erik

    [
    | Versenden | Drucken ]
    0
    Von Ben am Mi, 9. Juli 2008 um 17:00 #
    Der Unterschied: Einer sagt "hätte man besser machen können" und einer hat es gemacht. Rate mal, was mir leiber ist. (-:
    [
    | Versenden | Drucken ]
    0
    Von def am Mi, 9. Juli 2008 um 19:15 #
    Wie kann man etwas in einer Programmiersprache "schön" lösen, wenn an der Sprache selbst überhaupt nichts "schön" ist? Operatorüberladung mag zwar in manchen Fällen auf den ersten Blick elegant erscheinen, aber sie stiftet häufig Verwirrung und bringt fehleranfälligen Code. IMHO eine gute Designentscheidung, komplett darauf zu verzichten (wie es auch Java macht).
    [
    | Versenden | Drucken ]
    • 0
      Von Buckel am Mi, 9. Juli 2008 um 19:36 #
      Ob eine Sprache "schön" ist, interessiert mich herzlich wenig. Effizienz in Entwicklung und Laufzeit hinsichtlich des jeweiligen Projektes reicht aus. :-)
      [
      | Versenden | Drucken ]
      • 0
        Von def am Mi, 9. Juli 2008 um 20:03 #
        >Effizienz in Entwicklung und Laufzeit hinsichtlich des jeweiligen Projektes reicht aus.

        Ja, da stimme ich dir zu. :) Aber wo hilft dann eine Sprache, die so vor (fehleranfälligen und inkonsistent in den Compilern implementierten) Features strotzt, wie C++? Man braucht schon sehr viel Disziplin, um damit ordentlich und portabel zu programmieren (und im Team wird's noch schwieriger).

        [
        | Versenden | Drucken ]
      0
      Von Erik am Mi, 9. Juli 2008 um 20:22 #
      Operatorenüberladung bringt keinen fehleranfälligen Code und stiftet auch keine Verwirrung. Gerade weil es eine einheitliche Schnittstelle zum Serialisieren ist, operator<>() zu überladen, ist es eine flexible und vielfach unterstützte Methode, um verschiedenste Klassen zur I/O miteinander zu kombinieren.

      Und was die generelle Operatorenüberladung angeht, so kann mir niemand erzählen, dass es ein Vorteil ist, die einfache mathematische Notation über Methodenaufrufe abzubilden.

      num = 3 + 5;

      sieht doch einfach nur elegant und einleuchtend aus und ist dank Operatorenüberladung auch noch völlig unabhängig davon, ob 'num' nun int, long, ein arbitrary precision Datentyp, eine eigene Klasse oder sonst etwas ist.


      lg
      Erik

      [
      | Versenden | Drucken ]
      • 0
        Von Erik am Mi, 9. Juli 2008 um 20:23 #
        >()
        Ähm, ich meinte eigentlich operator<<() und operator>>().


        lg
        Erik

        [
        | Versenden | Drucken ]
        0
        Von def am Do, 10. Juli 2008 um 14:40 #
        >sieht doch einfach nur elegant und einleuchtend aus

        Es sieht so aus, ja. Aber was verbirgt sich dahinter? Was macht dieser Operator? Das kannst du in C++ nie mit Sicherheit sagen. Es ist eben ein Feature, was anfangs toll und elegant wirkt, aber doch interhältig sein kann. (Davon hat C++ noch viel mehr ;))

        [
        | Versenden | Drucken ]
        • 0
          Von Erik am Do, 10. Juli 2008 um 17:06 #
          ?! Natürlich kann ich genau sagen, was dieser Operator macht.

          std::ostream &operator<<(std::ostream &o, MyClass &ob) lässt nun wirklich keine Fragen offen, was da wohin gestreamt wird.


          lg
          Erik

          [
          | Versenden | Drucken ]
0
Von Doodle am Mi, 9. Juli 2008 um 20:24 #
Also ich weis nicht was sich Google mit so Pille Plalle Scherze groß wichtig macht, was ist an dieser Serialisierung jetzt so anders als an anderen Serialisierungen? Ich seh da auch nicht groß den Vorteil gegenüber IDL, auch das hier ist viel komplizierter als z.B. Serialisierung zwischen .NET Applikationen.

Protocol Buffers, Hauptsache nen coolen Namen.

[
| Versenden | Drucken ]
  • 0
    Von Doodle-IT-Vollprofi am Do, 10. Juli 2008 um 11:49 #
    Hauptsache keine Ahnung..
    [
    | Versenden | Drucken ]
    • 0
      Von Doodle am Do, 10. Juli 2008 um 20:27 #
      Offensichtlich aber mehr als du, da du außer nem coolen Spruch nicht zu bieten hast.
      [
      | Versenden | Drucken ]
      • 0
        Von Mein Name am Fr, 11. Juli 2008 um 12:48 #
        Weder ist der Name von Google "cool" (Protocol Buffer, selbsterklärend, einfach, was ist dadran cool?)
        "cool" wäre es heißen würde Supermegaprotocol
        protoclprotocoldasselbstherrnDoodlegefälltweilersichdabei
        einenrunterholenkannundeinenganztollennamenund
        besonderscoolennamenhatabersonstnichtskannauserbuffern
        Und der Spruch von ihm war auch nicht "cool", du hast wirklich keine Ahnung
        [
        | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung