Neurochirurgie minim invazivă
"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv. Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice. www.neurohope.ro |
Rust 1.0 - un nou limbaj: sigur, pragmatic, performant
#1
Posted 16 May 2015 - 13:08
Rust 1.0 (pagina oficiala) a fost lansat (clip: release party, mici prezentari) acum cateva ore.
Din experientele mele cu acest limbaj, pot spune ca te forteaza sa gandesti foarte disciplinat (nu ma consider un programator nedisciplinat, dar am simtit ca rust ma forteaza sa imi slefuiesc abilitatile). E greu la inceput, dar cred ca merita efortul pe termen lung. La aspectul performanta, genereaza codul binar via LLVM, deci este la fel de performant ca un cod C de o calitate comparabila (cu error checking facut curat). Diferenta este ca face foarte multe verificari la compilare, asadar bugurile triviale sunt evitate. Din punctul de vedere al ergonomiei codului, un cod scris in rust pare mai lung de cat e necesar, insa daca te gandesti la ceea ce face codul, se ajunge cam la acelasi gen de cod ca C/C++. Ergonomia codului unui proiect poate fi imbunatatita folosind "preprocesorul rust", via macros, care manipuleaza direct AST-ul, in contrast cu cel C/C++, care stie doar sa inlocuiasca niste parametri. Asadar: e mai complicat sa scrii macros pentru lucruri simple, dar mult mai usor sa scrii macros pentru lucruri complicate. Multumita ownership si lifetimes disponibile direct in limbaj, codul se simte de ca si cum ar avea un GC, insa generarea codului care elibereaza resursele e facuta la compilare, ceea ce-l face sa se simta pe alocuri ca un limbaj de scripting. La acest aspect e superior lui golang. Superior lui golang mai este si deoarece: are generics (in C++ cunoscut ca templates), iar cargo (un fel de make on steroids) stie si de managementul dependintelor (daca respecta semver, ceea ce orice proiect modern face oricum). Interoperabilitatea cu C e gratuita / ieftina (cod rust poate apela cod C, si vice-versa). Din experienta mea, lucrurile dificile (usor frustrante dupa ce cunosti cat de cat limbajul) includ modelarea structurilorr de date izomorfe (arbori, liste inlantuite), iar mai frustrante sunt structurile de date ciclice (liste inlantuite circulare, grafuri). Limbajul si toolingul au incluse:
Personal, imi place sa programez in el, iar atunci cand ma lovesc de o problema, imi plac provocarile pe care mi le da compilatorul (prin mesaje de eroare foarte clare); din experienta mea cu acest limbaj, de fiecare data cand compilatorul a spus ca gresesc, am fost fortat sa regandesc codul si a rezultat un cod mai curat. Pentru programatori, Rust for C++ programmers este o introducere decenta si probabil suficienta. La nevoie, va stau la dispozitie
Edited by OriginalCopy, 16 May 2015 - 15:00. |
#2
Posted 16 May 2015 - 13:14
M-am uitat și eu peste el. Tot citesc articole de vreo câteva luni, de când am aflat cu ce se mănâncă și m-am lămurit că nu e doar un „toy language”. Mozilla are planuri mari cu rust: din ce am înțeles, vor să înlocuiască treptat codul scris în c++ pentru Firefox cu o variantă în rust
|
#3
Posted 16 May 2015 - 13:28
championul, on 16 mai 2015 - 13:14, said:
M-am uitat și eu peste el. Tot citesc articole de vreo câteva luni, de când am aflat cu ce se mănâncă și m-am lămurit că nu e doar un „toy language”. Mozilla are planuri mari cu rust: din ce am înțeles, vor să înlocuiască treptat codul scris în c++ pentru Firefox cu o variantă în rust [ https://i.imgur.com/FkdGO6Y.png - Pentru incarcare in pagina (embed) Click aici ] Dar nu e doar mozilla, e un proiect open-source de care (dupa cum vezi in prezentatie) multe companii se intereseaza inca din prima zi, iar la lucrurile (benefice) pe care le aduce, prevad ca numarul celor interesati va creste. Edited by OriginalCopy, 16 May 2015 - 13:29. |
#4
Posted 16 May 2015 - 21:06
Anul trecut parca aveau si un REPL disponibil pentru Rust.
Sper sa apara din nou |
#5
Posted 17 May 2015 - 08:27
@OriginalCopy: După ce ai programat o perioadă în Rust și te-ai întors la programarea în c++ ai simțit vreo diferență în codul scris în c++ ? Ai început să scrii codul ținând cont de restricțiile pe care le are rust, făcându-l mai sigur ?
|
#6
Posted 17 May 2015 - 08:50
championul, on 17 mai 2015 - 08:27, said:
@OriginalCopy: După ce ai programat o perioadă în Rust și te-ai întors la programarea în c++ ai simțit vreo diferență în codul scris în c++ ? Ai început să scrii codul ținând cont de restricțiile pe care le are rust, făcându-l mai sigur ? Oricat ai tine cont, compilatoarele c/c++ nu pot egala rust, pentru ca nu au la dispozitie toate acele informatii. rustc te avertizeaza oricand calci stramb fara sa-ti dai seama, c/c++ nu o poate face. aloha2015, on 16 mai 2015 - 21:06, said:
Anul trecut parca aveau si un REPL disponibil pentru Rust. Sper sa apara din nou Edited by OriginalCopy, 17 May 2015 - 09:06. |
#7
Posted 17 May 2015 - 13:04
În esenþã implmenteazã actor model din Erlang (idee de vreo 30 de ani) într-un limbaj compilat, în contrast cu Erlang însuºi sau cu Go care ruleazã pe maºinã virtualã. Nu prea vine cu chestii noi...
OriginalCopy, on 16 mai 2015 - 13:08, said:
La aspectul performanta, genereaza codul binar via LLVM, deci este la fel de performant ca un cod C de o calitate comparabila (cu error checking facut curat). |
#8
Posted 17 May 2015 - 13:41
m3th0dman, on 17 mai 2015 - 13:04, said:
That's bullshit. Ori îi memory safe ori la fel de rapid ca C; însă nu ambele simultan. Bineinteles, la tooling, optimizari, etc, mai e loc de imbunatatiri, dar astea sunt detalii care vor fi slefuite pe parcurs si nu exista impedimente tehnice in a le implementa - e o chestiune de timp si efort investit. Un program C poate fi notabil mai rapid doar daca sare peste toate mecanismele de siguranta pe care compilatorul rust le face la compilare. Potentialul lui rust e mare, dar nu ma tem ca fanboii java (sau al oricarui alt limbaj) nu vor gasi orice oportunitate de a diminua partile bune ale lui rust, ridicand in slavi stop-the-world garbage collection. Stai linistit ca nu feeduiesc trollul, raspund spre binele celor mai slabi de inger care pot pune botul la prostii. Rust are un punct slab, dar acela nu e nici siguranta, nici performanta, si nici potentialul. |
#9
Posted 17 May 2015 - 14:21
Multumita smart-pointerilor din C++(11) si a Null-Object pattern, aproape ca uit ce-i aia management manual al memorie, avand in acelasi timp o solutie eficienta, determinista (fara GC), si, mai ales, putin cod dedicat problemei.
Apoi, un simplu typedef imi transforma orice structura de date intr-una immutable, ca in exemplul de mai jos: #include <iostream> #include <string> #include <memory> using namespace std; typedef shared_ptr<const string> immutable_string; int main() { immutable_string a = make_shared<string>("1234"); immutable_string b = make_shared<string>("12345"); immutable_string c = a; cout << "Before" << endl; cout << "a = " << *a << endl; cout << "b = " << *b << endl; cout << "c = " << *c << endl; cout << endl; //*a += 'c'; //compiler error //(*a)[1] = 'c';//compiler error a = b; b = make_shared<string>("9876"); cout << "After" << endl; cout << "a = " << *a << endl; cout << "b = " << *b << endl; cout << "c = " << *c << endl; return 0; } Quote
Before a = 1234 b = 12345 c = 1234 After a = 12345 b = 9876 c = 1234 Din punctele astea de vedere, ce imi ofera Rust incat sa ma motiveze sa invat un (cu totul) alt limbaj? |
#10
Posted 17 May 2015 - 15:04
dani.user, on 17 mai 2015 - 14:21, said:
Din punctele astea de vedere, ce imi ofera Rust incat sa ma motiveze sa invat un (cu totul) alt limbaj? Daca ai o echipa disciplinata tot timpul [1], care programeaza curat in C++ modern, cel mai probabil nu ai avea un beneficiu atat de mare incat sa merite efortul. Dar Quote Rust combines powerful and flexible modern programming constructs with a clear performance model to make program efficiency predictable and manageable. One important way it achieves this is by allowing fine-grained control over memory allocation through contiguous records and stack allocation. This control is balanced with the absolute requirement of safety: Rust’s type system and runtime guarantee the absence of data races, buffer overflow, stack overflow or access to uninitialized or deallocated memory. Practica ne spune ca, chiar daca poti compensa cu disciplina mentala lipsurile dintr-un compilator C++, greseli se intampla. Nu gasesc acum referinte, insa exista de exemplu o situatie in care toate bugurile gasite intr-un bug hunting day in Firefox nu ar fi existat daca ar fi fost scris in rust. [1] Acel "daca" si "tot timpul" sunt lucruri destul de marete; in practica e dificil asa ceva. |
|
#12
Posted 17 May 2015 - 15:21
OriginalCopy, on 17 mai 2015 - 13:41, said:
Potentialul lui rust e mare, dar nu ma tem ca fanboii java (sau al oricarui alt limbaj) nu vor gasi orice oportunitate de a diminua partile bune ale lui rust Edited by neagu_laurentiu, 17 May 2015 - 15:24. |
#13
Posted 17 May 2015 - 17:56
fantom007, on 17 mai 2015 - 15:21, said:
Rust asta are si framework pentru GUI ? limbaj de programare =/= ecosistem Deocamdata poti folosi frameworkuri existente, scrise in C++ (cum ar fi Qt). m3th0dman, on 17 mai 2015 - 13:04, said:
That's bullshit. Ori îi memory safe ori la fel de rapid ca C; însă nu ambele simultan. Oare? Daca muti tot efortul acesta la compilare, nu vad ce piedica ar fi in calea performantei la rulare. Cat despre C++, cred ca ai nevoie de 9 vieti, ca pisica, pentru a-i putea invata toate chichitele (nu doar un subset, fiindca o alta echipa poate folosi un cu totul alt subset al ecosistemului). |
#14
Posted 17 May 2015 - 19:59
aloha2015, on 17 mai 2015 - 17:56, said:
nu doar un subset, fiindca o alta echipa poate folosi un cu totul alt subset al ecosistemului Pentru asa ceva imi plac tehnologii gen COM. Fiecare isi dezvolta componentele cum doreste (in acest caz chiar in ce limbaj doreste), dar intre ele comunica intr-un mod stabilit/standardizat. Edited by dani.user, 17 May 2015 - 19:59. |
#15
Posted 17 May 2015 - 21:14
OriginalCopy, on 17 mai 2015 - 13:41, said:
Dat fiind un program in C memory-safe (cu zilioane de if-uri si else-uri si managementul manual al resurselor), un program scris in rust care satisface aceleasi cerinte functionale este aproximativ la fel de performant ca acel program in C. Vezi asta inclusiv pe blog, la unul din nenii care lucrează efectiv la Rust: http://pcwalton.blog...xt-of-rust.html "It's impossible to be "as fast as C" in all cases while remaining safe." aloha2015, on 17 mai 2015 - 17:56, said:
Oare? Daca muti tot efortul acesta la compilare, nu vad ce piedica ar fi in calea performantei la rulare. Cat despre C++, cred ca ai nevoie de 9 vieti, ca pisica, pentru a-i putea invata toate chichitele (nu doar un subset, fiindca o alta echipa poate folosi un cu totul alt subset al ecosistemului). Edited by m3th0dman, 17 May 2015 - 21:16. |
|
#16
Posted 18 May 2015 - 08:31
m3th0dman, on 17 mai 2015 - 21:14, said: N-are cum să fie la fel de performant ca şi C. Cine crezi că adaugă tot timpul check-uri de memorie ĂŽn C, ĂŽn special dacă vrea să obţină cod performant? Repet, ori e memory-safe ori e la fel de rapid ca C; ĂŽnsă nu ambele simultan. De fapt şi cu C++ e aproape imposibil. Vezi asta inclusiv pe blog, la unul din nenii care lucrează efectiv la Rust: http://pcwalton.blog...xt-of-rust.html "It's impossible to be "as fast as C" in all cases while remaining safe." Şi dacă eu aloc memorie dinamic? Cum muţi tot efortul acesta la compilare? Cred că înțelepciunea e rezervată oamenilor care nu citesc articole vechi de 5 ani doar ca să-și justifice prostiile. https://i.imgur.com/RsJiKgj.jpg Cum se face că toți au înțeles despre ce e vorba, numai Gică Contra nu? Bine că nu dă nimeni doi bani pe păreri neavizate. |
#17
Posted 18 May 2015 - 10:01
m3th0dman, on 17 mai 2015 - 21:14, said: "It's impossible to be "as fast as C" in all cases while remaining safe." Pai, vezi tu, ai ignorat o bucatica: "while remaining safe". Imi aduce aminte de trenul de mare viteza chinezesc. (Legenda spune ca) au luat un proiect german, i-au scos unele echipamente de siguranta a pasagerilor ca sa-l faca mai usor, apoi i-au batut pe germani la viteza maxima. Cam asa e si rationamentul tau cu C++. Comparatia trebuie sa fie intre Rust si C++ cu facilitati de siguranta echivalente |
#18
Posted 18 May 2015 - 18:52
OriginalCopy, on 18 mai 2015 - 08:31, said:
Cred că înțelepciunea e rezervată oamenilor care nu citesc articole vechi de 5 ani doar ca să-și justifice prostiile. https://i.imgur.com/RsJiKgj.jpg Cum se face că toți au înțeles despre ce e vorba, numai Gică Contra nu? Bine că nu dă nimeni doi bani pe păreri neavizate. Uite benchmark-uri recente C vs. Rust http://benchmarksgam.../u64q/rust.html Cu o singură excepţie C e mai rapid; excepţie care de altfel o găseşti şi dacă rulezi C vs. Java. La C++ sunt două excepţii: http://benchmarksgam...=rust&lang2=gpp Are Rust multe avantaje; dar viteza similară C sau C++ nu e unul dintre ele. Şi dacă nu ştii să răspunzi la probleme tehnice, nu răspunde; lasă atacurile personale deoparte. E penibil... OriginalCopy, on 18 mai 2015 - 08:31, said:
Bine că nu dă nimeni doi bani pe păreri neavizate. aloha2015, on 18 mai 2015 - 10:01, said:
Pai, vezi tu, ai ignorat o bucatica: "while remaining safe". Imi aduce aminte de trenul de mare viteza chinezesc. (Legenda spune ca) au luat un proiect german, i-au scos unele echipamente de siguranta a pasagerilor ca sa-l faca mai usor, apoi i-au batut pe germani la viteza maxima. Cam asa e si rationamentul tau cu C++. Comparatia trebuie sa fie intre Rust si C++ cu facilitati de siguranta echivalente Nu eu am făcut comparaţia cu C; am subliniat faptul că nu merită comparat cu C din punct de vedere al performanţei, deoarece n-are rost. Şi încă nu mi-ai răspuns marea inovaţie a Rust: cum asigură memory safety la compile time pentru memoria alocata dinamic... Edited by m3th0dman, 18 May 2015 - 18:55. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users