LINUX.ORG.RU

Вышел новый релиз функционального языка программирования Objective Caml 3.04


0

1

Тем кто не в курсе, это одна из реализаций функционального языка программирования ML, которая базируется на диалекте CamlLight плюс ОО расширения и модульная система в стиле Standard ML. Поддерживаются практически все UNIX платформы, а также все виды Windows'а, MacOS, MacOS X. Вся прелесть, в том, что однажды созданный байт-код, может выполняться на всех перечисленных выше платформах (32-х и 64-х разрядных). Конечно есть еще компилятор в high-performance native код, а можно выполнять программу как скрипт ;)

В Changes очень много изменений и добавленных фич.

Кому интересно, могут сходить по ссылке, и посмотреть текущие проекты: http://caml.inria.fr/hump.html

А мне сам язык и идея FP+OOP -- в одном флаконе очень понравились, ИМХО.

>>> Objective Caml 3.04



Проверено:

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

Олег

anonymous
()

Альтернатива Perl - Python, очень удобно и мощно - лучшее от perl, java и php.

anonymous
()

Это точно Python - сейчас самое то. Мне понравилось. Меня тоже Perl доставать начал.

anonymous
()
Ответ на: комментарий от anonymous

Есть мощный пакет PCRE-Regexp - полностью перлокомпатибыл, ну и для простеньких задач есть мелкий и deprecated уже пакет Str, входящий в стандартную библиотеку.

За пакетиками надо лезть в раздел Hump на сайте.

Antichrist
()

А python только интерпретатор?

Олег.

anonymous
()

Python может сделать bytecode и "заморозить" его - т.е. будет обычный исполнимый файл, к которому прилинкован RunTime и содержащий весь твой код во внутреннем формате.

PS: а extensions на C/C++ всеж проще к Perlу писать, чем к Pythonу. Стоит сравнить хотя размер CPAN с доступными модулями для Python

anonymous
()
Ответ на: комментарий от anonymous

>PS: а extensions на C/C++ всеж проще к Perlу писать, чем к Pythonу

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

А если еще и SWIG при этом использовать -- то вообще детское занятие.

walrus
()

Ну и при чём тут Питон? С такой корявой лямбдой Питон просто не имеет права находиться под одним топиком с OCaml-ом.

Antichrist
()

Насчет лямбды. Где можно почитать на русском теорию. О преобразованиях там, всяких, теоремах.

anonymous
()

Кто-нибудь может даст ссылку на простенькое введение в OCaml для
тех, кто совершенно не в курсе, что такое функциональное программирование, и пишет на обычных языках?

Please-please
-------------------
А еще об альтернативе Перлу - перлисту будет особенно просто перейти
на Ruby - completely Object Oriented scripting language. Мощный и простой.

www.ruby-lang.org
www.rubycentral.com
www.rubygarden.org

книга -
http://www.rubycentral.com/book/index.html

usenet group - comp.lang.ruby

исходники для юниксов и cygwin -
ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.6.5.tar.gz

готовый дистрибутив для винды -
http://dev.rubycentral.com/downloads/files/ruby165-1.exe



/nick Gerbill

anonymous
()

Не имею ничего против других языков, но объясните, чем вам Perl не угодил? Обязательно
имеется в любом юниксе, удобен и мощен -- хочешь/не хочешь, а знать его придется.
А вот к следующей осени будет Perl6 - глубокая ревизия с большими перспективами.
Обратно станете переучиваться? :)

dvb
()

Вопрос имею к знатокам языков: мне кажется, что обязательное условие выживания нового
языка - наличие стандартного платформенно-независимого преобразования из собственного
представления структур данных в представление, используемое стадартными библиотеками
( и обратно, само собой ) и механизма подключения библиотек. Если этого нет, то у
языка нет даже шанса достичь зрелости. Правильно?
А как с этим в caml?

dvb
()

Излишней "креативностью" и эклектикой. Для каждой фичи в перле свой подход, ну и накой оно нужно?! Вот появится эта самая глубокая ревизия (это которую собирались вместе с питон-тимом делать, но не собрались, кажется?!) и посмотрим, стоить ли к нему возвращаться. Знать перл приходится, а вот юзать сейчас, когда есть питон, для своих поделий - нонсенс. Ясный, быстрый, байт-компилируемый, встраиваемый-наращиваемый и т.д. Хочешь - используй как системный скриптор, хочешь - в песочницу, хочешь - в Апач, хочешь в JavaVirtualMashine... Есть также везде, места с модулями занимает сравнимо с перлом. По удобству - намного превосходит. imho.

anonymous
()

>представления структур данных в представление, используемое >стадартными библиотеками
>( и обратно, само собой ) и механизма подключения библиотек. Если >этого нет, то у
>языка нет даже шанса достичь зрелости. Правильно?
>А как с этим в caml?

С этим все нормально.
Биндинги Си <--> Caml пишутся элементарно. Есть даже утилиты -
ты ей .h файл скармливаешь оно тебе готовый интерфейс выдает
для работы с библиотекой из Caml.

