¿Puede un programa usar más de un lenguaje de programación de fondo?

Seguro.

Para algunos idiomas, este tipo de interoperación es más difícil que otros, pero según mi experiencia limitada, es bastante posible con los dos que ha elegido en el entorno adecuado. También es muy común mezclar lenguajes de estilo de scripting con lenguajes compilados en aplicaciones empresariales de gran escala. C ++ y Python interoperando en la misma pila proporcionan ejemplos de esto.

También es ridículamente fácil (¡y útil!) Mezclar y combinar idiomas en aplicaciones web basadas en JVM. Un pequeño script Groovy aquí, un sistema Scala / Akka allí, y los modelos y API están escritos en el viejo Java, por razones de portabilidad. Es bastante típico en las tiendas que permiten ese tipo de cosas, y muchos de los nombres que reconocerías en la industria de la tecnología permiten pilas de tecnología políglotas (múltiples idiomas).

En realidad, incluso puede encontrar proyectos muy grandes e importantes donde este tipo de enfoque es común o totalmente necesario (Apache Spark ™ es uno).

Todo esto se reduce al uso de la mejor herramienta para el trabajo. A veces, lo que realmente quieres que suceda no funciona mejor en un idioma determinado.

¡Espero que esto ayude!

En realidad, es muy común hacerlo y hay varias formas de hacerlo:

  1. Procesos separados: si tiene un proceso de supervisor, por ejemplo, ejecutando su front-end web o APU y cada operación se realiza mediante uno o más procesos, entonces cada uno puede estar en el idioma más apropiado para la tarea que se realiza. (Si cada uno de los procesos es pequeño, discreto y razonablemente simple, esto se conoce como microservicios, pero ha sido por mucho más tiempo que el término).
  2. Llamar a bibliotecas que están escritas en otro idioma: si llama a una función desde una biblioteca estática o compartida, no necesariamente sabe en qué idioma está escrito, solo necesita un conector adecuado. Algunas bibliotecas tienen conectores o adaptadores para varios idiomas. Nuevamente, esto ha sido por mucho tiempo: muchas bibliotecas C ++ de bajo nivel y alto rendimiento en realidad están escritas en C o f para el ensamblador de bajo nivel, pero algunas bibliotecas matemáticas todavía están escritas en FORTRAN. Muchas bibliotecas de Python se ajustan a este criterio, es decir , todas las que no son Python puro .
  3. Incrustar el otro idioma dentro del ejecutable: es razonablemente común que los programas escritos en otros idiomas incorporen el intérprete de Python y las bibliotecas, incluso hay una sección manual sobre esto, para proporcionar secuencias de comandos y / o funcionalidad adicional; algunos ejemplos incluyen GIMP con su consola Python, Blender 3D modeller para secuencias de comandos, el complemento SpamBytes Outlook, Open Office, Paint Shop Pro 8, Civilization IV, GarageCube Modul8, etc.

La empresa para la que trabajo hace esto para proyectos a gran escala en la industria bancaria.

No todo es un solo “programa”, sino que el back-end está compuesto por múltiples tecnologías. Una forma común y muy eficiente de hacer las cosas cuando tienes que trabajar con grandes equipos de personas es dividir tu servidor web en múltiples capas con propósitos muy específicos.

  • Por lo general, la capa inferior es la capa de persistencia .

Aquí tiene un código que se conecta a su base de datos, sabe cómo ejecutar consultas para recuperar datos, código para almacenar datos entrantes, optimizaciones de indexación, etc.

Para los proyectos bancarios, no es inusual encontrar instancias de software programadas hace décadas en COBOL. Sería prohibitivamente costoso refactorizar todo el código a un lenguaje más moderno. Estamos hablando de décadas de desarrollo, por lo que solo refactorizará si no tiene otra opción (generalmente es porque ya no tiene empleados capacitados que puedan mantenerlo).

  • Luego puede tener una capa empresarial en el medio.

Aquí es donde reside la lógica específica de su negocio. En la industria bancaria, esta capa incluye cosas como calcular el monto de su interés para sus préstamos este mes.

