0
13

Мнемоничность Perl API

hurricup
2015-02-14 10:44

Привет всем поклонникам Perl.

Хочу поделиться идеей и спросить совета.

Приболев жутким гриппом, наконец, я решил нормально поштудировать perlguts. Следует отметить, что у меня уже есть небольшой опыт написания XS расширейний, но взаимодействие с Perl там было минимизированно настолько, насколько это возможно. Основной код был именно на C.

Но хочется большего и понять этот страшный священный текст тоже хотелось очень давно.

Если не пишешь на C для Perl постоянно, то открывая perlguts, perlapi или любой чужой модуль с целью самообразования, лично я впадаю в ступор от названия перловых макросов и вызовов. В итоге, приходится постоянно прыгать по API reference и смотреть, а что же хотели сказать разработчики аббревиатурой svvsetpvfn и чем он отличается от svvsetpvf? Причем, это одни из более поздних макросов (как я понимаю), самые древние еще хуже.

Кошмарный кэмлкейс, обилие отличающихся одной буквой аббревиатур - это кошмар для новичка. Почему нужно было назвать синоним malloc не, скажем, perl_malloc, а Newx ??? WTF ?

Я понимаю, что человеку, который занимается разработкой постоянно это наверное даже удобно, можно кодить быстро без автокомплита, меньше печатать и тайная логика названий перловых конструкций не мешает.

Но я - новичок и мне тяжело. Почти сразу же возникла мысль, что надо бы сделать для себя хидер, который смапит "жуткие" перловые названия на что-то мнемоничное. Сказано - сделано. Я начал работу, которую можно посмотреть вот тут: https://github.com/hurricup/Perl-Mnemonic-API

На мой взгляд, код:

perl_scalar*    my_scalar = create_scalar(0);
set_scalar_string( my_scalar, "This is a text" );

будет понятен даже незнакомому с Perl API вообще, в отличии от

SV* mySV = newSV(0);
sv_setpv( mySV, "This is a text" );
И список автокомплита должен выглядеть логичным и понятным, в отличии от нативного.

Я попытался погуглить нечто подобное, но, либо я туп и искал не так, либо никто никогда ничего подобного не сделал. И это супер-странно.

В связи с вышеизложнным есть вопросы:

1. Не встречал ли кто-то чего-либо подобного? И если да, то покажите, пожалуйста.

2. У меня нет опыта разработки больших С проектов с большим количеством файлов и библиотек. Возник вопрос - как быть с пересечением имен? Можно, конечно, начинать все названия с perl_, но это будет оверхед. Вобщем, нужен совет от опытных людей.

3. Если вам покажется это начинание хорошим и полезным, то велком поучаствовать, покритиковать (конструктивно) и попредлагать.

Собственно, все. Спасибо за внимание.

Чтобы ответить, залогиньтесь или зарегистрируйтесь.
  • @user
  • _italic_

    italic

  • **bold**

    bold

  • [PP](http://pragmaticperl.com)

    PP

  • <http://pragmaticperl.com>

    http://pragmaticperl.com

  • module:Plack

    Plack

  • release:URI

    URI

  • author:VTI

    VTI

  • `my $foo = 'bar'`
  • ```
    my $multi;
    $line;
    ```