C++ este ușor odată ce cunoști PHP [closed] (Inginerie software, Limbaje De Programare, Php, C++)

gprime a intrebat.
a intrebat.

Eram la serviciu săptămâna trecută și unul dintre „dezvoltatorii noștri principali” (care a spus că a programat C++ înainte, dar nu-l cred) vorbea despre C++ și despre cum echipa noastră de dezvoltatori care cunosc doar PHP nu ar avea deloc probleme în a învăța C++.

Prima mea reacție a fost de pur șoc, apoi am râs la comentariul său. M-a privit urât și l-am întrebat dacă vorbește serios. Eu, personal, programez mult C și C++, mai ales pentru proiecte școlare și concursuri de programare. Nu cred că este deloc ca în PHP. L-am întrebat de ce sunt la fel și nu a putut să-mi dea un răspuns (nu știe deloc C++ mă gândeam eu). Apoi i-am spus „OK, da, amândouă folosesc acolade și au instrucțiuni condiționale. Dar în C++ trebuie să vă faceți griji cu privire la gestionarea memoriei și toate funcțiile încorporate ușor de utilizat în PHP, de exemplu funcțiile array, nu există în C++. De fapt, trebuie să cunoști algoritmii din spatele lor.”. Există câteva biblioteci C++ grozave (STL, Boost) care vă vor face viața mai ușoară, dar C++ este ca PHP, haideți!

Dacă știi deja un limbaj, îți va fi puțin mai ușor să înveți un altul, deoarece vei fi deja bun la conectarea booleană (if this then that) sau la bucle, dar C++ este mult mai mult decât PHP. Cum ar fi faptul că trebuie să compilați limbajul și că trebuie să definiți efectiv ce tip de variabilă folosiți și întoarceți din funcții.

Ce părere aveți?

EDIT: De fapt, ceea ce a spus a fost „C++ nu este cu mult diferit de PHP”.

Comentarii

    29

  • C++ este ușor odată ce cunoști asamblorul. –  > Por spoulson.
  • Eu cred că este o prostie. Să te angajezi într-o discuție cu cineva care este convins de contrariul este zadarnic. Poate că a merge pe hiphop ar fi un compromis frumos pentru a evita țipetele inutile: developers.facebook.com/blog/post/358 –  > Por back2dos.
  • @spoulson: Chiar așa? Atunci ce te pregătește în asamblor pentru șocul programării șablon-meta? –  > Por sbi.
  • Cred că este cam invers – PHP este ușor după ce ai învățat C++ sau C, mai ales pentru că sintaxa este similară și funcțiile de bază ale bibliotecii cel puțin par familiare. –  > Por tcrosley.
  • Am văzut titlul acestui topic și la început am fost așa: O.O Apoi am fost așa: -.- –  > Por Kaz Dragon.
7 răspunsuri
EricBoersma

Ca cineva care a trecut de la PHP la C++ (deși doar C++ limitat) când am început să scriu C++, m-am gândit adesea „Wow, asta seamănă foarte mult cu PHP”. Când te gândești că PHP însuși este scris în C și, ori de câte ori dezvoltatorii s-au confruntat cu o decizie de proiectare pe care nu au putut să o rezolve la nivel intern, răspunsul final a sfârșit aproape întotdeauna prin a fi „Fă-o ca în C++”, nu este chiar o afirmație atât de absurdă.

Răspunsul tău despre gestionarea memoriei și sortarea matricei/ceva nu are nicio șansă. Acesta nu este un răspuns PHP/C++, ci un răspuns C++ cu zero biblioteci față de aproape orice alt limbaj popular existent. Mi se pare că puneți această întrebare pentru a convinge oamenii să fie de acord cu dumneavoastră – că oamenii care scriu C++ sunt mult mai buni decât cei care scriu PHP.

Personal, cred că este un punct de vedere prostesc care nu va duce decât la decizii proaste din partea ta.

Comentarii

  • PHP este scris în mare parte în C, IIRC. –  > Por Nathan Osman.
  • @George Edison: Aveți dreptate, greșeala mea. Îmi voi actualiza postarea pentru a reflecta acest lucru. –  > Por EricBoersma.
  • Cum concluzionează faptul că PHP este scris în C că au ceva în comun?  > Por Karim Agha.
  • @ColeJohnson, dacă voi scrie un interpretor LISP în C, va însemna că aceste două limbaje vor avea mai multe în comun?  > Por Karim Agha.
  • @KarimA. exact. La asta mă refeream și eu. –  > Por Cole Johnson.
