LINUX.ORG.RU

Изучаем OCAML :-)


0

0

В начале кратко о том, что на экране. На экране старый fluxbox, новый GNU/Emacs и тоже достаточно старая vmware. Но ду это всё не интересно, самое главное...

OCAML -- самое главное. Разбираться начал вчера. Что понравилось? Многое понравилось. Например реализация ФП порадовала (всякие там let, очень удобны). match любопытно, type интересно. Синтаксис вроде бы тоже приятный. Не Python конечно, но уже и не C++. Сам язык чем-то во многом схож с Lisp'ом, что тоже хорошо.

Ещё понравилось то, что к нему уже многое сделали :-) Тут тебе и компилятор, тут и интерпретатор... Красота. Порадовала также скорость. На сайте говорят, что он между C и C++. То есть я так понял, медленнее первого, но быстрей второго.

Из недостатков, отсутствие качественного GUI (у Java он есть) и нет библиотек по работе с OpenGL (есть, но староватые), реализации SDL вроде тоже нет. Но это всё дело поправимое. Самые же крупные минусы, это очень маленький объём документации на русском. Да и русских кэмл-гуру тоже трудно найти (в отличее от перловых или там сишных, тех пруд-пруди). Вопросы некому задать :-(

А ведь вопросов просто море. Например я плохо разобрался с match. Такая функция для меня так и осталась загадкой.

let min_rat pr = match pr with
((_,0), p2) -> p2
| (p1, (_, 0)) -> p1
| (((n1, d1) as r1), ((n2, d2) as r2)) ->
if (n1 * d2) < (n2 * d1) then r1 else r2 ;;

Тоже самое можно сказать и о:

let eq_rat cr = match cr with
((_,0), (_,0)) -> true
| ((_,0), _) -> false
| (_, (_, 0)) -> false
| ((n1, 1), (n2, 1)) when n1 = n2 -> true
| ((n1, d1), (n2, d2)) when ((n1 * d2) = (n2 * d1)) -> true
| _ -> false ;;

Что это ещё за ((_,0), (_,0)) ?

В остальном же всё нормально. Имеется "хорошая" книжка от O'Reilly (дочитал до Sum types) и прекрасный режим для Emacs'а (tuareg_mode).

>>> Просмотр (1024x768, 61 Kb)

★★★

Проверено: ivlad

Слюшяй, крута, да? Вай, маладес какой! Прихады, шашлык кушять будэм!

anonymous
()

Re:

Пишите Луговскому :-) Он про окамл когда говорит, почти не ругается почем зря, и вообще предельно конструктивен :-)

AlexM ★★★★★
()

***

> Порадовала также скорость. На сайте говорят, что он между C и C++. То есть я так понял, медленнее первого, но быстрей второго.

Чем-то мне эта фраза глаз царапнула... ;)

hbee ★★★★
()

Так сразу предупрежу ;-) Пока эта новость на LOR в кэше парилась я уже разобрался в pattern-matching, не нужно мне в этом помогать :-) Ну может разве что разяснить о скажем функциональных pattern-matching'ах, я ещё немного путаюсь в них.

zenkov ★★★
() автор топика

будь другом, дай стянуть книгу

anonymous
()

aga, hotim toje izuchat =)))) davay syuda knigu =))))

PS: a v web programminge on hot' kak nibud ispolzuetsya?

anonymous
()

PPS: kakoy odnako desktop krasiviy :) u menya vse temnoe vsegda.. pora menyat =)

anonymous
()

а всё нашёл её

хотя если не сложно выложи её

anonymous
()

---

Виталию Луговскому респект!

Хоть не очень я люблю научную школу господина Логунова, но высмеивание торсионщиков, "кретиноцианистов", религиозных фанатиков и "кульхацкеров" "весом в один центер" ВНУШАЕТ. :)))

---

ocaml рулеZZZ, так как построен на математической базе (Principia Mathematica) величайшего логика.

anonymous
()

((_,0), (_,0)) -> true | ((_,0), _) -> false | (_, (_, 0)) -> false | ((n1, 1), (n2, 1)) when n1 = n2 -> true | ((n1, d1), (n2, d2)) when ((n1 * d2) = (n2 * d1)) -> true | _ -> false ;; Здесь _ матчится с любым значением.

rmrfchik
()

Ia yzeh zakonchil perevod treh glav iz gnigi "Software developpement with ocaml", francyzskoe izdanie. Tak kak rysskij ne moj rodnoj iazuk, nuzhen kto-nobyd chtoby ispravit oshibki. Esli est zhelajushie - pishite na shamil at ifrance.com

babai
()
Ответ на: *** от hbee

>> Порадовала также скорость. На сайте говорят, что он между C и C++. То есть я так понял, медленнее первого, но быстрей второго. > >Чем-то мне эта фраза глаз царапнула... ;)

Царапнула? Да за такую фразу надо бить в хлебало не глядя. Ибо чел вообще о чем говорит не понимает.

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

Ососбенно справедлив тест: Count Lines/Words/Chars
Там где для подсчёта используются разные алшоритмы и g++ соответственно "сосёт".

alman ★★★
()

Этими тестами можно только подтереться. Perl быстрее PHP. Ура.
Тестируем реальное веб-приложение. PHP быстрее Perl. Хм...

anonymous
()

>> Ещё понравилось то, что к нему уже многое сделали :-) Тут тебе и >> компилятор, тут и интерпретатор... Красота. Порадовала также >> скорость. На сайте говорят, что он между C и C++.

Чушь это полная. Не от языка это зависит.

Eugeny_Balakhonov ★★
()

Нет, качество реализации компилятора/интерпретатора конкретного
языка конечно важна, но в реальном приложении наверняка
потребуется еще куча библиотек. И вот тут-то и надо замерять.
Например, в том же perl'e библиотеки Cgi и DBI сразу же тянут
его на дно. А в простеньких циклах и рекурсиях он типа быстр.
Только кого это волнует?

anonymous
()

вообще я не разбирался с функциональными языками, но недавно стал думать как бы я сдизайнил свой язык (из ниши Си/Си++) и пришел к основной управляющей конструкции -- goto с передачей аргументов. Потом я узнал что аналогичная штука -- называется J -- это базовый элемент управления в каких=то функциональных языках. Так что я пришел к выводу что действительно потенциал производительности он может быть у этих языков нехилый. Но важно чем компилировать и как писать.

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