Jump to content
bubu2005

Rust 1.0 - un nou limbaj

Recommended Posts

  • Active Members
Adica rust o sa ia fata la C/js ?

Citand din cel mai bun programator roman, inginer la Facebook si cel care a creat limbajul D:

"Nimic n-are vreo sansa sa inlocuiasca C++, pentru ca avem o cantitate de cod C++ absolut enorma. D-ul nu este un inlocuitor."

Deci nu, nu o sa-l inlocuiasca. O sa fie o alta alegere.

Eu tre sa invatz c# si nu am experienta in programare, s-o merita sa invat Rust cat e la inceput?

Programarea nu se invata "in particular". Adica nu inveti sa programezi in C++. Inveti sa programezi in general. Sfatul meu este sa inveti programare, nu sa inveti sa programezi in C++/Rust/Java, etc.

  • Upvote 1
Link to comment
Share on other sites

Citand din cel mai bun programator roman, inginer la Facebook si cel care a creat limbajul D:

"Nimic n-are vreo sansa sa inlocuiasca C++, pentru ca avem o cantitate de cod C++ absolut enorma. D-ul nu este un inlocuitor."

Deci nu, nu o sa-l inlocuiasca. O sa fie o alta alegere.

Mai degraba nu poate fi inlocuit datorita constrangerilor financiare("traducerea" programelor dintr-un limbaj intr-altul este extrem de costisitoare). Deci, marele programator are dreptate. Ii putem afla numele sau cel putin mi-ai putea lasa, te rog, un p.m. cu acesta?

Link to comment
Share on other sites

O s-o iau la modul general atunci. Ms de sfat.

Un limbaj de programare nu trebuie perceput ca fiind mai mult decat o unealta, un mijloc prin care ii "comunici" calculatorului ceea ce gandesti. Ti-as recomanda sa te axezi pe probleme de algoritmica, logica si chiar si teste de masurare ale coeficientului de inteligenta. Ulterior te poti apuca de software engineering(pentru a-ti forma o structura in gandire prin care poti crea aplicatii usor de extins si de inteles(la nivel de cod)). Avem foarte multi programatori care scriu cod "cu lopata".

Pentru software design poti citi:

https://ptgmedia.pearsoncmg.com/images/9780735619678/samplepages/9780735619678.pdf

Pentru algoritmica poti incepe cu:

http://syedwaqarahmad.webs.com/documents/t._cormen_-_introduction_to_algorithms_3rd_edition.pdf

Link to comment
Share on other sites

Andrei Alexandrescu. Autor al "Modern C++ Design" si dezvoltator al librariei Loki plus cateva functii care le folosim pe fb.

PS:

Mrs.. Am cartea respectiva :) Nu stiam de contributiile dansului in crearea limbajului D.

M-ai pierdut la probleme de algoritmica, da-mi te rog daca ai niste linkuri de unde sa incep. Eu sunt inginer Cad, inteleg mai mult prin desene :))).

Ms anticipat.

Vezi cartea din post-ul de mai sus. Este usor de urmarit.

Edited by Ganav
:P
Link to comment
Share on other sites

Golang este folosit pentru heavy web apps(backend/frontend), server side apps, cli and so on...si pe partea asta inlocuieste limbajele clasice folosite pentru performanta si in curand o sa fie limbajul default pentru asta. Scrii mai putin cod, mai curat si mai simplu.

Rust inca trebuie sa isi gaseasca locul.

Sunt limbaje de pot indeplini unele roluri mai bine decat altele, spre exemplu autoit, sa spui ca C/C++ e cel mai bun e absurd si ignorant.

Edited by Vlachs
Link to comment
Share on other sites

Pe langa subiect, dar cu referire la postari:

Ma bucur sa vad oameni care incearca sa lumineze lumea, cand vine vorba de programare. Sa nu consideri un limbaj de programare ca fiind mai mult decat o unealta si sa nu inveti programare specifica unui limbaj, ci programare in general, mi se par doua dintre cele mai importante sfaturi din zona IT.

Link to comment
Share on other sites

...sa nu inveti programare specifica unui limbaj, ci programare in general...

