He estado programando durante un tiempo, he escrito algunos programas rudimentarios y quiero seguir aprendiendo. Llegué a ese punto en el que simplemente no sabes qué aprender a continuación, y me gustaría hacer una pregunta por mi propia curiosidad.
La pregunta, en pocas palabras, es si puede combinar múltiples lenguajes de programación en 1 resultado. Por ejemplo, ¿puede ser posible este código?
<html>
cout << "Hello world!";
</html>
o
import java.util.Scanner;
cout << "Insert a number from 1 to 10";
Scanner n = new Scanner(System.in);
System.out.println("The value you entered was" +n.newLine());
Esto parece una pregunta tonta, pero no puedo saber si es posible o no, así que por eso lo hago. En esta pregunta, noto que está usando el código Python en el código html, si mi ejemplo anterior no es posible, ¿qué hizo?
programming-languages
Bugster
fuente
fuente
Respuestas:
Tu primer ejemplo es más o menos posible. Por lo general, tales cosas suceden en PHP (y otros lenguajes de programación web relacionados) como este:
Algunos puntos importantes a tener en cuenta sobre este ejemplo:
Su segundo ejemplo parece una especie de mash-up de C ++ y Java. Es posible que los módulos compilados escritos en diferentes idiomas se comuniquen entre sí, pero combinar Java y C ++ en el mismo archivo fuente sería extremadamente confuso y difícil: ¿cómo podría saber el compilador qué declaraciones son Java y cuáles son C ++?
Supongo que en teoría podrías escribir un compilador / preprocesador especial con indicadores de "lenguaje" como:
Pero honestamente no estoy seguro de que ganarías algo útil al hacer esto.
Además, ¿cómo manejaría este entorno de lenguaje híbrido las características del lenguaje que son incompatibles entre los dos?
fuente
CUDA
. Es una mezcla de dos lenguajes C muy diferentes, con algunas funciones compiladas para un dispositivo (GPU), y algunas restantes en un host, con la capa de comunicación que se infiere.Respuesta corta
Realmente no.
Respuesta larga
Incrustación
Generalmente, un solo archivo fuente contiene código para exactamente un lenguaje de programación. Es poco común que varios idiomas se combinen en un solo archivo por un par de razones:
Enlace
Se pueden combinar diferentes lenguajes de programación que comparten una interfaz binaria de aplicación común para formar un único ejecutable o biblioteca. Obtener las firmas de los dos idiomas disponibles entre sí a menudo requiere un poco de trabajo, pero existen herramientas para facilitar el proceso.
Políglotas
El código Polyglot es válido y equivalente en más de un idioma. La página 404 de Stack Overflow presenta uno de estos programas:
Esto imprime "404" en Python, Perl, Ruby, C, Brainfuck y Befunge.
Conclusión
Los idiomas rara vez se mezclan dentro de los archivos, y cuando lo son, es para reír . La gente incluso trata de evitar mezclar idiomas dentro de los proyectos debido a la molestia adicional que presenta. Entonces, si bien puede ser técnicamente posible, mezclar diferentes idiomas no es común ni pragmático.
fuente
DATA
declaraciones. No es que esté amargado ni nada. NooooSí, es posible de hecho. No de la forma en que lo has imaginado, por supuesto. Existen algunos idiomas creados específicamente para este propósito.
En la práctica, puede ser muy útil mezclar varios idiomas específicos de dominio en un solo idioma de host. Rara vez es necesario mezclar dos o más lenguajes igualmente "de propósito general" en un solo archivo de código fuente, aunque a menudo encontrará proyectos escritos en ambos, por ejemplo, VB.NET y C #, con diferentes componentes de lenguaje compilados por separado.
En cuanto a HTML, es solo un lenguaje de marcado. A menudo puede encontrar un código del lado del servidor (por ejemplo, en VB.NET), marcado HTML y código Javascript del lado del cliente mezclados en un solo archivo fuente, aunque muchos lo consideran una mala práctica.
fuente
Esto a menudo se llama código políglota : hay algunos ejemplos divertidos / locos si sigues el enlace o en varios otros lugares de la web. La mayoría de estos son solo por diversión / para demostrar que es posible.
Más en serio, hay varios ejemplos de la vida real donde dos o más idiomas diferentes se pueden combinar de manera útil:
fuente
Es posible hacer una combinación de idiomas usando Perl Inline que permite escribir un script de Perl e insertar secciones de código escritas en un idioma diferente:
fuente
El SQL incorporado era una forma común de incrustar sentencias SQL en programas de otros lenguajes.
En estos días, ha sido reemplazado casi por completo por un acceso a la base de datos basado en API más fácil de compilar que no necesita modificar el idioma del host, sino que usa sus habilidades normales.
fuente
Se pueden usar varios lenguajes de programación para formar 1 exe. Una forma es usar archivos DLL. Por supuesto, hay varias preocupaciones sobre esto. Por ejemplo, compatibilidad de parámetros, compatibilidad COM y demás. De hecho, si piensa en cómo llama a un sistema de base de datos para hacer su trabajo, es posible que el DBMS no siempre esté escrito en un idioma que usted conoce. Probablemente ni siquiera te importe mientras se conozca la interfaz.
Este concepto se lleva más allá cuando su solución utiliza servicios web, que es incluso una forma más limpia de combinar múltiples componentes de software.
En el mundo .NET, todo lo anterior se aplica, más aún, en el nivel de interfaz Las interfaces XAML y HTML pueden vivir juntas en Silverlight.
En el mundo UNIX, en algún momento, utilizamos scripts de KShell para lanzar programas C ++ y COBOL para que la solución pudiera funcionar.
fuente
Creo que valdría la pena mencionar Cython aquí. Es un superconjunto de Python para escribir extensiones C y, aunque en realidad es un lenguaje único en sí mismo, prácticamente le permite usar el código C en el código Python, si cumple con la sintaxis de estilo Python de Cython
fuente
Ejemplos de combinación de lenguajes: Jython (python en Java), Cog (python usado como generador de código incrustado en casi cualquier cosa). A menudo he usado código Perl para generar C ++, si cuenta la generación de código.
fuente
El marco .NET está diseñado para permitir que varios idiomas participen en una solución. Funciona siempre que el lenguaje pueda producir código de bytes compatible con CLR.
http://www.geekinterview.com/question_details/1047
fuente
Es muy difícil, muy feo y a menudo inútil combinar múltiples lenguajes de programación en 1 archivo.
Sin embargo, es posible tener un gran proyecto escrito en más de 1 idioma. Por ejemplo, tanto Mozilla Firefox como MySQL tienen código C y C ++ en ellos. Cuando se trata de grandes proyectos, esta práctica se usa a menudo porque un lenguaje en particular proporciona algunas características que otro no. En PHP, por ejemplo, puede solicitar la ejecución de un ejecutable binario, tomar su resultado y usarlo en su código PHP a partir de ese momento.
Si tiene curiosidad acerca de qué idiomas se utilizan para algunos de los proyectos de código abierto más importantes del mundo, puede consultar
Ohloh.net
. Las estadísticas sobre el código fuente de muchos proyectos se pueden encontrar allí.fuente
Puede "mezclar" idiomas en HTML. En realidad, es importante para la forma en que funcionan muchos sitios web que pueda insertar JavaScript en HTML. Pero, por supuesto, HTML es marcado, no un lenguaje de programación.
Creo que hacer lo que propones implicaría escribir un nuevo idioma de todos modos. O tendría que crear un intérprete / compilador que hablara todos esos idiomas y pudiera enmarcarlos de manera consistente, o necesitaría alguna forma de evaluar línea por línea explícitamente en lo que sería un metalenguaje. Esas dos opciones son básicamente las mismas, excepto por lo que el programador tiene que hacer para que los idiomas funcionen juntos.
fuente
El lenguaje es una herramienta. Antes de elegir una herramienta (además, hacer una combinación extraña de hummer-PC-espectroscopio) uno debería preguntarse: ¿qué es exactamente lo que quiero hacer? Una vez que se da la respuesta, descubrirá que este tipo de mezcla de idiomas rara vez es necesaria.
fuente
Sí, es posible mezclar lenguajes de programación siempre que su intérprete / compilador pueda entenderlo. Por ejemplo, mezclar javascript, PHP, python en HTML o C ++ en C #.
Sin embargo, mezclar idiomas puede dificultar la lectura y modificación del código, por lo que debe hacerse con precaución. Una forma de evitar esto es crear archivos separados para el código en el idioma que necesita llamar e importarlo en lugar de incrustarlo.
fuente