La ventaja de tener una capa de este tipo por separado es que los programadores que trabajan aquí son los únicos que necesitan saber algo sobre banca. Todos los demás ni siquiera necesitan saber qué es un préstamo, y aún pueden implementar su código correctamente. Es bastante normal encontrar este código en un lenguaje como Java SE.

  • La capa superior es la capa de presentación .

Su propósito es saber cómo analizar todas las entradas provenientes del front-end (usuarios) y validarlo, generar la vista necesaria (los archivos .html .css .js, que en realidad no necesitan existir, pero pueden ser generado dinámicamente o con plantilla) y crea una respuesta para el usuario. Normalmente, para aplicaciones a gran escala, puede usar algo como Java EE, usar servlets y demás.

Sí, es posible y se usó muchas veces .

Para hacer esto posible, las aplicaciones y servicios de fondo exponen las API [1]: estas son interfaces para comunicarse con el programa.

Una de las formas más versátiles de API es REST [2].

Es lo que impulsa (la mayoría de) las aplicaciones web modernas. Se utiliza para hacer posible la comunicación entre diferentes servicios.

Por supuesto, no es la única solución.

Espero que esto responda tu pregunta.

Notas al pie

[1] Interfaz de programación de aplicaciones – Wikipedia

[2] Transferencia de estado representativo – Wikipedia

Creo que un malentendido fundamental que la gente tiene sobre el desarrollo web es que las capas son cosas concretas. No son.

No hay reglas reales. Hay algunas reglas que algunas personas inventan que muchas siguen, pero no hay reglas reales.

No es como:

marque todas estas 10 casillas para hacer una aplicación web

y más como:

Tengo un montón de pequeños padres que puedo juntar y quiero descubrir la forma más eficiente de hacerlo sin pasar 10 meses planificándolo.

Entonces, sí, puede juntar tantos idiomas e instancias de servidor y bases de datos como desee.

La mayoría de las veces, la forma más eficiente no requerirá tantos, pero a veces sucede. En general, existen bibliotecas sólidas o códigos existentes fuertes o ciertas limitaciones de una plataforma u otra, por lo que tiene sentido en términos de un ciclo de desarrollo utilizar más de un idioma.

Pero el punto más importante es que no hay reglas reales y, en la mayoría de los casos, cuando preguntas “puede” en este contexto, la respuesta es sí.

¿Puede un programa usar más de un lenguaje de programación de fondo?

Entonces, por ejemplo, ¿sería posible construir una aplicación que use C # como un lenguaje de fondo, por ejemplo, para procesar y filtrar información, así como para realizar tareas en ellos? mientras que también usa python para decir otras funciones más básicas y tal vez incluso una IA. ¿Es una práctica común hacerlo?

No solo es posible, es una práctica común en muchos campos.

La clave para lograrlo es una arquitectura de microservicio. En una arquitectura de microservicio, cada aplicación tiene un alcance muy pequeño. Por ejemplo, es posible que tenga una aplicación que gestione usuarios, una que maneje datos de series temporales y metadatos, una que defina sus máscaras de control y similares. Cualquier aplicación se puede escribir en un idioma diferente si es necesario.

Por supuesto, debe evitar tener demasiadas tecnologías, porque de lo contrario podría ser difícil encontrar desarrolladores calificados que puedan mantener su sistema en general. Pero yo diría que tres idiomas en el backend no es inusual.

, un programa puede escribirse en más de un idioma, pero debe crear servicios web para que los diferentes componentes escritos en diferentes plataformas puedan comunicarse entre sí.

Puede usar C # para procesar información y devolver su resultado en formatos de datos comunes como JSON o XML. Lo mismo ocurre con Python, puede procesar lo que quiera pero tiene que devolver el resultado en forma de JSON o XML.

Este es el punto donde la API entra en juego.

¡Espero que esto ayude!

