LINUX.ORG.RU

Вышла книга «Real World OCaml»

 ,


1

5

Увидела свет финальная версия книги «Real World OCaml». Этот учебник познакомит вас с инструментами и методами, с помощью которых можно эффективно решать разнообразные практические задачи.

В процессе чтения этой книги вы

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

Купить бумажную или электронную копию книги «Real World OCaml» можно на Amazon.com.

Электронная версия книги, распространяемая на условиях лицензии CC-BY-ND, доступна на сайте realworldocaml.org. Для получения доступа необходим аккаунт на github.

>>> Подробности

★★★★★

Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 1)

Ответ на: комментарий от rros

Some of you will know and love all of these features, and for others they will be largely new, but most of you will have seen some of them in other languages that you've used.

Читаю это в книжных описаниях практически каждого ЯП'а.

rros
()

Вот бы еще что-нибудь не очень древнее по нему на русский перевели. По тому же хаскелю есть «Изучай хаскель во имя добра» и Дужкин, а по окамлу на русском ничего. Учить яп по иноязычным документациям - никакого удовольствия.

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

Как и любой другой ЯП — чтобы писать программы.

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

Не умеешь читать на человеческом языке - не смей программировать. И без тебя бракоделов и тунеядцев в индустрии полно.

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

Теорему о 4-х красках доказали и без него.

A-234 ★★★★★
()
Ответ на: комментарий от Kakadu

Я так понимаю это ограничение типа «сахара», лексическому анализатору не нужен но с ним программировать удобнее.

A-234 ★★★★★
()
Ответ на: комментарий от amazpyel

Скажите мне, где используется этот язык?

в расширении сознания, в Rosetta, а далее срачах в основном :)

хотя на ocaml.org есть список всех (over)20 компаний и приложений, куда впрочем попали Citrix и Xen.

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

Читаю это в книжных описаниях практически каждого ЯП'а.

Только вот с такими фишками как у OCaml, нет ни одного известного мне ЯП, кроме хаскеля. Тем окамл и интересен. От хаскеля его отличает поддержка императивного стиля: некоторые задачи проще решать императивно. Дополнительный бонус - высокая скорость исполнения, сравнимая с C++.

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

От хаскеля его отличает поддержка императивного стиля

Вообще-то ещё ООП со статической утиной типизацией и первоклассных модулей.

Begemoth ★★★★★
()
Последнее исправление: Begemoth (всего исправлений: 2)

Купить бумажную или электронную копию книги «Real World OCaml» можно на Amazon.com.

электронную лучше у http://www.oreilly.com/ там у них книга в разных форматах без DRM (можно даже в амазоновский киндл или дропбокс ее от туда отправить), а вот с бумажной там проблемы продать они продадут а потом придет письмо о том, что заказ отменен и жди пока деньги обратно разблокируют

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

От хаскеля его отличает поддержка императивного стиля

в шмаскеле императивно тоже можно

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

А утиная типизация, но при этом статическая это что ли определения типа по первому присвоению?

pylin ★★★★★
()

Вообще, эмель сдох. Никакого развития нет и не планируется. Тот же Лерой прямо писал в конфочку, что да, ГЦ окамла сосет, но ему похуй, ничего делаться не будет. А раньше раньше развитие было разным в разных реализациях, т.е. приличная оптимизация в Млтон, свежие языковые фишечки в нью-джерси или москоу, человеческое лицо в элис, в окамле - традиционнно сосание хуйцов бесплатно. Флагманской реализации так и не появилось, язык распался на диалекты. Итого, большинство реализаций и диалектов сдохли или в коме, комьюнити нет, библиотек меньше чем в хаскеле, эмелеебы переходят на хаскель хлопая дверью (могу доставить свежую сочную пасту), заглянувшие на огонек хаскелеебы охуевают от того, что в Окамле все делаешь, а ничего нет. При этом окамл позиционируется как практичный, но практичность окамла это: нет многопоточности, нет нормальных числовых типов, нет нормального ГЦ, нет нормальных оптимизаций в компиляторе, нет либ, нет инфраструктуры, нет комьюнити, на главном сайте есть надпись, что окамл - практичный язык.

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

В общем-то окемл — это такое легаси для компиляции Coq. Язык так себе, практически не развивается (0.5-1 man-power на поддержке), но умеет быстрые символьные вычисления (сам Ксавье переключился бы с него на что-нить еще, было бы на что). Кроме большей скорости на некоторых задачах и большей простоты обучения, у кемла нет никаких особых достоинств. А вот недостатков куча.

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