Jas

Sună ca un tip „team lead” (de asemenea, un dezvoltator PHP ca și al tău) care mi-a spus că C++ „e nașpa, ia șabloanele de exemplu”. Oricât de mult aș încerca să nu o fac, replici ca acelea întotdeauna întorc infamul bozo cu mine.

Prietenul tău are o problemă URIAȘĂ aici, și anume este atât de încrezător că el face nu știe cât de mult nu știe.

Să spui că învățarea C++ este ușoară odată ce știi PHP este ca și cum ai spune că odată ce știi să conduci un Segway, ar fi destul de ușor să înveți să conduci un Airbus A-380, pentru că, „știi, ambele au niște roți pe care să stai în picioare și sunt controlate de plăci de circuite integrate avansate”.

Comentarii

  • Ați nimerit-o. „nu știe cât de multe nu știe.” Acesta este un bug pentru majoritatea începătorilor în C++. –  > Por Armando.
  • Eh, nu știu cât de mult sunt de acord cu asta. Practic, cunosc aproximativ 95% din ciudățeniile PHP. Am reușit să învăț Java și Python într-o singură zi. M-am implicat direct în câteva proiecte opensource C++ și am reușit să rezolv câteva cereri de extragere cu ușurință și cu un cod fără erori. Lucrul care m-a copleșit au fost indicatorii, șabloanele și tipurile de variabile aparent nesfârșite. Sunt capabil să fac lucruri foarte simple în C++. Pentru a-l stăpâni, mă văd petrecând cam de 3 ori mai mult timp (6 luni) decât mi-a luat să stăpânesc PHP.Motivul pentru care am putut să scriu în C++ a fost similaritatea de sintaxă…  > Por r3wt.
  • @r3wt Ei bine, practic tocmai mi-ai întărit argumentele. Așa cum am spus, mulți începători în C++ habar nu au cât de multe nu știu. Să sari în căruță și să produci niște cod într-o săptămână nu este o problemă atât de mare pentru majoritatea programatorilor cel puțin oarecum competenți. Cu toții încercăm un nou limbaj din când în când. Și putem sări pe el destul de repede, deoarece o mulțime de limbaje imperative au multe asemănări sintactice. Totuși, a spune că ai putea deveni un maestru în C++ în 6 luni, fără supărare, arată că nici tu nu știi cât de mult nu știi. –  > Por Jas.
  • @Jas estimarea a fost 18 luni 3 * 6 = 18 –  > Por r3wt.
  • @r3wt – Îmi pare rău, a sunat ca și cum ți-a luat în total 2 luni pentru a învăța PHP, ceea ce nu m-ar mira, deoarece PHP este o glumă de limbaj. Oricum, haideți să ne apucăm de treabă și să-mi spuneți cum vă descurcați cu stăpânirea C++ peste 18 luni 🙂 –  > Por Jas.
Roger Pate

Există programarea ca abilitate independentă de orice limbaj, iar apoi există cunoașterea construcțiilor, bibliotecilor și convențiilor unui anumit limbaj. Poți fi excelent la prima și nașpa la a doua (pentru un anumit limbaj) sau invers.

Fără să știm nimic despre echipa dvs., nu putem spune dacă ar fi bună la C++. Și există diverse moduri de a scrie C++, de asemenea, deoarece unii oameni se blochează în urmă cu 20 de ani, fără stdlib, boost, alte biblioteci sau chiar fără caracteristicile compilatorului pe care toți ceilalți le consideră de la sine înțelese.

Cu toate acestea, există o mulțime de probleme cu C++ și, ca cineva care îl iubește și îl urăște în același timp, dar care încă îl are pentru cel mai mare număr pe SO, voi fi primul care va recunoaște că este cu adevărat nașpa uneori. Dar, din nou, cu cât știi mai multe despre un limbaj, cu atât mai mult afli cât de nașpa este. Dacă există vreun instrument în care te consideri un expert, dar nu poți numi cel puțin 10 moduri în care este stricat, inadecvat sau pur și simplu îl urăști… 🙂

Martijn Verburg

