¿Qué deben saber todos los ingenieros de software sobre Python?

Que puedes hacer cualquier cosa con el tiempo y la memoria suficientes. Dejando de lado todas las bromas de Turing, Python es un muy buen lenguaje general, pero las compensaciones son lo que los ingenieros de software deben saber a medida que se involucran. Aquí hay algunos que aparecen todo el tiempo.

  • Global Interpreter Lock (GIL), esto evita que Python se meta en muchos problemas y todos deberíamos alegrarnos de que Guido lo haya puesto. La otra cara es que en muchos casos sus hilos no usarán esos núcleos adicionales. Hay muchas formas de esquivar el GIL, pero su kilometraje puede variar. Si está buscando hacer cantidades masivas de Python paralelo, entonces la siguiente viñeta puede haber anulado la ganancia.
  • Rendimiento, en general Python es lento. A menudo 1-3% de C. Cuando ingresa a una biblioteca o hace E / S, puede comenzar a acercarse a las velocidades de C, pero en general será lento. Puede volver a escribir algunas de sus funciones / bucles clave en C o Cython y aumentar radicalmente la velocidad, a menudo para estar a una distancia sorprendente de cualquier otro idioma. En el medio, puede usar bibliotecas como NumPy para obtener un gran impulso.
  • La sangría es importante, este es a menudo el mayor obstáculo para muchos programadores, pero uno que termina siendo una queja tonta. Al igual que las personas que vienen de las calculadoras ALOS se quejan de RPN, una vez que se acostumbran no hay problema. Para algunos es una mejor manera de trabajar, para otros es casi lo mismo.
  • Es multiplataforma, hasta que las plataformas no quieren que sea. El código de Python en general se ejecutará en Unix, Windows, JVM e incluso en los navegadores Javascript. Sin embargo, el fregadero de la cocina Pythons no cabe en cada una de esas encimeras. Leer un dispositivo de bloque sin formato o configurar un MMAP en UNIX es fácil. Hacer lo mismo en Windows ni siquiera es obvio y requiere un enfoque diferente. Python te permite hacerlo, pero el código ya no es portátil. La profundidad de Python describe las diferencias entre las plataformas mejor que cualquier otra cosa que haya visto. Debido a esto, algunas cosas no solo se moverán y correrán.
  • 2 a 3, la diferencia entre ellos parece pequeña al principio, pero puede ser sustancial a medida que crece la base de código. La buena noticia es que existen buenas herramientas para convertir de 2 a 3, y el ser humano puede solucionar muchos de los problemas encontrados rápidamente.

En general, alguien que vaya a Python debería saber que van a tener una buena experiencia si tienen una mente abierta. Si bien no calculará los resultados más rápido, a menudo el tiempo del ingeniero es el activo más valioso y realmente puede ser una victoria allí.

importar esto

More Interesting

¿Qué temas en ciencias de la computación son más importantes para un aspirante a ingeniero de software?

¿Se ven afectados los trabajos de desarrollo de software debido a los despidos de TI y la automatización para los nuevos en 2017?

¿Cómo es que Adobe Flash Player nunca tiene competidores? ¿Es este software tan difícil de hacer y actualizar?

¿Qué debo hacer para mejorar mis habilidades de programación cuando actualmente estoy en mi tercer semestre estudiando ingeniería de software? ¿Qué libros son los mejores para aprender?

¿Por qué hay tan pocas personas que discuten sus experiencias como ingenieros de software (pasante / tiempo completo) en Apple, mientras que hay tantas publicaciones en Internet sobre compañías como Google / Facebook / Microsoft?

¿Qué compañía es una mejor opción considerando el crecimiento de la compañía, el crecimiento personal y profesional individual, el equilibrio entre la vida laboral y la compensación, como ingeniera de software femenina en Silicon Valley: Google o Facebook?

¿Cuál es el proyecto de software más grande en el que participó, cuáles eran sus expectativas y cómo resultó?

¿Cuáles son los aspectos más importantes de las pruebas de software?

¿Preocupado por el primer trabajo haciendo Ruby on Rails?

Mi primer trabajo de control de calidad fue un ingeniero de control de calidad remoto durante 8 meses probando manualmente una aplicación de iOS, luego me despidieron. ¿Cómo continúo y construyo una carrera en QA ahora?

¿Qué producto de hardware o software le gusta usar y por qué?

¿Cómo se aplica la inteligencia artificial a la ingeniería de software (programas que programan programas)?

¿Qué importancia tienen CodeChef o SPOJ para un estudiante de informática?

Cómo construir un equipo de desarrollo de software altamente efectivo

¿Cuál es su sistema operativo de elección para fines de desarrollo?