Estou programando há um tempo, escrevi alguns programas rudimentares e quero continuar aprendendo. Cheguei a esse ponto em que você simplesmente não sabe o que aprender a seguir e gostaria de fazer uma pergunta por minha própria curiosidade.
A questão, em poucas palavras, é se você pode combinar várias linguagens de programação em um resultado? Por exemplo, esse código pode ser possível?
<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());
Parece uma pergunta boba, mas não posso saber se é possível ou não, por isso estou perguntando. Em esta pergunta que eu noto que ele está usando o código Python no código html, se o meu exemplo acima não for possível, o que ele fez?
programming-languages
Bugster
fonte
fonte
Respostas:
Seu primeiro exemplo é meio possível. Geralmente, essas coisas acontecem no PHP (e em outras linguagens de programação da Web relacionadas) assim:
Alguns pontos importantes a serem observados sobre este exemplo:
Seu segundo exemplo parece algum tipo de mash-up de C ++ e Java. É possível que módulos compilados escritos em linguagens diferentes conversem entre si, mas combinar Java e C ++ no mesmo arquivo de origem seria extremamente confuso e difícil: como o compilador saberia quais instruções são Java e quais são C ++?
Suponho que, em teoria, você possa escrever um compilador / pré-processador especial com indicadores de "linguagem", como:
Mas sinceramente não tenho certeza de que você ganharia algo útil fazendo isso.
Além disso, como esse ambiente de linguagem híbrida lidaria com recursos de linguagem incompatíveis entre os dois?
fonte
CUDA
. É uma mistura de duas linguagens C muito diferentes, com algumas funções compiladas para um dispositivo (GPU) e outras permanecendo em um host, com a camada de comunicação sendo inferida.Resposta curta
Na verdade não.
Resposta longa
Incorporação
Geralmente, um único arquivo de origem contém código para exatamente uma linguagem de programação. É incomum que vários idiomas sejam combinados em um único arquivo por alguns motivos:
Linking
Diferentes linguagens de programação que compartilham uma interface binária de aplicativo comum podem ser combinadas para formar um único executável ou biblioteca. Obter as assinaturas dos dois idiomas disponíveis um no outro geralmente exige um pouco de trabalho, mas existem ferramentas para facilitar o processo.
Poliglotas
O código poliglota é válido e equivalente em mais de um idioma. A página 404 do Stack Overflow apresenta um desses programas:
Isso imprime "404" em Python, Perl, Ruby, C, Brainfuck e Befunge.
Conclusão
Os idiomas raramente são misturados nos arquivos e, quando são, é para rir . As pessoas até tentam evitar misturar idiomas nos projetos por causa do incômodo extra que ele apresenta. Portanto, embora possa ser tecnicamente possível, misturar diferentes idiomas não é comum nem pragmático.
fonte
DATA
declarações. Não que eu seja amargo ou algo assim. Nããão.Sim, é possível mesmo. Não da maneira que você imaginou isso, é claro. Existem alguns idiomas criados especificamente para esse fim.
Na prática, pode ser muito útil misturar vários idiomas específicos do domínio em um único idioma do host. Raramente é necessário misturar duas ou mais linguagens igualmente "de uso geral" em um único arquivo de código-fonte, embora você encontre projetos escritos em ambos, digamos, VB.NET e C #, com diferentes componentes de linguagem compilados separadamente.
Quanto ao HTML, é apenas uma linguagem de marcação. Você pode encontrar frequentemente um código do lado do servidor (por exemplo, no VB.NET), uma marcação HTML e um código Javascript do lado do cliente misturados em um único arquivo de origem, embora isso seja considerado uma prática ruim para muitos.
fonte
Isso geralmente é chamado de código poliglota - existem alguns exemplos divertidos / insanos se você seguir o link ou em vários outros lugares da web. A maioria deles é apenas por diversão / para provar que é possível.
Mais seriamente, existem vários exemplos da vida real em que dois ou mais idiomas diferentes podem ser combinados de maneira útil:
fonte
É possível fazer alguma combinação de idiomas usando o Perl Inline, que permite escrever um script Perl e inserir seções de código escritas em um idioma diferente:
fonte
O SQL incorporado era uma maneira comum de incorporar instruções SQL em programas de outras linguagens.
Atualmente, ele foi substituído quase inteiramente pelo acesso ao banco de dados baseado em API, mais fácil de compilar, que não precisa modificar o idioma do host, mas usa suas habilidades normais.
fonte
Várias linguagens de programação podem ser usadas para formar 1 exe. Uma maneira é usar DLLs. Claro que existem várias preocupações sobre isso. Por exemplo, compatibilidade de parâmetros, compatibilidade COM e outros. De fato, se você pensar em como chamar um sistema de banco de dados para trabalhar, poderá descobrir que o DBMS nem sempre está escrito em um idioma que você conhece. Você provavelmente nem se importa, desde que a interface seja conhecida.
Esse conceito é levado adiante quando sua solução utiliza serviços da Web, que é uma maneira ainda mais limpa de combinar vários componentes de software.
No mundo .NET, todas as opções acima se aplicam, além do mais, no nível da interface. As interfaces XAML e HTML podem viver juntas no Silverlight.
No mundo UNIX, ao mesmo tempo, usamos os scripts do KShell para iniciar programas C ++ e COBOL para que a solução funcionasse.
fonte
Eu acho que valeria a pena mencionar o Cython aqui. É um superconjunto do Python para escrever extensões C e, embora seja realmente uma linguagem única, permite praticamente o uso de código C no código Python, se você estiver em conformidade com a sintaxe do estilo Python do Cython
fonte
Exemplos de combinações de linguagens: Jython (python em Java), Cog (python usado como um gerador de código incorporado em praticamente qualquer coisa). Eu sempre usei o código Perl para gerar C ++, se você contar a geração de código.
fonte
A estrutura .NET foi criada para permitir que vários idiomas participem de uma solução. Funciona desde que o idioma possa produzir código de bytes compatível com CLR.
http://www.geekinterview.com/question_details/1047
fonte
É muito difícil, muito feio e geralmente inútil combinar várias linguagens de programação em um arquivo.
No entanto, é possível ter um grande projeto escrito em mais de um idioma. Por exemplo, o Mozilla Firefox e o MySQL possuem códigos C e C ++. Quando se trata de grandes projetos, essa prática é frequentemente usada porque um idioma específico fornece alguns recursos que outro não. No PHP, por exemplo, você pode solicitar a execução de um executável binário, pegar o resultado e usá-lo no seu código PHP a partir desse ponto.
Se você estiver curioso sobre quais idiomas são usados para alguns dos mais importantes projetos de código aberto do mundo, confira
Ohloh.net
. Estatísticas sobre o código fonte de muitos projetos podem ser encontradas lá.fonte
Você pode "misturar" idiomas em HTML. É realmente importante o funcionamento de muitos sites que você pode incorporar javascript no html. Mas é claro que HTML é marcação, não uma linguagem de programação.
Eu acho que fazer o que você propõe implicaria escrever um novo idioma de qualquer maneira. Ou você teria que criar um intérprete / compilador que falasse todos esses idiomas e pudesse enquadrá-los de forma consistente, ou seria necessário algum modo de avaliar linha por linha explicitamente no que seria uma meta-linguagem. Essas duas opções são basicamente as mesmas, exceto pelo que o programador precisa fazer para que os idiomas funcionem juntos.
fonte
A linguagem é uma ferramenta. Antes de escolher uma ferramenta (além disso, fazendo uma combinação estranha de hummer-PC-espectroscópio), alguém deve se perguntar - o que exatamente é isso que eu quero fazer? Quando a resposta for dada, você descobrirá que esse tipo de mistura de idiomas raramente é necessária.
fonte
Sim, é possível misturar linguagens de programação desde que seu intérprete / compilador possa entendê-lo. Por exemplo, misturando javascript, PHP, python em HTML ou C ++ em C #.
A mistura de idiomas pode dificultar a leitura e a modificação do código, portanto, isso deve ser feito com cautela. Uma maneira de contornar isso é criar arquivos separados para o código no idioma que você precisa chamar e importá-lo em vez de incorporá-lo.
fonte