Приведенный пример еще не так страшен. Понадобилось всего две вспомогательные ф-ии (drop/takeWhile, ужасающе кривой inputlist с mutlist не в счет). А вот при разработке больших проектов кемл показывает себя во всей красе — иерархических модулей нет, автоматом они в repl не подгружаются. Мутабельность, которая по-началу местами что-то упрощает, потихоньку превращает проект в кашу. Отсутствие ленивости по-умолчанию делает всё менее модульным. Уж не говорю про отсутствие type class-ов, задания приоритетов операторов, убогие функторы. В итоге получается конечно получше, чем C++/java/c#/python (все таки замыкания, вывод типов, алгебраические типы, pattern-matching), но остаются все их проблемы связанные с неконтролируемой мутабельностью.

(папрашу не путать православный мл с мутантом кемлом. и не приписывать ВСЕМ вариантам мл неустранимые преимущества имеющиеся только у кемла. в отличие от кемла мл-щики хорошо относятся к параллелизму и он в нескольких реализациях есть. и хотя в некоторых при этом сборщик мусора еще не параллелен, но в poly-ml например он уже запилен. и полька масштабируется отлично, хорошо ублажает изабеллу. ходят слухи и про sml-sharp. про mlton - пока не уверен. говорите мл не развивается? при наличии достаточно полного стандарта мл97 есть планы и на новый стандарт. просто старый стандарт был продуман настолько годно что до сих пор неплохо работает. что тут говорить - в хаскеле до сих пор нет нормальной модульности а только уродство убогое тайпклассное. что толку от иерархий если самого главного нет - изоляции, достаточной чтоб дать гибкость? в хаскеле все влияет на все. скорость хаскеля вообще отдельный разговор - она то есть то ее нет. и нуб ни в жись не ускорит хаскель если ему не повезло нарваться внезапно на тормоза. так что с хаскелем так - либо за пять минут нашел готовое решение... либо споткнулся о кирпич и тогда сиди кури бамбук месяцами ищи обходы. полюбуйтесь на высера на шутауте. И почуствуйте разницу между недостатками МЛ и недостатками хаскеля. на МЛ все недостатки типа - «еще не написано но то что есть вполне годная база а остальное никто не мешает дописать». а на Хаскеле - «кирпич! все механизмы уже написаны для чего-то другого именно так, и хрен их поменяешь или отключишь». Если не умеете писать на мл иммутабельно и нормально использовать модули так учитесь. Ленивость никак не связана с модульностью или возможностью обрабатывать бесконечные структуры данных, а функции высокого порядка есть и в МЛ. Так что пилите свой хаскель лучше до надежно работоспособного состояния, хотя бы как у «старых» МЛ, а не занимайтесь всякими недостаточно обоснованнями срачами тут с умным выражением лица)

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

Скажите мне, где используется этот язык?

Как оказалось, в MLDonkey. 100 лет использую эту программу, думал, что она на дельфи, оказывается, на ОКамле. Надо, видимо, попробывать выучить к следующему семестру.

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

В последнее время какие-то потоки говна^Wанонимусов на лоре. Вот поглядывал в тред недавно, где объявляли статические языки ненужными, дескать, потому что, теорема Гёделя есть.

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

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

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

8-ой класс или 9-ый?
Давай ты будешь писать умные свои мысли, когда тебе учитель математики расскажет ещё что-нибудь! Пожалуйста.

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

Она нужна тем, кто до определённого уровня развития функциональщины кодил на Prolog'е.

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

Нет, это значит, что функция может иметь формальные аргументы типа «объекты для которых определён метод to_string», при этом классы фактических аргументов могут быть никак не связаны:

# class foo =
  object
  method to_string = "foo"
  end;;
class foo : object method to_string : string end
# class bar =
  object
  method to_string = "bar"
  end;;
class bar : object method to_string : string end
# let f x = x#to_string;;
val f : < to_string : 'a; .. > -> 'a = <fun>
# let a_foo = new foo;;
val a_foo : foo = <obj>
# let a_bar = new bar;;
val a_bar : bar = <obj>
# f a_foo;;
- : string = "foo"
# f a_bar;;
- : string = "bar"
Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

Он еще и уродца-F# породил, to add an insult to an injury.

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

Вот бы еще что-нибудь не очень древнее по нему на русский перевели. По тому же хаскелю есть «Изучай хаскель во имя добра» и Дужкин, а по окамлу на русском ничего. Учить яп по иноязычным документациям - никакого удовольствия.

Ну-ну. Уж лучше читать в оригинале, чем перевод, где даже название книги переведено криво. Впрочем, учитывая идиоматичность выражения «greater good» перевести на русский в любом случае непросто. Но как ни переводи, «во имя добра» вообще никак не будет.

rtvd ★★★★★
()

