Autor Zpráva
he7esZ
Profil *
Dobrý večer,
projížděl jsem různé weby o velkých projektech, jako je Google, Twitter, atd., a narazil jsem na toto: https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
Chtěl bych se zeptat u Googlu, jak je třeba možné, že je napsaný v javě a c++(ono už jen to, že je napsaný ve dvou naprosto rozdílných jazycích)? Například u Google vyhledávače - představuju si to nějak tak, že je nějaký bot, který se spustí několikrát za den a zaindexuje veškeré adresy do databáze a když uživatel zadá něco do inputu, tak to vytáhne z databáze, ale zajímalo by mně, jak? Pro komunikaci s klientem využívají logicky javascript, ale jak je možné, že pro komunikaci se serverem používají javu / c++? Pokud se nepletu, tak v těchto jazycích nelze psát webové aplikace.
Pokud se pletu tak mně prosím opravte, moc toho o tom nevím ale dost mně to zajímá.
Děkuji.
Alphard
Profil
he7esZ:
Pokud se nepletu, tak v těchto jazycích nelze psát webové aplikace.
Pletete se hodně. Webové aplikace lze v principu psát v jakémkoliv jazyce (který je schopný přijmout nějaký vstup a vrátit nějaký výstup). Zatímco C++ není moc typické pro webové aplikace (a očekával bych spíš na backandu, kde je naopak velmi efektivní), Java se používá docela často.

že je napsaný ve dvou naprosto rozdílných jazycích
To je také zcela běžné u větších aplikací. Proč by nemohl? Stačí si zavést nějaký datový formát, nějaké rutiny pro řízení přístupu ke sdíleným datům a pak na ně může sahat kdokoliv.
Více propojená metoda je napsat si nějaké kritické rutiny v C++ např. jako Python knihovnu a v Pythonu ji pak elegantně využít. (Což je vlastně analogií využívání různých databází jako MySQL nebo Redis v PHP, vždy podle účelu.)
Že není důvod mít vzájemně oddělené moduly ve stejném jazyce je snad jasné.

představuju si to nějak tak, že je nějaký bot, který se spustí několikrát za den a zaindexuje veškeré adresy do databáze a když uživatel zadá něco do inputu, tak to vytáhne z databáze
Přesně tak, až na to, že ten robot jede nonstop na mnoha serverech a zaindexovoat veškeré adresy* by trvalo (hádám) miminálně řádově dny, možná týdny.
* Myšleno znovuzaindexovat již indexované adresy, to veškeré berte s rezervou :-)

ale zajímalo by mně, jak?
Tvoří se index a z něj se bere odpověď např. pomocí vyhodnocovacích stromů vystavěných na základě strojového učení. Tj. vymyslí se seznam atributů, které lze ze stránky abstrahovat a pak se každé indexované stránce přiřadí tyto parametry. Určitá rozumně velká podmnožina stránek se pak ohodnotí ručně a výsledky se extrapolují na celý index.
Takhle je to velmi stručné, detailnější vysvětlení je na https://www.youtube.com/watch?v=5eDvEr6Ui0M&list=PLF525EC14D523AC1B.
he7esZ
Profil *
[#2] Alphard
Aha, super. Děkuji moc. :) Zase jsem o něco chytřejší.
Joker
Profil
he7esZ:
představuju si to nějak tak, že je nějaký bot, který se spustí několikrát za den a zaindexuje veškeré adresy do databáze

Spíš to vidím na hromadu robotů, které běží neustále.

jak je třeba možné, že je napsaný v javě a c++(ono už jen to, že je napsaný ve dvou naprosto rozdílných jazycích)?
jak je možné, že pro komunikaci se serverem používají javu / c++? Pokud se nepletu, tak v těchto jazycích nelze psát webové aplikace.

1. Čemu vadí, že ty jazyky jsou rozdílné? Proč by se gigant jako Google měl vázat na jednu platformu? Navíc že ten jazyk používá neznamená, že se střídá v rámci jedné aplikace.
Třeba může indexovací robot být napsaný v jednom jazyce a kód pro dělení zátěže mezi servery (který s indexovacím robotem nemá žádnou souvislost) v úplně jiném.

2. Nikde tam není řečeno, že se ty jazyky (všechny) používají přímo na webu. Google nejspíš používá celou řadu „newebových“ aplikací. Ostatně ani indexovacího robota bych nenazval webovou aplikací.

3. Pletete se, v Javě a C++ psát webové aplikace jde. Webovou aplikaci jde koneckonců napsat asi v čemkoliv, co je schopné vypsat nějaký text na nějaký výstup.

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0