>Не имею ничего против других языков,
>но объясните, чем вам Perl не угодил?
Дело в том что Перл как токовой не имеет стройной концепции,
возник он можно сказать спонтанно, и основная цель -
собрать все unix-утилиты в одной упаковке. Вышло общем неплохо,
для задач где раньше пришлосьбы пользовать скажем bash, awk, sed
и еще парочку утилит, перл предлагает довольно неплохую альтернативу.
Плюс еще CPAN.
НО. Из за своей "спонтанности" он не имеет многих вещей
которые просто должен иметь современный язык программирования.
Конечно производятся попытки ввести их поверх существующих
конструкций, однако это приводят только к засорению и утяжелению
языка.

A Caml - это очень хорошо продуманный и
_ОТЛИЧНО РЕАЛИЗОВАННЫЙ_ язык, с четкой концепцией. Чего стоит только система модулей, типизация, функции первого порядка,
отличный сборщик мусора, ну и много других приятных вещей.
Плюс скорорость, нетребовательность к ресурсам, компактность.

Во здесь смотрим бенчмарки:
Для винды - http://dada.perl.it/shootout/craps_cpumemloc.html
Для линукса - http://www.bagley.org/~doug/shootout/craps.shtml

Смотрим и делаем выводы!

anonymous
()

> Дело в том что Перл как токовой не имеет стройной концепции,
> возник он можно сказать спонтанно, и основная цель -
> собрать все unix-утилиты в одной упаковке. Вышло общем неплохо,

Основной целью Perl-а можно назвать создание инструментария для решения задач
обработки произвольных текстовых данных. Эти задачи всегда будут важны и нужны в
юниксе. Цель достигнута с честью. Остальное - дань моде. А caml имеет свою нишу
в каком-то круге задач или претендует на роль универсального языка на все случаи
жизни?

dvb
()

> А caml имеет свою нишу в каком-то круге задач или > претендует на роль универсального языка на все > случаи жизни?

Изначально язык ML был разработан для доказательства теорем, утекло немало времени и семейство ML сильно разрослось, да и сам язык значительно изменился. Оказалось что на него очень хорошо ложатся решения многих задач. Так что можно сказать что Caml язык общего на значения, скажем есть интерфейсы к разнличным БД, CGI, поддержка threads, регулярных выражений как POSIX-совместимых так и аля Perl, работа с целыми произвольной точности, XML - парсер, gtk, встроенная поддержка типов, массивов( с возможностью контроля допустимости диапазонов), исключения, и т.д. и т.п. Отладчик, профайлер, интерпретатор, препроцессор, ocamlYACC, ocamlLex включены в поставку.

anonymous
()

Я на Caml писал: a) Raytracer (ICFP'00 contest) b) Hierarchical aniamtion player (на базе моделей из Outcast) c) IceDock приблуду для поддержки dockapp's в IceWM/TWM/MWM/Sawfish etc. d) Да и все остальное

Так что, для меня, OCaml = general purpose language(and the best at that)

anonymous
()

2anonymous (*) (2001-12-19 02:31:23.0)
> c) IceDock приблуду для поддержки dockapp's
> в IceWM/TWM/MWM/Sawfish
Очень заманчиво звучит. Можно постотреть? А то велосипед изобретать не хоца :-)

Korwin ★★★
()
Ответ на: комментарий от Korwin

2Korwin: после распаковки -> лезешь в каталог x -> там лежит файлик .icedockrc -> $HOME -> правишь по своему вкусу -> наслаждаешься результатом ;)

ska
() автор топика

2ska. Спасибо.
Что-то я к 7 утра вообще соображать перестал :-)

Korwin ★★★
()

А вот непонятно. Написано Caml, а ссылка на дистрибутив идет в директорию caml-light. Это как понимать?

Havoc ★★★★
()
Ответ на: комментарий от Havoc

Ну дык ведь Objective Caml вырос как раз из реализации Caml Light.

Antichrist
()

Официальный дом IceDock http://algol.prosalg.no/~malc/icedock
Правда там сейчас лежит довольно старая и сырая версия, если соберусь то выложу на днях working sources так сказать.

anonymous
()

To Antichrist:

>>Насчет лямбды. Где можно почитать
>>на _русском_ теорию. О преобразованиях там, всяких, теоремах

>http://www.cl.cam.ac.uk/Teaching/Lectures/funprog-jrh-1996/index.html

Это я читал, но честно говоря слабоват я в математической
терминологии на инглише, поэтому и прошу чтобы
именно на _русском_, потому как не врубаюсь я маленько :-(.

anonymous
()
Ответ на: комментарий от Korwin

> c) IceDock приблуду для поддержки dockapp's
> в _IceWM/TWM/MWM/Sawfish_
А что это такое?

anonymous
()
Ответ на: комментарий от anonymous

2 anonymous (*) (2001-12-19 18:18:53.0): Посмотри в сабже, там есть ссылка!

ska
() автор топика

А кто-нибудь haskell и ocaml сравнивал ?

И есть ли под них библиотеки для баз данных?
Например под Sybase ?

anonymous
()

>>Не имею ничего против других языков,
>>но объясните, чем вам Perl не угодил?

