Kaip perėjau iš C ++ į „Python“: konceptualus pakeitimas

Įvadas

Žmonės sako, kad koduoti „Python“ yra taip paprasta, kad net 6 metų vaikas gali tai padaryti. Tai buvo mintis, kurią turėjau omenyje, kai pradėjau koduoti „Python“ darbe. Tuo metu 4 metus buvau visą darbo dieną dirbantis programinės įrangos kūrėjas, daugiausia rašiau „C ++“ sistemoje „Linux“, labai naudodamasis „QT“ biblioteka. Tačiau iš pradžių parašiau blogą „Python“ kodą.

Praėjo maždaug 3 metai nuo to laiko, kai padariau šį pakeitimą, ir manau, kad tai yra geras taškas apibendrinant pažangą, kurią pasiekiau per šį laiką. Žvelgdamas atgal, aš pakeičiau ne tik pagrindinę programavimo kalbą, bet ir darbo aplinką bei požiūrį į kodą.

Nesigilinsiu į išsamią informaciją ir skirtumus tarp C ++ ir Python, nes internete yra daugybė šaltinių, bet aprašysiu savo patirtį. Tikiuosi, kad šis įrašas bus naudingas žmonėms, išgyvenantiems tą patį perėjimą, kurį ir aš.

„C ++“ nardo, „Python“ snorkeluoja

„C ++“ jaučiasi tarsi paniręs į stebuklingas jūros paslaptis - ji yra graži, tačiau reikalauja daugiau mokymosi ir praktikos, o apskritai atstumas, kurį įveikiate, nėra toks didelis. „Python“ yra šiek tiek panašus į snorkeling - grožį pamatai iškart, kai tik įkiši galvą į vandenį, bet žemyn daug nenusileisi. Plaukiate sekliuose vandenyse ir galite lengvai įveikti ilgą atstumą. Iš šio aprašymo aišku, kad kiekviena iš šių kalbų turėtų būti vartojama tinkamoje vietoje ir laiku.

Nerti į C ++ ir išgyventi

C ++ yra griežtesnė ir griežčiau baudžia už klaidas. Tai nėra efektyvi kodavimo sesija, jei bent kartą nepadarėte nuostabos dėl segmentavimo . Todėl tam reikia gilesnio kompiuterio, kompiliatoriaus ir kalbos supratimo. Kai įsigilinsite, tikrai galėsite pamatyti ir būti sužavėti gražiais dalykais, pavyzdžiui, kompiliavimo procesu ir atminties valdymu.

Būdamas C ++ programuotoju, man labiau rūpėjo sintaksės patobulinimai ir keisti pavyzdžiai. Aš visada žinojau, kur skiriu atmintį ir kaip ją atleidžiu. Parašytos programos buvo labiau atskiros, nes norėjau žinoti, kas vyksta mano kode. Pagrindinė mintis buvo ta, kad kodas, kurį parašė kažkas, buvo mažiau patikimas, labiau linkęs į klaidas ir gali susprogdinti jūsų atminties naudojimą.

Mano pagrindiniai kasdieniai įrankiai buvo „ Vim“ su daugybe įskiepių kodui rašyti, GDB derinimui ir „ Valgrind “ analizuoti atminties naudojimą ir klaidas. Aš sukūriau su „ g ++“ ir parašiau savo „ Makefiles“ . Tada nejaučiau, kad IDE man būtų naudinga, bet norėtų sulėtinti reikalus ir priversti prarasti ryšį su savo kodu. Žvelgdamas atgal, aš rėmiausi kompiliatoriumi, norėdamas rasti savo tipo klaidas .

Seklus plaukimas „Python“

Vienas iš pirmųjų dalykų, kurį reikia išmokti pereinant prie „Python“, yra tai, kaip jį paleisti - nežinote, kas vyksta po gaubtu, kur paskirstoma ir atleidžiama atmintis, ir viskas gerai. Taip pat raginama naudoti kodą, kurį parašė kiti, supakuoti į bibliotekas, nes tai taupo jūsų laiką ir padeda greičiau koduoti. Tai nereiškia, kad reikia rašyti kodą, kuris yra lėtas ir reikalingas neprižiūrimoms ir neveikiančioms bibliotekoms, tačiau dėmesys tikrai skiriasi.

Pradėjęs koduoti „Python“, pirmiausia „Python“ parašiau C ++ kodą. Tai pasiteisino, bet iš kalbos nesinaudojau jokia nauda. Mano kodavimas pagerėjo, kai pradėjau rašyti labiau „pythonišku“ būdu ir pradėjau naudoti bibliotekas bei pažangesnes sąvokas, tokias kaip generatoriai, dekoratoriai ir kontekstai.

Kaip „Python“ kūrėjas, aš pirmiausia linkęs ieškoti bibliotekos, kuri išspręstų nagrinėjamą problemą. „Python“ turi turtingą bibliotekų ekosistemą ir ją palaikančią bendruomenę. Yra bibliotekų, kuriose praktiškai viskas daroma. Štai keletas naudingų tie, kad aš naudoju kasdien: NumPy už skaičiavimų, OpenCV už kompiuterio viziją, JSON skaityti JSON failus, scipymoksliniams skaičiavimams, sqlite3 duomenų bazėms.

Kasdienis mano įrankis yra „ PyCharm“ (taip, IDE) su „ IdeaVim“ papildiniu. Pradėjau jį naudoti daugiausia dėl to, kad tai galingas derintuvas, kuris yra daug draugiškesnis nei numatytasis „Python“ derintuvas „ pdb“ . Taip pat naudoju „ pip“ , kad galėčiau įdiegti reikalingas bibliotekas. Nebežiūriu atminties naudojimo, nebent to tikrai turiu.

Keletas praktinių patarimų

Jei esate „C ++“ kūrėjas ir svarstote pradėti koduoti „Python“, čia yra jūsų patarimas:

  • Atsikratykite senų įpročių - nustokite naudoti C ++ kompiliatorių kaip derintuvą. Neperoptimizuokite atminties naudojimo. Venkite rašyti į C ++ panašų kodą. Visais būdais stenkitės nepasikliauti tipais.
  • Įgykite naujų įpročių - pradėkite naudotis bibliotekomis. Parašykite „Pythonic“ kodą (bet nepersistenkite). Laikykite daiktus skaitomus. Naudokite sudėtingesnes sąvokas, tokias kaip generatoriai / dekoratoriai / kontekstai. Išbandykite „PyCharm“.
  • Naudokite C ++ ir Python bendras bibliotekas - kai kurios C ++ bibliotekos, pvz., „OpenCV“ ir „QT“, turi „Python“ sąsają. Lengva pradėti naudoti tą pačią biblioteką „Python“, o ne mokytis naujos bibliotekos nuo nulio.
  • Nepamirškite savo kilmės - kartais „Python“ yra tiesiog per lėtas arba nėra optimalus užduočiai atlikti. Tai yra tada, kai jūsų C ++ žinios prasideda. Yra daug būdų ( SIP , ctypes ir kt.), Kaip naudoti C ++ kodą „Python“.

Apatinė eilutė

Nesvarbu, ką sako kiti žmonės, pereiti prie kitos programavimo kalbos, ypač iš esmės kitokios nei jūs esate įpratusi, nėra lengva. Skirkite laiko mokytis, įsigilinti, atrasti. Bet svarbiausia, supraskite, kad turėtų pasikeisti ne tik kalba, bet ir jūsų kodavimo stilius bei darbo metodika.

Sėkmės!