<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Ни за ни против типизации, просто пример, когда строгая типизация
    могла бы решить проблему простым способом<br>
    <br>
    Примерно вот такой кусок кода:<br>
    <br>
    use JSON qw(to_json);<br>
    use Data::Dumper;<br>
    <br>
    my $numbers = {<br>
        one => 1.5,<br>
        two => 2,<br>
    };<br>
    my $str = to_json( $numbers );<br>
    print $str . "\n\n";<br>
    <br>
    my $str2 = Dumper($numbers);<br>
    my $str3 = to_json( $numbers );<br>
    <br>
    print $str3 . "\n\n";<br>
    <br>
    Получаем вот такой вывод:<br>
    <br>
    {"one":1.5,"two":2}<br>
    <br>
    {"one":"1.5","two":2}<br>
    <br>
    Т.е. берем структуру с заведомыми чиселками, которую нужно
    преобразовать в json, затем применяем к ней какую-нибудь функцию, в
    данном случае Dumper, и теперь наша дробная чиселка легким движением
    руки превращается в строчечку при json-сериализации. Если бы была
    строгая типизация, то такой проблемы бы не возникло.<br>
    <br>
    Конкретно у нас это стало проблемой, когда понадобилось посылать
    внутри json'а сумму в рублях (соответственно, это дробная чиселка),
    а на принимающей стороне был сервис, написанный на скале (т.е. со
    строгой типизацей), валидатор которого ругался на наши "1.5" и
    говорил, мол это не чиселка.<br>
    <br>
    Тут, конечно, можно сказать, мол, просто не используйте Dumper (или
    любую другую функцию, неявно преобразующую тип), но это не панацея,
    т.к. в любой момент в проект может прийти новый человек, не знающий
    про эту фичу, который возьмет да и начнет использовать одну из таких
    функций перед отправкой и все нахрен поломается.<br>
    В нашем случае решением проблемы стал перевод единицы измерения
    суммы из рублей в копейки и на нашей стороне и на принимающей
    (благо, принимающий сервис тоже наш), т.е. избавление от дробных
    чисел - перед отправкой для суммы всегда делался int и уже неважно
    было, что делали с этой чиселкой раньше.<br>
    <br>
    С другой сторону, в пользу не строгой типизации - если бы такой json
    (с "1.5") пришел в сервис, написанный на перле, то проблемы бы не
    было - мы бы адекватно распарсили и 1.5 и "1.5"<br>
    <br>
    <br>
    <div class="moz-cite-prefix">13.10.2015 19:08, Victor Efimov пишет:<br>
    </div>
    <blockquote
cite="mid:CAF7QZD4cTP7Y-g3zeBq5Kao2njBjpe9Y4vJKT4cpFgQ33cwrGw@mail.gmail.com"
      type="cite">
      твой пример был про программиста, который написал
      $b='20' с кавычками, а потом решил с переменной $b произвести
      сложение.
      это не вменяемый программист, даже по реальностям Perl5. он
      присваивает переменной заведомо строковое значение прямо в
      исходном
      коде, зачем-то пишет кавычки,
      а затем эту же переменную пытается складывать.
      если у тебя какой-то xml парсер - то и приводи примеры xml
      парсера. я
      за то чтобы избавиться от абстракций в этом треде, тут и так полно
      недопонимания. так что лучше пример кода обсужать
      а не на пальцах пытаться что-то объяснить и демагогией заниматься.
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      <span style="color:#4b4a45;font-style:italic">С уважением,<br>
        <br>
        Ольга Смирнова<br>
        Perl-программист проекта Деньги@mail.ru<br>
        раб.: +7 (495)-725-63-57 (внутр. 2199)<br>
        моб.: +7 (926)-959-16-23<br>
        e-mail: <a href="mailto:o.smirnova@corp.mail.ru">o.smirnova@corp.mail.ru</a><br>
        skype: olga_smirnova89<br>
        mail-agent: <a class="moz-txt-link-abbreviated" href="mailto:o.smirnova@corp.mail.ru">o.smirnova@corp.mail.ru</a><br>
        ISQ: 232733122<br>
      </span>
      <br>
      <a target="_blank" href="http://mail.ru" title="mail.ru"><img
          alt="mail.ru" src="cid:part2.00020405.01090605@corp.mail.ru"></a></div>
  </body>
</html>