Asta nu este adevarat, limbajele sunt diferite si trebuie sa te axezi in primul rand pe limbajul de il practici. Exemplu, in unele limbaje este necesar sa scrii cod in care iti optimizezi resursele iar in altele este inutil, totul tine de arhitectura limbajului/destinatie.

Sunt foarte multi si pe forum de isi trec in CV ca stiu nspe mii de limbaje dar nu depasesc nivelul mediu si nu au scris mai mult de 200 de linii per proiect, asta nu inseamna ca stii un limbaj, practica pe un limbaj si invata alt limbaj doar daca iti este necesar.

Link to comment
Share on other sites

  • Active Members
Dupa parerea mea, e o evolutie inevitabila, pentru ca numarul de programatori creste, iar timpul de executie trebuie sa scada, deci, apar limbaje noi, cu structuri mai user-friendly, cu mai mult cod prescris etc. Ideea e sa fie invatate cat mai usor si sa dea un randament ridicat. Legat de eficienta, daca cele noi sunt si rapide, comparativ cu cele vechi, super, dar chiar si daca nu sunt, lumea tot le va folosi pentru ca le este mai usor sau poate sunt mai eficiente dintr-un alt punct de vedere decat cel al vitezei.

In plus, viitorul e in cloud, deci o foarte mare parte din programatorii de azi se vor orienta pe limbaje ce se integreaza bine pe web; C, C++ sau COBOL nici nu apar in discutie de multe ori.

Da, suntem lenesi ca nu ne place C sau C++, dar nu e vreo tragedie, ne descurcam si fara ele. :)

Iar faptul ca cei care detin banci nu vor sa-si schimbe software-ul nu e vina noastra. Daca am fi sa ne luam dupa ce vrea clientul, am ramane in urma. E de datoria ta, a dezvoltatorului, sa convingi clientul sa evolueze, daca tu esti convins ca e un pas necesar.

@SynTAX A numi pe cineva cel mai bun programator dintr-o tara intreaga nu poate sa starneasca decat controverse. Sa-ti reamintesc ca aici nu e cancan.ro ?

Daca este cineva in sau din Romania care a adus atatea programarii in C++, care a pus bazele unui nou limbaj de programare cu foarte mari aspiratii si cercetator la o companie ca Facebook eu zic ca merita sa-i aflam numele. Tot respectul meu pentru el.

Mi-am expus doar o opinie. Am vorbit din punctul meu de vedere, plus ca pentru mine este mai mult decat un autor de carte, daca intelegi ce vreau sa spun.

Edited by SynTAX
Link to comment
Share on other sites

Dupa parerea mea, e o evolutie inevitabila, pentru ca numarul de programatori creste, iar timpul de executie trebuie sa scada,

Timpul de executie nu are nicio legatura(cel putin directa) cu numarul de programatori. Acesta, teoretic, ar trebui sa scada conform legii lui Moore:

Moore's Law

Practic nu scade intocmai conform legii, deoarece energia(emisa sub forma de caldura) produsa de transzistoare devine mult prea ridicata dupa un anumit nivel de incapsulare in pastila de siliciu. Numarul de programatori este intr-adevar in crestere, datorita cresterii populatiei lumii si a oportunitatilor(locurilor de munca) in domeniu. Din pacate, am constat ca, calitatea produselor software scade de la o luna la alta.

deci, apar limbaje noi, cu structuri mai user-friendly, cu mai mult cod prescris etc. Ideea e sa fie invatate cat mai usor si sa dea un randament ridicat. Legat de eficienta, daca cele noi sunt si rapide, comparativ cu cele vechi, super, dar chiar si daca nu sunt, lumea tot le va folosi pentru ca le este mai usor sau poate sunt mai eficiente dintr-un alt punct de vedere decat cel al vitezei.

Structura user friendly este de fapt o lama cu doua taisuri: pe de-o parte avem avantaje precum usurinta de invatare si productivitate ridicata iar pe de alta parte avem dezavantajul ca oricine poate scrie cod indiferent de nivelul de pregatire; feature-uri ca autocomplete pot face crearea de cod compilabil foarte usoara. Insa de cele mai multe ori compilabil nu implica functional. Am facut practica de vara intr-un concern si in cea mai mare parte a timpului rescriam codul scris anterior de alti "programatori". De aceea prefer ca un limbaj de programare sa aiba un anumit grad de complexitate astfel incat sa fie suficient de prietenos pentru un inginer software insa aproape imposibil de abordat din perspectiva unui amator; da prefer calitate in detrimentul cantitatii.

