Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Можно ли писать одну программу на нескольких языках? [закрыт]

#java #erlang


        
             
                
                    
                        
                            Closed. This question is opinion-based. It is not currently
accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it can be answered with facts and citations by editing this post.
                        
                        Closed 3 года назад.
                                                                                
           
                
        
Я начал изучать функциональное программирование. Пока в основном по книге СИКП. Видно,
что это крутая штука. Когда нет управления состоянием - ФП по-моему очень облегчает
написание кода, позволяет сосредоточиться на алгоритме. Но мне вот очень интересно,
а можно ли вообще писать одну и ту же программу на разных языках? Делают ли так? Например,
писать все в императивном стиле - это по-моему не самая лучшая идея. Но и в функциональном
стиле вряд ли получится целиком большую программу написать. То есть функциональны и
императивный подход точно должны сосуществовать в больших программах, правильно? А
вот что насчет языка? Например, GUI и обращения к базе данных реализовать на java,
а всю бизнес-логику на erlang? Нет, сейчас конечно можно писать в функциональном стиле
и на java, но столько фишек как на erlang все равно не получишь. Например, erlang дает
очень большие возможности для распараллеливания. На java, даже используя добавленные
недавно лямбда таких возможностей для распараллеливания не добиться. В общем, интересует
следующее: возможно ли технически в одном проекте писать часть на erlang, а другую
на java? 
    


Ответы

Ответ 1



Не вижу ничего плохого в том, чтобы писать программу на нескольких языках, каждую часть — на том, на котором удобнее. Вопрос стоит больше в том, удобно ли компоновать части, написанные на различных языках. Например, если языки, которые вы используете, опираются на общий рантайм, объединять их легко (особенно если при этом языки создаются с рассчётом на 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 в одном проекте.

Ответ 2



Можно. Попробуйте язык Katahdin Katahdin представляет язык программирования просто как инструмент, не ограничивая программиста в выборе платформы или библиотек. Каждый участок программы, отвечающий за конкретную задачу, может быть реализован на более подходящем языке программирования (в зависимости от задачи, разработчиков и используемых библиотек). Например, программа на Фортране, предназначенная для вычислений, может плохо справляться с некоторой обработкой текста, требуемой при вводе-выводе. В этом месте лучше использовать более подходящий язык, например, Perl. В программе на Katahdin код, обрабатывающий текст и написанный на Perl, может быть использован в том же файле, что и программа на Фортране.

Комментариев нет:

Отправить комментарий