# Objective Caml

### Матеріал з Вікіпедії — вільної енциклопедії.

Objective Caml
Зображення:Caml.128x58.gif
Парадигма: | мультипарадигмна: імперативна, функціональна, об'єктно-орієнтована
Розробник: | INRIA
Останній реліз: | 3.09.3 / 15 вересня, 2006
Діалекти: | JoCaml
Під впливом від: | Caml Light, Standard ML
ОС: | Cross-platform
Ліцензія: | Q Public License (компілятор) LGPL (бібліотека)
Сторінка інтернет: | http://caml.inria.fr/

англ. OCaml (о-ка-ем-ель, англ. Objective Caml) — одна із реалізацій мови програмування Caml. Розширює базові можливості мови Caml об'єктно-орієнтованими можливостями.

До набору інструментів OCaml належить інтерактивний інтерпретатор, компілятор в байт-коди, та оптимізуючий компілятор в машинні коди. OCaml має велику стандартну бібліотеку, яка робить його прийнятним для багатьох застосувань, аналогічним застосуванням Python або Perl, та потужні конструкції модульного та об'єктно-орієнтованого програмування, які роблять його прийнятним для розробки великих систем.

OCaml є наступником Caml Light. Скорочення CAML означає англ. Categorical Abstract Machine Language, хоча OCaml не використовує цей абстрактний автомат.

## [ред.] Філософія

OCaml об'єднує функціональний, імеративний та об'єктно-орієнтований стилі програмування під дахом ML-подібної системи типів.

Статична система типів OCaml усуває великий клас помилок програмування, які можуть викликати проблеми під час виконання програми. Однак, вона також примушує програміста враховувати обмеження системи типів, що може потребувати великої уваги. Компілятор з виведенням типів значною мірою зменшує потребу в ручному позначенні типів (наприклад, тип даних змінних та підписи функцій, як правило, вказувати не треба на відміну від мови програмування Java). Тим не менш, ефективне використання системи типів OCaml може вимагати певної гнучкості з боку розробника.

## [ред.] Особливості

До особливостей OCaml належить статична система типів, виведення типів, параметричний поліморфізм, хвостова рекурсія, замикання першого рівня з підтримкою в лексиці мови, функтори (параметризовані модулі), обробка винятків, та автоматичне прибирання пам'яті.

## [ред.] Приклади коду

Найкращий спосіб вивчення вихідних текстів програм на OCaml є обробка інтерпретатором в режимі «верхнього рівня». Цей режим є інетрактивним сеансом роботи з інтерпретатором OCaml, який відображає виведені типи результатів або введених виразів. Інтерпретатор в режимі «верхнього рівня» запускається програмою `ocaml`:

      $ ocaml
           Objective Caml version 3.09.0

      #

Після цього, можна вводити код в рядку запиту, який починається на «`#`». Наприклад, для обчислення 1+2·3:

      # 1 + 2 * 3;;
      - : int = 7

OCaml робить висновок, що тип виразу має бути `int` (машинне ціле) та виводить результат `7`.

### [ред.] Hello World

Наступна програма `hello.ml`:

    print_endline "Hello world!";;

може бути скомпільована в байт-коди:

    $ ocamlc hello.ml -o hello

та виконана:

    $ ./hello
    Hello world!
    $

### [ред.] Алгоритм Евкліда

Рекурсивна функція для обчислення найбільшого спільного ділильника за алгоритмом Евкліда матиме вигляд:

    let rec gcd(a,b) =
      if b=1 then 1 else
        let rest = a mod b
      in
      if rest = 0 then b else gcd(b,rest);;

## [ред.] Застосування

OCaml є мовою програмування загального призначення, однак, до найвідоміших її застосувань належать:

### [ред.] Комп'ютерні науки

- Доведення теорем (Coq, HOL Light, MetaPRL, Darwin)
- Аналіз програм (CIL, C Code Analyzer, Astre'e, RopasWork)
- Розробка компіляторів (компілятор OCaml, Felix, MTASC, haXe)

## [ред.] Дивіться також

У ВікіДжерелах є
тексти програм на OCaml

### [ред.] Ресурси інтернет

- Домашня сторінка(англ.)
- Підручник для початківців(англ.)
- Останній зареєстрований проект на SourceForge на Ocaml

Отримано з http://uk.wikipedia.org../../../o/b/j/Objective_Caml_9f9d.html

Категорії: Функціональні мови програмування | Імперативні мови програмування

##### Views

- Стаття
- Обговорення
- Поточна версія

##### Участь

- Портал спільноти
- Кнайпа
- Довідка
- Пожертвування

##### Пошук

##### Іншими мовами

- Deutsch
- English
- Español
- Français
- Italiano
- 日本語
- ‪Norsk (bokmål)‬
- Polski
- Português
- Русский
- Slovenščina
- Тоҷикӣ
- Türkçe
- 中文