Je programme depuis un certain temps, j'ai écrit des programmes rudimentaires et je veux continuer à apprendre. J'ai atteint ce point où vous ne savez pas quoi apprendre ensuite, et je voudrais poser une question pour ma propre curiosité.
La question, en un mot, est de savoir si vous pouvez combiner plusieurs langages de programmation en 1 résultat? Par exemple, ce code peut-il être possible?
<html>
cout << "Hello world!";
</html>
ou
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());
Cela ressemble à une question stupide, mais je ne peux pas savoir si c'est possible ou non, c'est pourquoi je le pose. Dans cette question, je remarque qu'il utilise du code Python en code html, si mon exemple ci-dessus n'est pas possible, qu'a-t-il fait?
programming-languages
Bugster
la source
la source
Réponses:
Votre premier exemple est en quelque sorte possible. Habituellement, de telles choses se produisent en PHP (et dans d'autres langages de programmation Web associés) comme ceci:
Quelques points importants à noter sur cet exemple:
Votre deuxième exemple ressemble à une sorte de mash-up de C ++ et Java. Il est possible que des modules compilés écrits dans différents langages se parlent, mais combiner Java et C ++ dans le même fichier source serait extrêmement déroutant et difficile: comment le compilateur pourrait-il savoir quelles instructions sont Java et lesquelles sont C ++?
Je suppose qu'en théorie, vous pourriez écrire un compilateur / pré-processeur spécial avec des indicateurs de "langage" tels que:
Mais je ne suis honnêtement pas sûr que vous gagneriez quelque chose d'utile en faisant cela.
De plus, comment cet environnement de langage hybride gérerait-il des fonctionnalités de langage incompatibles entre les deux?
la source
CUDA
. C'est un mélange de deux langages C très différents, avec certaines fonctions compilées pour un périphérique (GPU), et certaines restant sur un hôte, avec une couche de communication déduite.Réponse courte
Pas vraiment.
Longue réponse
Incorporation
Généralement, un seul fichier source contient du code pour exactement un langage de programmation. Il est rare que plusieurs langues soient combinées dans un seul fichier pour plusieurs raisons:
Mise en relation
Différents langages de programmation qui partagent une interface binaire d'application commune peuvent être combinés pour former un seul exécutable ou bibliothèque. Obtenir les signatures des deux langues l'une dans l'autre prend souvent un peu de travail, mais des outils existent pour faciliter le processus.
Polyglottes
Le code polyglotte est valide et équivalent dans plusieurs langues. La page 404 de Stack Overflow propose un de ces programmes:
Cela imprime "404" en Python, Perl, Ruby, C, Brainfuck et Befunge.
Conclusion
Les langues sont rarement mélangées dans les fichiers, et quand elles le sont, c'est pour rire . Les gens essaient même d'éviter de mélanger les langues au sein des projets en raison des tracas supplémentaires qu'il introduit. Ainsi, bien que cela soit techniquement possible, le mélange de différentes langues n'est ni courant ni pragmatique.
la source
DATA
déclarations. Pas que je sois amer ou quoi que ce soit. Noooo.Oui, c'est possible en effet. Pas comme vous l'avez imaginé, bien sûr. Il existe des langues spécialement conçues à cet effet.
En pratique, il peut être très utile de mélanger un certain nombre de langues spécifiques au domaine dans une seule langue hôte. Il est rarement nécessaire de mélanger deux ou plusieurs langages également "à usage général" dans un seul fichier de code source, bien que vous trouverez souvent des projets écrits dans les deux, disons, VB.NET et C #, avec différents composants de langage compilés séparément.
Quant au HTML, c'est juste un langage de balisage. Vous pouvez souvent trouver un code côté serveur (par exemple, dans VB.NET), du balisage HTML et du code Javascript côté client mélangés dans un seul fichier source, bien qu'il soit considéré comme une mauvaise pratique par beaucoup.
la source
Ceci est souvent appelé code polyglotte - il existe des exemples amusants / fous si vous suivez le lien ou à divers autres endroits sur le Web. La plupart d'entre eux sont juste pour le plaisir / pour prouver que c'est possible.
Plus sérieusement, il existe divers exemples concrets où deux ou plusieurs langues différentes peuvent être utilement combinées:
la source
Il est possible de faire une combinaison de langages en utilisant Perl Inline qui permet d'écrire un script Perl et d'insérer des sections de code écrites dans un autre langage:
la source
Embedded SQL était un moyen courant d'incorporer des instructions SQL dans des programmes d'autres langages.
De nos jours, il a été remplacé presque entièrement par un accès à la base de données basé sur l'API plus facile à compiler qui n'a pas besoin de modifier le langage hôte, mais utilise plutôt ses capacités normales.
la source
Plusieurs langages de programmation peuvent être utilisés pour former 1 exe. Une façon consiste à utiliser des DLL. Bien sûr, il existe diverses préoccupations à ce sujet. Par exemple, la compatibilité des paramètres, la compatibilité COM et autres. En fait, si vous pensez à la façon dont vous appelez un système de base de données pour travailler, vous pourriez constater que le SGBD n'est pas toujours écrit dans une langue que vous connaissez. Vous ne vous en souciez probablement même pas tant que l'interface est connue.
Ce concept est poussé plus loin lorsque votre solution utilise des services Web, ce qui est encore plus propre de combiner plusieurs composants logiciels.
Dans le monde .NET, tout ce qui précède s'applique, plus au niveau de l'interface, les interfaces XAML et HTML peuvent cohabiter dans Silverlight.
Dans le monde UNIX, à un moment donné, nous avons utilisé des scripts KShell pour lancer des programmes C ++ et COBOL afin que la solution puisse fonctionner.
la source
Je pense qu'il vaut la peine de mentionner Cython ici. C'est un surensemble de Python pour écrire des extensions C et bien qu'il s'agisse vraiment d'un langage unique en soi, il vous permet d'utiliser le code C dans du code Python, si vous vous conformez à la syntaxe de style Python de Cython
la source
Exemples de combinaison de langages: Jython (python en Java), Cog (python utilisé comme générateur de code intégré dans à peu près n'importe quoi). J'ai souvent utilisé du code Perl pour générer du C ++, si vous comptez la génération de code.
la source
Le framework .NET est conçu pour permettre à plusieurs langues de participer à une seule solution. Cela fonctionne tant que le langage peut produire un code d'octet compatible CLR.
http://www.geekinterview.com/question_details/1047
la source
Il est très difficile, très moche et souvent inutile de combiner plusieurs langages de programmation en un seul fichier.
Il est cependant possible d'avoir un gros projet écrit en plus d'une langue. Par exemple, Mozilla Firefox et MySQL contiennent du code C et C ++. Quand il s'agit de gros projets, cette pratique est souvent utilisée car un langage particulier fournit des fonctionnalités qu'un autre ne propose pas. En PHP, par exemple, vous pouvez demander l'exécution d'un exécutable binaire, prendre son résultat et l'utiliser dans votre code PHP à partir de là.
Si vous êtes curieux de savoir quelles langues sont utilisées pour certains des projets open source les plus importants au monde, vous pouvez vérifier
Ohloh.net
. Des statistiques sur le code source de nombreux projets peuvent être trouvées ici.la source
Vous pouvez "mélanger" des langues en HTML. Il est en fait important pour le fonctionnement de nombreux sites Web que vous puissiez incorporer du javascript en html. Mais bien sûr, HTML est un balisage, pas un langage de programmation.
Je pense que faire ce que vous proposez impliquerait de toute façon d'écrire une nouvelle langue. Soit vous devrez créer un interprète / compilateur qui parle toutes ces langues et pourrait les encadrer de manière cohérente, soit vous aurez besoin d'un moyen d'évaluer explicitement ligne par ligne dans ce qui serait une méta-langue. Ces deux options sont fondamentalement les mêmes, à l'exception de ce que le programmeur doit faire pour que les langages fonctionnent ensemble.
la source
La langue est un outil. Avant de choisir un outil (en plus, faire une combinaison bizarre hummer-PC-spectroscope), il faut se demander - qu'est-ce que je veux faire exactement ?? Une fois la réponse donnée, vous découvrirez qu'un tel mélange de langues est rarement nécessaire.
la source
Oui, il est possible de mélanger les langages de programmation tant que votre interprète / compilateur peut le comprendre. Par exemple, mélanger javascript, PHP, python en HTML ou C ++ en C #.
Cependant, le mélange des langues peut rendre plus difficile la lecture et la modification du code, il faut donc le faire avec prudence. Une solution consiste à créer des fichiers séparés pour le code dans la langue que vous devez appeler et à l'importer plutôt que de l'intégrer.
la source