Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Clasicul si modernul C++ - cine e interesat?
#217
Posted 23 April 2019 - 18:38
Nu inteleg conceptul de classic C++ si Modern C++. Sunt doua limbaje de programare diferite sau cum ? Nu este acelasi C++ ?
|
#219
Posted 23 April 2019 - 19:08
Iulius-Foyas, on 23 aprilie 2019 - 18:38, said:
Nu inteleg conceptul de classic C++ si Modern C++. Sunt doua limbaje de programare diferite sau cum ? Nu este acelasi C++ ?
Edited by MarianG, 23 April 2019 - 19:40.
|
#220
Posted 23 April 2019 - 19:35
Iulius-Foyas, on 23 aprilie 2019 - 18:38, said:
Nu inteleg conceptul de classic C++ si Modern C++. Sunt doua limbaje de programare diferite sau cum ? Nu este acelasi C++ ? Exact acesta e motivul pentru care am deschis acest topic. Prin C++-ul modern intelegem C++ asa cum e definit de standardele ISO C++11 si mai noi. Concluzia unanima este ca "it feels like a new language". Herb Sutter prezinta mai bine acest subiect: [ https://www.youtube-nocookie.com/embed/dJ-LfcVR61E?feature=oembed - Pentru incarcare in pagina (embed) Click aici ] Dar o sa ofer si o perspectiva personala. O sa dau cateva exemple, aspecte care nu mi-au placut la C++-ul clasic (primul meu contact cu C++ a fost inainte de standardizare) dar datorita carora mi-am reintors atentia la C++: - managementul memoriei - gratie move semantics, avem un set de smart pointeri care chiar fac ce trebuie. Nu pot sa subliniez destul cat de important e acest lucru. Intr-un proiect mai vechi s-a ajuns la scrierea propriei versiuni de smart pointeri, cu reference counting, tot tacamul. Bleah. - type deduction / auto. Ca sa nu fim gelosi pe Python. Si pentru a face programarea generica mai accesibila. - lambda si suportul pentru programare functionala, in general. Chiar si la nivel de baza, e mult mai elegant decat callback functions. Stim intrebarile de interviu cu pointeri la functii... OK, trebuie sa le stii daca tot ai trecut C++ in CV - dar vrei sa le folosesti? Exista o diferenta fundamentala - cum spunea Marian, un mod de gandire diferit - intre a implementa cum vrei sa se intample un lucru si ce vrei sa se intample. Sa zicem, intre a itera elementele unui container in scopul unei prelucrari oarecare, si a aplica un algoritm pe respectivul container. Edited by TS030, 23 April 2019 - 19:37. |
#221
Posted 23 April 2019 - 19:57
Face fix acelasi lucru pe care-l facea si inainte, cu o sintaxa mult mai urita. Modern C++
In plus trebuie sa scrii de te timpesti. In loc de vector<node*> children scrii vector<unique_ptr<node>> children Si asta nu-i tot, daca vrei sa fii pur ca un ingeras, nu folosesti using, ca cica n-ar fi bine si atunci devine: std::vector<std::unique_ptr<node>> children |
#222
Posted 23 April 2019 - 20:39
Quote
Face fix acelasi lucru pe care-l facea si inainte, cu o sintaxa mult mai urita. thread1 = std::thread([this] { std::sort(negative_spectrum.begin(), negative_spectrum.end(), [](auto val1, auto val2) -> bool { return val1.first < val2.first; }); }); thread2 = std::thread([this] { std::sort(positive_spectrum.begin(), positive_spectrum.end(), [](auto val1, auto val2) -> bool { return val1.first > val2.first; }); }); thread1.join(); thread2.join();Vezi ce-ti iese. Spectrul ala contine 'std::pair'. Cod autoplagiat de aici: https://github.com/a...ralOperator.cpp Plus ca neglijezi codul pe care trebuie sa-l scrii 'de tampesti', daca folosesti 'vector<node*>'. Nu scapi asa de simplu. Edited by parabellum, 23 April 2019 - 20:40. |
#223
Posted 23 April 2019 - 21:29
Mosotti, on 23 aprilie 2019 - 19:57, said: Face fix acelasi lucru pe care-l facea si inainte Mosotti, on 23 aprilie 2019 - 19:57, said: vector<node*> children Mosotti, on 23 aprilie 2019 - 19:57, said: vector<unique_ptr<node>> children Prima varianta este un memory leak waiting to happen, sau mai rau - in functie de ce se mai intampla cu pointerii aia. In cel mai simplu caz, in vector tii owning pointers, si trebuie la un moment dat sa apelezi o functie de cleanup. Si te trezesti ca nu stiu ce arunca o exceptie si nu ajungi in functia de cleanup. Varianta moderna pur si simplu functioneaza. Vectorul este singurul owner al obiectelor respective, totul se curata frumos cand iese din scop - indiferent de cum iese din scop. Asta-i o chestie de baza. Iar asta: Mosotti, on 23 aprilie 2019 - 19:57, said: Si asta nu-i tot, daca vrei sa fii pur ca un ingeras, nu folosesti using, ca cica n-ar fi bine Sigur ca folosesti using. Nu pui "using namespace std;" in headere, dar e foarte OK sa scrii ceva de genul: using std::string, std::vector, std::unordered_map;si chiar expune namespace-uri intregi, intr-un scop, chiar intr-o unitate de translatie. Edited by TS030, 23 April 2019 - 21:33. |
#224
Posted 24 April 2019 - 04:45
TS030, on 23 aprilie 2019 - 21:29, said:
Pe ce lume face acelasi lucru ca si ? Prima varianta este un memory leak waiting to happen, sau mai rau - in functie de ce se mai intampla cu pointerii aia. In cel mai simplu caz, in vector tii owning pointers, si trebuie la un moment dat sa apelezi o functie de cleanup. Si te trezesti ca nu stiu ce arunca o exceptie si nu ajungi in functia de cleanup. Varianta moderna pur si simplu functioneaza. Vectorul este singurul owner al obiectelor respective, totul se curata frumos cand iese din scop - indiferent de cum iese din scop. Asta-i o chestie de baza. Nu zic ca nu e bine ca s-a introdus asa ceva (desi programatorii C++ obisnuiau sa faca misto de limbajele cu memory management, ca ce ba ca ce destepti sintem noi ), zic doar ca forma in care s-a introdus e complet borita TS030, on 23 aprilie 2019 - 21:29, said:
Iar asta: e o absurditate. Sigur ca folosesti using. Nu pui "using namespace std;" in headere, dar e foarte OK sa scrii ceva de genul: using std::string, std::vector, std::unordered_map;si chiar expune namespace-uri intregi, intr-un scop, chiar intr-o unitate de translatie. parabellum, on 23 aprilie 2019 - 20:39, said:
Asa ti se pare tie. Ia incearca asta intr-o versiune veche de C++: |
#225
Posted 24 April 2019 - 09:28
Quote
Io mi-as face mai multe griji daca cumva chiar vrei sa folosesti threaduri acolo sau doar folosesti de dragul de a folosi chestii jgmechere. A, pentru ca tu nu poti s-o faci cu o sintaxa mai frumoasa in c++ mai vechi? Quote
Absurditate? Uita-te in codul lui dani.user de pe github. Uita-te in exemplul lui parabellum de mai sus. Probabil ca sint absurzi Edited by parabellum, 24 April 2019 - 09:33. |
#226
Posted 24 April 2019 - 10:10
Dar in general in ro, dpdv al joburilor pe c++, ce se face?
|
|
#227
Posted 24 April 2019 - 10:46
In Romania, prea putin. In Romania si in India se arunca munca de jos, in special.
|
#228
Posted 24 April 2019 - 12:16
TS030, on 23 aprilie 2019 - 19:35, said:
Exista o diferenta fundamentala - cum spunea Marian, un mod de gandire diferit - intre a implementa cum vrei sa se intample un lucru si ce vrei sa se intample. Sa zicem, intre a itera elementele unui container in scopul unei prelucrari oarecare, si a aplica un algoritm pe respectivul container. |
#229
Posted 24 April 2019 - 13:39
Sunt destui care stiu doar C++-ul clasic, si nici pe acela foarte bine... dar, daca stii C++-ul modern, eu zic ca-i cam greu sa nu-l intelegi pe cel clasic
Vezi prezentarea lui Herb Sutter. |
#230
Posted 24 April 2019 - 13:45
pai de ce nu de Bjarne insusi ?
[ https://www.youtube-nocookie.com/embed/fX2W3nNjJIo?feature=oembed - Pentru incarcare in pagina (embed) Click aici ] |
#231
Posted 24 April 2019 - 15:04
Chiar, de ce nu?
M-am gandit la "Not your father's C++" pentru ca prezinta ce aduce nou C++11 - prezentarea lui Bjarne acopera o arie mai larga, din cate tin minte arata mai putin cod dar este highly recommended++; si se potriveste perfect temei acestui topic. Apropo, mi-am adus aminte de o chestie - am cautat si-am gasit-o in Programming: Principles and Practice using C++ - zisa de Bjarne Stroustrup: Unless your name is Stroustrup, what I discuss here is not “your father’s C++.” |
|
#232
Posted 24 April 2019 - 19:03
IonutYo, on 24 aprilie 2019 - 10:10, said:
Dar in general in ro, dpdv al joburilor pe c++, ce se face? parabellum, on 24 aprilie 2019 - 10:46, said:
In Romania, prea putin. In Romania si in India se arunca munca de jos, in special.
Edited by MarianG, 24 April 2019 - 19:13.
|
#233
Posted 24 April 2019 - 22:05
In sapat santuri, spalat WCuri, aia mai buni spala farfurii... lasa ca te prinzi tu
|
#234
Posted 25 April 2019 - 06:50
parabellum, on 24 aprilie 2019 - 09:28, said:
Vezi ca o dai cotita. Da, vreau sa folosesc threaduri acolo. De ce sa nu sortez in paralel? Chiar si un procesor mai amarat, suficient de recent, are macar doua core-uri. https://en.wikipedia.../KISS_principle Deci care este scopul folositii thread-urilor asa cum le-ai folosit acolo? Sint cele doua spectrumuri suficient de mari incit sa conteze macar dpdv al performantei, in sensul de "vizibil"? Ai avut initial sortarea fara thread-uri si ai ajuns la concluzia ca ar fi nevoie de threaduri? Daca sint suficient de mari si oricum astepti dupa ele nu oricum ti se blocheaza UI-ul / threadul din care le apelezi, caz in care lucrurile se complica si trebuie sa faci un mecanism de callback ca sa urmaresti progresul, deci oricum nu mai poti face intr-o linie? |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users