Я программировал некоторое время, я написал несколько элементарных программ и хочу продолжать учиться. Я достиг той точки, когда вы просто не знаете, чему учиться дальше, и я хотел бы задать вопрос для моего собственного любопытства.
Вопрос в двух словах: можно ли объединить несколько языков программирования в один результат? Например, может ли этот код быть возможным?
<html>
cout << "Hello world!";
</html>
или
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());
Это похоже на глупый вопрос, но я не могу знать, возможно это или нет, поэтому я и задаю его. В этом вопросе я замечаю, что он использует код Python в html-коде, если мой приведенный выше пример невозможен, что он сделал?
programming-languages
Bugster
источник
источник
Ответы:
Ваш первый пример является своего рода возможным. Обычно такие вещи случаются в PHP (и других связанных языках веб-программирования), например:
Несколько важных моментов, на которые следует обратить внимание в этом примере:
Ваш второй пример выглядит как некое сочетание C ++ и Java. Возможно, что скомпилированные модули, написанные на разных языках, общаются друг с другом, но объединить Java и C ++ в одном исходном файле было бы крайне запутанным и трудным: как бы компилятор узнал, какие операторы являются Java, а какие - C ++?
Полагаю, теоретически вы могли бы написать специальный компилятор / препроцессор с такими «языковыми» индикаторами, как:
Но я, честно говоря, не уверен, что ты получишь что-нибудь полезное, сделав это.
Кроме того, как эта гибридная языковая среда будет обрабатывать языковые функции, которые несовместимы между ними?
источник
CUDA
. Это смесь двух совершенно разных языков Си, с некоторыми функциями, скомпилированными для устройства (GPU), а некоторые остаются на хосте, с выводом уровня связи.Краткий ответ
На самом деле, нет.
Длинный ответ
Вложение
Как правило, один исходный файл содержит код точно для одного языка программирования. Нередко объединение нескольких языков в одном файле по нескольким причинам:
соединение
Различные языки программирования, которые совместно используют общий двоичный интерфейс приложения, могут быть объединены в единый исполняемый файл или библиотеку. Получение подписей двух языков внутри друг друга часто требует небольшой работы, но существуют инструменты, облегчающие этот процесс.
полиглотов
Код полиглота действителен и эквивалентен на нескольких языках. На странице 404 Stack Overflow есть одна такая программа:
Это печатает «404» на Python, Perl, Ruby, C, Brainfuck и Befunge.
Вывод
Языки редко смешиваются в файлах, и когда они есть, это для смеха . Люди даже стараются избегать смешения языков в проектах из-за дополнительных хлопот, которые он создает. Таким образом, хотя это технически возможно, смешивание разных языков не является ни распространенным, ни прагматичным.
источник
DATA
операторах. Не то чтобы я горький или что-то в этом роде. Noooo.Да, это действительно возможно. Конечно, не так, как вы себе это представляли. Есть несколько языков , созданных специально для этой цели.
На практике может оказаться очень полезным объединить несколько языков, специфичных для предметной области, в один основной язык. Редко возникает необходимость смешивать два или более одинаковых языка «общего назначения» вместе в одном файле исходного кода, хотя вы часто найдете проекты, написанные, например, на VB.NET и C #, с различными компонентами языка, скомпилированными по отдельности.
Что касается HTML, это просто язык разметки. Вы можете часто находить код на стороне сервера (например, в VB.NET), разметку HTML и код Javascript на стороне клиента, смешанные в одном исходном файле, хотя многие считают это плохой практикой.
источник
Это часто называют кодом полиглота - есть несколько забавных / безумных примеров, если вы переходите по ссылке или в других местах в Интернете. Большинство из них просто для развлечения / доказать, что это возможно.
Более серьезно, есть различные примеры из реальной жизни, где два или более разных языка могут быть с пользой объединены:
источник
Можно использовать некоторую комбинацию языков, используя Perl Inline, которая позволяет писать Perl-скрипт и вставлять фрагменты кода, написанные на другом языке:
источник
Встроенный SQL был распространенным способом встраивания операторов SQL в программы других языков.
В наши дни его почти полностью заменил более простой для компиляции доступ к базе данных на основе API, который не требует изменения языка хоста, но вместо этого использует его обычные возможности.
источник
Несколько языков программирования могут быть использованы для формирования 1 exe. Одним из способов является использование DLL. Конечно, есть различные опасения по этому поводу. Например, параметр совместимости, COM-совместимость и тому подобное. Фактически, если вы думаете о том, как вы называете систему баз данных для своей работы, вы можете обнаружить, что СУБД не всегда написана на языке, который вы знаете. Возможно, вам даже все равно, если интерфейс известен.
Эта концепция получает дальнейшее развитие, когда ваше решение использует веб-сервисы, что является еще более чистым способом объединения нескольких программных компонентов.
В мире .NET все вышеперечисленное применяется, более того, на уровне интерфейсов. Интерфейсы XAML и HTML могут жить вместе в Silverlight.
В мире UNIX одно время мы использовали скрипты KShell для запуска программ на C ++ и COBOL, чтобы решение могло работать.
источник
Я думаю, что здесь стоит упомянуть Cython . Это расширенный набор Python для написания расширений C, и хотя он сам по себе является уникальным языком, он в значительной степени позволяет использовать код C в коде Python, если вы соответствуете синтаксису стиля Python в Python
источник
Примеры объединения языков: Jython (python в Java), Cog (python используется как генератор встроенного кода практически во всем). Я часто использовал Perl-код для генерации C ++, если вы считаете генерацию кода.
источник
.NET Framework создан для того, чтобы несколько языков могли участвовать в одном решении. Он работает до тех пор, пока язык может генерировать CLR-совместимый байт-код.
http://www.geekinterview.com/question_details/1047
источник
Очень сложно, очень некрасиво и часто бесполезно объединять несколько языков программирования в один файл.
Однако возможно иметь большой проект, написанный на более чем 1 языке. Например, и Mozilla Firefox, и MySQL содержат код на C и C ++. Когда речь идет о больших проектах, эта практика часто используется, потому что определенный язык предоставляет некоторые функции, а другой нет. Например, в PHP вы можете запросить выполнение двоичного исполняемого файла, взять его результат и использовать его в своем PHP-коде с этого момента.
Если вам интересно, какие языки используются для некоторых из самых важных проектов с открытым исходным кодом в мире, вы можете проверить
Ohloh.net
. Статистику об исходном коде многих проектов можно найти там.источник
Вы можете «смешивать» языки в HTML. На самом деле важно, как много веб-сайтов работают, чтобы вы могли встраивать javascript в html. Но, конечно, HTML - это разметка, а не язык программирования.
Я думаю, что делать то, что вы предлагаете, повлечет за собой написание нового языка в любом случае. Либо вам нужно будет создать интерпретатор / компилятор, который бы говорил на всех этих языках и мог бы согласовывать их последовательно, либо вам понадобился бы какой-то способ явной поэтапной оценки на том, что будет метаязыком. Эти два варианта в основном одинаковы, за исключением того, что программист должен сделать, чтобы языки работали вместе.
источник
Язык - это инструмент. Перед тем, как выбрать инструмент (более того, сделать какую-нибудь странную комбинацию Хаммер-ПК-спектроскоп), следует спросить себя - что именно я хочу сделать ?? Как только ответ будет дан, вы обнаружите, что такое смешение языков редко требуется.
источник
Да, можно смешивать языки программирования, если ваш интерпретатор / компилятор может это понять. Например, смешивая JavaScript, PHP, Python в HTML или C ++ в C #.
Однако смешивание языков может затруднить чтение и модификацию кода, поэтому делать это следует осторожно. Одним из способов решения этой проблемы является создание отдельных файлов для кода на языке, который вам нужно вызывать, и его импорт, а не встраивание.
источник