Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Unde e recomandat sa ma cazez in ...

Descarcator de supratensiune tip 2

ping digi?

Reparare "șanțuri&#...
 De ce i se zice Mariei "Stapa...

Colet valoare Londra București

BMW seria 3 rulat vs SsangYong Ko...

Share abonament Netflix
 Cum pot sa fac rost de un negativ...

Lant Bicicleta

Un designer artist: Raymond Loewy

ATS din contactor modular
 Parere apartament ~150k

Limitare la 100mb/s

Altercație

Cartonașe și stickere t...
 

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

#235
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,454
  • Înscris: 06.01.2010
E un singur spectru. Parte pozitiva si parte negativa.

Quote

nu oricum ti se blocheaza UI-ul / threadul din care le apelezi
Nu, pentru ca calculele sunt intr-un thread diferit.

Hai, ca e clar deja, nu esti in stare si arunci cu heringi rosii. Renunta.

Edited by parabellum, 25 April 2019 - 08:41.


#236
IonutYo

IonutYo

    Member

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

 parabellum, on 24 aprilie 2019 - 22:05, said:

In sapat santuri, spalat WCuri, aia mai buni spala farfurii... lasa ca te prinzi tu Posted Image
vai domn' director, aveti umilele mele scuze, n-am vrut sa va enervez.

Edited by IonutYo, 25 April 2019 - 08:53.


#237
Mosotti

Mosotti

    Geniu umil

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

 parabellum, on 25 aprilie 2019 - 08:40, said:

E un singur spectru. Parte pozitiva si parte negativa.

Nu, pentru ca calculele sunt intr-un thread diferit.

Hai, ca e clar deja, nu esti in stare si arunci cu heringi rosii. Renunta.
Nu e nici un herring. Pay attention. Ma refeream ca sint doi vectori, nu ma intereseaza ce reprezinta ei

N-ai raspuns la intrebarea esentiala:

Ai avut initial sortarea fara thread-uri si ai ajuns la concluzia ca ar fi nevoie de threaduri?

Numaru 2. Spui ca "Nu, pentru ca calculele sunt intr-un thread diferit.". Ce vrei sa spui?

Ai threadul de GUI, apoi pornesti alt thread si in ala apelezi functia care face alte doua threaduri? Pentru ca daca o apelezi din threadul de GUI si ai join tot blocat ramine pina se termina threadurile alea. Motivul pentru care tu nu observi este ca se termina foarte repede, deci probabil n-ai nevoie de threaduri acolo :)

#238
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,477
  • Înscris: 10.08.2005
va citesc apoi stau si ma intreb de ce nu puteti fi mai ingaduitori unii cu altii

#239
parabellum

parabellum

    Senior Member

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

Quote

Ai avut initial sortarea fara thread-uri si ai ajuns la concluzia ca ar fi nevoie de threaduri?
Am inteles, nu esti in stare de implementarea aia, nu are rost sa insisti.

Quote

Pentru ca daca o apelezi din threadul de GUI si ai join
Speculezi. Ai ipoteze contrare faptelor. O simpla aruncare de privire pe intrarea pe blog despre proiect te-ar fi scutit de inventii de-astea.

Habar nu ai despre ce e vorba acolo, dar iti dai cu parerea. Tipic.

#240
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Nu speculez nimic, te-am intrebat ceva frumos si nu esti in stare sa raspunzi.

Ok, have it your way. M-am uitat pe blog. Citez

"NRGComputationThread is the class that implements the computation thread for NRG, the calculations run in a different thread to avoid locking the UI."

Bun, deci e fix cum am spus mai sus ("speculind", ipotezele sint exact identice cu faptele). Din GUI creezi un thread pentru calculat (NRGComputationThread), din el apelezi NRGAlgorithm:Calculate() care apeleaza in cele din urma functia din care ai pus tu exemplul cu threadurile, care mai creeaza inca 2 threaduri.

Inca ramine intrebarea:

Ai avut initial sortarea fara thread-uri si ai ajuns la concluzia ca ar fi nevoie de threaduri?

Nu inteleg de ce ti-e atit de greu sa raspunzi, "da, inainte de a face cu threaduri dura x si a durat y" sau "nu" sau "nu, mi s-a parut ca ar fi o idee buna" sau whatever.

De asemenea, vad ca si tu folosesti bine mersi pointeri raw, vezi sa nu iti sara in cap domnul cu C++ modern. :first:

#241
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Suntem foarte ingaduitori cand avem cu cine. Asta e aria Profesional Zone, sectiunea Programming, topic despre C++-ul modern. Nu zona de varsat frustrari.

Iata, inca o aberatie trantita asa, ca sa fie:

 Mosotti, on 25 aprilie 2019 - 10:55, said:

