de asya f

Cum am trecut de la C ++ la Python: o schimbare conceptuală

Cum am trecut de la C la Python o
Fotografie de Pop & Zebra pe Unsplash

Introducere

Oamenii spun că codificarea în Python este atât de ușoară, încât chiar și un copil de 6 ani o poate face. Acesta a fost gândul pe care l-am avut în minte când am început să codez în Python la locul de muncă. În acel moment eram dezvoltator de software cu normă întreagă timp de 4 ani, scriind în principal în C ++ pe Linux, folosind în mare măsură biblioteca QT. Cu toate acestea, am scris la început un cod Python rău.

Au trecut aproximativ 3 ani de când am făcut această schimbare și cred că este un punct bun pentru a rezuma progresele pe care le-am făcut în acest timp. Când m-am uitat în urmă, nu mi-am schimbat doar limbajul de programare principal, ci mi-am schimbat și mediul de lucru și modul în care gândesc despre cod.

Nu voi intra în detaliile și diferențele dintre C ++ și Python, așa cum există numeroase resurse online, ci mai degrabă îmi va descrie propria experiență. Sper că această postare ar fi utilă pentru oamenii care trec prin aceeași tranziție pe care am făcut-o eu.

1611687068 480 Cum am trecut de la C la Python o
Salt de la C ++ la Python (Fotografie de Erik Dungan pe Unsplash)

C ++ face scufundări, Python face snorkeling

C ++ se simte ca să te scufunzi în misterele magice ale mării – este frumos, dar necesită mai multă învățare și practică și, în general, distanța pe care o parcurgi nu este atât de mare. Python seamănă cu snorkelingul – vezi frumusețea imediat ce îți bagi capul în apă, dar nu te duci mult mai jos. Continuați să înotați în ape puțin adânci și puteți parcurge cu ușurință o distanță mare. Din această descriere este clar că fiecare dintre aceste limbi ar trebui să fie folosite la locul și momentul potrivit.

ad-banner

Scufundarea în C ++ și supraviețuirea acestuia

C ++ este mai strict și te penalizează mai aspru cu privire la greșelile tale. Nu este o sesiune de codificare eficientă dacă nu ați avut o surpriză Eroare de segmentare cel puțin o dată. Prin urmare, necesită o înțelegere mai profundă a computerului, a compilatorului și a limbajului. Când mergeți mai adânc, puteți vedea și fi impresionat de lucruri frumoase, cum ar fi procesul de compilare și gestionarea memoriei.

Ca programator C ++, îmi păsa mai mult de modificările de sintaxă și de exemplele ciudate. Am știut întotdeauna unde am alocat memoria și cum o eliberez. Programele pe care le-am scris au fost mai independente, deoarece am preferat să știu ce se întâmplă în codul meu. Ideea principală a fost că acel cod pe care altcineva l-a scris era mai puțin fiabil, mai predispus la erori și ar putea să arunce în aer utilizarea memoriei.

Principalele mele instrumente de zi cu zi erau Vim cu numeroase pluginuri pentru scrierea codului, GDB pentru depanare și Valgrind pentru analiza utilizării și erorilor mele de memorie. Am compilat cu g ++ și am scris-o pe a mea Makefiles. Pe atunci, nu am simțit că un IDE mă va aduce beneficii, ci ar prefera să încetinească lucrurile și să mă facă să pierd contactul cu codul meu. Retrospectiv, m-am bazat foarte mult pe compilator pentru a-mi găsi erorile de tip.

1611687068 62 Cum am trecut de la C la Python o
Fotografie de Jakob Boman pe Unsplash

Înot superficial în Python

Unul dintre primele lucruri pe care trebuie să le învățați când treceți la Python este cum să renunțați – nu știți ce se întâmplă sub capotă, unde memoria este alocată și eliberată și este OK. De asemenea, sunteți încurajați să utilizați cod care a fost scris de alții, împachetat în biblioteci, deoarece vă economisește timp și vă ajută să codificați mai repede. Nu înseamnă că trebuie să scrieți codul care este lent pentru câini și se bazează pe biblioteci neîntreținute și nefuncționale, dar accentul este cu siguranță diferit.

Când am început să codez în Python, am scris mai întâi cod C ++ în Python. A funcționat, dar nu am obținut niciun beneficiu din limbă. Codificarea mea s-a îmbunătățit când am început să scriu într-un mod mai „pitonic” și am început să folosesc biblioteci și concepte mai avansate precum generatoare, decoratori și contexte.

Ca dezvoltator Python, tind să caut mai întâi biblioteca care rezolvă problema la îndemână. Python are un bogat ecosistem bibliotecar și comunitatea care o susține. Există biblioteci pentru a face practic orice. Iată câteva dintre ele la îndemână pe care le folosesc zilnic: NumPy pentru calcule numerice, OpenCV pentru viziunea computerizată, json pentru citirea fișierelor json, SciPy pentru calcule științifice, sqlite3 pentru baze de date.

Instrumentul meu de zi cu zi este PyCharm (da, un IDE) cu IdeaVim conecteaza. Am început să-l folosesc în principal datorită faptului că este un depanator puternic, care este mult mai prietenos decât depanatorul implicit Python, pdb. Folosesc și eu pip pentru instalarea bibliotecilor de care am nevoie. Nu-mi mai monitorizez utilizarea memoriei decât dacă trebuie să o fac cu adevărat.

1611687069 952 Cum am trecut de la C la Python o
Fotografie de Channey pe Unsplash

Câteva sfaturi practice

Dacă sunteți un dezvoltator C ++ și vă gândiți să începeți să codificați în Python, iată sfaturile mele pentru dvs.:

  • Scapă de vechile obiceiuri – Opriți utilizarea compilatorului C ++ ca depanator. Nu supra-optimizați utilizarea memoriei. Evitați să scrieți coduri de tip C ++. Și, în orice caz, încercați să nu vă bazați pe tipuri.
  • Obțineți noi obiceiuri – Începeți să utilizați biblioteci. Scrieți codul Pythonic (dar nu exagerați). Păstrați lucrurile lizibile. Folosiți concepte mai complexe, cum ar fi generatori / decoratori / contexte. Încercați PyCharm.
  • Utilizați bibliotecile comune C ++ și Python – Unele biblioteci C ++, precum OpenCV și QT, au o interfață Python. Este ușor să începeți să utilizați aceeași bibliotecă în Python decât să învățați o nouă bibliotecă de la zero.
  • Nu uita de originile tale – Uneori Python este prea lent sau nu este optim pentru sarcină. Acesta este momentul în care cunoștințele dvs. despre C ++ intră în funcțiune.ÎNGHIŢITURĂ, tipuri etc) pentru a utiliza codul C ++ în Python.

Linia de fund

Indiferent de ceea ce spun alții, trecerea la un limbaj de programare diferit, în special la un limbaj care este fundamental diferit de cel cu care sunteți obișnuiți, nu este ușor. Faceți-vă timp pentru a învăța, pentru a săpa, pentru a descoperi. Dar cel mai important, înțelegeți că nu numai limba ar trebui să se schimbe, ci și stilul de codare și metodologia de lucru.

Mult noroc!