Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Dade, dade

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 Merita un Termostat Smart pentru ...

Sfat achizitie MTB Devron Riddle

Problema mare cu parintii= nervi ...

switch microtik
 Permis categoria B la 17 ani

Sfaturi pentru pregatirea de eval...

Crapaturi placa

cum imi accesez dosarul electroni...
 Momentul Aprilie 1964

Sursa noua - zgomot ?

A fost lansat Ubuntu 24.04 LTS

Pareri apartament in zona Berceni?
 

Clasicul si modernul C++ - cine e interesat?

* * * * * 2 votes
  • This topic is locked This topic is locked
252 replies to this topic

Poll: Who's afraid of the big bad C++? (19 member(s) have cast votes)

Cunosti limbajul C++?

  1. Da, am invatat C++ acum x ani (e.g. in liceu/facultate) (12 votes [63.16%] - View)

    Percentage of vote: 63.16%

  2. Nu, si nici nu ma intereseaza (1 votes [5.26%] - View)

    Percentage of vote: 5.26%

  3. Nu (sau foarte putin), dar as fi dispus sa invat (2 votes [10.53%] - View)

    Percentage of vote: 10.53%

  4. Da, sunt familiarizat cu C++-ul modern (4 votes [21.05%] - View)

    Percentage of vote: 21.05%

Esti curios sa inveti C++? (mai mult decat stii in acest moment)

  1. Nu, nu ma intereseaza un limbaj invechit, in care trebuie sa aloc/dealoc singur memoria (3 votes [15.79%] - View)

    Percentage of vote: 15.79%

  2. Nu, prefer sa invat un alt limbaj, si anume... (2 votes [10.53%] - View)

    Percentage of vote: 10.53%

  3. C++-ul modern? Suna interesant, cum as putea sa aflu mai multe? (7 votes [36.84%] - View)

    Percentage of vote: 36.84%

  4. Incerc sa tin pasul cu evolutia rapida a C++-ului. (7 votes [36.84%] - View)

    Percentage of vote: 36.84%

Ce parere ai despre evolutia C++?

  1. C++ evolueaza? (7 votes [36.84%] - View)

    Percentage of vote: 36.84%

  2. C++ evolueaza intr-o directie gresita, in special... (1 votes [5.26%] - View)

    Percentage of vote: 5.26%

  3. Prefer un limbaj dezvoltat de la zero, cu tot impactul asupra codului existent (3 votes [15.79%] - View)

    Percentage of vote: 15.79%

  4. Cu fiecare standard, C++ devine un limbaj mai bun. Imi place in special... (8 votes [42.11%] - View)

    Percentage of vote: 42.11%

Vote

#217
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
Nu inteleg conceptul de classic C++ si Modern C++. Sunt doua limbaje de programare diferite sau cum ? Nu este acelasi C++ ?

#218
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
sunt doua moduri de gandire diferite

#219
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004

 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++ ?
Chestie de marketing. Noul Ariel scoate de 7 ori mai multe pete. Acum cu aroma de levantzika. Ce nu se spune este ca petele cu adevarat nasoale tot ramin...

Edited by MarianG, 23 April 2019 - 19:40.
off-topic


#220
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

 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++ ?
Multumesc pentru intrebare (serios!).
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. Posted Image
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
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Face fix acelasi lucru pe care-l facea si inainte, cu o sintaxa mult mai urita. Modern C++ Posted Image

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 Posted Image si atunci devine:

std::vector<std::unique_ptr<node>> children

Posted Image

#222
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,453
  • Înscris: 06.01.2010

Quote

Face fix acelasi lucru pe care-l facea si inainte, cu o sintaxa mult mai urita.
Asa ti se pare tie. Ia incearca asta intr-o versiune veche de C++:
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
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012

 Mosotti, on 23 aprilie 2019 - 19:57, said:

Face fix acelasi lucru pe care-l facea si inainte
Pe ce lume

 Mosotti, on 23 aprilie 2019 - 19:57, said:

vector<node*> children
face acelasi lucru ca si

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

Edited by TS030, 23 April 2019 - 21:33.


#224
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004

 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.
Face acelasi lucru, bre. Nu e nici un memory leak waiting to happen, decit daca e programatorul incompetent, right? Dar tu ziceai ca esti competent :w00t:

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 :lol: ), zic doar ca forma in care s-a introdus e complet borita :w00t:

 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.
Absurditate? Uita-te in codul lui dani.user de pe github. Uita-te in exemplul lui parabellum de mai sus. Probabil ca sint absurzi :lol:

 parabellum, on 23 aprilie 2019 - 20:39, said:

Asa ti se pare tie. Ia incearca asta intr-o versiune veche de C++:
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. :lol:

#225
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,453
  • Înscris: 06.01.2010

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.
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.
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
Probabil ca ne deranjeaza mult mai putin decat crezi tu ca deranjeaza. Daca chiar trebuie sa repet ceva tip care arata complicat, pot sa folosesc de exemply typedef ca sa am ceva simplu. Nu e mare branza.

Edited by parabellum, 24 April 2019 - 09:33.


#226
IonutYo

IonutYo

    Member

  • Grup: Members
  • Posts: 285
  • Înscris: 30.07.2013
Dar in general in ro, dpdv al joburilor pe c++, ce se face?

#227
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,453
  • Înscris: 06.01.2010
In Romania, prea putin. In Romania si in India se arunca munca de jos, in special.

#228
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

 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.
Daca am un proiect scris in C++ classic cu dialecte pronuntate de C si trebuie sa modific anumite chestii si mai mult trebuie sa implementez noi chestii , eu trebuie sa cunosc foarte bine classic C++ si Modern C++ ?

#229
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,443
  • Înscris: 10.08.2005
pai de ce nu de Bjarne insusi ?
[ https://www.youtube-nocookie.com/embed/fX2W3nNjJIo?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

#231
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
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
IonutYo

IonutYo

    Member

  • Grup: Members
  • Posts: 285
  • Înscris: 30.07.2013

 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.
si munca aia de jos in ce consta?

Edited by MarianG, 24 April 2019 - 19:13.
quote gresit


#233
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,453
  • Înscris: 06.01.2010
In sapat santuri, spalat WCuri, aia mai buni spala farfurii... lasa ca te prinzi tu :)

#234
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004

 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.
N-o dau cotita, intrebarea e serioasa. Pentru ca in programare lucrurile se fac cu un scop, nu pentru ca se poate.

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

Neurochirurgie minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate