Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Альтернативы HN: OCAML

В OCAML, к счастью, не нужно париться с аннотациями, он стабильный, активно разрабатывается, есть под Win64 и даже интегрируется с MSVC 2005 x64. Но вот что получается в коде:
00000000 <_camlM__code_begin>:
   0:   89 c1                   mov    %eax,%ecx
   2:   83 f9 01                cmp    $0x1,%ecx
   5:   74 19                   je     20 <_camlM__code_begin+0x20>
   7:   8b 11                   mov    (%ecx),%edx
   9:   d1 fa                   sar    %edx
   b:   4b                      dec    %ebx
   c:   0f af da                imul   %edx,%ebx
   f:   43                      inc    %ebx
  10:   8b 41 04                mov    0x4(%ecx),%eax
  13:   eb eb                   jmp    0 <_camlM__code_begin>
  15:   8d 74 26 00             lea    0x0(%esi,%eiz,1),%esi
  19:   8d bc 27 00 00 00 00    lea    0x0(%edi,%eiz,1),%edi
  20:   89 d8                   mov    %ebx,%eax
  22:   c3                      ret
Последние 4 инструкции, само собой, несущественны. Генератор кода отличный, но цикл все равно в 10 инструкций вместо 5 за счет меченых целых чисел, необходимых камловскому сборщику мусора. Эти же меченые данные усложняют обмен данными с C++, но обнадеживает, что за счет этих меток сборщик мусора (по идее, не тестировал что они намутили в реализации) значительно быстрее и точнее консервативного Boehm GC.

В целом, OCAML очень близок к тому, что мне нужно - бесит, в основном, толстый маршаллинг и кривой, по сравнению с хаскеллевско-клиновским, синтаксис.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments