Cómo pasé de C ++ a Python: un cambio conceptual

Introducción

La gente dice que programar en Python es tan fácil que incluso un niño de 6 años puede hacerlo. Este fue el pensamiento que tenía en mente cuando comencé a codificar en Python en el trabajo. Había sido un desarrollador de software a tiempo completo durante 4 años en ese momento, escribiendo principalmente en C ++ en Linux, usando mucho la biblioteca QT. Sin embargo, escribí un código Python incorrecto al principio.

Han pasado alrededor de 3 años desde que hice ese cambio y creo que es un buen punto para resumir el progreso que he logrado durante este tiempo. Al mirar hacia atrás, no solo cambié mi lenguaje de programación principal, sino que también cambié mi entorno de trabajo y mi forma de pensar sobre el código.

No entraré en detalles y diferencias entre C ++ y Python, ya que hay numerosos recursos en línea, sino que describiré mi propia experiencia. Espero que esta publicación sea útil para las personas que atraviesan la misma transición que yo.

C ++ es bucear, Python es esnórquel

C ++ se siente como sumergirse en los misterios mágicos del mar: es hermoso, pero requiere más aprendizaje y práctica, y en general, la distancia que recorre no es tan grande. Python es un poco como bucear con esnórquel: ves la belleza tan pronto como mete la cabeza en el agua, pero no baja mucho más. Continúa nadando en aguas poco profundas y puede cubrir una gran distancia fácilmente. A partir de esta descripción, queda claro que cada uno de estos idiomas debe usarse en el lugar y momento adecuados.

Bucear en C ++ y sobrevivir

C ++ es más estricto y lo penaliza más severamente por sus errores. No es una sesión de codificación efectiva si no ha tenido una falla de segmentación sorprendente al menos una vez. Por tanto, requiere una comprensión más profunda de la computadora, el compilador y el lenguaje. Cuando profundiza, realmente puede ver y quedar impresionado por cosas hermosas, como el proceso de compilación y la gestión de la memoria.

Como programador de C ++, me preocupaba más por los ajustes de sintaxis y los ejemplos extraños. Siempre supe dónde asignaba la memoria y cómo la liberaba. Los programas que escribí eran más independientes, ya que prefería saber qué estaba pasando dentro de mi código. La idea principal era que el código que escribió otra persona era menos confiable, más propenso a errores y podría hacer explotar el uso de memoria.

Mis principales herramientas diarias eran Vim con numerosos complementos para escribir código, GDB para depurar y Valgrind para analizar el uso de memoria y los errores. Compilé con g ++ y escribí mis propios Makefiles . En ese entonces, no sentía que un IDE me beneficiaría, sino que prefería ralentizar las cosas y hacerme perder el contacto con mi código. En retrospectiva, confié mucho en el compilador para encontrar mis errores de tipo .

Natación poco profunda en Python

Una de las primeras cosas que debe aprender al cambiar a Python es cómo dejarlo ir: no sabe qué está sucediendo debajo del capó, dónde se asigna y libera la memoria, y está bien. También se le anima a utilizar código escrito por otros, empaquetado en bibliotecas, ya que le ahorra tiempo y le ayuda a codificar más rápido. No significa que deba escribir código que sea lento como un perro y que se base en bibliotecas no mantenidas y no funcionales, pero el enfoque es definitivamente diferente.

Cuando comencé a codificar en Python, primero escribí código C ++ en Python. Funcionó, pero no obtuve ningún beneficio del idioma. Mi codificación mejoró cuando comencé a escribir de una manera más “Pythonic” y comencé a usar bibliotecas y conceptos más avanzados como generadores, decoradores y contextos.

Como desarrollador de Python, tiendo a buscar primero la biblioteca que resuelve el problema en cuestión. Python tiene un rico ecosistema de bibliotecas y una comunidad que lo respalda. Hay bibliotecas para hacer prácticamente cualquier cosa. Aquí hay algunos útiles que uso a diario: NumPy para cálculos numéricos, OpenCV para visión por computadora, json para leer archivos json, SciPypara cálculos científicos, sqlite3 para bases de datos.

Mi herramienta diaria es PyCharm (sí, un IDE) con el complemento IdeaVim . Comencé a usarlo principalmente debido al hecho de que es un depurador poderoso, que es mucho más amigable que el depurador predeterminado de Python, pdb . También utilizo pip para instalar las bibliotecas que necesito. Ya no superviso el uso de mi memoria a menos que sea realmente necesario.

Algunos consejos prácticos

Si eres un desarrollador de C ++ y consideras empezar a programar en Python, aquí tienes mi consejo:

  • Deshágase de los viejos hábitos : deje de usar el compilador de C ++ como depurador. No optimices demasiado el uso de la memoria. Evite escribir código similar a C ++. Y por supuesto, trate de no depender de los tipos.
  • Adquiera nuevos hábitos : comience a usar bibliotecas. Escriba código Pythonic (pero no se exceda). Mantenga las cosas legibles. Utilice conceptos más complejos como generadores / decoradores / contextos. Prueba PyCharm.
  • Utilice bibliotecas comunes de C ++ y Python : algunas bibliotecas de C ++, como OpenCV y QT, tienen una interfaz de Python. Es fácil comenzar a usar la misma biblioteca en Python en lugar de aprender una nueva biblioteca desde cero.
  • No olvide sus orígenes : a veces, Python es demasiado lento o no es óptimo para la tarea. Aquí es cuando su conocimiento de C ++ entra en acción. Hay muchas formas ( SIP , ctypes , etc.) de usar código C ++ dentro de Python.

Línea de fondo

No importa lo que digan otras personas, cambiar a un lenguaje de programación diferente, especialmente a un lenguaje que es fundamentalmente diferente al que está acostumbrado, no es fácil. Tómese el tiempo para aprender, profundizar, descubrir. Pero lo más importante, comprenda que no solo debe cambiar el idioma, sino también su estilo de codificación y metodología de trabajo.

¡Buena suerte!