Twitter a fost facut in ruby, cel putin initial
@kilogrammer nu l-am deschis eu ci @iamntz
Initial se chema “Este Ruby un limbaj serios?” i.e. haideti sa incepem un flame war
Am mai vazut niste inconsistente legate de Ruby pe forum sau mituri de unde si numele plus am zis ca poate totusi iese ceva constructiv din el.
@dakull pai n-am zis ca l-ai deschis tu…
si ma crezi ca habar n-am de ce crezi ca eu am zis ca l-ai deschis tu, căci n-am citit aproape nimic din ambele thread-uri
Simplu ai mentionat mituri, eu am editat titlul, @iamntz a deschis thread-ul. Ti-am explicat de ce mituri si raspuns la partea cu baietii
P.S.
Poate ar fi mai interesant sa citesti despre ce este vorba inainte sa postezi?
Nu mi se pare interesant.
Sunt reply-uri cu contraziceri, aproape fiecare reply are o fraza sau 2 pe marginea la ce poate sa faca sau nu Ruby, asezonat pe alocuri cu teorii…
Adica un sir de contraziceri, fara nimic concret, nici un link macar catre un blog\o postare unde o teorie, o teza, o explicatie pe larg a cuiva care a lucrat temeinic cu Ruby, unde expune pe larg si cu exemple ce probleme a intampinat arhitectural sau din pct de vedere al performantei, de ce e mai potrivit o alta tehnologie de backend, etc
Dap, de asta am cerut ca:
sa fie inclusa aici, sa avem si ceva concret pe langa Ruby and ruby devs suck
Un business intreg cred ca vrea sa zica @flavius, si oarecum sunt de acord cu el. Uite exemplul twitter dat mai sus e relevant, pt ca a inceput pe ruby si a trebuit sa schimbe tocmai pt ca nu putea scala.
Facebook se poate scrie in ror, dar poate scala? Amazon.
Dau un exemplu din afara lumii ruby ca sa intelegeti de ce pe unii “ne doare”: Comparison shopping la care am lucrat eu, ciao.com a inceput in java, nu a scalat si a fost refacut in php. Au fost adaugate parti in java, oricat de bine arhitecturate dpdv al limbajului, au dat iar fail la intalnirea cu fluxul de date. Dupa cativa ani businessul a fost cumparat de microsoft si a fost rescris cu sql server si .net si am inteles ca are probleme mari de scalabilitate.
Ca developer ma intereseaza foarte mult daca firma la care voi lucra va muri in scurt timp sau va face switch pe alt toolset, de aceea am nevoie sa stiu “cat duce” o anumita solutie. Disclaimer: am trecut pe freelancing, deci nu mi se aplica in secunda asta. Dar nu pot sfatui clientii gresit, chiar imi asum o anumita platforma nu doar dpdv al faptului ca sunt intimate cu un anumit limbaj.
Da. Noi doi vorbim aceeași limbă.
Twitter e exemplul monumental de cât de nasol e ruby.
Twitter din perspectiva userului e o aplicație banală, dar e complicată la scalabilitate și la algoritmii off-line care trebuie executați pe “social graph”.
Nici măcar un fanboi ruby nu ar face astfel de lucruri în ruby.
Aplicațiile serioase sunt poliglote (js exclus, browserele pot fi programate doar în js).
Cherry picking. Carry on. I can do that but I won’t. @tekkie am dat un link legat de speed in alt thread se pare ca l-ai ignorat complet. GG.
Nu cumva te contrazici? daca in acceptiunea ta, aplicatiile complexe sunt poliglote atunci ce relevanta are asta cu:
iarasi GG pentru consistenta.
Nope. Ne uităm la plus valoarea adusă unui proiect pe limbaj. Una e un proiect făcut în principal în C++ cu niște amărâte de plugins în ruby, alta e un proiect cu UI frumos făcut în ruby. Una e un proiect complex cu serverele de frontend în ruby, dar cu microservices distribuite care fac algoritmică interesantă în Java, alta e un proiect CRUD în ruby.
Nu am văzut componente ruby care să facă ceva mindblowing în termeni de valoare pentru business.
Ruby se pretează pentru aplicațiile banale.
Am editat titlul pentru a nu sugera un răspuns anume. Răspunsurile și le extrage fiecare din conținutul topicului. Așa e corect.
in contextul de complexitate ca poliglotism.
iarasi generalizezi din propriile anecdote.
Eu ma opresc aici.
Nu am ignorat deloc acel link, doar că îl citesc altfel decât tine și e mult de spus pe temă. Încerc mai jos un rezumat, deși nu îmi face plăcere și nu voi detalia prea tare. Mai demult chiar am citit cum fac oamenii aceia testul, și e biased. Se compară multe mere cu pere, dar nu e chiar locul aici pentru a le sorta pe coșuri. Oricum nu există astfel de teste fără bias, dar haide să citim împreună măsurătorile acelea într-un mod puțin mai apropiat de realitate. Zic să nu dăm așa un link neexplicitat.
O aplicație serioasă care stă la baza unui business funcțional face multe lucruri, cele mai importante țin de accesul la date. Citiri foarte multe, scrieri multe, etc. Acuma, eu în comparația aceea merg de regulă să văd cât durează multiple queries, deoarece în urma experienței de dezvoltator am observat că aici tinde să fie bubulina. Supriza este că primele locuri sunt toate ocupate de diverse combinațșii de scule care au la bază PHPul, prima chestie de ruby apare doar pe poziția a 6a și e sufocată imediat de alte PHPuri.
Comparații legate de lucrul cu plaintext mi se par pre puțin relevante, pentru că a trecut de mult vremea când sistemul de fișiere era considerat un mod de stocat date. Disclaimer: am scris niște chestii extrem de interesante anul trecut care se foloseau de sistemul de fișiere ca bază de date. Așa mi s-a impus arhitectural de către CTO, și am reînvațat multe lucruri cu ocazia aceea. Bottom line fiind să evit pe viitor.
Serializare JSON ca și criteriu de comparație? Hm, poate fi. Dar procentual vorbind e puțin din ce face o aplicație. Chiar și una plină de microservicii. Să fim serioși, json_encode
și perechea json_decode
din PHP sunt așa de rapide că nu merită calculat overheadul. Iar dacă e nevoie de librării complexe pentru serializare json care să fie developer-friendly (adică să scrie omul clasa și s-o adnoteze și cineva să ii facă lui serializarea) atunci trebuie reanalizată arhitectura acelei aplicații. O fi rapid (dpdv al timpului de codare) așa, dar e păgubos pentru client / aplicația în sine.
Note personale legate de acea comparație:
- În continuare cred că e total aiurea să compari PHP bare-bones cu microframeworks și cu full-stack frameworks, dar să zicem totuși că e doar o preferință personală. De asemenea tind să nu aleg testele rulate pe EC2 pentru că acolo sunt posibile optimizări pe care nu le controlăm și care din punctul meu de vedere dau bias testului.
- În mod ciudat au ei acolo niște combinații care nu rulează testul până la final. Zic ciudat pentru că toate sunt PHPuri. Și la fiecare combinație de teste sunt altele care “did not complete”.
WTF!? Facepalm!
Twitter are acum peste 300 de MILIOANE de useri ACTIVI cu SUTE DE MII de interogari pe secunda! https://about.twitter.com/company
Sa inteleg ca voi lucrati in business-uri de dimensiunea Twitter-ului, deci in conseciunta daia Ruby nu e bun?
Twitter a facut schimbari in momentul cand avea deja aveau zeci de milioane de useri activi, orice aveau ei atunci indeplinea cu success business-ul lor la acel moment https://blog.twitter.com/2011/twitter-search-is-now-3x-faster
Nici o tehnologie, indiferent de cat de populara e, nu e silver bullet, solutia magica pentru orice nevoie.
Orice discutie generalizata e lipsita de sens.
Daca Twitter a trecut la Java, atunci Java rulz?
Pentru ceilalti care citesc pe aici si care sunt la inceput cautand sa se orienteze catre o tehnologie, daca cititi postari de genul limbajul/tehnologia X e proasta, va sugerez sa priviti cu rezerva tot ce cititi si sa va documentati, cu o simpla cautare pe internet veti gasi discutii mult mai argumentate.
Si a trecut fix la PHP. Oare de ce?
(Probabil fiindca php o ducea cel mai bine, la momentul acela, din punctul de vedere al ce aveau ei nevoie)
Nu sunt fan RoR, ba chiar îi urăsc sintaxa, dar nu-mi dau seama cum de v-a scăpat exemplul cel mai evident de aplicație scrisă în RoR: Basecamp. În fond, 37signals au creat RoR pentru a-l folosi la Basecamp și restul suitei lor de aplicații de la vremea aceea.
Nu, nu e unealta ideală pentru decorarea genomului uman, dar RoR are și el un locușor al lui pe lumea asta, indiferent că-mi place mie (ori lui flavius) sau nu…
Bineinteles ca isi are locul undeva, e exact ceea ce am spus si eu: e perfect pentru aplicatii banale.
Cum spuneam mai sus nu va lasati dezinformati de “specialistii” de pe forum care spun “limbajul/frameworkul/platforma X sux”.
O simpla cautare pe google si veti afla raspunsuri si discutii argumentate.
https://coderfactory.com/posts/top-15-sites-built-with-ruby-on-rails
https://vertalab.com/blog/ruby-on-rails-application-examples
https://basecamp.com/ e o afacere de milioane de $ facuta in Rails. Github e facut cu Rails (printre altele). booking.com e facut cu Perl de exemplu. Ruby || Rails nu e in niciun caz o “bariera”.
Basecamp e simplist, nu e ca altele mai complexe cum e YouTrack. Github e poliglot, părțile care aduc plus valoare semnificativă nu sunt scrise în ruby.
Ruby își are locul lui, dar acela nu e la aplicații cu reguli complexe de business, cu algoritmi și alte lucruri interesante.