Se pare că ai chemat un bluffer (mă refer la faptul că nu a putut să-și susțină afirmația) :). Acest lucru nu este un lucru rău, atâta timp cât este făcut politicos, cu respect și cu merite tehnice.

Comentarii

  • Da, la început am crezut că face o glumă, motiv pentru care am râs… –  > Por gprime.
Larry Coleman

Cred că „dezvoltatorul tău principal” ar trebui să se gândească la o altă linie de muncă. Serios, totuși, această postare pe Usenet pe care am văzut-o acum un an despre C++ spune totul:

Nu știu ce părere ai tu, dar pe mine mă sperie un limbaj în care copierea stării de la un obiect la altul este atât de complicată. Până acum, bănuiesc că cel puțin o duzină sau două de programatori au contribuit cu ceva nou la această discuție. Dacă este nevoie de atât de mulți programatori pentru a scrie un simplu operator de atribuire, gândiți-vă cât de complicat trebuie să fie scrierea unui cod care să facă ceva semnificativ!

Comentarii

  • Nu am nici o idee de ce oamenii complică copierea în C++: T& operator=(T other) { swap(*this, other); return *this; } friend void swap(T &a, T &b) { using std::swap; swap(a.each_member, b.each_member); } – Roger Pate
  • @Roger: Ce este în funcția swap? Trebuie să fie o funcție separată? Dacă da, de ce? –  > Por Larry Coleman.
  • @Roger: Nu am de gând să încerc să vă explic. ceva în Haskell unui programator obișnuit, mai ales nu monadele, pe care le-aș folosi în mod normal pentru gestionarea stării. –  > Por Larry Coleman.
  • în compania noastră, programatorii proști sunt promovați în poziții de conducere pentru că oamenii de afaceri cred că nu vor mai programa. Programatorii buni sfârșesc întotdeauna prin a demisiona din această cauză și nu-și pot da seama de ce pleacă toți. Politici de birou stupide… –  > Por gprime.
  • @Larry: C++ suferă de/se bucură de același tip de probleme pe care le-a avut Lisp. Utilizatorii săi rareori doresc doar cel mai simplu răspuns pentru a rezolva problema de astăzi. Mai degrabă, ei dezvoltă practic o filozofie de programare care se ocupă de clase întregi de probleme. Timp de ani de zile, Lisp a avut dezbateri similare: Ar trebui să cons cons argumentele sale? (și/sau ar trebui const să își evalueze argumentele?), delimitarea lexicală vs. dinamică a domeniului, este bine să tratăm nil ca fiind echivalent cu false?, etc. Toate acestea (și multe altele) au fost dezbătute la extraordinar lungime – prin comparație, dezbaterile despre C++ sunt destul de banale. –  > Por Jerry Coffin.
user7007

Ca o primă idee, ar putea să se refere la stilurile sintactice. Da, există câteva diferențe în ceea ce privește modul în care funcționează anumite lucruri, cum ar fi concatenarea șirurilor de caractere și array-urile, dar acestea sunt destul de ușor de învățat. Apoi, există pointeri și lucruri de această natură, dar, încă o dată, dacă aveți cunoștințe solide despre conceptele de bază ale CS, atunci nu ar trebui să fie o problemă. Nu cred că afirmația este atât de departe de adevăr, dar nu spun în niciun caz că ar fi ușor. C++ este un limbaj greu de abordat.

Yitzhak

De ce toată lumea se plânge mereu de managementul memoriei în php? Doar pentru că limbajul încearcă să facă garbage collection pentru tine, nu înseamnă că este adecvat și că poți să uiți de el. Memoria pe care o folosiți în PHP contează. Și de aceea folosiți funcții precum memory_get_usage(). Doar pentru că PHP este foarte iertător și permite compilarea unor practici îngrozitoare, nu înseamnă că ar trebui să folosiți practici îngrozitoare în scrierea codului. Cea mai mare diferență pe care o văd între php și C++ din punct de vedere sintactic este că PHP are o sintaxă mai puțin brutal de urâtă. Dacă comparați PHP și C++ în scenariile în care ați folosi PHP, acestea sunt foarte asemănătoare. Trebuie doar să vă amintiți să vă încărcați bibliotecile în C++, ceea ce mi se pare enervant. Totuși, C++ face apel la nevoia mea interioară de a controla fiecare detaliu al execuției.