Kuidas ma läksin C ++ - st Pythonisse: kontseptuaalne muudatus

Sissejuhatus

Inimesed ütlevad, et Pythonis kodeerimine on nii lihtne, et isegi 6-aastane saab sellega hakkama. See oli mõte, mida mõtlesin, kui hakkasin tööl Pythonis kodeerima. Olin sel ajal 4 aastat olnud täiskohaga tarkvaraarendaja, kirjutades Linuxis peamiselt C ++ keeles, kasutades tugevalt QT-teeki. Kirjutasin siiski alguses halva Pythoni koodi.

Sellest lülitist on möödunud umbes 3 aastat ja ma arvan, et see on hea punkt selle aja jooksul tehtud edusammude kokkuvõtmiseks. Tagasi vaadates ei muutnud ma ainult oma peamist programmeerimiskeelt, vaid muutsin ka töökeskkonda ja viisi, kuidas koodist mõtlen.

Ma ei süvene C ++ ja Pythoni üksikasjadesse ja erinevustesse, kuna veebis on palju ressursse, vaid kirjeldan pigem enda kogemusi. Loodan, et see postitus oleks kasulik inimestele, kes läbivad sama üleminekut nagu mina.

C ++ sukeldub, Python snorgeldab

C ++ tunneb, et sukeldub mere maagilistesse saladustesse - see on küll ilus, kuid nõuab rohkem õppimist ja harjutamist ning üldiselt pole läbitud vahemaa nii suur. Python sarnaneb veidi snorgeldamisega - näed ilu kohe, kui pead vette pistad, kuid palju alla ei lähe. Ujute jätkuvalt madalates vetes ja saate hõlpsalt pikki vahemaid läbida. Selle kirjelduse põhjal on selge, et kõiki neid keeli tuleks kasutada õiges kohas ja kellaajal.

C ++ sukeldumine ja selle üleelamine

C ++ on rangem ja karistab teid teie vigade eest karmimalt. See pole efektiivne kodeerimisseanss, kui te pole vähemalt korra üllatavat segmendiviga saanud . Seetõttu nõuab see arvuti, kompilaatori ja keele sügavamat mõistmist. Sügavamale minnes näete tõesti ilusaid asju, näiteks kompileerimisprotsessi ja mäluhaldust, ja saate neile muljet avaldada.

C ++ programmeerijana hoolisin rohkem süntaksipigistustest ja veidratest näidetest. Teadsin alati, kuhu mälu eraldasin ja kuidas seda vabastasin. Kirjutatud programmid olid eraldiseisvamad, kuna eelistasin teada, mis mu koodi sees toimus. Peamine idee oli see, et keegi teine ​​kirjutatud kood oli vähem usaldusväärne, rohkem vigadele kalduv ja võib teie mälukasutust õhku lasta.

Minu peamised igapäevased tööriistad olid Vim arvukate pistikprogrammidega koodi kirjutamiseks, GDB silumiseks ja Valgrind minu mälukasutuse ja vigade analüüsimiseks. Koostasin g ++ abil ja kirjutasin oma Makefiles . Siis ma ei tundnud, et IDE mulle kasuks tuleks, vaid pigem aeglustaks asju ja paneks mind oma koodiga kontakti kaotama. Tagantjärele tuginesin oma tüübivigade leidmisel suuresti kompilaatorile .

Madal ujumine Pythonis

Üks esimesi asju, mida peate Pythonile üleminekul õppima, on see, kuidas lahti lasta - te ei tea, mis toimub kapoti all, kuhu mälu eraldatakse ja vabastatakse, ja see on korras. Samuti soovitatakse teil kasutada teiste kirjutatud koodi, mis on raamatukogudesse pakitud, kuna see säästab teie aega ja aitab kiiremini kodeerida. See ei tähenda, et peate kirjutama koera jaoks aeglase koodi, mis tugineb hooldamata ja mittetoimivatele raamatukogudele, kuid tähelepanu on kindlasti erinev.

Kui hakkasin Pythonis kodeerima, kirjutasin kõigepealt Pythonis C ++ koodi. See toimis, aga ma ei saanud keelest mingit kasu. Minu kodeerimine paranes, kui hakkasin kirjutama Pythoni moodi ning hakkasin kasutama teeke ja arenenumaid mõisteid, nagu generaatorid, dekoraatorid ja kontekstid.

Pythoni arendajana kipun kõigepealt otsima raamatukogu, mis lahendab antud küsimuse. Pythonis on rikas raamatukogude ökosüsteem ja kogukond, mis seda toetab. On raamatukogusid, kus saab teha praktiliselt kõike. Siin on mõned käepärased, mida ma igapäevaselt kasutan: NumPy arvuliste arvutuste jaoks, OpenCV arvutinägemise jaoks, Json jsoni failide lugemiseks, SciPyteaduslike arvutuste jaoks sqlite3 andmebaaside jaoks.

Minu igapäevane tööriist on PyCharm (jah, IDE) koos IdeaVimi pistikprogrammiga. Hakkasin seda kasutama peamiselt tänu sellele, et see on võimas silur, mis on palju sõbralikum kui Pythoni vaikesiluti pdb . Samuti kasutan pipi vajalike teekide installimiseks. Ma ei jälgi enam oma mälukasutust, kui ma seda tõesti ei pea.

Mõned praktilised näpunäited

Kui olete C ++ arendaja ja kaalute Pythonis kodeerimise alustamist, siis siin on minu nõuanne teile:

  • Vabanege vanadest harjumustest - lõpetage C ++ kompilaatori kasutamine silurina. Ärge optimeerige mälukasutust üle. Vältige C ++ - laadse koodi kirjutamist. Ja püüdke kindlasti mitte tugineda tüüpidele.
  • Saage uusi harjumusi - hakake raamatukogusid kasutama. Kirjutage Pythoni kood (kuid ärge üle pingutage). Hoidke asjad loetavad. Kasutage keerukamaid mõisteid, nagu generaatorid / dekoraatorid / kontekstid. Proovige PyCharmi.
  • Kasutage C ++ ja Pythoni ühiseid teeke - mõnel C ++ teegil, näiteks OpenCV ja QT, on Pythoni liides. Pythonis on lihtne hakata kasutama sama raamatukogu, selle asemel et õppida uut teeki nullist.
  • Ärge unustage oma päritolu - mõnikord on Python lihtsalt liiga aeglane või pole ülesande jaoks optimaalne. See on siis, kui teie C ++ teadmised käivituvad. C ++ koodi kasutamiseks Pythonis on palju võimalusi ( SIP , ctypes jne).

Alumine joon

Sõltumata sellest, mida teised inimesed ütlevad, pole teisele programmeerimiskeelele üleminek, eriti keelele, mis on põhimõtteliselt erinev sellest, millega olete harjunud, pole lihtne. Võtke aega õppimiseks, süvenemiseks, avastamiseks. Kuid mis kõige tähtsam, mõistke, et mitte ainult keel peaks muutuma, vaid ka teie kodeerimisstiil ja töömetoodika.

Edu!