Ruby care circula in real-world

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

4 Likes

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.

4 Likes

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).

2 Likes

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”.
1 Like

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.

3 Likes

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…

1 Like

Bineinteles ca isi are locul undeva, e exact ceea ce am spus si eu: e perfect pentru aplicatii banale.

1 Like

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

1 Like

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.

https://www.quora.com/Why-did-Twitter-switch-to-a-Java-based-front-end-after-successfully-using-Ruby-on-Rails-with-200-million-users

1 Like

Citation needed.

Conform unei prezentari(sorry, spanish only) din may 2015, GitHub este o aplicatie monolitica scrisa in ROR cu cateva servicii(Atentie, nu microservicii!) pentru a accesa repositoarele Git de pe disc, syntax highlighting si render PDFs + some other few stuff.

Servicii scrise în erlang, deoarece ruby nu scalează.

  1. Incep sa am dubii daca tu chiar lucrezi in industrie sau ne trolezi.
  2. Nu mai face afirmatii daca nu te bazezi pe nimic. GitHub are tot codul open source(cel care face prezentarea de mai sus zice asta). Te rog arata-mi 1 singur repo scris in Erlang acolo.
  3. Cand spui ca ruby nu scaleaza e o afirmatie atat de vaga si ignoranta incat…ma rog, vezi punctul 1.
    Twitter e cel mai prost exemplu. A fost gandit prost de la inceput si a crescut foarte repede. Like a 12 year old d**k, ca sa citez din The Departed. La cum a fost gandit, ar fi avut problemele alea cu orice tehnologie.
    In 2016, o aplicatie ca GitHub e comparabila cu Twitter din 2009 in termeni de useri, LOC, load etc, cand aveau problemele alea de scalabilitate. La GiHub nu vad nicio problema.

P.S. Nu sunt programator Ruby, dar ma deranjaza ignoranta. Si eu am fost ignorant cu alte tehnologii(e.g. Java) si nu e foarte misto.
P.P.S. Inca nu am vazut vreun exemplu de aplicatie considerata complexa/serioasa de catre tine. Din contra, conform posturilor tale de mai sus, trag concluzia ca Twitter ar fi o aplicatie complexa, dar Basecamp nu. Thats just…sublime!

5 Likes