In plus, viitorul e in cloud, deci o foarte mare parte din programatorii de azi se vor orienta pe limbaje ce se integreaza bine pe web; C, C++ sau COBOL nici nu apar in discutie de multe ori.

Fireste ca nu apar. Voi face o mica analogie intre limbaje de programare si elemente din structura societatii: gandeste-te la C si C++ ca si la puncte de infrastructura: sistemul de distributie al energiei electrice, a apei potabile, a transporturilor feroviare, rutiere, aeriene si navale, a productiei energiei electrice, telecomunicatii, etc. Acum gandeste-te la cele de tip web ca si la industria cinematografica, a jocurilor si a chestiilor "cool" pe care toata lumea le doreste insa de care nu are efectiv nevoie. Acum cati ar prefera sa apara pe marele ecran si cati ar prefera sa fie CFR-isti? Cea din urma alternativa este considerata injositoare in societatea din prezent(tare nu? :) ).

Da, suntem lenesi ca nu ne place C sau C++, dar nu e vreo tragedie, ne descurcam si fara ele. :)

A place sau a nu place un anumit lucru implica un grad de subiectivitate adesea raportat la un individ sau la un grup din care acesta face parte(si de a caror norme este posibil constrans). C si C++ sunt relativ dificil de invatat motiv pentru care nu sunt agreate de mase insa realitatea este ca kernel-ul oricarui sistem de operare este scris in C(si posibil cateva module C++), java este scris in C(ma refer la compilator), orice joc stralucitor este scris in C++(cryengine, unreal engine, source engine, etc.), PHP, Perl si Python sunt scrise in C(la interpretoare ma refer), si multe, multe altele. Da, ne descurcam pana vom avea nevoie de o noua infrastructura software(ca si analogie mai multe benzi pentru aceiasi autostrada).

Iar faptul ca cei care detin banci nu vor sa-si schimbe software-ul nu e vina noastra. Daca am fi sa ne luam dupa ce vrea clientul, am ramane in urma. E de datoria ta, a dezvoltatorului, sa convingi clientul sa evolueze, daca tu esti convins ca e un pas necesar.

In climatul capitalismului salbatic american cine face prima mutare castiga. Deci daca nu se folosea COBOL se pierdeau o multime de bani. Un dezvoltator nu trebuie sa convinga clientul sa evolueze ci sa-l faca sa creada ca a evoluat, sa il faca sa isi doreasca un produs pe care dezvoltatorul il poatea realiza ieftin, usor si repede.

Golang este folosit pentru heavy web apps(backend/frontend), server side apps, cli and so on...si pe partea asta inlocuieste limbajele clasice folosite pentru performanta si in curand o sa fie limbajul default pentru asta. Scrii mai putin cod, mai curat si mai simplu.

Rust inca trebuie sa isi gaseasca locul.

Sunt limbaje de pot indeplini unele roluri mai bine decat altele, spre exemplu autoit, sa spui ca C/C++ e cel mai bun e absurd si ignorant.

Nu exista un limbaj cel mai bun; de regula, cel mai bun limbaj pentru un programator este cel pe care il cunoaste cel mai bine la un moment dat.

Pentru a determina cat de "bun" este un limbaj ai putea lua in calcul urmatoarele: numarul de aplicatii scrise in acesta, numarul de programatori care il folosesc si cel mai important natura aplicatiilor scrise in acesta(aplicatii web, jocuri, etc.) precum si numarul de locuri de munca ca si programatori/ingineri software in respectivul limbaj, documentatia limbajului(cu cat numarul de exemple de cod este mai ridicat pe web cu atat libajul este mai popular) si viitoare tendinte in domeniu.

Pe langa subiect, dar cu referire la postari:

Ma bucur sa vad oameni care incearca sa lumineze lumea, cand vine vorba de programare. Sa nu consideri un limbaj de programare ca fiind mai mult decat o unealta si sa nu inveti programare specifica unui limbaj, ci programare in general, mi se par doua dintre cele mai importante sfaturi din zona IT.

