LINUX.ORG.RU

Основывая на чём можно выбрать OCamL или Erlang или Haskell


0

5

Я догадываюсь, что это какая-то паранойа !!! Но как !?

Конечно очевидный вариант - попробовать все. И подумать.

Пробую... Думаю... А дальше что ???

OCamL похож на F#, красив и удобен... хорошо. Применять можно везде, к web имеет много забавных наработок.

Erlang имеет достаточно мощную, стабильную виртуальную машину и синтаксис очень забавный ! Интересный web server yaws и NoSQL DBMS.

Haskell выигрывает по полярности и там есть много действительно хороших библиотек вообще в любой сфере...

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


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

Эволюция не совершенна, но замены ей пока нет. Когда появится технологическая эволюция, многие проблемы будут пофикшены.

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

видимо он хотел рассказать про листы в эрланге ... зачем-то

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

но если уж совсем присписчило

Ключевое слово.

Чистая функциональность такая же плюшка как и статическая типизация. Никакого волшебного волшебства она не творит.

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

process dictionary, ets, ещё что-то было

хехе, ну тогда давайте для полноты картины считать что использование любой БД нарушает мутабельность данных :)

зачастую можно успешно обойтись и без, но если уж совсем присписчило, то все средства есть

да что там умные слова придумывать - все переменные пишем в файлик текстовый и читаем по очереди :)

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

>Чистая функциональность такая же плюшка как и статическая типизация. Никакого волшебного волшебства она не творит.

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

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

Кстати я вот не знаю почему мне нравится Erlang

А мне не нравится. Достаточно много на нем писал вьюшек для couchdb, так вот концепция хороша, а сам язык полный урод.

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

Кстати я вот не знаю почему мне нравится Erlang

В нём есть что-то ... я не знаю, как будто он пони ...

не-не, пони - это жобэ (пруф), хотя... в ерланге может быть что-то от жобэ, с другой стороны

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

> Когда то общался с одним реальным Гуру... вот грю, питон, ФП... он посмотрел на меня странно - а я и на С++ все это ФП юзаю, и мне таки удобно;-)

ФП на Питоне? О да, я тоже как-то побаловался на нем лямбдами пятого уровня вложенности с map/reduce'ами вперемешку. Питон — шикарный пример, где функциональный стиль практически не добавляет выразительности.

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

> Чистая функциональность такая же плюшка как и статическая типизация. Никакого волшебного волшебства она не творит.

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

qnikst ★★★★★ ()

Re: Основывая на чём можно выбрать OCamL или Erlang или Haskell

Недавний выход Glasgow Haskell Compiler 7.2.1, как бы намекает, что лучше будет использовать.

Я выбрал Haskell из-за:

- стройной и строгой системы типов

- наличия хорошей документации

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

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

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

>> process dictionary, ets, ещё что-то было

хехе, ну тогда давайте для полноты картины считать что использование любой БД нарушает мутабельность данных :)

передёргивать не обязательно, ets/process dictionary являются частью языка и runtime во 2ом случае и позволяют делать изменяемые данные.

зачастую можно успешно обойтись и без, но если уж совсем присписчило, то все средства есть

да что там умные слова придумывать - все переменные пишем в файлик текстовый и читаем по очереди :)

и, что сказать то хотел? :)

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

> Чистая функциональность такая же плюшка как и статическая типизация. Никакого волшебного волшебства она не творит.

Это хорошая и полезная плюшка. А вот чудес от плюшек ждут только наркоманы.

anonymous ()

>Haskell

Haskell - отличный способ угробить свой мозг. Хотя, стоит отметить, что сей процесс иногда доставляет нехилого фана, а иногда даже и профита.

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

а какие ещё элементарные immutable структуры данных, кроме строк и кортежей есть в питоне? :)

Что надо то и можно сделать неизменяемым.

А вообще немутабельность очень похожа на приватные члены. И как жабисты любят поговорить о private полях, так истинные функциональщики любят immutable структуры.

А это всего лишь средство быть по рукам новичков.

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

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

Ну, да. Куда полезнее инвестировать его в пустой треп на ЛОРе.

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

Хм, и на что перешёл ?

Вьюшки как на нем писал так и пишу. Не на js же это делать? А так питон, java.

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

> Что надо то и можно сделать неизменяемым.

превратив структуру в кортеж? Или я не знаю о каких-то возможностях питона.

А вообще немутабельность очень похожа на приватные члены. И как жабисты любят поговорить о private полях, так истинные функциональщики любят immutable структуры.

ну это разного поля ягоды, immutable и в java есть (final), о них тоже любят поговорить.

А это всего лишь средство быть по рукам новичков.

а так же средство оптимизации и возможности детерминировать поведение программы, а во всяких java-х ещё и возможность сделать замыкания.

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

Это конченный обгвидок...

Доставило, надо будет запомнить.

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

erlang?

он из всех трёх наименее функциональный: программа на Erlang - последовательность команд рантайму, а не система зависимых функций

что касается мутабельности, то у Erlang (из коробки) есть DETS и Mnesia

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

какие ещё элементарные immutable структуры данных, кроме строк и кортежей есть в питоне? :)

numbers, strings, tuples, frozensets

и этого хватает

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

> И каким макаром слепое пятно мешает выполнять глазу его функции?

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

Хочу Вас расстроить - для тех задач, к-е решаем мы с коллегами С++ подходит прекрасно. Обоснование простое - никто в мире не может делать то что делаем мы; мы делаем то что делаем используя ряд особенностей С++ (шаблоны, ООП, перегрузка ф-й).

