LINUX.ORG.RU

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


0

5

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

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

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

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

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

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

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


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

и учитывает?

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

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

> Потому что у меня почти нет публикаций на эту тему, а те которые есть не содержат в заглавии LRnLA (еще имей ввиду, что обычно указывается не полное имя а инициалы).

м? Иванов А.В. Кинетическое моделирование динамики магнети-ков // Математическое моделирование — 2007. — Т. 19, вып. 10. — С. 89--104

Я на ЛОРе подобную аннотацию писал раз дцать по моему... надоело если честно. Но - если поиск тебе дается так сложно, мог бы сказать об этом и ВЕЖЛИВО попросить - я бы написал тут в дцать первый. Тебя мама не учила что хамить некрасиво?

не вижу причин «ВЕЖЛИВО» формулировать вопрос к хамски написанному посту. Мог бы 21 написать: математическое моделирование/численное инегрирование/dynamics of nanostructure in the thin-layer magnetic materials. 3 строчки и сразу понятно примерная область и характер алгоритмов.

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

Эффективность С++ - это сказочка из той же области, что и юношеский максимализм типа крутости ассемблера.
1. Скорость разработки: тут С++ проигрывает любому современному языку, за исключением, разве что, С (считаю, что тем кто пишет прикладное ПО на Plain C нужно гвоздь в голову забить). С++ и быстрая разработка несовместимы, это очевидно любому вменяемому человеку.
2. Скорость выполнения программы: когда программа на С++ становится чуть больше нескольких сотен строк начинается прикручивание всяких костылей типа смартпойнтеров, которые скорости выполнения не прибавляют. В сети куча бенчмарков, где в тестах с активным выделением памяти, языки вроде Ocaml с нормальной сборкой мусора, рвут плюсы как тузик грелку. Современные компиляторы очень хорошо оптимизируют код и по скорости исполнения он приближается к нативному, в то время как в плюсах высокоуровневая оптимизация крайне затруднена из-за сишного наследия. Невообразимо кривая система типов вызывает множественные приступы фейспалмов у людей, работавших с вменяемыми языками. С++ будет быстрее только на числодробилках, но чем сложнее логика, тем медленнее получится результат. При этом специфической ниши у плюсов нет и не предвидится.

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

> Иванов А.В. Кинетическое моделирование динамики...

Это мое, но про LRnLA там нету. Если так интересно подтверждение того, что я имею отношение к, то напр. вот:

Иванов А.В., Каплан С.А., Каракин А.В., Левченко В.Д., ЛевченкоТ.В., Рок В.Е. Вычисление полного сейсмического волнового поля в геосреде на основе нового метода решения прямых задач сейсмоакустики. Геоинформатика-2006, №3, с. 59-61.

не вижу причин «ВЕЖЛИВО» формулировать вопрос к хамски написанному посту.