In programare este mult mai importanta modul de structurare al ideilor; cat de bine ii poti spune calculatorului sa faca ceea ce vrei. De aceea partea de algoritmica/logica primeaza in detrimentul celei de scriere a codului.

Edited by Ganav
:)
Link to comment
Share on other sites

  • Active Members
In programare este mult mai importanta modul de structurare al ideilor; cat de bine ii poti spune calculatorului sa faca ceea ce vrei. De aceea partea de algoritmica/logica primeaza in detrimentul celei de scriere a codului.

Perfect de acord.

Invatati algoritmi -> alegeti un limbaj (oricare - poti face multe chiar daca stii doar bash) -> aplicati algoritmii in limbajul ales -> descoperiti singuri ce si cum functioneaza in acel limbaj -> imagination is the limit

Link to comment
Share on other sites

Practic nu scade intocmai conform legii, deoarece energia(emisa sub forma de caldura) produsa de transzistoare devine mult prea ridicata dupa un anumit nivel de incapsulare in pastila de siliciu. Numarul de programatori este intr-adevar in crestere, datorita cresterii populatiei lumii si a oportunitatilor(locurilor de munca) in domeniu. Din pacate, am constat ca, calitatea produselor software scade de la o luna la alta.

Calitatea produselor software nu scade neaparat ci complexitatea lor creste, nu neaparat complexitatea codului scris de programator ci a diferitelor componente(GUI/threading/instructiuni).

Structura user friendly este de fapt o lama cu doua taisuri: pe de-o parte avem avantaje precum usurinta de invatare si productivitate ridicata iar pe de alta parte avem dezavantajul ca oricine poate scrie cod indiferent de nivelul de pregatire; feature-uri ca autocomplete pot face crearea de cod compilabil foarte usoara. Insa de cele mai multe ori compilabil nu implica functional. Am facut practica de vara intr-un concern si in cea mai mare parte a timpului rescriam codul scris anterior de alti "programatori". De aceea prefer ca un limbaj de programare sa aiba un anumit grad de complexitate astfel incat sa fie suficient de prietenos pentru un inginer software insa aproape imposibil de abordat din perspectiva unui amator; da prefer calitate in detrimentul cantitatii.

Un programator devine de "calitate" prin exercitiu, nu devine prin simpla citire a informatiilor. Autocomplete, code intel si multe alte functii sunt facute pentru a ajuta programatorii si NU esti programator mai bun ca altul pentru ca stii cateva nume de functii in plus. Legat de complexitate, presupun ca esti unu din cei 100 de programatori erlang din Europa ?

Am vrut sa nu spun nimic dar esti exemplu perfect de snob C/C++, lumea evolueaza si limbajele evolueaza.

Link to comment
Share on other sites

Intamplator, in ziua in care am citit topicul asta, am primit pe mail un articol pe aceeasi tema.

click.

Acum, a nu se intelege ca c/c++ sunt in vreun fel speciale. Mai devreme sau mai tarziu vor fi inlocuite.

Problema e, dupa cum unele persoane au pus-o in acest topic, faptul ca o buna parte din infrastructura si o buna parte din aplicatiile si sistemele de operare existente, sunt scrise in c/c++.

Ganav a dat destule exemple.

Totusi, pentru a intelege ce inseamna inlocuirea c/c++, trebuie sa realizati urmatoarea chestie:

Ar trebui rescris, spre exemplu, php-ul(interpretatorul php) din c/c++ in rust spre exemplu, si recompilat, apoi distribuite binarele pentru el. Aceeasi chestie trebuie facuta pentru majoritatea limbajelor de programare, sistemelor de operare, si aplicatiilor deja folosite.

Da, rust, D, Golang, au probabil un viitor, pentru aplicatii noi, pentru domenii noi, pentru infrastructuri noi, dar in ziua de astazi, inlocuirea infrastructurii existente, rescrierea aplicatiilor existente, e aproape imposibila.

Link to comment
Share on other sites

@Ganav, daca ar fi dupa tine, am scrie site-uri in C++ acum.