De asemenea, vad ca si tu folosesti bine mersi pointeri raw, vezi sa nu iti sara in cap domnul cu C++ modern. :first:
E OK sa folosesti pointeri raw, cat timp sunt non owning.

#242
TS030

TS030

    Guru Member

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

 IonutYo, on 25 aprilie 2019 - 08:52, said:

vai domn' director, aveti umilele mele scuze, n-am vrut sa va enervez.
Glumea omul, uita-te la fata lui - toata numa' zambet Posted Image

Ideea e - presupun - ca proiectele interesante nu prea vin in Romania. Avem totusi embedded, automotive, gaming - chestii d-astea. Si cel putin in unele cazuri se foloseste C++-ul modern.
Din pacate in tara lui "merge si-asa" se prefera de multe ori solutia lenesului - lasa sa faca altii chestii complicate. Aplicatii care sa faca lucruri utile, intr-un mod eficient? Lasa sa le faca altii.

Apropo, am revazut prezentarea lui Herb Sutter si-am dat de:
"The going word at Facebook is that 'reasonably written C++ code just runs fast', which underscores the enormous effort spent at optimizing [censored] and [censored] code. Paradoxically, C++ code is more difficult to write than in other languages, but efficient code is a lot easier." - Andrei Alexandrescu

Edited by TS030, 25 April 2019 - 12:18.


#243
parabellum

parabellum

    Senior Member

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

Quote

Bun, deci e fix cum am spus mai sus
Nu e.

Quote

o apelezi din threadul de GUI si ai join tot blocat ramine

Edited by parabellum, 25 April 2019 - 12:51.


#244
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Nici macar nu te obosesti sa citesti ce zic, citesti numai ce vrei tu Posted Image

Quote

Ai threadul de GUI, apoi pornesti alt thread si in ala apelezi functia care face alte doua threaduri? Pentru ca daca o apelezi din threadul de GUI si ai join tot blocat ramine pina se termina threadurile alea. Motivul pentru care tu nu observi este ca se termina foarte repede, deci probabil n-ai nevoie de threaduri acolo

Partea boldata e ce ai tu, fix cum am presupus. Partea urmatoare era despre cazul in care apelai direct.

Revenind la ce spuneai
"Chiar si un procesor mai amarat, suficient de recent, are macar doua core-uri."

Deja ai 4 threaduri...

#245
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,454
  • Înscris: 06.01.2010
https://en.wikipedia...iki/Red_herring Cam asta faci. Nu o sa-ti explic care e situatia cu un astfel de program utilizat in mod realist (se retin mii de stari, spectrul poate ajunge si la ordin de sute de mii, calculele pe cluster pot dura saptamani), in detaliu, o sa-ti dau alt exemplu la care n-ar trebui s-o dai cotita nici tu.

Quote

fix cum am presupus.
Ai presupus ca se face join si se blocheaza UIul, ceea ce e delir contrar realitatii.

Quote

Deja ai 4 threaduri...
Asa. Si? Continua, hai sa vedem cat poti sa te faci de ras.