Пример МОЕГО хамски написанного поста в студию пожалуйста (до того как ты начал брызгать слюнями вот тут http://www.linux.org.ru/jump-message.jsp?msgid=6630622&cid=6631463 )

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

В смысле? Ты же не имеешь ввиду, что можно выполнить V -> L -> !

я имею в виду, что в императивном языке L будет вычислен до вычисления V полностью, а V — до !

в функциональном же L будет вычисляться только по мере необходимости получить его (голову:хвост) в V, что при наличии сайд-эффектов в определении L и V приведет к совершенно другому результату, нежели в императивном коде:

Prelude> let p x = print x >> return x
Prelude> let q x = do { y <- x ; print (y^2) }
Prelude> let l = map p [1..10]
Prelude> let v = mapM_ q l
Prelude> v
1
1
2
4
3
9
4
16
5
25
6
36
7
49
8
64
9
81
10
100
Prelude> 
korvin_
()
Ответ на: комментарий от anonymous

>Хаскель из-за большого количества IO с его чистотой будет только мешать.

Внезапно, не будет. Хотя если тебя ломает один раз написать liftIO...

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

Скорость разработки: тут С++ проигрывает любому современному языку,

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

Скорость выполнения программы: когда программа на С++ становится чуть больше нескольких сотен строк начинается прикручивание всяких костылей типа смартпойнтеров

зашел к себе в библиотеку:

aivlib$ wc -l include/*.hpp src/*.cpp
...
4841 итого
и у меня там ни одного смарт-пойнтера... ЧЯНДТ???

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

Ну опять таки, наши числодробилки простотой логики никак не отличаются... результат - весьма быстрый. Щас Вам ище shty накидает если не поленится... у него таки есть;-)

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

> Пример МОЕГО хамски написанного поста в студию пожалуйста (до того как ты начал брызгать слюнями вот тут http://www.linux.org.ru/jump-message.jsp?msgid=6630622&cid=6631463 )

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

разъясню:

1). много пафоса и предложение гуглить алгоритм -> 2). просьба написать область -> 3). ссылка на поиск.

это я считаю элементарным неуважением собеседника.

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

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

А я считаю неуважением требовать подробностей до того, как сходил погуглить, сели послали гуглить, и чего?

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

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

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

Не спорю, после n-го количества лет плюсисты выучивают большинство косяков своего язычка и обходят их на автомате, а программисты с малым и средним опытом 90% времени обходят трудности, создаваемые собственным языком, вместо решения непосредственной задачи

и у меня там ни одного смарт-пойнтера... ЧЯНДТ???

Много ли создается объектов и насколько активно происходит выделение/очистка памяти? Полностью ручное выделение памяти - это неизбежные утечки, ошибки и крайне неприятная отладка. В том же Haskell отладки нет как таковой, большинство программ с ошибками просто не скомпилятся.

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

> Не спорю, после n-го количества лет ПОЛЬЗОВАТЕЛИ выучивают большинство косяков своего язычка и обходят их на автомате

//fixed

Много ли создается объектов и насколько активно происходит выделение/очистка памяти?

Много, но ничего не течет.

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

> А я считаю неуважением требовать подробностей до того, как сходил погуглить, сели послали гуглить, и чего?

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

Сравни написать 1 предложение чем ты конкретно запинимаешься, это, блин, 5 слов, и прочитать хоть и по диагонали с 10 статей, по отличающимся тематикам, причем являющимися достаточно специфичными. Согласись, это не маны по инету искать, где посылка в гугл по элементарным вопросам, считается уже обычной практикой.

Далее, для того, чтобы понять ценность слов про «самые быстрые в мире программы» надо искать и другие работы по вашей тематике, для того, чтобы понять аналоги програмных продуктов (если они есть), или увидеть, что все пользуются вашими библиотеками, при этом нужно иметь знания в области, чтобы сразу отсеивать часть статьи, где подобных вычислений нет, и это всё только для того, чтобы знать, что тут нету проблемы неуловимого Джо. От человека занимающегося этой областью данная задача займёт от силы полминуты, написать: мы сделали пакет foo, есть аналоги bar, baz но они проигрывают по многим параметрам. А если потратить минут 5 то можно написать обстоятельный пост и потом посылать в него, а не в поиск.

Неправда ли, проще сделать это 1 раз, чем представлять себя в плохом свете, ну или написать, сразу что я делал это много раз на лоре, исчите. Хотя.. это ЧСВ не так поднимает, да?

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

Много, но ничего не течет

В языке без сборки мусора такое можно гарантировать только для хелловорлда (да и то не всегда).

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

> ну или написать, сразу что я делал это много раз на лоре, исчите.

И да, именно так, я это делал много раз на ЛОРе, исчите. Более того - некоторые посланные погуглить не стучали лысиной по праркету а таки гуглили, и потом спрашивали вполне конкретные вещи...

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

а вот это верная мысль, а то понаделают самых быстрых продуктов, про которые никто, кроме авторов и знакомых не знает. (не в смысле, что надо пиариться, т.к. ясно, что большинству это не нужно, но минимальную информацию иметь неплохо)

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

> Более того - некоторые посланные погуглить не стучали лысиной по праркету а таки гуглили, и потом спрашивали вполне конкретные вещи...

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

qnikst
()

пятница только завтра а уже срач

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

что именно в его использовании тебя смущает?

Хотя бы наличие костыля в виде Template Haskell, который впрочем не спасает положения

Взято отсюда (шаблоны в коде - это круто!):

getHomeR :: Handler ()
getHomeR = do
  Blog entries <- getYesod
  let newest = last entries
  redirect RedirectTemporary $ EntryR $ entrySlug newest

data TemplateArgs = TemplateArgs
  { templateTitle :: Html
  , templateContent :: Html
  , templateNavbar :: [Nav]
  }

data Nav = Nav
  { navUrl :: Route Blog
  , navTitle :: Html
  }

entryTemplate :: TemplateArgs -> Hamlet (Route Blog)
entryTemplate args = [hamlet|
  !!!

  <html>
      <head>
          <title>#{templateTitle args}
      <body>
          <h1>Yesod Sample Blog
          <h2>#{templateTitle args}
          <ul id="nav">
              $forall nav <- templateNavbar args
                  <li>
                      <a href="@{navUrl nav}">#{navTitle nav}
          <div id="content">
              \#{templateContent args}
  |]

getEntryR :: String -> Handler RepHtml
getEntryR slug = do
  Blog entries <- getYesod
  case filter (\e -> entrySlug e == slug) entries of
      [] -> notFound
      (entry:_) -> do
          let nav = reverse $ map toNav entries
          let tempArgs = TemplateArgs
                  { templateTitle = toHtml $ entryTitle entry
                  , templateContent = toHtml $ entryContent entry
                  , templateNavbar = nav
                  }
          hamletToRepHtml $ entryTemplate tempArgs
 where
   toNav :: Entry -> Nav
   toNav e = Nav
      { navUrl = EntryR $ entrySlug e
      , navTitle = toHtml $ entryTitle e
      }

Полный аналог на Рельсах:

# controllers/posts_controller.rb

class PostController < ApplicationController
  def index
    redirect_to Post.last
  end

  def show
    @nav = Post.all.reverse
    @post = Post.find_by_slug(params[:id])
  end
end

# templates/posts/show.haml

%html
  %head
    %title= @post.title
  %body
    %h2= @post.title
    %ul#nav
    - @nav.each do |item|
      %li= link_to item.title, item
    #content= @post.text

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

anonymous
()

>OCamL или Erlang или Haskell

А что делает Эрланг рядом с Окамлом и Хаскеллем?

OCamL похож на F#

Бгг.

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

шаблоны в коде - это круто

их оттуда можно вынести

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

Утечки бывают и в ЯП со сборкой мусора, в том же питоне например. Кольцевая ссылка и привет... зовите gc

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

> мне была интересна только область физики, где ты работаешь, всё.

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

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

>питон

язык программирования

/0

Кольцевая ссылка и привет

Но мы же не будем называть GC то говно, что в гвидопыхе находится, так ведь?

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

> Уж лучше ошибки компиляции, чем ошибки в рантайме

сказал фанат Smalltalk... =)

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

CL - это не язык, а множество глупых раздражающих скобок.

Обычно, в редакторах они подсвечиваются самым незаметным образом.

Я специально настраиваю Емакс так, чтобы скобки были максимально яркие и мигали оранжевым цветом.

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

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

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

Спасибо. Мне тоже пригодится.

А явную ссылку на алгоритм можно? Не сумел найти(((

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

Если нагрузка на сайт будет небольшой, Erlang в производительности уступит тому же Haskell из-за динамической типизации.

Это грустно :( Если это правда

Смело плюй в лицо каждому, кто боится просядания скорости от динамической типизации на io-bounded задачах.

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

Спасибо, как со всякими философиями для аспирантуры разберусь, посмотрю осилю ли алгоритмы.

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

> На личных знаниях и опыте. А до этого - вижуалбейсик

бугага. помнится не так давно в fprog vb зарулил даже cl на какой-то там предложенной задаче, по мнению редакторов самого fprog.

так что можешь рассказать, отчего у тебя такой презрительный тон. или мне показалось?

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

>в то время как код на Хаскеле

Кривишь душой. Нет в коде ничего лишнего. В языках со статической типизацией необходимо тратить время и ресурсы на разработку/объявление типов. Зато они высутпают а) как интерфейсы взаимодействия; б) как вычислительные контексты.

Шаблоны в Yesod можно вынести в отдельный файл. Можно разработать более высокоуровневое решение, которое позволит касаться HTML только на очень нижних уровнях твоего ПО.

Кроме того, я лично считаю, что HTML в современных приложениях должен генерироваться на стороне клиента. Хотя это и сложнее реализуется. Например, тот же julis из yesod'а отвечает за генерацию ява-скриптов.

Я очень сильно уважаю Lua, Ruby, Python и Lisp, но меня конкретно достало играть в угадайки с компилятором в рантайме. Видимо это старость.

Если чего — пользуюсь для своих мелкоавтоматизационных нужд Happstack'ом и Blaze-Html. Он несколько пропроще. В качесте морды и аутентификатора по SSL юзаю nginx. Хотя пока я генерацию HTML на стороне клиента еще не осилил.

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

И как тебе такое в голову пришло?

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

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

Мне больше вот это нравится. Руби тихо покуривает в сторонке.

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

Эффективность С++ - это сказочка из той же области, что и юношеский максимализм типа крутости ассемблера.

ахаха, жги ещё :) крутость...

не, я не могу, ежедневный кропотливый труд - не хочешь? ты думаешь ты такой крутой, открыл, блджад, «истену», что скорость разработки на С++ ниже.... может ты тут вообразил, что школьникам лекцию читаешь, или ты сам школьник? да мне покласть, если честно

я тебе только одно скажу - все кривота С++, которую __ты__ видишь - она из твоей головы, и больше не из чьей, с чем тебя и поздравляю

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

Но мы же не будем называть GC то говно, что в гвидопыхе находится, так ведь?

вот и мухи налетели, с большим знанием гов дела

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

Я очень сильно уважаю Lua, Ruby, Python и Lisp, но меня конкретно достало играть в угадайки с компилятором в рантайме. Видимо это старость.

не, не старость, непонимание зачем нужны модульные тесты

shty
()

5 страниц флуда в /development
Это - win, ящитаю.

Сайты, эрланг хаскель и осамл - это ты конечно загнул.

Сайты делаются не на эрланге, а для эрланга.
Окамл для сайтов не прокатит из-за GIL-smell сборщика мусора. Т.е. многопоточное нечто ты там не напишешь особо. А так - по процессу на запрос страницы - это экономно и эффективно :)
Ну и хаскель для разработки сайтов, видимо, самый приспособленный ЯП :)

Побольше бы необычных применений обыкновенным ЯП :)

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

Что-то стало много анонимусов, решил деанонимизироваться (я тот, который агитировал за Рельсы)

В языках со статической типизацией необходимо тратить время и ресурсы на разработку/объявление типов. Зато они высутпают а) как интерфейсы взаимодействия; б) как вычислительные контексты


Самое главное для успеха проекта - это скорость его развития, и, похоже, что статическая типизация тут только мешает. Кто победил известно, и не думаю, что это просто совпадение: Facebook (PHP) vs MySpace (Java), GitHub (RoR) vs Google Code (Java), YouTube (в основном Python) vs много конкурентов (часто C++ и Java) и так далее

Мне больше вот это нравится. Руби тихо покуривает в сторонке.


Нет там ничего особенного. Продолжения и в Руби есть. Кроме того, его гибкость позволяет приминять не мало техник метапрограммирования, доступных в Лиспе, и этого, как правило, хватает

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

> Окамл для сайтов не прокатит из-за GIL-smell сборщика мусора.

А как оно будет мешать ?

Ну и хаскель для разработки сайтов, видимо, самый приспособленный ЯП :)

А как же yaws и nitrogen для Erlang ?

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

кэп-моде он

дима бургер - ссаная симфа, а руби - тормоз

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