» »

Google poganjata dve milijardi vrstic kode

Google poganjata dve milijardi vrstic kode

Wired News - Google je ogromno podjetje z več kot 50.000 zaposlenimi in več kot ducatom najrazličnejših izdelkov, ki poganjajo vse od iskalnika na spletu in zemljevidov do več kot milijarde pametnih telefonov. Rachel Potvin je minuli teden na konferenčnem predavanju razkrila več podrobnosti o sistemu, ki skrbi za vso kodo v ozadju. Googlove izdelke namreč poganjata več kot dve milijardi vrstic kode, do katere imajo dostop vsi inženirji, ki jo tudi vsakodnevno posodabljajo.

Tu govorimo o izdelkih, kot so Google Search, Google Maps, Google Docs, Google+, Google Calendar, Gmail, YouTube, ki si delijo dobršen del kode. Google ima zato postavljen interni repozitorij, ki je podoben GitHub in do katerega ima dostop 25.000 inženirjev. To pomeni, da lahko kdorkoli uporablja že napisano kodo in pri tolikšni množici ljudi in vrstic kode je zelo verjetno, da je konkretni problem že nekdo nekje rešil. Vse skupaj nadzoruje lastni sistem Piper, ki skrbi za upravljanje z verzijami, saj je treba preprečiti, da bi drug drugemu rušili združljivost ali funkcionalnost. Pozitivna stran zbrane kode na enem mestu je tudi enostavno odpravljanje hroščev, saj se vsaka sprememba (commit) - in teh je 45.000 na teden - odrazi v vseh izdelkih.

Mimogrede, Linuxovo jedro ima okrog 15 milijonov vrstic kode, Windows pa 50 milijonov. Facebook poganja okrog 20 milijonov vrstic kode. Google svojo kodo drži v desetih podatkovnih centrih in obsega že 85 TB. Vseeno nekaj omejitev obstaja. Dostop do algoritma PageRank je strogo omejen, saj ta predstavlja srčiko razvrščanja strani pri spletnem iskanju. Prav tako koda za Android in Chrome nista del repozitorija, ker poganjata povsem druge stvari.

30 komentarjev

Nagi Bator ::

Hmmm? Dosti babic kilavo dete ?!

#000000 ::

hah dobr si zadel poanto Nagi :)

boogie_xlr ::

Še zmeraj pa njihov admin console ne podpira UTF-8.

StarMafijec ::

In kaj je "vrstica kode"? Kako je to definirano?

4 vrstice kode:
for(int i=1;i>0;i++)
{
printf("Hello world!");
}


1 vrstica kode:
for(int i=1;i>0;i++){printf("Hello world!");}

Zgodovina sprememb…

7982884e ::

končna številka v "line numbers" stolpcu posamezne datoteke

WarpedGone ::

In kaj je "vrstica kode"? Kako je to definirano?

Še en MIPS...
Meaningless Indication of Program Size ...
Zbogom in hvala za vse ribe

Glugy ::

Torej je Google absolutni majster kode, najbližji tekmec je pa daleč zadaj.

čuhalev ::

Povsem nepomemben podatek, ki ne pove ničesar.

Lahko imam zanko in znotraj nje ukaz, lahko pa imam veliko zaporednih ponovitev istega ukaza v novi vrstici.

Karlos ::

StarMafijec je izjavil:

In kaj je "vrstica kode"? Kako je to definirano?

4 vrstice kode:
for(int i=1;i>0;i++)
{
printf("Hello world!");
}


1 vrstica kode:
for(int i=1;i>0;i++){printf("Hello world!");}


Za clang formatiranje si že slišal?
Formatiral bi nekaj takega:
for (int i = 1; i > 0; i++) {
  printf("Hello world!");
}
Sai Baba: "Dam vam to, kar hočete, da boste hoteli to, kar vam želim dati."

SimplyMiha ::

Hm, možno da seštevajo vsako revizijo izvorne kode v SVN-ju...

smoke ::

Karlos, za clang-format lahko s prve roke povem, da se uporablja v Chromium projektu. Nevem sicer kak je v drugih projektih, ampak načeloma je koda zelo vertikalno zgoščena in na 80 znakov omejena horizontalno.

Vkolikor njihovi drugi projekti uporabljajo podoben stil formatiranja, bi reko da je število vrstic kr okej metrika.

Zgodovina sprememb…

  • spremenil: smoke ()

Mordecai ::

A zato android nuca 8+ jeder, zdaj mi je vse jasno. :))

AndrejO ::

Karlos je izjavil:

StarMafijec je izjavil:

In kaj je "vrstica kode"? Kako je to definirano?

4 vrstice kode:
for(int i=1;i>0;i++)
{
printf("Hello world!");
}


1 vrstica kode:
for(int i=1;i>0;i++){printf("Hello world!");}


Za clang formatiranje si že slišal?
Formatiral bi nekaj takega:

for (int i = 1; i > 0; i++) {
printf("Hello world!");
}

Ali bi lahko nehali dajati "integer overflow" primere zank?

In ja, primerjati dve zbirki kode po številu vrstic, ne da bi obe zbirki uporabljali enaka pravila za oblikovanje, je seveda nesmiselno.

Zgodovina sprememb…

  • spremenil: AndrejO ()

garamond ::

Tudi če upoštevamo, da se koda ne more direktno primerjati zaradi drugačnih standardov zapisovanja, je razlika še vedno dramatična. Google naj bi imel 100× več kode kot FB. Tudi če upoštevamo, da ima recimo 10× toliko velikih projektov kot je FB, bi bila razlika še vedno 10× več kode.

Kar je Google dal pod Open Source je "samo" 20 miljonov vrstic. ("Google has released over 20 million lines of code and over 900 projects.") Kaj dela preostalih 1980 miljonov vrstic? Od kje taka razlika v primerjavi z drugimi?
A parody of extremism is impossible to differentiate from sincere extremism.

