¿Cómo usan Python las grandes compañías tecnológicas de manera eficiente dada su falta de verificación de tipos estáticos y otros aspectos de la ingeniería de software moderna?

El ‘código pobre’ no es producido por lenguajes pobres, es producido por programadores pobres. Es posible producir un código excelente con un lenguaje terrible o un código terrible con un lenguaje excelente. Google y Facebook probablemente solo despiden a programadores incompetentes.

Produjimos algunos programas bastante buenos cuando casi todo estaba escrito en ensamblador, que no tiene “aspectos de la ingeniería de software moderna”, escribiendo buenos programas. (Y Microsoft, aproximadamente al mismo tiempo, escribió un compilador de C que produjo un código tan malo que tuvo que compilar para ensamblar, corregir su error evidente, luego ensamblar y vincular).

Por cierto, pensarías que una empresa tan grande como IBM (una vez que cancelaron una pérdida de 8 mil millones de dólares por haber perdido un centavo) produciría un buen código, entonces, ¿por qué hubo un error en uno de sus manuales que decía que el error para ese código de error no estaba con su código, estaba con el compilador, ¿e ignorarlo?

Recuerde, el ensamblaje no tiene “tipo”: todo son números. No tiene definición de variables. No tiene espacios de nombres. Pero el planetario del Museo Espacial de Hong Kong funcionó de todos modos: 3 8080 CPU en funcionamiento. (Y tuvimos que inventar algunas cosas que “no se podían hacer”, como las comunicaciones bidireccionales entre 3 puertos paralelos, un bus de datos de cable plano de más de 400 pies, etc.)

El programador hace que el programa funcione, el lenguaje no.

No puedo hablar sobre el uso de Python por parte de Google, pero estoy interesado en tu comentario sobre ‘ingeniería de software moderna’

Los lenguajes clásicos de “comprobación de tipo estático” que se me ocurren son C, C ++, Java, Pascal, etc. Todos los lenguajes compilados. Todo bastante mayor.

C está a punto de cumplir 50 años, C ++ ha existido desde los años 80, otros tienen pedigríes similares.

Muchos de los lenguajes “modernos” actuales y futuros (Python, Ruby, incluso JavaScript) utilizan la escritura dinámica.

La ingeniería de software moderna está muy centrada en las pruebas automatizadas para garantizar la solidez y la fiabilidad.

Estos lenguajes dinámicos incorporan un gran soporte para el desarrollo basado en pruebas en sus ecosistemas y diseño de lenguaje. En los idiomas más antiguos, es mucho más difícil burlarse de funciones y clases para pruebas unitarias, por ejemplo.

AFAIK, Google usa Python solo para scripts de compilación y despliegue, pero su base de código principal está en C ++ (estáticamente escrita; gradualmente escrita desde C ++ 17). Facebook usa Hack (derivado de PHP; escrito gradualmente) y Flow (derivado de JavaScript; escrito gradualmente).

No creo que realmente usen muchos lenguajes escritos dinámicamente.

More Interesting

¿Qué idiomas y marcos se han utilizado para codificar Twitter?

¿Debo aprender VueJs o AngularJS?

¿Hay una regla simple a seguir para determinar qué características justifican una prueba unitaria y cuáles se verifican durante las pruebas de integración?

Se me asignó el rol de Probador de rendimiento en mi empresa, habiendo llegado de un fondo manual de pruebas funcionales, ¿cómo empiezo a aprender Pruebas de rendimiento y necesito tener conocimientos de automatización? ¡Por favor ayuda!

¿Cuáles son las desventajas de usar Cython vs. C / C ++?

¿Cuál es un escenario en el que ha utilizado un patrón de fábrica en el desarrollo de aplicaciones de software?

¿Por qué Quora, Google y Facebook me rechazan por realizar prácticas de ingeniería de software?

Quiero disfrutar de ser ingeniero de software, pero no me gusta estar sentado en mi escritorio todo el día. Me gusta levantarme y hablar con la gente. ¿Qué tengo que hacer?

¿Por qué las compañías de teléfonos celulares usan máscaras de software además del SO de software Android puro?

¿Podría realmente convertirme en desarrollador de software en algún momento en el futuro cercano?

¿Se desarrollan los Googlers para Android y GWT usando Eclipse?

Piratería informática (seguridad): ¿Cuáles son algunas herramientas de post explotación?

¿Qué herramientas, de código abierto o comerciales, han aumentado significativamente su productividad como ingeniero de software o administrador de sistemas?

¿Cuál es la mayor cantidad de lenguajes de codificación que alguien ha aprendido?

Para convertirse en un experto en seguridad de la información, ¿qué debe hacer un desarrollador de software con experiencia de 6 años?