No pero si. No sería típico que un “programa” use más de un lenguaje de fondo o al menos no de la manera que está sugiriendo. ¿La conexión a una biblioteca está escrita en un idioma diferente usando más de un idioma? Cuando dice programa, los programas generalmente se refieren a un fragmento de código compilado. Por lo general, esto se construirá con un lenguaje, aunque ciertamente hay veces en que los programadores de C usan lenguaje ensamblador o incluso un lenguaje de script integrado como Lua / Lisp, que es común en el desarrollo de juegos.

Un SITIO WEB puede usar DEFINITIVAMENTE más de una tecnología. Muchos juegos en línea con una arquitectura persistente / basada en ticks utilizan un programa en C que se ejecuta en el servidor para procesar giros / ticks y un lenguaje de fondo web más típico como python / asp / php para interactuar con los usuarios y el front-end.

Es totalmente posible porque los lenguajes de programación son solo herramientas que uno necesita para que las máquinas hagan el trabajo. Lo más probable es que necesite al menos un par más, crear scripts para convertir su código en binarios y scripts de shell para ejecutar sus binarios. Entonces, sí, uno puede.

Sí, aunque no es la práctica más común, se realiza todos los días. Lo principal es que cada servicio tiene un punto final e interfaz bien definidos, como REST. Por lo tanto, debajo del capó, realmente no importa cuál sea el motor real.

No sé sobre esos dos específicamente, pero en la mayoría de los casos sí. Incluso es deseable tener cosas híbridas, ya que le permite evitar los puntos ciegos del idioma, y ​​todos los idiomas los tienen.

Las interfaces en la misma máquina normalmente son a través de archivos, tuberías, invocación de método remoto (en Java), DBus (Linux), SysV IPC (System V Unices y Linux), BSD IPC (BSD Unices y Linux).

Muchos idiomas también admiten enlaces con otros idiomas.

Para escenarios más complejos, tiene sockets, Sun RPC, DCE, CORBA, Globus, GridWay, Unicore.

Entre estos, la mayoría de las necesidades probablemente se puedan satisfacer.

Absolutamente posible, y de hecho, partes importantes de la biblioteca Python Standard están escritas en C para velocidad, y tanto numpy como scipy están escritas en C para fines de velocidad.

Si está escribiendo un servicio web, entonces no hay nada que le impida tener algunos de sus servicios implementados en Python y otros implementados en C # y cada uno podría invocar servicios escritos en el otro.

Sí. Todo el tiempo de hecho. SQL para material de base de datos. HTML, JS, CSS, DOM para material web. JavaEE, C #, Python, PHP para programación adicional.

Sí, en mi experiencia anterior estábamos usando Scala para Backend junto con Java, Python y R.

More Interesting

¿El mejor lenguaje de back-end para el inicio?

¿Son .NET o PHP mejores para un usuario de servidor?

¿Qué es mejor aprender a través de una programación dinámica de front-end de clase o de back-end?

Cómo desarrollar una aplicación de Android para el backend desde cero

Al hacer una aplicación, ¿debe hacer que el front-end sea el primero o el back-end?

¿Cómo son las 'estructuras de back-end' de los juegos más grandes con alrededor de mil millones de jugadores, como los juegos de Supercell?

¿Qué es el front end y el back end?

¿Cómo se ejecuta el backend en Drupal 6? ¿Alguien asigna alguna tarea primero tenemos que pensar backend cómo pensar alguna sugerencia amigos?

Quiero ser un desarrollador de Java. Estoy confundido con las tecnologías de desarrollo front-end y back-end. ¿Cuál debo elegir para ser desarrollador de Java?

¿Qué es diferente entre un desarrollador front y back end? ¿Estos términos se refieren tanto al desarrollo web como al desarrollo de software?

¿Cómo saben las empresas si necesitan un desarrollador full stack o un ingeniero de back-end y un ingeniero de UI / UX?

¿Tengo que ser un desarrollador web de pila completa para ser un probador de aplicaciones web, y debo aprender PHP como desarrollador de back-end?

¿Cómo aprender el desarrollo web front-end y back-end desde cero hasta el final? Cuánto tiempo tardará

¿Cuáles son las funcionalidades más importantes en las que debería centrarme mientras estoy aprendiendo el desarrollo de back-end?

¿Por qué tiene sentido separar el front-end del back-end?