Pentru ca tot nu-ti pica fisa, pofim alta autoplagiere:
tasks[t] = std::async(std::launch::async, [t, samples, jitter, nx, ny, &camera, &scene, &randomEngines, distMax]()->std::vector<std::vector<Color>>

https://github.com/aromanro/RayTracer

Un calcul tipic cu asa ceva merge la sute de mii de raze/pixel, pentru imagini 4k.

Acum, sa-ti vedem codul mult mai simplu cu c++ stil vechi. Fara divagari aiurea.

Edited by parabellum, 25 April 2019 - 13:30.


#246
Mosotti

Mosotti

    Geniu umil

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

 parabellum, on 25 aprilie 2019 - 13:21, said:

Ai presupus ca se face join si se blocheaza UIul, ceea ce e delir contrar realitatii.
Mai citeste o data ce am zis...


 parabellum, on 25 aprilie 2019 - 13:21, said:

Asa. Si? Continua, hai sa vedem cat poti sa te faci de ras.

Pentru ca tot nu-ti pica fisa, pofim alta autoplagiere:
tasks[t] = std::async(std::launch::async, [t, samples, jitter, nx, ny, &camera, &scene, &randomEngines, distMax]()->std::vector<std::vector<Color>>

https://github.com/aromanro/RayTracer

Un calcul tipic cu asa ceva merge la sute de mii de raze/pixel, pentru imagini 4k.

Acum, sa-ti vedem codul mult mai simplu cu c++ stil vechi. Fara divagari aiurea.
Nu ma intereseaza alt exemplu. Vorbim de primul exemplu. Negi ca la un moment dat ai 4 threaduri sau ce? Te-am intrebat frumos care a fost avantajul folosirii threadurilor la sortarea aia si cum ai determinat ca ar trebui sa folosesti threaduri in threaduri, in loc sa ai doar threadul de gui si threadul de calcul.

Omule, se vede in codul ala ca nu prea ai experienta serioasa in programare, n-ar trebui sa fii atit de batzos... Nu ai idee despre chestii minime de OOP, gen incapsulare. De ce ai facut astea publice in NRGAlgorithm?

std::vector<Operator*> staticOperators;
std::vector<SpectralOperator*> spectralOperators;

De ce ar fi cit se poate de preferabil sa nu ai asa ceva si care sint cazurile in care se accepta variabile publice in clase?

Si alta intrebare: de ce e o idee proasta a avea asa ceva in NRGAlgorithm

Quote

void SetResultsRetriever(ResultsRetrieverInterface *setd) { passData = setd; }

si cum s-ar putea face mai bine?

#247
parabellum

parabellum

    Senior Member

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

Quote

Vorbim de primul exemplu.
Ok, inca nu ai venit cu codul mult mai simplu in C++ 'vechi'. Astept cu interes.

Quote

Omule, se vede in codul ala ca nu prea ai experienta serioasa in programare, n-ar trebui sa fii atit de batzos... Nu ai idee despre chestii minime de OOP, gen incapsulare. De ce ai facut astea publice in NRGAlgorithm?
Din absenta totala a codului tau, ignoranta ta e totala. De fapt, din ce comentezi pe aici, ai cunoastere negativa, ceea ce e mai rea decat ignoranta.

Potim, explicatia e pe blog, de multa vreme:

Quote

Since I’m not paid for them, do not expect commercial quality. I’ll write them fast and if they appear to work, it’s good enough for me. By the time I expose them in a blog post, I expect them to have plenty of bugs. Maybe I’ll fix them later. Maybe I’ll improve them. There is no warranty of any kind. To ease the work I might not write them as they should be written, on purpose. For example I’ll let class members exposed as public to be able to access them even if they shouldn’t be public. Anyway, that does not mean they will not work or that they will crash all over the places. It just means I can do much better but I’m not sure I want to spend the additional time for that. Often I’m using the IDE to create the class skeleton. The class might have a destructor even if it does not need it. Very often the rule of three (actually now the rule of five) will not be respected, although it’s a very good practice. Many objects in the projects will not be copied/assigned/moved around, so those constructors and operators are not really needed.

Edited by parabellum, 25 April 2019 - 14:20.


#248
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Lol. Bine ca stii tu. Sau macar ca esti dispus sa inveti cite ceva :first:

#249
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,454
  • Înscris: 06.01.2010
Ok, hai s-o spun mai pe scurt, ca poate se gaseste vreun fraier sa-ti creada batutul de campii:

Proiectele alea sunt facute in timpul liber. Primele trei proiecte le-am scris in paralel, in vreo doua trei saptamani, lucru catre vreo doua ore, seara. Pe blog, intre prima si a doua postare e un interval de sub o saptamana, apoi de vreo 3 zile pentru urmatoarea, cand deja aveam nrg functional.

Open-hub estimeaza (total aiurea) aproximativ cate un 'an effort' pentru fiecare. Exemplu: https://www.openhub..../estimated_cost (adica pentru primele trei, cam trei ani in total).

Sigur ca pentru a avea o asemenea productivitate, a trebuit sa renunt la ceva. Ala-i cod cu care eu produc functionalitate in cateva ore, pe care o produc altii in luni sau ani (sau altii niciodata, pentru ca pur si simplu nu-i duce capul). N-as avea niciodata pretentia ca e perfect. Problema este ca daca te apuci sa faci pe puristul si sa zicem vrei sa respecti de-astea: https://github.com/i...reGuidelines.md iti ia o gramada de timp. Nu sunt dispus sa lucrez pe gratis atat. Pur si simplu. Nu sunt prea dispus nici macar sa lucrez de patru ori mai mult, suplimentar, pentru a mai adauga 20% la functionalitate, desi aia e mult mai importanta.

Si apropo de lunile alea, nu o zic eu. Salt la proiectul DFT, de urmarit cursurile, la un moment dat explica ala acolo: 'months of development'. Pentru echipe intregi.

Cat despre criticile tale, esti un anonim. Dupa ce incerci sa faci, nu prea sugerezi o inteligenta deosebita. Asa ca valoarea lor e fix egala cu zero (de fapt, negativa, dupa cum explicam mai sus). Tu, versus unul care apreciaza proiectul: http://www.cs.sandia.gov/~rmuller/ Lead la pyquante, Sandia Laboratories. Se poate verifica, a dat o steluta la proiect. Cine esti tu, din nou? Serios, daca iti vedeam codul miraculos pe GitHub, poate ca discutam altfel.

PS M-am prins care-i 'problema' ta cu block-ul (de fapt nu e o problema, dar na, asa cred unii care n-au idee cum functioneaza threadurile alea), am modificat ca sa ai si tu o placere. Modificarea mai importanta e cu async-ul, ca ala are bunul obicei sa faca thread pooling, dar si aia conteaza doar in masura in care se folosesc stari putine. In mod realist, se folosesc multe. Programul ala e o 'jucarie', pe de-ala serios am scazut timp de rulare de la ore la secunde pe run simplu, de test (din nou, calculele realiste pot dura saptamani, pe cluster). Avand treaba cu de-astea: https://en.wikipedia...an_coefficients Sunt sigur ca se gaseau 'puristi' care sa comenteze si acolo, desi codul lor nici nu facea ce se intentiona, ce sa mai vorbim de performanta.

#250
adamsd

adamsd

    Member

  • Grup: Members
  • Posts: 611
  • Înscris: 16.04.2019

 parabellum, on 25 aprilie 2019 - 15:01, said:

Cat despre criticile tale, esti un anonim. Dupa ce incerci sa faci, nu prea sugerezi o inteligenta deosebita. Asa ca valoarea lor e fix egala cu zero (de fapt, negativa, dupa cum explicam mai sus). Tu, versus unul care apreciaza proiectul: http://www.cs.sandia.gov/~rmuller/ Lead la pyquante, Sandia Laboratories. Se poate verifica, a dat o steluta la proiect. Cine esti tu, din nou? Serios, daca iti vedeam codul miraculos pe GitHub, poate ca discutam altfel.
Vezi ca comiti: https://en.wikipedia...wiki/Ad_hominem , tu fiind in cautare de: https://en.wikipedia..._from_authority Dar nici aia nu stii sa cauti, ca nu stii ce-i aia programator real, experimentat.

Cat despre "Lead la pyquante" e de notorietate ca musterii ce se ocupa de "stiinta" si "cercetare" sunt muci la programare.

Iar codul acelui musteriu confirma. Iei spre exemplu cod de aici: https://github.com/r...2/basis/cgbf.py si-l bagi aici: http://www.pylintonline.com/pylint
Si vezi cate balarii are codul, inclusiv greseli de non-programator ce se apuca sa utilizeze literele alfabetului pe post de variabile din plin si la plesneala.

Da nah, voi va puteti bate pe umeri intre voi... :D

#251
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Ce-ar fi ca voi doi sa va deschideti un topic separat, in care sa va luptati cu programatorii, sa le disecati codul si sa faceti diverse afirmatii fara a fi capabili sa aratati o varianta mai buna?
Sunt convins ca veti avea foarte multi doritori.

In acest topic, thread si async (care-s doar varful aisbergului) reprezinta niste aditii importante la C++, si elemente ale C++-ului modern. Multithreading portabil si facil.

#252
parabellum

parabellum

    Senior Member

  • Grup: Senior Members
  • Posts: 2,454
  • Înscris: 06.01.2010
Vezi ca raspunsul a urmat unor atacuri la persoana. Sau alea sunt ok? Dar ale tale?
Cat despre autoritate, nu sunt o autoritate. Sunt simplu unul care poate furniza verificari experimentale ca a facut ceva functional. Spre deosebire de celalalt. Spre deosebire si de tine, cel mai probabil.

Quote

Cat despre "Lead la pyquante" e de notorietate ca musterii ce se ocupa de "stiinta" si "cercetare" sunt muci la programare.
E de notorietate printre ignorantii care habar nu au sa implementeze ce implementeaza aia, se uita ca boii la poarta noua. Astept sa ma contrazici cu maretul tau cod care face ceva similar. Pot sa fac pariu ca n-o sa reusesti.

Quote

Iar codul acelui musteriu confirma. Iei spre exemplu cod de aici
Nu e codul 'acelui musteriu'. 'Lead' inseamna altceva decat crezi tu ca inseamna. Stiu, code monkeys pot sa ia cod de undeva, sa-l bage altundeva si sa emita prostii.

Acum, uimeste-ne tu cu ceva mai bun. Opera ta.

Si dupa aia, vorbim cu cei de la Sandia sa-l dea afara si sa te angajeze pe tine, tu evident esti genial si stii programare la perfectie:

Quote

National Strategic Computing Initiative
Worked on the NSCI with DOD, DOE, NSF, OSTP, OMB, NIST, IARPA. Led workshops exploring impact of foreign HPC on national and economic security. Initiated programs developing novel hardware and software paradigms for heterogeneous computing.

Edited by parabellum, 25 April 2019 - 16:19.


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