>Дело в том что Перл как токовой не имеет стройной концепции,
>возник он можно сказать спонтанно, и основная цель -
>собрать все unix-утилиты в одной упаковке. Вышло общем неплохо,
>для задач где раньше пришлосьбы пользовать скажем bash, awk, sed
>и еще парочку утилит, перл предлагает довольно неплохую >альтернативу.
>Плюс еще CPAN.
>НО. Из за своей "спонтанности" он не имеет многих вещей
>которые просто должен иметь современный язык программирования.
>Конечно производятся попытки ввести их поверх существующих
>конструкций, однако это приводят только к засорению и утяжелению
>языка.

Думаю, что как долгое время писавший на Перле, имею право
добавить к списку того, что в Перле мне не нравиться.

1) Глобальные переменные по умолчанию. Все время use strict

2) линеаризация, когда push одного массива в другой приводит
к одному массиву, а не сложной структуре данных, а хеш
превращается в кусок массива ключ, значение, ключ, значение

3) References - попытка решить проблему пункта 2 и иметь возможность
создавать сложные структуры данных, результат -
идиотский навороченный синтаксис

4) Примитивный способ передачи параметров в функцию, для передачи
не-скаляров приходится использовать references

5) OO - dirty hack в 5 Перле. OO программы писать на Перле -
лучше я на Бейсике напишу

6) отсутствие дизайна как такового - пласты наворотов и dirty hacks
Понадобились локальные переменные - захреначили my $a,
понадобились сложные структуры - а давайте захреначим
referencies, ${$a->[2]->{'hello'}}{4}. Каково?
А давайте последний элемент массива @a у нас будет @#a ?
Давайте! Ну и так далее

Такие языки как Ruby & Python не менее мощные, но гораздо проще
писать, и что важно, читать и поддерживать код!


/nick Gerbil

anonymous
()
Ответ на: комментарий от anonymous

Сложно сравнивать. Haskell ленивый, а Caml - нет. И это очень фундаментально.

Ну а для баз данных много чего есть. Есть биндинги ODBC, есть для PostreSQL, есть мои биндинги для Oracle.

Antichrist
()

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

Для баз данных все просто берешь нужную сишную библиотеку,
читаешь главу "Interfacing C with Objective Caml" из manuala
и за день-два пишешь нужный биндинг.
Для примера можно посмотреть уже существующий, скажем к MySQL.
Для информации - размер биндинга к MySQL, занимает от силы
страниц пять-шесть исходников. Так что проблем нет.

anonymous
()
Ответ на: комментарий от Antichrist

to Antichrist (*) (2001-12-19 11:40:50.0)
Прочитал я описание термина "functional language". Все отличие от императивного
лишь в способе представления одной и той же мысли. Вспоминая, какие ты тут баталии
развертывал с любителями императивных языков, сразу возникает вопрос о твоем
психическом здоровье. Понятно, что математику-теоретику приятней видеть sum[1..10],
а инженеру-практику привычней иметь дело с for (i=1; i<=10; ++i) y += i;
Кстати, жудожник кубист тоже смог бы выразить эту мысль, но по-своему ;)

Другое дело, что ты никогда нормально не мог описать действительно хорошие стороны
реализации этого языка - скорость, эффективность, гибкость, расширяемость.
То, что ты тут плел до сих пор работало исключительно на антирекламу языка ;(
Такой вот ты мудак.

anonymous
()

Проверил на тех же тестах:
Fibonacci Numbers:

kamil$ time ./fib_c 30
1346269

real 0m0.265s
user 0m0.270s
sys 0m0.000s

kamil$ time ./fib_ml 30
1346269

real 0m0.153s
user 0m0.140s
sys 0m0.020s

kamil$ time ./fib_cpp 30
1346269

real 0m0.271s
user 0m0.270s
sys 0m0.000s

Результат налицо ;)

ska
() автор топика
Ответ на: комментарий от anonymous

>Понятно, что математику-теоретику приятней видеть sum[1..10], >а инженеру-практику привычней иметь дело с for (i=1; i<=10; ++i) y >+= i;

А инженеру практику не приходило в голову: y += (i * (i + 1)) >> 1; ?

anonymous
()
Ответ на: комментарий от ska

> Посмотри: http://www.bagley.org/~doug/shootout/craps.shtml

А что ты мне показываешь, я не спорил, мне самому это нравится. Речь идет
о том, что анчихрист как та собака - что-то понимает, но нормально сказать
не может. Сколько он тут крови выпил дурацкими спорами "функциональный язык против
императивного".

anonymous
()
Ответ на: комментарий от ska

Мне нравится не столько сравнительная скорость исполнения, сколько экономное
расходование памяти. Это говорит об очень аккуратной реализации.

anonymous
()
Ответ на: комментарий от anonymous

>>kamil$ time ./fib_c 30
>>real 0m0.265s
>>
>>kamil$ time ./fib_ml 30
>>real 0m0.153s

>libc bloat?
OCaml линкует к той-же самой libc + надо подготовить GC, frametables,
таблицу root-ow, это так в дополнению ко всем C related инициализациям.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.