Kuinka menin C ++: sta Pythoniin: käsitteellinen muutos

Johdanto

Ihmiset sanovat, että koodaus Pythonissa on niin helppoa, että jopa 6-vuotias voi tehdä sen. Tämä oli ajatus, jonka pidin mielessä, kun aloin koodata Pythonissa töissä. Olin ollut kokopäiväinen ohjelmistokehittäjä 4 vuotta tuolloin, kirjoittanut pääasiassa C ++: lla Linuxissa ja käytin voimakkaasti QT-kirjastoa. Kirjoitin kuitenkin aluksi huonoa Python-koodia.

Se on ollut noin 3 vuotta siitä, kun olen tehnyt kyseisen kytkimen, ja mielestäni on hyvä asia yhteenveto edistymisestä, jonka olen tehnyt tänä aikana. Kun katson taaksepäin, en muuttanut vain pääohjelmointikieliä, mutta muutin myös työympäristöäni ja tapaa, jolla ajattelen koodia.

En käsittele yksityiskohtia ja eroja C ++: n ja Pythonin välillä, koska verkossa on lukuisia resursseja, mutta kuvaan pikemminkin omaa kokemustani. Toivon, että tämä viesti olisi hyödyllinen ihmisille, jotka käyvät läpi saman siirtymän kuin minä.

C ++ sukeltaa, Python snorklaa

C ++ tuntuu sukeltavansa maagisiin meren salaisuuksiin - se on kaunista, mutta vaatii enemmän oppimista ja harjoittelua, ja yleisesti ottaen kulkemasi etäisyys ei ole niin suuri. Python on vähän kuin snorklausta - näet kauneuden heti, kun pistät pään veteen, mutta et mene paljon pidemmälle. Uitat matalissa vesissä ja pystyt helposti kulkemaan pitkän matkan. Tämän kuvauksen perusteella on selvää, että jokaista näistä kielistä tulisi käyttää oikeaan paikkaan ja aikaan.

Sukeltaminen C ++: een ja selviytyminen siitä

C ++ on tiukempi ja rankaisee sinua ankarammin virheistäsi. Se ei ole tehokas koodausistunto, jos et ole saanut yllättävää segmentointivirhettä ainakin kerran. Siksi se vaatii tietokoneen, kääntäjän ja kielen syvempää ymmärtämistä. Kun menet syvemmälle, voit todella nähdä kauniit asiat, kuten kokoamisprosessi ja muistin hallinta, ja tehdä niistä vaikutuksen.

C ++ - ohjelmoijana välitin enemmän syntaksin muutoksista ja outoista esimerkeistä. Tiesin aina, mihin jaoin muistin ja kuinka vapautin sen. Kirjoitetut ohjelmat olivat itsenäisempiä, koska halusin tietää, mitä koodissani tapahtui. Pääajatus oli, että jonkun muun kirjoittama koodi oli vähemmän luotettava, alttiimpi virheille ja saattaa räjäyttää muistisi käytön.

Tärkeimmät jokapäiväiset työkaluni olivat Vim lukuisilla laajennuksilla koodin kirjoittamiseen, GDB virheenkorjaukseen ja Valgrind muistin käytön ja virheiden analysointiin. Käännin g ++: lla ja kirjoitin omat Makefile-tiedostoni . Silloin en tuntenut, että IDE hyödyttäisi minua, vaan pikemminkin hidastaa asioita ja saa minut menettämään yhteyden koodiini. Jälkikäteen luotin voimakkaasti kääntäjään tyypin virheiden löytämisessä .

Matala uinti Pythonissa

Yksi ensimmäisistä asioista, jotka sinun on opittava vaihdettaessa Pythoniin, on päästää irti - et tiedä, mitä tapahtuu konepellin alla, missä muisti on varattu ja vapautettu, ja se on OK. Sinua kehotetaan myös käyttämään muiden kirjoittamia koodeja, jotka on pakattu kirjastoihin, koska se säästää aikaa ja auttaa koodaamaan nopeammin. Se ei tarkoita, että sinun on kirjoitettava koiraa hidas koodi, joka perustuu ylläpitämättömiin ja toimimattomiin kirjastoihin, mutta painopiste on ehdottomasti erilainen.

Kun aloitin koodaamisen Pythonissa, kirjoitin ensin C ++ -koodin Pythoniin. Se toimi, mutta en saanut mitään hyötyä kielestä. Koodaukseni parani, kun aloin kirjoittaa "Pythonic" -tyypillä ja aloin käyttää kirjastoja ja kehittyneempiä käsitteitä, kuten generaattoreita, sisustajia ja konteksteja.

Python-kehittäjänä minulla on tapana etsiä ensin kirjasto, joka ratkaisee käsillä olevan ongelman. Pythonilla on rikas kirjastoekosysteemi ja yhteisö, joka tukee sitä. On kirjastoja, jotka tekevät käytännössä mitä tahansa. Tässä on joitain käteviä, joita käytän päivittäin: NumPy numeerisiin laskelmiin, OpenCV tietokoneen näkemiseen, Json json-tiedostojen lukemiseen, SciPytieteellisiin laskelmiin, sqlite3 tietokantoihin.

Päivittäinen työkaluni on PyCharm (kyllä, IDE) IdeaVim- laajennuksella. Aloin käyttää sitä lähinnä siitä, että se on tehokas virheenkorjausohjelma, joka on paljon ystävällisempi kuin oletusarvoinen Python-virheenkorjaus, pdb . Käytän myös pipä tarvitsemiesi kirjastojen asentamiseen. En seuraa muistini käyttöä enää, ellei minun tarvitse.

Joitakin käytännön vinkkejä

Jos olet C ++ -kehittäjä ja harkitset koodaamisen aloittamista Pythonissa, tässä on neuvoni sinulle:

  • Päästä eroon vanhoista tottumuksista - Lopeta C ++ -kääntäjän käyttö virheenkorjaajana. Älä optimoi liikaa muistin käyttöä. Vältä C ++ - tyyppisen koodin kirjoittamista. Yritä kaikin keinoin olla luottamatta tyyppeihin.
  • Hanki uusia tapoja - Aloita kirjastojen käyttö. Kirjoita Pythonic-koodi (mutta älä liioittele sitä). Pidä asiat luettavissa. Käytä monimutkaisempia käsitteitä, kuten generaattorit / sisustajat / asiayhteydet. Kokeile PyCharmia.
  • Käytä C ++ - ja Python-kirjastoja - Joillakin C ++ -kirjastoilla, kuten OpenCV ja QT, on Python-käyttöliittymä. Pythonissa on helppo aloittaa saman kirjaston käyttö sen sijaan, että opit uuden kirjaston tyhjästä.
  • Älä unohda alkuperääsi - joskus Python on liian hidas tai ei optimaalinen tehtävää varten. Tällöin C ++ -tietosi käynnistyvät. C ++ -koodin käyttämiseen Pythonissa on monia tapoja ( SIP , ctypes jne.).

Bottom Line

Ei ole väliä mitä muut ihmiset sanovat, vaihtaminen eri ohjelmointikielelle, etenkin kielelle, joka on pohjimmiltaan erilainen kuin olet tottunut, ei ole helppoa. Käytä aikaa oppimiseen, syventymiseen, löytämiseen. Mutta mikä tärkeintä, ymmärrä, että ei vain kielen tulisi muuttua, vaan myös koodaustyyli ja työskentelytapa.

Onnea!