изучите основы языка OCaml (функции высшего порядка, алгебраические типы данных и т.п.);

То есть, там есть матан понятный для тех, кто его не проходил?

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

Функции высшего порядка и алгебраические типы данных это не матан. Это достаточно тривиальные вещи названные страшными именами.

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

Да, обвести вокруг пальца старого маразматика (Вашего покорного слугу) оказалось достаточно просто любому среднестатистическому анонимусу. А я-то правда подумал, что состоялось пришествие Махаура! Спасибо, что разъяснили, что к чему.

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

Ээх, молодежь, тут «профессором» и не пахнет, ни по форме, ни по содержанию.

P.S. OCaml он, кстати, вполне уважал и пользовал.

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

Да, Лерой подзабил на OCaml давно, но как раз-таки в последние пару лет OCaml действительно стал развиваться в связи с появившейся возможность не только INRIA, но и членам так называемого «консорциума Caml» (то есть людям, в отличие от Лероя сильно заинтересованным в развитии языка) участвовать в разработке языка.

По поводу многоядерности и плохого GC, на это забил именно Лерой, причем по относительно разумным причинам, он это дело в рассылке обосновывал. Проблема только в том, что реальность поменялась, многоядерность — сегодняшний путь развития процессоров, и потребность у пользователей в использовании этой самой многоядерности только растет, поэтому уже давно пытаются что-то сделать, пока, правда, для продакшена это не готово, но да ладно, не это главное. Поглядите на весьма популярные Python и Ruby, у них с параллельностью не лучше, и ничего, вполне себе здравствуют.

Далее, насчет именно функциональных языков программирования. Из семейства ML OCaml действительно самый практичный. Пользователей у него больше, чем у остальных диалектов ML, библиотек, соответственно, тоже гораздо больше. Инструментарий, пусть и довольно скудный, опять же богаче. Да, если отвлечься от ML, то у того же Haskell пользователей и библиотек еще куда больше, но Haskell по заявлению самого Пейтон-Джонса не предназначен для продакшен. Да, его используют там, но Пейтон-Джонс позиционирует и развивает его как именно исследовательский язык. Ну и, что куда важнее, как язык Haskell _гораздо_ сложнее, порог вхождения в него гораздо выше. Оба языка достаточно маргинальны, чтоб легко найти разработчиков на них, но тот же Лев Валкин вполне себе набирает просто толковых людей себе в команду, а там за пару недель на OCaml оные начинают вполне себе писать. С Haskell это определенно не пройдет. Ну и остались F# и Scala, которые посовременнее, популярнее и развиваются быстрее, но они завязаны на .NET и JVM, что для кого-то будет несомненным плюсом, а для кого-то — совсем наоборот.

Дальше, производительность. Она вопреки заявлениям фанбоев все же не на уровне C/C++, особенно если не писать жутко императивный код, но весьма приемлема, выше, чем у тех же Python/Ruby на порядок. Да, в отличие от сложных оптимизирующих компиляторов MLton и GHC тут все куда проще, но это сознательное проектное решение: это дает относительно небольшой проигрыш в производительности, но зато предсказуемость для среднего разработчика эффективности тех или иных языковых конструкций. Одно из важнейших достоинств C в его прозрачности: глядя на любую конструкцию легко представить, какой примерно машинный код за ней стоит. В OCaml с этим похуже без сомнений, язык все же высокоуровневый, но куда лучше, чем у того же Haskell, намного лучше. Писать на Haskell эффективный код — отдельный и довольно нетривиальный скилл. Тут действительно, если сразу с приемлемой производительностью не заработало, начинается трах, тем более долгий, чем менее опытен разработчик.

Насчет свежих языковых фишечек, опять повтороюсь, как раз в последнее время они добавляются. Из крупнейших добавлений — модули первого класса и GADT, например. То есть язык вновь начал развиваться, так что заявление «развития нет и не планируется» совсем не верно для текущего состояния дел.

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

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

пришествие Махаура

кто это?

Ранее широкоизвестный в узких кругах Виталий Луговский. В принципе чуть ли не культурное явление локальных масштабов :) Можно сказать, в весьма необычной форме пропагандировал в том числе и ФП, довольно эффективно заражая этими идеями юные и неокрепшие умы.

satanic-mechanic
()
Последнее исправление: satanic-mechanic (всего исправлений: 2)
Ответ на: комментарий от satanic-mechanic

Спасибо. О нем читал, но на ники не смотрел.

anonymous
()

Кульхацкеры, качайте!

Ибо в реальные хорошо оплачиваемые Java проекты тех, кто не обладает усидчивостью и аккуратностью в глубоком изучении языков программирования, не берут.

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