C++ vs. Java
Last Updated: Jun 26 2010 09:37, Started by
m3th0dman
, Jun 01 2010 20:30
·
0
#19
Posted 04 June 2010 - 20:18
Nu sunt un fanboy Java, dar cu Java am inteles cel mai bine OOP. Probabil nu mi-au picat mie in mana cartile corecte la timpul potrivit :-)
Oricum ideea e ca C++ sau Java, chiar nu conteaza. Pune-ti problema asa: in ce limbaj pot invata principiul X de programare? Dupa ce ai inteles principiile si conceptele, toate limbajele sunt la fel. Iar in acest punct presupun ca ti-ai dat seama ca una e limbajul, alta sunt librariile (partea deja scrisa care iti pune la dispozitie functionalitati deja existente). Deci nu te fixa prea mult pe toceala de functii, clase, etc. Invata principiile, insusesteti-le si apoi jongleaza cu ele (indiferent de limbaj). A jongla implica ca poti lucra, modifica si adapta ca si cum acele concepte ar fi fost inventate de tine. Uita-te cum e structura claselor prin unele biblioteci java, vezi ce e prin Qt, fa paralele cu boost. Sintetizeaza cat de mult poti, si obisnuieste-te sa citesti documentatii (abstracte, ale API-urilor framework-urilor / bibliotecilor care-ti apar prin cale). Asa, la sfarsitul facultatii o sa fii in stare sa te adaptezi la orice noi cerinte, limbaje, biblioteci sau framework-uri. Fa totusi cateva proiecte cu unele biblioteci sau framework-uri, ca sa vezi cum functioneaza. Deci eu as zice sa incepi cu Java, e frumos, dar sa nu te concentrezi numai pe el. Mai fa un excurs si prin STL-ul din C++ (si templates in general), apoi mai arunca un ochi deci si pe templates, apoi revino si pe la groovy. Uita-te prin jur si vezi ce e posibil. La un moment dat vei vedea ca toate drumurile se unesc, vei putea folosi Qt in Java, sau vei putea folosi JNI. Granitele dintre ce inveti sunt chiar fuzzy. Bottom line, din nou: alege ceva (limbaj/framework) ca sa inveti concepte cu el, nu ca sa inveti limbajul efectiv. Ah, si arunca un ochi si pe un limbaj functional precum erlang. Din nou, de dragul de a face cunostinta cu concepte noi. Addendum Si inca ceva: la marile X. vs. Y. raspunsul e mereu: depinde. Fiecare are puterile si slabiciunile sale, si depinde mereu de prioritatile proiectului. Nu stiu ce inseamna pentru tine "a alege", dar daca inveti sa zicem ce e o clasa si un obiect in Java, cat crezi iti va lua sa inveti sintaxa si-n C++? Eu zic ca cateva ore. Deci nu stiu in ce masura putem vorbi despre o alegere. |
#20
Posted 04 June 2010 - 20:31
Eu recomand orice limbaj de programare ca sa inveti cum se gandeste in acest mediu. Este bine sa incepi cu proceduralele pentru ca la un moment dat, metodele obiectelor instantiate reprezinta acest lucru, doar modul de adresare si de alocare a unei proprietati sau functii se face diferit.
In legatura cu cele doua limbaje, depinde foarte mult ce vrei sa faci mai departe, experienta o sa capeti cand o sa lucrezi intr-o companie, la scoala o sa ai numai lucrari sintetice, demostrative. Oricum, daca urmaresti o cariera spre programare embedded iti recomand sa aprofundezi C, cu pointeri, operatii la nivel de bit si altele. Daca vrei sa lucrezi in comerical, aplicatii mobile, etc, iti recomand Java. Ca si medii, eu lucrez pe cele de la Microsoft (Visual C si Visual J##), NetBeans, IAR, PICC. Deasemenea iti recomand sa tragi un ochi si peste UML. |
#22
Posted 05 June 2010 - 23:26
@OriginalCopy & Tom_Cat: Thanks for the info.
Aș mai fi și eu curios de alte cărți recomandate. mafy, on 5th June 2010, 18:23, said: Imi recomandati va rog niste carti bune de OOP in C++? Ce-am selectat eu: The C++ Programming Language de Stroustrup. (de referință mai mult decât de învățat) Effective C++ de Scott Meyers C++ Complete Reference de Herbert Schildt Thinking in C++ de Bruce Eckel Data Structures and Program Design in C++ de Robert L. Kruse, Alexander J. Ryba și cartea pe care tre' s-o aibă orice programator Introduction to Algorithms (e în pseudocod) de CLRS Edited by m3th0dman, 05 June 2010 - 23:46. |
#23
Posted 06 June 2010 - 17:55
Dau si eu un plus mare pentru "Introduction to Algorithms" de CLRS. Orice inginer software care se respecta ar trebui sa cunoasca macar 50% din conceptele prezentate acolo.
|
#25
Posted 07 June 2010 - 13:37
Și e chiar ieftină; atât numai că nu-i ultima ediție.
Originala, ultima ediție: http://www.okian.ro/...duct_id=1457620 Pe siteul respectiv găsești cam orice carte vrei (în engleză). |
#26
Posted 08 June 2010 - 20:57
Hm, prețurile de acolo mi se par foarte mari... Cartea aia de exemplu e 160 de lei pe Amazon.co.uk. La care se adaugă ~15 lei per carte și ~25 per livrare. La ei este 240 de lei (plus livrarea). :(
Dacă vrei să iei 3-4 cărți deja e o diferență. Alea cu care am încercat eu la Amazon veneau 240 de lei + 4x15 + 25 = 325 de lei. La Okian vin 495 (fără livrare). E vreo taxă de care nu știu eu? LE: Acum am văzut și termenul de livrare: 2-4 săptămîni. Ha. Cred că ceva nu miroase bine. Edited by wirespot, 08 June 2010 - 21:13. |
#27
Posted 09 June 2010 - 13:20
Daca le iei de pe Amazon uk nu se adauga nici o taxa in plus. Tot ce am comandat pana acum a ajuns in fix o saptamana. Baietii aia de la Okian cred ca le comanda de pe amazon si le vand mai departe :lol:
|
#28
Posted 11 June 2010 - 15:52
m3th0dman, on 1st June 2010, 22:09, said: N-am scris cod low-level în C. Mare lucru nu știu despre compilatorul C. Deci per-total nu-l prea știu. Cât de adânc se poate. (presupun că până în a te "juca" cu codul din compilator) Atunci avantajele si dezavantajele tale cu pointerii sunt practic nule. Intai gandeste-te CE-TI PLACE SA FACI, ma refer la tipuri de proiecte, cum spunea si andrei_0. Oricum practica este cel mai bun profesor.Eu terminasem facultatea si aveam impresia ca stiu C/C++, desi facusem o groaza de aplicatii si proiecte in facultate. Baietii de la prima firma unde m-am angajat mi-au demonstrat contrariul. Cat despre carti, cele propuse de methodman sunt pentru avansati. Cel putin cartea lui Andrei Alexandrescu, desi foarte buna, necesita cunostinte avansate si se axeaza foarte mult pe template-uri. Scott Meyers are 2 carti numite "Effective", foarte bune,dar tot asa, pentru avansati, iar Thinking in C++ mie nu mi-a placut niciodata. Eu nu am invatat doar dintr-o carte, ci din mai multe. Iar tutorialele de pe net sunt EXTREM de utile + google, care face minuni. Am citit carti bune de incepator, dar care nu explicau raspunsuri la intrebari simple, ca aceasta. Repet un lucru: daca nu lucrezi cu tehnologiile pe care le cunosti, le uiti cat ai zice "peste", deci invata-le "din mers" si culege ce-i mai bun din fiecare.Daca un proiect se face mai repede cu Python, de ce sa creezi o ditai aplicatia cu Java sau VC++? Edited by Taw, 11 June 2010 - 16:02. |
|
#29
Posted 11 June 2010 - 16:12
#30
Posted 11 June 2010 - 19:00
Exemplu: screen scraping se face mai repede cu mechanize + beautifulsoup. Nu e un avantaj inerent limbajului python, ci tine de bibliotecile deja existente, da. Si totusi in C/C++ sau Java ai avea mai mult de munca, pe cand python (de data asta limbajul python) vine cu list comprehension out of the box.
Edited by OriginalCopy, 11 June 2010 - 19:00. |
#31
Posted 11 June 2010 - 19:29
#32
Posted 11 June 2010 - 20:46
Taw, on 11th June 2010, 16:52, said: Atunci avantajele si dezavantajele tale cu pointerii sunt practic nule. Intai gandeste-te CE-TI PLACE SA FACI, ma refer la tipuri de proiecte, cum spunea si andrei_0. Eu nu am invatat doar dintr-o carte, ci din mai multe. Iar tutorialele de pe net sunt EXTREM de utile + google, care face minuni. Am citit carti bune de incepator, dar care nu explicau raspunsuri la intrebari simple, ca aceasta. Chestia-i că eu nu lucrez într-o firmă, să-mi dau seama de tipuri de proiecte. Iar cele de la facultatea până acum au fost exclusiv C deci n-am ce compara (am mai avut și în VHDL, dar asta n-are legătură). Asta-i fără îndoială așa. Cea mai recomandată/folosită carte pentru începători în C, dă răspuns la întrebările respective. Edited by m3th0dman, 11 June 2010 - 20:47. |
#33
Posted 26 June 2010 - 09:37
Daca faci abia in anul urmator POO, o sa fii surprins cat de putina programare faci la materia aia... Noi cel putin la curs si examen am avut doar diagrame UML. Important e sa stapanesti conceptele POO (proprietati si metode private/publice/statice, mostenire, polimorfism etc), limbajul de programare se invata relativ repede cand iti propui sa faci un proiect concret :)
O idee buna ar fi sa iei o carte cu "Design patterns" (C++ sau Java - care o gasesti sau care iti place mai mult), ca pe de o parte sunt explicate foarte bine conceptele POO, pe de alta parte iti arata concret cum se lucreaza cu ele. Have fun! |
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users