Netrunner ::

bisveno je to da se koda konča z:
return $globalDomination = true;

Tr0n ::

Piper .. Pied Piper? :)

Afo ::

dve milijardi vrstic kode

in so jo tolko zj***, da uporabniki za isti iskalni ključ ne dobijo več istih rezultatov... genialno. Odjava ne pomaga, brisanje piškotov ni pomembno, pač nikakor ne moreš "resetirat" svojih nastavitev - google pač preprosto "ve" kaj hočeš, tudi če hočeš kaj drugega. Temu rečejo "personalizirani rezultati". Mene bolj spominja na krasni novi svet.
Se kdo spomne Don't be evil. No google je to pozabil.
Bolje biti mlad in neumen, kot samo neumen!

Jst ::

Temu se reče information bubble.
Islam is not about "I'm right, you're wrong," but "I'm right, you're dead!"
-Wole Soyinka, Literature Nobelist
|-|-|-|-|Proton decay is a tax on existence.|-|-|-|-|

semrola ::

jQuery je spisan v eni vrstici :P

Zgodovina sprememb…

  • spremenilo: semrola ()

FrEaKmAn ::

Kolikor vem, "vsi" njihovi projekti sledijo internem dogovoru oz. stilu - https://github.com/google/styleguide

jah lejte, če so plačani po vrsticah kode, potem je to velik biznis :)

Zgodovina sprememb…

  • spremenil: FrEaKmAn ()

Looooooka ::

Glugy je izjavil:

Torej je Google absolutni majster kode, najbližji tekmec je pa daleč zadaj.

Ja, ker če je tvoja koda dolga si zihr car...

Ahim ::

AndrejO je izjavil:

Ali bi lahko nehali dajati "integer overflow" primere zank?


"Integer overflow" ?

Kolikokrat pa pravzaprav pricakujes, da se bo zanka, ki ima za zacetno stanje i = 1, za koncni pogoj pa i > 0, izvedla ?

MrStein ::

odvisno od velikosti tipa "int"
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

SubjectX ::

Odvisno tudi ali je int signed ali unsigned..

Looooooka ::

Za omenjen sample se za izbrani programski jezik verjetno točno ve, kaj je default definicija integerja...signed or unsigned.

Randomness ::

Kolikokrat pa pravzaprav pricakujes, da se bo zanka, ki ima za zacetno stanje i = 1, za koncni pogoj pa i > 0, izvedla ?
Pod pogojem, da imamo opravka z 32-bitnim intom, natanko 0x7fffffff-krat.

AndrejO ::

Hvala vsem za odgovore na vprašanje o "integer overflow". :D

Podvprašanje: na katerih arhitekturah se bo po prestopu izvajanje nadaljevalo od zanke naprej, na katerih pa ne in pod katerimi pogoji da ali ne.

Ahim ::

Randomness je izjavil:

Kolikokrat pa pravzaprav pricakujes, da se bo zanka, ki ima za zacetno stanje i = 1, za koncni pogoj pa i > 0, izvedla ?
Pod pogojem, da imamo opravka z 32-bitnim intom, natanko 0x7fffffff-krat.


Da.

@Andrej: In zakaj bi bila tezava v takem primeru? Slo je zgolj za ilustrativno vprasanje glede smernic formatiranja kode (na kar je nekdo ze kar solidno odgovoril), in ne za to kaj zadeva dejansko pocne. Bi bilo kaj drugace, ce primer ne bi vseboval "integer overflow"?

AndrejO ::

Ahim je izjavil:

Randomness je izjavil:

Kolikokrat pa pravzaprav pricakujes, da se bo zanka, ki ima za zacetno stanje i = 1, za koncni pogoj pa i > 0, izvedla ?
Pod pogojem, da imamo opravka z 32-bitnim intom, natanko 0x7fffffff-krat.


Da.

@Andrej: In zakaj bi bila tezava v takem primeru? Slo je zgolj za ilustrativno vprasanje glede smernic formatiranja kode (na kar je nekdo ze kar solidno odgovoril), in ne za to kaj zadeva dejansko pocne. Bi bilo kaj drugace, ce primer ne bi vseboval "integer overflow"?

Da.

Če bi bila podan primer, ki ne predstavlja vratolomno neumnost, potem se ne bi imel ob kaj za obregniti.

Randomness ::

Podvprašanje: na katerih arhitekturah se bo po prestopu izvajanje nadaljevalo od zanke naprej, na katerih pa ne in pod katerimi pogoji da ali ne.
Ne vem, koliko je to odvisno od arhitekture. Je pa overflow predznačenih intov po C standardu "undefined behavior", kar pomeni, da je rezultat odvisen (tudi) od prevajalnika. Npr. gcc (-O2) zanko "poenostavi" v neskončno zanko, če mu tega ne preprečimo s kakšnimi flagi (npr. -fwrapv ali -fno-strict-overflow).


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Vse najboljše, Linux!

Oddelek: Novice / Operacijski sistemi
4919112 (15931) Kenpachi
»

Kdo piše Linuxovo jedro (strani: 1 2 )

Oddelek: Novice / Operacijski sistemi
7331698 (25347) AndrejO
»

Trik za nadaljnje posodobitve za Windows XP (strani: 1 2 3 )

Oddelek: Novice / Operacijski sistemi
11232345 (27773) MrStein
»

Oracle izgubil spor z Googlom okoli Jave v Androidu

Oddelek: Novice / Android
4916787 (12978) bojsi
»

Prvi operacijski sistem brez programskih hroščev

Oddelek: Novice / Operacijski sistemi
495099 (2656) techfreak :)

Več podobnih tem