Categoric nu, insa ce am spus mai devreme se refera la faptul ca C/C++ cu toate ca si-au pierdut din popularitate, raman, in continuare, indispensabile atat timp cat toate infrastructura programatica este construita in acestea.

Nu te supara pe mine, dar gandesti eronat. Daca tu iti doresti sa dispara toate limbajele de programare usor inteligibile doar pentru ca ai impresia ca genereaza programatori de duzina, ai o problema. Prostimea nu a invadat programarea pentru ca a aparut Python, ci pentru ca industria IT s-a extins inimaginabil si lumea a invatat ce i-a picat la indemana. Daca nu exista Python, se apucau de C++.

Nu, nu ma supar. Sunt de fapt cat se poate de obiectiv in ceea ce priveste dezvoltarea limbajelor usor inteligibile. Nu stiu daca ai avut vreodata de-a face cu un programator de duzina harnic. Facea la un moment dat mai multe greseli decat puteam repara(scria toata ziua cod), fiind nevoit in final sa lucrez la un alt proiect din cauza acestuia. Un limbaj trebuie sa fie usor de invatat de catre un inginer software insa extrem de dificl de catre o persoana care n-a avut tangente cu domeniul dezvoltarii software(de exemplu un absolvent de la drept).

Sa nu-mi spui ca nu ai vazut software scris cu picioarele in C++. :))

In plus, mare parte din vina o au si clientii pentru ca angajeaza "programatori" in functie de buget, de multe ori infim.

Am vazut cod oribil scris in C++. Dar stii care era diferenta intre acesta si altul in Java? Cel din C++ avea 400 de linii iar cel din java ~11000.

Calitatea produselor software nu scade neaparat ci complexitatea lor creste, nu neaparat complexitatea codului scris de programator ci a diferitelor componente(GUI/threading/instructiuni).

Complexitatea ridicata implica si un program mai mare ca si numar de linii de cod. Este adevarat ca un program complex este mai usor de scris eronat, dar in ultimul timp au aparut produse open source inutilizabile. Cateva exemple ar fi ubuntu 14.04, 13.10 si libreoffice(orice versiune din ultimii doi ani).

Un programator devine de "calitate" prin exercitiu, nu devine prin simpla citire a informatiilor. Autocomplete, code intel si multe alte functii sunt facute pentru a ajuta programatorii si NU esti programator mai bun ca altul pentru ca stii cateva nume de functii in plus.

Un programator de calitate trebuie sa aiba un rationament structurat, sa stie sa gandeasca programe astfel incat acestea sa fie scalabile si usor de dezvoltat cand acesta nu va ma lucra asupra lor. Multi dintre programatorii din zilele noastre nu au elemente fundamentale de algoritmica; experienta lor se rezuma la a cauta fragmente de cod pe web pe care le vor pune intr-un IDE dupa care le mai aranjeaza putin pana compileaza aplicatia.

Legat de complexitate, presupun ca esti unu din cei 100 de programatori erlang din Europa ?

(Inca) nu.

Am vrut sa nu spun nimic dar esti exemplu perfect de snob C/C++, lumea evolueaza si limbajele evolueaza.

Nu sunt un snob C/C++, si nu am dorit sa creez aceasta impresie prin post-ul anterior. Insa, imi displace sa vad masele cand critica un limbaj doar in baza faptului ca nu inteleg conceptul de referinte(pointer-i), programare orientata pe obiecte si cea pe tipuri(template programming). Sa nu mai mentionez de inline assembly, hook-uri si altele.

Edited by Ganav
:)
Link to comment
Share on other sites

Scuze ca trezesc topicul, am gasit de curand cartea "Limbajul-erlang Programarea sistemelor concurente si distribuite - Eugen Diaconescu" si am descoperit ca backendul whatsapp e scris cu erlang si rabbitmq mai foloseste. E programare functionala. O paradigma diferita fata de oop. Eu am background de c#, java android, js, putin c++, putin python. Am facut si programare procedurala. De curand merg la un curs de java, gasesc mult prea multe similaritati cu c#, erlang asta e brainfuck, parca pare backwards bike (

) ce parere aveti?

Succes!

Edited by gigiRoman
  • Upvote 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...