Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
Ce a ajuns C++
Last Updated: Jun 02 2018 09:45, Started by
dani.user
, May 26 2018 12:58
·
0
#1
Posted 26 May 2018 - 12:58
Limbajul C++ e mult mai puternic decat au multi impresia. Cum puterea e adesea acompaniata de complexitate, standardele mai noi au contribuit considerabil la reducerea acestei complexitati.
Sa luam un exemplu: Quote As dori sa pot itera prin toate elementele produsului cartezian a n containere. Adica, daca am ('a', 'b', 'c', 'd') si (1, 2, 3), vreau sa pot afisa pe ecran: a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 d 1 d 2 d 3 O prima solutie ar folosi doua bucle for, dar ce fac daca vreau un cod mai generic, daca nu stiu in avans de cate bucle for am nevoie? C++-ul modern imi permite sa creez o functie foarte usor de folosit: int main() { char letters[] { 'a', 'b', 'c', 'd' }; std::vector<int> numbers{ 1, 2, 3 }; cartesianProduct([](char letter, int number) { std::cout << letter << ' ' << number << '\n'; }, letters, numbers); } Ii ofer containerele si ce sa faca, iar ea imi va chema acel callback pentru fiecare set de valori. Se observa si ca ma ales containere diferite pentru litere si numere, functiei nu ii pasa. E atat de generica, incat ii pot da usor inca un container: int main() { char letters[] { 'a', 'b', }; std::vector<int> numbers{ 1, 2, 3 }; std::string strings[] { "abc", "def" }; cartesianProduct([](char letter, int number, const std::string& str) { std::cout << letter << ' ' << number << ' ' << str << '\n'; }, letters, numbers, strings); } Quote
a 1 abc a 1 def a 2 abc a 2 def a 3 abc a 3 def b 1 abc b 1 def b 2 abc b 2 def b 3 abc b 3 def Cum arata codul efectiv? Nu foarte frumos, dar usor de inteles
Spoiler
Oare ce assembly va genera acest cod? Suprinzator, daca efectuez un calcul constant, compilatorul merge pana intracolo incat sa introduca constanta rezultata in assembly: https://godbolt.org/g/kV6CpM Edited by dani.user, 26 May 2018 - 14:39. |
#2
Posted 26 May 2018 - 13:17
Eu niciodata nu am reusit sa inteleg C, C++. Stiu VB, VB.NET, am incercat si C++, dar nu am reusit sa inteleg...neuronii mei refuzau sa faca logica.
|
#4
Posted 26 May 2018 - 14:10
Totusi, sa ne intoarcem la ce plus plus
Despre AI, Orwel, si cum se contureaza viitorul in industrie avem alte topice. Discutia a fost mutata: https://forum.softpe...eligenta-umana/ Edited by dani.user, 26 May 2018 - 14:41. |
#5
Posted 26 May 2018 - 14:11
dani.user, on 26 mai 2018 - 12:58, said: int main() { char letters[] { 'a', 'b', 'c', 'd' }; std::vector<int> numbers{ 1, 2, 3 }; cartesianProduct([](char letter, int number) { std::cout << letter << ' ' << number << '\n'; }, letters, numbers); } import itertools for element in itertools.product(["a", "b", "c", "d"],[1, 2, 3]): print(element) |
#6
Posted 26 May 2018 - 14:37
Python are avantajul ca poate amesteca tipurile de date. Dar il costa timp si memorie.
|
#7
Posted 26 May 2018 - 16:28
#9
Posted 26 May 2018 - 18:38
Dar este. Eu am trait si traiesc cu el (si nu numai). Si de foame n-am murit.
|
#10
Posted 26 May 2018 - 18:55
|
#11
Posted 26 May 2018 - 18:58
Pai depinde ce intelegi tu prin succes. Am dat la clienti aplicatii, le merge, mai cer si ceva nou, eu traiesc din activitatea asta etc.
Edited by neagu_laurentiu, 26 May 2018 - 19:00. |
#12
Posted 26 May 2018 - 19:42
dani.user, on 26 mai 2018 - 12:58, said:
Limbajul C++ e mult mai puternic decat au multi impresia. Arta ingineriei software este sa folosesti uneletele potrivite pentru taskul potrivit. Nu exista un limbaj de programare ca virgula panaceu universal, acesta este un mit. |
#13
Posted 27 May 2018 - 07:29
N-as numi codul ala ”usor de inteles”, mai degraba “backwards fucked”
|
#14
Posted 27 May 2018 - 17:52
Aș zice să nu mai amestecăm noțiuni; cartesianProduct() este o funcție de bibliotecă și putea foarte bine să nu existe; deasemenea acea funcție o poți crea singur indiferent ce limbaj de programare folosești; poți crea propria bibliotecă de funcții pe care să le folosești de câte ori ai nevoie de ele.
|
#15
Posted 27 May 2018 - 17:56
|
#16
Posted 31 May 2018 - 22:00
Bravo, ai descoperit template meta programming.
C++14-17 are tot felul de alte chestii mult mai interesante din punctul meu de vedere. Și C++20 o să aibă chiar chestii pe care le are Java de vro 25 de ani. De genul string.beginsWith() etc. În fine, nu scula e importantă ci cum o folosești. Am văzut cod c++ scris varză dar am văzut și mega elegant. |
#17
Posted 01 June 2018 - 17:49
blotunga, on 31 mai 2018 - 22:00, said:
Bravo, ai descoperit template meta programming. C++14-17 are tot felul de alte chestii mult mai interesante din punctul meu de vedere. Și C++20 o să aibă chiar chestii pe care le are Java de vro 25 de ani. De genul string.beginsWith() etc. "Auzi hai sa cream si noi un fel de JVM ca sa poate rula codul oriunde, facandu-l cu adevarat portabil si nu semantic-portabil" =)) |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users