¿Cuál es el mejor lenguaje para el desarrollo de software, Python o C ++?

OOP y la computación en tiempo real son en su mayoría conceptos ortogonales.

OOP (programación orientada a objetos) es un método para diseñar y construir software de manera que sea más fácil razonar y, por lo tanto, más fácil de leer, escribir y mantener. Los lenguajes pueden tener características que facilitan la programación orientada a objetos: C ++ y Java son dos de los más importantes. ¿Cual es mejor? Es preferencia personal, de verdad. (El mío es C ++).

La computación en tiempo real se relaciona con las restricciones sobre cómo debe ejecutarse el programa resultante . Se trata de garantizar que las respuestas a cualquier evento X se puedan completar en el tiempo especificado Y Esto se ve principalmente en software embebido y similares, y generalmente está bastante estrechamente acoplado al hardware en el que se está ejecutando, ya que necesita conocer los detalles del hardware para ser particular sobre el momento de la ejecución del programa. La computación en tiempo real generalmente se realiza en un lenguaje de nivel bastante bajo como C o C ++, donde se puede controlar casi todos los aspectos de la ejecución. Java, que se ejecuta en su propia máquina virtual, generalmente no se usa en estos contextos, ya que es más difícil (especialmente con su recolección de basura dinámica) para garantizar la ejecución del código.

Por lo tanto, es posible hacer computación en tiempo real de una manera orientada a objetos. O en una forma de programación funcional. O completamente imperativo en el montaje. Tu decides. Para un proyecto de clase, podría ser más fácil ir con cualquier idioma en el que se haya enseñado la clase. Personalmente, me quedaría con C ++. Pero, de nuevo, soy un chico de C ++.

Realmente depende de tus propósitos y tus antecedentes.
Python es bueno por su buena curva de aprendizaje, claridad y excelentes módulos en análisis de datos, computación científica, desarrollo web, …

C ++ es rápido. Puede permitirle escribir programas muy eficientes manteniendo un nivel razonable de abstracción. Se utiliza principalmente con sistemas integrados y para aplicaciones de servidor que requieren una alta velocidad.

Pero si solo eres nuevo en la programación, mi consejo general es que no se trata de lo que eliges, sino de si eliges.
Si tampoco tiene razones especiales para favorecer, elija cualquiera, aprenda, haga proyectos geniales usándolo, practique prácticas fundamentales de desarrollo de software, sin duda valdrá la pena.

Se necesitan cinco años para dominar C ++ y tres meses para dominar Python. (Es decir, en el nivel de competencia, necesita escribir software de calidad). Puede escribir software bueno en Python y software malo en Python, y de manera similar puede escribir software bueno y malo en C ++.

Tanto Python como C ++ facilitan la escritura de software incorrecto, pero de maneras ligeramente diferentes.

El código de Python a menudo necesitará un poco de “ayuda” de Cython, C, Fortran o incluso C ++. Entonces, incluso si sabe que Python todavía ayuda a conocer C y C ++. Sin embargo, si usa Cython, puede saber mucho menos sobre C ++ de lo que necesitaría de otra manera.

Python tiene mejores bibliotecas. Cualquier biblioteca escrita para C ++ también se puede usar desde Python (usando, por ejemplo, Cython).

Aprender Python antes de C ++ es una buena idea porque los tipos de datos básicos en Python te enseñarán a usar STL y Boost de manera efectiva en C ++, y te harán escribir C ++ mejor y más robusto. Si aprende C ++ como una extensión de C, no estará equipado con este conocimiento.

C ++ no puede competir con Python por la informática científica o el desarrollo web.

C ++ es probablemente mejor para aplicaciones móviles y tabletas debido a dependencias más pequeñas (por ejemplo, no es necesario incrustar un intérprete de Python).

Swift es un término medio interesante, particularmente debido al largo tiempo que lleva dominar C ++.

Ah, sí, y el problema de la velocidad, porque esto siempre surge:

Si disminuye la velocidad computacional en un factor de un millón, puede ver que el tiempo de ejecución aumenta de 1 ns a 1 ms. Ambos están por debajo del nivel de la percepción humana. Por otro lado, también puede ver que el tiempo de ejecución aumenta de un minuto a casi dos años. Eso probablemente importaría. ¡La “necesidad de velocidad” depende mucho del problema! No es raro que el código C ++ se ejecute 20-200 veces más rápido que un código Python similar (sin ninguna biblioteca externa u optimizaciones). ¿Pero importa? Mire el tiempo de ejecución absoluto para un problema del mundo real, no la velocidad relativa. Si es lo suficientemente rápido, es lo suficientemente rápido.

