Почему больше программ на C не встраивают Perl? - PullRequest
2 голосов
/ 29 августа 2009

Я знаю, что есть способ вызова подпрограмм Perl из C. Как показано здесь http://search.cpan.org/dist/perl/pod/perlcall.pod#NAME

Но, тем не менее, я не вижу широкого использования этого программистами на Си. Кто-нибудь использовал это ... когда-либо? или есть идеи, по каким причинам он так мало используется?

Ответы [ 6 ]

10 голосов
/ 30 августа 2009

Ну, самый известный пример встраивания perl-программы на C - это Apache и mod_perl , который позволяет людям получать доступ к API Apache через Perl.

Вы, вероятно, не видите много программ, встраивающих Perl, потому что они не нуждаются в этом как функция. Почему больше программ на C не отправляют электронную почту? :)

7 голосов
/ 29 августа 2009

Обычно это делается наоборот. То есть язык сценариев координирует вещи, а программа на Си выполняет обработку. Идея состоит в том, что код, который координирует, легко изменить, и код, который выполняет обработку, выполняется быстро.

Вероятно, нужно было бы создать интерпретатор perl через «системный» вызов C, чтобы что-то сделать. Вероятно, не совсем то, что вы имеете в виду.

3 голосов
/ 30 августа 2009

Зачем мне тормозить мою программу на C, вызывая Perl? И я говорю это как подтвержденный Perler . Теперь, вызывая C из Perl, это имеет смысл (если вам нужна дополнительная скорость).

Когда кто-то разрабатывает в C, это потому, что он хочет обменять время разработки на скорость исполнения.

Когда кто-то разрабатывает в Perl, это потому, что он хочет обменять скорость выполнения на время разработки.

3 голосов
/ 30 августа 2009

Есть две причины, по которым можно вызвать perl-функцию из C: расширение и встраивание.

В первом случае на самом деле это не так уж и редко, но для посторонних это довольно незаметно.

Хотя я думаю, что ваш вопрос на самом деле таков: «Почему люди не встраивают Perl чаще?» Есть несколько причин для этого, это гораздо сложнее, чем должно быть. самый важный ИМХО (см. perlcall , perlembed , perlguts и perlapi ).

2 голосов
/ 29 августа 2009

Одна из ситуаций, в которой это используется, связана с архитектурой плагина или сценариев. Например, IRC-клиент irssi написан на C, но поддерживает сценарии с использованием Perl .

Однако, по моему опыту, сборка irssi с включенным Perl хлопотна и склонна к сбоям. У меня были случаи, когда программа вообще не собиралась с включенными привязками Perl (некоторая ошибка компиляции или ссылки), а также когда программа компилировалась, но сразу же запускалась при запуске с ошибкой во время выполнения. Подобные проблемы могут объяснить, почему это не очень популярно - вызывать один язык из другого почти никогда не так просто, как в .Net.

0 голосов
/ 30 августа 2009

Многие программисты знают, как очень эффективно запутывать C, не прибегая к Perl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...