Можно ли написать программу на нескольких языках программирования? Материал, который я прочитал в The Daily WTF, похоже, подразумевает, что большие компании / организации используют несколько разных языков при создании большого приложения. Как это работает? По работе с Django я знаю, что динамические веб-страницы часто объединяются с помощью множества разных языков (Python для контроллеров, язык шаблонов HTML + Django для представления и SQL для моделей), но как насчет программы, т.е. материал, который при компиляции превратился бы в .exe?
задан 11 дек.
Enrico Tuvera Jr
Архитектура Amazon — highscalability.com/амазон-архитектура — это хорошая смесь C ++, Java и Perl. — Chris Fulstow
12 ответы
Довольно часто большие приложения создаются с использованием разных языков и технологий. Смешение языков происходит по-разному. Во-первых, компиляторы разных языков могут производить совместимый вывод, который можно связывать вместе. Это могут быть файлы .obj из C, C ++, Pascal и других языков, компилируемые в собственный код.
Можно ли изучать несколько языков программирования одновременно. Ответ программиста!
Или это могут быть сборки .NET — вы можете легко использовать сборку, написанную на любом языке семейства .NET, из любой другой сборки языка семейства .NET. Кроме того, существуют различные технологии взаимодействия. У вас может быть некоторый код, обернутый как COM-объект и полученный из приложения на другом языке. Или вы можете поместить код на разных языках в разные программы и заставить их взаимодействовать с помощью какой-либо технологии межпроцессного взаимодействия, такой как RPC. В последнем случае им будет все равно, как работает другой процесс — они только отправляют и получают сообщения — так же, как вам все равно, что ваш браузер и веб-сервер, с которого вы читаете страницы, скорее всего, написаны на разных языках.
ответ дан 11 дек ’09, 07:12
Если компиляторы для разных языков могут создавать один и тот же формат объектных файлов, компоновщику все равно, на каком языке они были скомпилированы. от. Кроме того, вы можете скомпилировать .dll с любого языка, и он будет работать так же.
ответ дан 11 дек ’09, 06:12
Это возможно, хотя и не очень часто. Все языки в конечном итоге компилируются в сборку, поэтому, если каждый язык использует один и тот же ABI (соглашения о вызовах и т. Д.), Модули, скомпилированные на разных языках, могут быть связаны друг с другом. Однако это не обычное явление. Кроме того, многие программы используют язык расширения. Например, большая часть пользовательского интерфейса в World of Warcraft написана на языке расширений Lua, хотя основная программа WoW, вероятно, написана на C ++.
ответ дан 11 дек ’09, 06:12
Взаимодействие языков на самом деле чрезвычайно общий. — Рандольфо
Я согласен, это очень распространено. Большинство программ изначально разрабатываются с использованием одного основного языка. Однако со временем, по мере развития программы, появляется больше языков. — Эндрю Кейт
Не все языки скомпилированы в сборку. Многие до сих пор интерпретируются. Они интерпретируются ассемблерным кодом, и они может быть скомпилированы в сборку, но они все равно интерпретируются. — Крис Лутц
Ты смотришь только Простые видео по программированию не просто так
Да, вы, безусловно, можете писать программы более чем на одном языке. Что вам нужно сделать, так это разбить программу на модули. Например, напишите модули как библиотеки DLL. Вы можете использовать разные языки для каждой DLL, если хотите, если интерфейс между DLL является общим. Я работаю над программой, которая разрабатывалась более 8 лет.
Программа была разработана на C ++ много лет назад. Сегодня это .NET. Модуляризация осуществляется путем построения COM-объектов. Это позволяет нам использовать разные языки и технологии для одного и того же приложения. Самый старый код, который у меня есть, — это базовый ванильный C, а самый новый — C # 3.5.
Источник: stackovergo.com
Можно ли писать одну программу на нескольких языках?
Я начал изучать функциональное программирование. Пока в основном по книге СИКП. Видно, что это крутая штука. Когда нет управления состоянием — ФП по-моему очень облегчает написание кода, позволяет сосредоточиться на алгоритме. Но мне вот очень интересно, а можно ли вообще писать одну и ту же программу на разных языках?
Делают ли так? Например, писать все в императивном стиле — это по-моему не самая лучшая идея. Но и в функциональном стиле вряд ли получится целиком большую программу написать. То есть функциональны и императивный подход точно должны сосуществовать в больших программах, правильно? А вот что насчет языка?
Например, GUI и обращения к базе данных реализовать на java, а всю бизнес-логику на erlang? Нет, сейчас конечно можно писать в функциональном стиле и на java, но столько фишек как на erlang все равно не получишь. Например, erlang дает очень большие возможности для распараллеливания. На java, даже используя добавленные недавно лямбда таких возможностей для распараллеливания не добиться. В общем, интересует следующее: возможно ли технически в одном проекте писать часть на erlang, а другую на java?
Ответы (2 шт):
Не вижу ничего плохого в том, чтобы писать программу на нескольких языках, каждую часть — на том, на котором удобнее. Вопрос стоит больше в том, удобно ли компоновать части, написанные на различных языках.
Например, если языки, которые вы используете, опираются на общий рантайм, объединять их легко (особенно если при этом языки создаются с рассчётом на interoperability). Пример: языки на основе .NET (C#, Visual Basic, F#), языки на основе JVM (Java + Scala), языки на основе C (C + C++): объекты одного из них можно без особенного труда использовать в других.
С сильно разнородными языками связать модули сложнее. Обычно используют либо C в виде общего знаменателя (Python, P/Invoke в .NET), либо обмен данными через текстовый формат (Unix shell и его утилиты). Также часто применяются различные формы RPC (например, AJAX по сути является таковым, и не стоит забывать COM).
Ещё одна часто используемая возможность — полная или частичная кодогенерация. Например, Razor генерирует HTML, T4 и WPF генерируют исходники на C#.
По сути, сейчас и так многие программы пишутся на нескольких языках. Например, если вы пишете веб-сайт на чём-то наподобие ASP.NET MVC, то вы используете C#, Razor, HTML, Javascript и возможно Typescript в одном проекте.
Можно. Попробуйте язык Katahdin
Katahdin представляет язык программирования просто как инструмент, не ограничивая программиста в выборе платформы или библиотек. Каждый участок программы, отвечающий за конкретную задачу, может быть реализован на более подходящем языке программирования (в зависимости от задачи, разработчиков и используемых библиотек).
Например, программа на Фортране, предназначенная для вычислений, может плохо справляться с некоторой обработкой текста, требуемой при вводе-выводе. В этом месте лучше использовать более подходящий язык, например, Perl. В программе на Katahdin код, обрабатывающий текст и написанный на Perl, может быть использован в том же файле, что и программа на Фортране.
Источник: husl.ru
Почему второй язык программирования выучить проще, чем первый?
Когда только начинаешь программировать, может возникнуть такой вопрос: как опытные программисты умеют писать сразу на нескольких языках?
Ответ простой: если вы освоите хотя бы один язык программирования, писать на любом другом можно начать за полчаса. Разберём, как это работает, и посмотрим на исключение из правила.
Коротко: главная метафора
Вот простая метафора всего, что будет написано ниже.
Если вы научились водить автомобиль на механике, вы можете сесть плюс-минус за любой автомобиль и поехать. Вам необязательно ездить именно за тем рулём, за которым вы учились в автошколе. Может быть, первое время вам будет непривычно в новой машине, но вы быстро освоитесь.
Но если вы хотите участвовать в гонках типа «Формулы 1», то вам нужно знать ваш болид досконально, до винтика.
То же в разработке: принципы одинаковые, а нюансы языка можно освоить быстро.
Почему сложно учить первый язык программирования
В самом начале всё может даваться с трудом:
- непонятно, как работают переменные и зачем они нужны;
- что такое циклы и почему их так много;
- сложно разобраться с классами и методами;
- откуда-то вылезли функции, и в них работают свои правила;
- неизвестно, как вообще продумать логику программы, чтобы получилось хоть что-то работающее.
Это нормально, потому что вы осваиваете что-то новое. Раньше вы этого не умели, потом решили научиться и столкнулись с трудностями.
Со временем вы заметите, что циклы работают предсказуемо, а функции — идеальный инструмент для некоторых задач. Ещё через месяц вы понимаете, как собрать каркас программы, чтобы он не ломался. Ещё через месяц классы и методы уже гораздо понятнее, и часть вещей можно делать намного удобнее.
Шаг за шагом вы осваиваете свой первый язык программирования. Изучение идёт не слишком быстро, потому что много нового.
Почему второй язык учить гораздо проще
А вот когда вы решили выучить второй язык, вам не нужно заново изучать как таковое программирование.
Вам достаточно разобраться только с «грамматикой» нового языка — как пишутся функции, какие ставятся скобки, какие есть нюансы с операторами и т. д.
Разумеется, в каждом языке есть нюансы и определённый стиль программирования, который в нём приветствуется. Но это можно изучить и наработать за месяц-другой, без отрыва от производства. А по-варварски написать код на новом для себя языке можно хоть через полчаса, если документация под рукой.
Ограничения
Всё, что написано выше, верно для базового уровня владения языком — достаточного, чтобы работать, но недостаточного, чтобы делать супердорогие высоконагруженные проекты.
Как только вы переходите в «высшую лигу», от вас требуется не просто знание принципов программирования. Вы должны знать специфику конкретного языка и даже больше того — конкретной версии языка, в которой вы работаете. Например:
- Как именно реализованы разные вспомогательные функции языка, что у них с быстродействием.
- Какие есть баги конкретно в этой версии, из-за чего ваш софт может не работать.
- Какие оптимизации есть в этом языке и как их эксплуатировать.
- Как работать с определёнными библиотеками и модулями, характерными именно для этого языка.
И многое другое. Всё-таки языки делают не дураки, и если вы хотите использовать возможности избранного вами языка на полную, нужно изучать его глубоко и внимательно.
Исключение из правила
Из этого правила со вторым языком есть одно исключение: оно не работает, если второй язык принципиально другой по своей природе. Например, если вы изучили язык высокого уровня — JavaScript, а потом захотели перейти на Ассемблер — язык низкого уровня.
Или если вы решили изучить Brainfuck. Но зачем?
Источник: thecode.media