Что касается эволюции - она и в технике есть, и в ЯП есть. Знаете чем ограничены габариты двигателей шаттлов и скока костылей пришлось втыкать благодаря этому ограничению?

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

erlang?

он из всех трёх наименее функциональный:

это добавляет ему мутабельности, внезапно?

программа на Erlang - последовательность команд рантайму, а не система зависимых функций

я не очень понимаю что Вы хотите сказать, смотрим любую программу prolog - последовательность команд рантайму

prolog - императивный? нет

поясните Вашу мысль с этой точки зрения

shty ★★★★★ ()

>Haskell выигрывает по полярности

wtf?

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

Дайте-ка я угадаю... Кроме плюсов и пистона языков не знаете? Если я прав, тогда утверждение о том что С++ подходит для решения Ваших задач ничего не значит. Никому так отлично не подходит выражение про мышей и кактус, как плюсистам.

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

Питон — шикарный пример, где функциональный стиль практически не добавляет выразительности.

есть файл с данными в текстовом формате (чиселки в неск колонок), надо распрасить. Сравните-ка:

L = []
for l in open('myfile.dat') :
    L.append([])
    for n in l.split() :
         L[-1].append(float(n))

и

L = [ map( float, l.split() ) for l in open('myfile.dat') ]

У меня в коде есть конструкции в стиле ФП на три-четыре уровня вложенности, очень все наглядно и выразительно по сравнению с императивщиной.

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

превратив структуру в кортеж?

Что такое немутабельный объект? Который после инициализации не меняет своего состояния. Уж способов не дать шаловливым ручкам это сделать достаточно, динамика же. Хотя совсем ловкие пальцы способны эти ограничения обойти. По той же причине.

immutable и в java есть (final)

а во всяких java-х ещё и возможность сделать замыкания.

Вот как раз в замыканиях final играет другую роль. Он гарантирует что значение ссылки на объект не изменится. Сам объект можно дергать как угодно.

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

> Ну кто же еще, кроме лоровцев, умеет настолько идиотично и не к месту козырять «знанием физики»?

Только ЛОРовские ананимусы, козыряющие ее незнанием... они почему то думают, что лисп заменяет три закона ньютона и если выпасть из окна, то кучка скобок внизу способны смягчить удар;-)

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

> мы делаем то что делаем используя ряд особенностей С++ (шаблоны, ООП, перегрузка ф-й).

Я конечно извиняюсь, но это далеко не особенности C++. Скорость и прямая работа с памятью - да, с этим не поспоришь(чистый Си в рассчёт не берём). Шаблоны, ООП и перегрузка сейчас есть в очень многих языках.

Norgat ★★★★★ ()

Если исходить из того, что в основе всего лежит один язык описания, то бери Хаскелл, он ближе всего к нему.

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

> Дайте-ка я угадаю... Кроме плюсов и пистона языков не знаете? Если я прав, тогда утверждение о том что С++ подходит для решения Ваших задач ничего не значит. Никому так отлично не подходит выражение про мышей и кактус, как плюсистам.

О да... только в этой области работает множество рабочих групп, знающих множество разных ЯП, конкуренция очень сильная, алгоритмы к-е мы используем дают качественны скачок производительности и позволяют переходить от 2D к 3D задачам, алгоритмы опубликованы 8 лет назад (гуглите LRnLA). И никто не сумел их воспроизвести, ни на лиспе, ни на хаскеле, ни на фортране, ни на чистом С - ни на чем. Если это не аргумент... ну чего, фапайте дальше на то, что Вы не пользуетесь С++;-)

С++ далеко не идеален, местами просто ужасен. Но - это вполне рабочий ЯП позволяющий эффективно решать широкий класс задач. Вы высказали некое сильное утверждение что С++ везде пелох, я Вам привел как мин один контрпример из скромного личного опыта. Мб ВАШ личный опыт далеко не так всеобъемлющ как Вы думаете?;-)

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

> Я конечно извиняюсь, но это далеко не особенности C++. Скорость и прямая работа с памятью - да, с этим не поспоришь(чистый Си в рассчёт не берём). Шаблоны, ООП и перегрузка сейчас есть в очень многих языках.

А нам и нада скорость и прямая работа с памятью. + шаблоны и тд;-)

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

> Вы высказали некое сильное утверждение что С++ везде пелох, я Вам привел как мин один контрпример из скромного личного опыта. Мб ВАШ личный опыт далеко не так всеобъемлющ как Вы думаете?;-)

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

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

+1

из этих трех вариантов подходит только пистон

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

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

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

Потому что ты не можешь комбинировать элементарные функции вида map,foldr,foldl

Можно примерчик, я не совсем понял что имелось ввиду под комбинировать.

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

А плюсисты никак не запомнят, что Лисп - императивный язык.

это ладно, а вот тут оказывается некоторые скобкофаги не знают что lisp - мультипарадигменный язык :)

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

И никто не сумел их воспроизвести, ни на лиспе, ни на хаскеле, ни на фортране, ни на чистом С - ни на чем

А кто-то пытался? Вижу много слов про хорошие алгоритмы и ни слова про то что именно С++ помог их решить и был идеальным языком для этого.

это вполне рабочий ЯП позволяющий эффективно решать широкий класс задач

Весьма опрометчиво употреблять слова «эффективность» и «С++» в одном предложении.

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

В гуглокартинках еще интересней, особенно там где индусы начинаются.

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