Quelles sont les situations où les langues doivent être mélangées? P>
Je ne parle pas d'utiliser ASP.NET avec C # et HTML ou une application écrite dans C accédant à une base de données SQL via SQL requêtes. Je parle de choses comme Mélanger C ++ avec Fortran ou Ada avec Haskell, etc. Par exemple. P>
Tout d'abord: merci pour toutes vos réponses. P>
Quand j'ai posé cette question à cette question, j'avais à l'esprit que vous lisez toujours "chaque langue a son objectif particulier". P>
En général, vous pouvez avoir presque tout fait dans n'importe quelle langue en utilisant des bibliothèques spéciales. Mais, si vous êtes intéressé à apprendre différentes langues, pourquoi ne pas prendre le langage de programmation qui servit le mieux au lieu d'une bibliothèque qui résout un problème que votre langue n'a pas été conçue à l'origine? P>
11 Réponses :
La plus grande raison pour laquelle vous voudriez mélanger les langautes est dû au fait qu'une langue présente des avantages dans certains domaines, où un autre présente des avantages dans un autre. Donc, vous essayez d'exploiter les capacités des deux en les jetant ensemble. Un exemple commun utilise C et ASM, car c est plus abstrait et facilite la tâche plus complexe dans un programme, vous voudrez toutefois utiliser ASM pour effectuer des éléments de base avec du matériel et du processeur. Donc, ils sont souvent mélangés, compte tenu de la nature de C et de son utilisation dans des systèmes embarqués. P>
Selon ce que paradigme une langue tombe sous, il a ses avantages et ses inconvénients. Par exemple, on peut vouloir utiliser les capacités de l'interface graphique de C #, mais utilisez les capacités efficaces EM> Backtracking em> ou d'intelligence artificielle de Prolog Strong> (une langue dans le logique em > Paradigm) Pour calculer certains détails avant de les afficher. P>
Un exemple simplifié p>
Imaginez essayer d'écrire un programme qui permet à un utilisateur de jouer (potentiellement) je voudrais: p>
1.) strong> Créez les visuels avec les bibliothèques d'interface graphique Windows. P>
4.) strong> permet au gameplay et au développement rapide des visuels et de l'interface utilisateur en C # et comptez sur le prolog pour les calculs / backtracking p>
Lorsque 2 têtes valent mieux qu'une. p>
J'ai couramment vu des jeux où Flash a été intégré à C # - avec l'AI et d'autres codes lourds fonctionnant une dll C ++. P> li>
lorsque forcé à p>
Écrire un nouveau code pour augmenter un nouveau système pris en charge par un ancien cadre p> li> ul>
Je sais dans votre question que vous avez réglé cela, mais différentes langues sont utilisées pour différents domaines. P>
À l'heure actuelle, je travaille sur un visualiseur de données, les données sont dans une base de données, bien sûr, il y a quelque chose de SQL, mais cela ne compte guère car il est petit et requis fréquemment. Les données sont transformées en une série de graphiques, j'utilise R, ce qui est comme MATLAB mais open source. C'est une langue statistique unique avec certaines fonctionnalités de traçage avancées. p>
Un Visualizer de données n'est pas simplement un générateur de graphes, il doit donc y avoir un moyen de parcourir et de naviguer sur cette pile de fichiers image. Nous avons choisi d'utiliser HTML avec JavaScript intégré pour créer une "application" hors ligne pouvant être facilement distribuée. Il est hors ligne dans le sens où il est autonome, que HTML est généré avec soin et que la JS à l'intérieur est soigneusement fabriquée pour permettre à l'utilisateur de parcourir des milliers d'images de tri ou de filtrage par un certain nombre de critères. P>
Comment créeriez-vous soigneusement JavaScript et HTML basé sur une structure de base de données qui change au fur et à mesure que le reste de mon équipe progresse? Ils sont fabriqués par un programme PERL (script de passage unique réellement) qui se lit dans la DB pour certaines informations de structure et de clé, puis génère plus de 300 kilo-octets de HTML / JS. Ce n'est pas tout à fait trivial HTML non plus, des imagémaps qui sont soigneusement alignés sur les parcelles R et certains onclick () JavaScript permettent à l'utilisateur d'interagir avec un intrigue d'image uni afin de tout ce que tout ressemble à une application de navigateur / visualiseur réel. P >
C'est quatre «langues», cinq si vous comptez SQL, juste pour créer un seul produit final. P>
Je ne pense pas que cela dans une seule langue serait un bon choix, car nous exploitons les capacités d'un vrai navigateur Web pour nous donner une interface graphique gratuite. P>
Par exemple, dans les jeux vidéo, nous utilisons différentes langues à des fins différentes: p>
Dans mon jeu, j'utilise aussi HTML / JavaScript pour GUI. P>
[modifier] p>
Pour répondre à votre édition: la langue que vous connaissez le mieux n'est pas toujours l'outil le plus efficace pour le travail. C'est pourquoi, par exemple, j'utilise C ++ pour mon jeu fabriqué à la maison parce que je le sais mieux (je pourrais utiliser beaucoup d'autres langues car les cibles sont Win / Mac / Linux, pas les consoles) mais j'utilise Python pour tout ce qui concerne le processus de construction , Manipulation de fichier, etc. Je ne sais pas python en profondeur, mais il est plus facile de faciliter la manipulation de fichier rapide qu'avec C ++. Je n'utiliserais pas C ++ pour une application Web pour des raisons évidentes. P>
En fin de compte, vous utilisez ce qui est efficace pour le travail. C'est ce que vous apprenez en travaillant dans des contraintes du monde réel, avec de l'argent, du temps et de la qualité à l'esprit. P>
@Klaim Ok, je viens de me plaindre parce que je suis du Brésil et de cette façon sonne mal.
Eh bien, la situation la plus évidente (et la plus courante) serait lorsque vous utilisez une langue de haut niveau pour créer la majeure partie de votre programme, profiter des avantages du développement rapide et de la robustesse, tout en utilisant un langage de niveau inférieur tel que c ou même montage pour gagner la vitesse où il est important. p>
En outre, plusieurs fois, il est nécessaire d'interfacer avec d'autres logiciels écrits dans une autre langue. Un bon exemple ici sont des API exposés par le système d'exploitation - ils sont généralement écrits avec C en tête (bien que je me souvienne de nouvelles versions de MacOS utilisant Pascal). Si vous n'avez pas de liaison native pour votre infrastructure de la langue-compilateur, vous devez écrire un code d'interface pour "coller" votre programme avec "l'autre côté". P>
Il existe également des langues spécifiques à un domaine adaptées spécifiquement pour exprimer efficacement un certain type de calcul. Vous n'écrivez généralement pas votre programme entier, juste quelques parties où il s'agit de l'outil approprié. Prolog est un bon exemple. P>
Dernier point mais non le moindre, vous avez parfois des tas de code ancien et testé écrit dans une autre langue à portée de main, que vous pourriez bénéficier de l'utilisation. Au lieu de réinventer la roue dans une nouvelle et meilleure langue, vous pouvez simplement vouloir l'interfacer dans votre nouveau programme. Ceci est probablement le cas le plus habituel (sinon le seul) lorsque des langues orientées pour des utilisations similaires sont mélangées ensemble (c'était que C ++ et Fortran vous avez mentionné?). P>
Généralement, différentes langues ont des forces et des faiblesses différentes. Vous devriez essayer d'utiliser l'outil approprié pour le travail à portée de main. Si les avantages d'exprimer certaines parties du programme dans une langue différente sont supérieurs aux problèmes que cela introduit, il est préférable de le faire. P>
Je suis d'accord ... J'utilise OCAML et C, et j'appelle même des paquets extérieurs écrits en Fortran. Fonctionne merveilleusement.
Par exemple dans les jeux (qui sont des applications assez hardcore), vous avez généralement un moteur C ++ très serré qui fait tout le lifting lourd et un langage de script (tel que Lua) accessible et adapté à la création de cette collection de cas spéciaux que nous appeler 'jeu' se produire. P>
Cela se produit le plus souvent lorsque vous avez déjà du code écrit dans deux langues ou plus différentes et vous remarquez qu'il est logique de combiner les programmes. La réécriture est chère et prend du temps. P>
Dans le monde financier, vous devez souvent garder des programmes vivants (ou remplacés) 50 ans. Avec le remplacement de la technologie tous les 10 ans, de nouveaux contrats (hypothèques, assurance vie) sont créés dans la dernière langue / environnement. Les quatre plus anciens gèrent simplement les paiements mensuels et les modifications apportées aux contrats existants. Pour savoir comment la société effectue, vous devez intégrer les données des cinq systèmes. p>
Je suppose que garder les anciens vivants est moins cher que de migrer à chaque fois sur la technologie la plus récente. D'un risque en évitant le point de vue, cela a du sens. P>
applications Web strong> ne devrait probablement pas être une langue mixte pour le développeur. SmallTalk fait très bien, avec pierres précieuses pour la persistance et la mer comme cadre d'application Web. Les multiples langues (JavaScript) peuvent être masquées dans le cadre. P>
Un excellent exemple actuel serait d'écrire des méthodes de création de documents XML dans VB.NET, qui possède une fonctionnalité "littéraux XML", que c # manque. Comme ils sont tous les deux langues .Net, il n'y a aucune raison de ne pas appeler l'une de l'autre:
Public Function GetEmployeeXml (ByVal salesTerritoryKey As Integer) As XElement Using context As New AdventureWorksDW2008Entities Dim x = <x> <%= From s In context.DimSalesTerritory _ Where s.SalesTerritoryKey = salesTerritoryKey _ Select _ <SalesTerritory region=<%= s.SalesTerritoryRegion %> country=<%= s.SalesTerritoryCountry %>> <%= From e in s.DimEmployee _ Select _ <Employee firstName=<%= e.FirstName %> lastName=<%= e.LastName %>> <%= From sale in e.FactResellerSales _ Select _ <Sale orderNumber=<%= sale.SalesOrderNumber %> price=<%= sale.ExtendedAmount %>/> %> </Employee> %> </SalesTerritory> %> </x> Return x End Using End Function
Les gens ici ont la bonne des raisons. Je vais juste avoir celui-ci: p>
Il y a aussi le cas de la dégradation gracieuse. Par exemple, je travaille sur un intranet hérité et nous changeons peu à peu d'une langue à une autre, donc à ce stade, nous avons des langues différentes dans le même système. P>
Programmation de périphérique forte> - Typiquement, vous voudriez programmer l'interface utilisateur avec la langue maternelle natale du système d'exploitation (Java pour Android par exemple) mais devra programmer les pilotes de périphérique avec quelque chose qui augmente niveau (comme c). p>
Pas que vous en avez besoin d'un, mais avez-vous quelque chose de particulier à l'esprit?
Mercredi était la fête du Canada et demain est la Journée américaine de l'Indépendance, personne en Amérique du Nord ne fait de tout travail réel, alors faisons quelque chose de plaisir.
J'ai répondu à votre édition dans une édition dans ma réponse. - Strange Phrase ...