Hogyan mentem a C ++ - ról a Pythonra: fogalmi változás

Bevezetés

Az emberek azt mondják, hogy a Pythonban történő kódolás olyan egyszerű, hogy még egy 6 éves is képes rá. Ez volt az a gondolat, ami eszembe jutott, amikor elkezdtem kódolni a Python-ot a munkahelyemen. Abban az időben 4 évig voltam teljes munkaidős szoftverfejlesztő, főként C ++ nyelven írtam Linuxon, erősen használva a QT könyvtárat. Eleinte azonban rossz Python kódot írtam.

Körülbelül 3 év telt el azóta, és úgy gondolom, hogy jó pont összefoglalni az ez idő alatt elért haladásomat. Visszatekintve nemcsak a fő programozási nyelvet változtattam meg, hanem a munkakörnyezetemet és a kóddal kapcsolatos gondolkodásmódot is.

Nem térek ki a C ++ és a Python közötti részletekre és különbségekre, mivel számos online forrás található, inkább leírom saját tapasztalataimat. Remélem, hogy ez a bejegyzés hasznos lehet azoknak az embereknek, akik ugyanazon átmeneten mennek keresztül, mint én.

A C ++ búvárkodik, a Python sznorkelezik

A C ++ kedve merülni a tenger varázslatos rejtelmeibe - ez gyönyörű, de több tanulást és gyakorlást igényel, és összességében a megtett távolság nem olyan nagy. A Python egy kicsit olyan, mint a sznorkelezés - látja a szépséget, amint bedugja a fejét a vízbe, de nem megy sokkal lejjebb. Folyamatosan sekély vizekben úszik, és könnyen megtesz egy nagy távolságot. Ebből a leírásból egyértelmű, hogy ezeket a nyelveket a megfelelő helyen és időben kell használni.

Merülés a C ++ - ba és túlélés

A C ++ szigorúbb, és szigorúbban bünteti a hibáidért. Ez nem hatékony kódolási munkamenet, ha legalább egyszer nem kapott meglepő szegmentálási hibát . Ezért a számítógép, a fordító és a nyelv mélyebb megértésére van szükség. Ha mélyebbre nyúlsz, valóban láthatsz és lenyűgözhetsz gyönyörű dolgokat, például az összeállítási folyamatot és a memóriakezelést.

C ++ programozóként jobban törődtem a szintaxisokkal és furcsa példákkal. Mindig tudtam, hová osztottam a memóriát, és hogyan szabadítottam fel. Az általam írt programok önállóbbak voltak, mivel inkább tudtam, mi történik a kódomban. A fő gondolat az volt, hogy az a kód, amelyet valaki más írt, kevésbé megbízható, hajlamosabb hibára, és felrobbanthatja a memóriahasználatot.

Legfontosabb mindennapi eszközeim a Vim számos pluginnal a kódíráshoz , a GDB a hibakereséshez és a Valgrind a memóriahasználat és a hibák elemzéséhez. Összeállítottam a g ++ - val és megírtam a saját Makefile-imat . Akkor még nem éreztem, hogy egy IDE előnyös lenne számomra, inkább lelassítanám a dolgokat, és elveszíteném a kapcsolatot a kódommal. Utólag nagyban bíztam a fordítóban a típushibáim megtalálásában .

Sekély úszás a Pythonban

Az egyik első dolog, amit meg kell tanulnod, amikor a Pythonra váltasz, az az, hogy elengedd - nem tudod, mi történik a motorháztető alatt, ahol a memória fel van osztva és felszabadul, és ez rendben van. Javasoljuk továbbá, hogy használja a mások által írt, könyvtárakba csomagolt kódot, mivel ez időt takarít meg és gyorsabb kódolást biztosít. Ez nem azt jelenti, hogy olyan kódot kell írni, amely lassan kutyás, és nem karbantartott és nem működő könyvtárakra támaszkodik, de a hangsúly egyértelműen más.

Amikor elkezdtem kódolni a Pythonban, először C ++ kódot írtam Pythonba. Működött, de a nyelvből semmilyen hasznot nem nyertem. A kódolásom javult, amikor elkezdtem „Pythonic” stílusban írni, és elkezdtem használni a könyvtárakat, és fejlettebb fogalmakat, például generátorokat, dekorátorokat és összefüggéseket.

Python fejlesztőként általában azt a könyvtárat keresem, amely megoldja a problémát. A Python gazdag könyvtári ökoszisztémával és közösséggel rendelkezik, amely támogatja. Vannak könyvtárak, ahol gyakorlatilag bármit meg lehet csinálni. Íme néhány praktikus, amit napi rendszerességgel használok: NumPy numerikus számításokhoz, OpenCV számítógépes látáshoz, Json json fájlok olvasásához, SciPytudományos számításokhoz az sqlite3 az adatbázisokhoz.

A mindennapi eszközöm a PyCharm (igen, egy IDE) az IdeaVim pluginnal. Elsősorban annak köszönhető, hogy egy erőteljes hibakereső, ami sokkal barátságosabb, mint az alapértelmezett Python hibakereső, a pdb . A pip- et használom a szükséges könyvtárak telepítéséhez is . Már nem figyelem a memóriahasználatom, hacsak nem igazán kell.

Néhány gyakorlati tipp

Ha Ön C ++ fejlesztő, és fontolóra veszi a kódolást a Pythonban, íme a tanácsom:

  • Megszabadulni a régi szokásoktól - Hagyja abba a C ++ fordító hibakeresőként való használatát. Ne optimalizálja túl a memória használatát. Kerülje a C ++ - szerű kód írását. És mindenképpen próbáljon nem támaszkodni a típusokra.
  • Új szokások - Kezdje el használni a könyvtárakat. Írjon Pythonikus kódot (de ne vigye túlzásba). Tartsa olvashatóan a dolgokat. Használjon összetettebb fogalmakat, például generátorokat / dekorátorokat / összefüggéseket. Próbálja ki a PyCharmot.
  • Használjon C ++ és Python közös könyvtárakat - Néhány C ++ könyvtár, például az OpenCV és a QT, rendelkezik Python felülettel. Könnyű elkezdeni ugyanazt a könyvtárat használni a Pythonban, mintsem új könyvtárat tanulni a semmiből.
  • Ne felejtsd el a származásodat - néha a Python túl lassú, vagy nem optimális a feladathoz. Ekkor beindul a C ++ tudásod. Sokféleképpen ( SIP , ctypes stb.) Használhatod a C ++ kódot a Pythonon belül.

A lényeg

Nem számít, mit mondanak mások, nem könnyű áttérni egy másik programozási nyelvre, különösen egy olyan nyelvre, amely alapvetően különbözik attól, amelyet megszoktál. Szánjon időt a tanulásra, az ásatásra, a felfedezésre. De ami a legfontosabb, értsd meg, hogy nemcsak a nyelvnek kell megváltoznia, hanem a kódolási stílusodnak és a munka módszertanának is.

Sok szerencsét!