¿Cuándo puede distinguir la diferencia entre Python y C ++? Casi nunca, porque siempre depende del programador. Puede escribir software rápido en Python y software lento en C ++, o viceversa. Algunos de los proyectos informáticos de alto rendimiento más grandes del mundo utilizan Python. La NASA usa Python para el telescopio Hubble. ¿Crees que necesitas más velocidad informática que la NASA? Si usa bibliotecas de alta calidad, generalmente verá que su código Python se ejecutará más rápido que cualquier cosa que pueda codificar por su cuenta en C ++. Pero de vez en cuando, el código Python necesitará ayuda de una pequeña cantidad de código compilado para ejecutarse lo suficientemente rápido, por ejemplo, Cython, Numba, Fortran, C o C ++.

Hay un nuevo compilador JIT basado en LLVM para Python llamado Numba que a menudo hace que el código de Python se ejecute a una velocidad comparable a -O2 en C. Cython también nos permite escribir código “Python” que se ejecuta a la velocidad de C, y el código de Cython es invocable desde Python.

En informática científica (y en muchos otros casos como, por ejemplo, análisis económicos), el tiempo de ejecución total no es solo el tiempo de CPU sino el tiempo total que lleva desde que comienza a codificar hasta llegar a la respuesta. Esto incluye el tiempo que pasa codificando. Aquí, C ++ no puede competir con Python.

Es tentador hacer eco de las otras respuestas y decir “ambas, dependiendo”, pero voy a ser un poco audaz aquí y decir “Python”. Para estar seguro, puede hacer cosas con C ++ que tendrá dificultades para hacer con Python, pero estos son algunos de los factores:

  • Varios paquetes de widgets ofrecen interfaces Python y C ++, por lo que si está interesado en desarrollar aplicaciones, saber que Python al menos le dará un buen comienzo.
  • Python es excelente como lenguaje para hacer pequeños scripts únicos que son dos difíciles para un shell o archivo .bat, pero demasiado simples para merecer un impulso de desarrollo de tres días.
  • Python también es ideal para “pelar” bibliotecas C, ya que te permite interactuar con paquetes a un nivel mucho más alto de lo que podrías en C ++.
  • Quizás lo más importante, Python (si es un programador principiante a intermedio) le permite enfocarse en la semántica de su programa en un grado mucho mayor que C ++. También proporciona un gran contexto para aprender programación en comparación con escribir programas en un idioma en particular.

Esto no quiere decir que no debas aprender C ++. Aprende ambos. Pero en los (muchos) casos en que Python le serviría bien, se alegrará de haberlo aprendido primero.

Hoja de afeitar o sierra para metales, ¿cuál es la mejor herramienta para cortar?

La respuesta realmente depende del tipo de software que esté desarrollando. Si solo planea aprender un nuevo idioma, vaya con Python. Es fácil.

Es como comparar una camioneta con un sedán y tratar de descubrir cuál es mejor. Realmente depende de lo que hagas. El lenguaje dinámico es fácil de escribir, ineficiente y difícil de depurar. C ++ es difícil de escribir y de depurar, pero eficiente en algunos casos.

More Interesting

Un amigo argumenta que los campos de entrenamiento, los MOOCS y los libros se consideran 'bombas y vertederos' en lugar de ofrecer una educación formal en CS. Si paso por MOOCS intensivos y campamentos de entrenamiento, ¿realmente me estoy engañando?

¿Cómo es trabajar con un gerente / líder de equipo indio en una empresa de tecnología en Estados Unidos?

¿Es posible aprender programación informática sin optar por PCM y sin colegios de ingeniería?

¿Qué tiene de malo TDD?

¿Cómo se garantiza la calidad del código cuando las revisiones de código tardan demasiado?

¿Cuál es el mejor software para crear presupuestos de ventas?

¿Cuáles son algunos libros recomendados sobre modelado de datos?

En una compañía de software financiero, ¿qué tan inteligente sería despedir a todo su equipo de control de calidad y comenzar a confiar en pruebas totalmente automatizadas escritas por los desarrolladores?

¿Tomar un trabajo en pruebas de software hará que sea más difícil obtener un puesto de desarrollador en otra compañía más adelante?

¿Cómo se ve un equipo de desarrollo de software realmente bueno? (¿Qué lo hace genial?)

¿Tiene sentido usar C ++ en lugar de Python solo porque prefiero lo explícito?

¿Cuáles son las responsabilidades de un ingeniero de software en el equipo de crecimiento?

¿Cuál es la única cosa (o quizás la más influyente) que me haría un ingeniero de software superior en un par de años?

¿Cuál es el sueldo de un ingeniero de front-end senior en Nueva York?

¿Cuáles son las oportunidades de trabajo para los ingenieros de software en el campo del cricket?