¿Qué tecnologías (lenguaje de programación, framework y bibliotecas) se utilizan en productos y juegos de software comúnmente conocidos?

La mayoría del mercado de juegos móviles ahora se crea con Unity3D. Facebook y los juegos web también se están construyendo cada vez más con Unity3D. Su biblioteca de física en 3D es nVidia PhysX, y su biblioteca en 2D es Box2D. Usan C # y, dependiendo de su plataforma, lo convierten en los binarios apropiados. Por defecto, usan el proyecto Mono. No estoy seguro de qué otras bibliotecas usan. Estoy seguro de que buscar en su sitio web o en El mejor lugar para obtener respuestas sobre Unity podría ayudar.

Unreal Engine es C / C ++, al igual que CryEngine / Dunia e idTech. Sin embargo, a menudo tienen un lenguaje de script como Lua o Python para hacer que las secciones configurables sean más fáciles y rápidas de escribir.

Construct2 es un popular editor de juegos 2D que construye html y javascript. GameMaker utiliza su propio lenguaje de secuencias de comandos. Source Engine (Valve) se creó con C ++, pero no estoy seguro de qué idioma se usa para el SDK, ya que ha pasado demasiado tiempo desde que estuve dentro.

Fuera de los juegos, miles de millones de dólares fluyen a través del software empresarial. Gran parte de los programas de Microsoft están escritos en C ++ y / o C #. IBM y Oracle usan mucho Java. Una gran cantidad de software de transporte está escrito en Delphi, VB y Java.

Sería negligente si no mencionara PHP. Puede ser odiado por gran parte de la comunidad, pero ejecuta algunos de los sitios web más grandes: Facebook , Wikipedia / Mediawiki, WordPress , Drupal, Joomla.

En la academia, Python es uno de los favoritos entre los analistas de datos que usan CUDA y OpenCL. El lenguaje R y cualquier uso de Maple y Matlab también son de gran uso.

Estoy excluyendo juegos ya que esa no es mi área y ya está respondida.

Aquí está mi intento de responder …

Para los productos de software basados ​​en la web, hay muchas opciones ya que están construidos en una “pila” completa de capas diferentes. Para el front-end, la parte visible, estos son todos JavaScript y diferentes marcos de JavaScript; u otros lenguajes o compilar o “transpilar” a JavaScript, como TypeScript, ClojureScript y CoffeeScript.

Para las aplicaciones de escritorio de Windows, no estoy seguro de si se trata principalmente de NET Framework (cuyo idioma principal es C #) y código nativo de C ++.

Para las aplicaciones de escritorio de Mac OS X, el front-end es Objective-C (lenguaje de programación) y ahora Swift, pero el back-end puede ser cualquier lenguaje que se compile en código nativo.

En Windows y Mac hay una pequeña cantidad de programas escritos en Java y un kit de herramientas GUI.

Android es principalmente Java.
iOS es principalmente Objective-C y ahora Swift.
C # y Xamarin pueden usarse para ambos, pero no sé qué tan comunes son.

Montaje Sobrecarga de CPU potencialmente mínima Propenso a errores, desarrollo lento, difícil de aprender, no portátil C Conocido ampliamente, numerosas herramientas Falta de funcionalidad orientada a objetos, difícil para proyectos grandes o plataformas múltiples

C ++ Orientado a objetos, ampliamente utilizado, numerosas herramientas Costos de desarrollo de la gestión manual de memoria, código “repetitivo” [ cita requerida ] y tiempos de compilación potencialmente largos

C # Orientado a objetos, administración automática de memoria, ofrece reflejo Generalmente limitado a las plataformas de Microsoft (Windows y Xbox), gastos generales de recolección de basura, ingeniería inversa fácil

Java, la gestión automática de memoria orientada a objetos, ampliamente portátil, ofrece la reflexión Falta de tipos de valores definidos por el usuario, sobrecarga de recolección de basura, sobrecarga de memoria, no disponible en las principales consolas de juegos, ingeniería inversa fácil

Eiffel, Smalltalk, Ada, etc.Fringe los lenguajes de los juegos, pocas herramientas de desarrollo de juegos. Lenguajes de script como Lua, Python, etc.
Una vez que se ha acordado el diseño inicial del juego, se debe decidir el lenguaje de desarrollo