ocaml срочно!!!
От: anastassia  
Дата: 14.05.07 20:53
Оценка: :))) :))) :))) :)
очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!

15.05.07 11:05: Перенесено из 'Философия программирования'
Re: ocaml срочно!!!
От: c-smile Канада http://terrainformatica.com
Дата: 14.05.07 22:31
Оценка: :)
Здравствуйте, anastassia, Вы писали:

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


А на каком месяце Ocaml еще помогает?
Re: ocaml срочно!!!
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 15.05.07 03:48
Оценка:
anastassia,

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


Пиши вопросы в http://rsdn.ru/forum/?group=decl что-нибудь придумаем.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: ocaml срочно!!!
От: Aquila http://www.wasm.ru
Дата: 15.05.07 06:16
Оценка:
Здравствуйте, anastassia, Вы писали:

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна,


Ты удивишься, но у многих парней с этим тоже проблемы. С OCaml'ом.
Re: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 15.05.07 08:03
Оценка: 38 (2)
Здравствуйте, anastassia, Вы писали:

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


Начать можно отсюда (на русском языке):

http://ocaml.spb.ru/
http://shamil.free.fr/comp/ocaml/

А что непонятно, можно спрашивать в этом форуме. Здесь отвечают достаточно быстро. Хотя не как в аське, конечно :-)
Re: ocaml срочно!!!
От: Аноним  
Дата: 15.05.07 10:00
Оценка: :)
Здравствуйте, anastassia, Вы писали:

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


Сдаётся мне, что люди, знающие OCaml, не используют ICQ. Так что крик души может остаться безответным. Или преходите на Jabber, или учите французский язык и спрашивайте в списке рассылки.
Re: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 15.05.07 12:05
Оценка:
Здравствуйте, anastassia, Вы писали:

A>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


Странно, если учитывать ещё и это
Автор: MacDed
Дата: 25.04.07
, то можно прийти к выводу, что где-то в одном из многочисленных вузов среди преподов появился принципиальный функциональщик. Или такие вещи уже по программе изучают?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[2]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.05.07 14:14
Оценка: :)
Здравствуйте, lomeo, Вы писали:

L>А что непонятно, можно спрашивать в этом форуме. Здесь отвечают достаточно быстро. Хотя не как в аське, конечно


Конечно... гораздо быстрее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: ocaml срочно!!!
От: anastassia  
Дата: 15.05.07 14:58
Оценка:
ой спасибо всем, что отозвались))) проблема собственно в чем-надо продемонстрировать как этот самый ocaml работает, может у кого есть программки маленькие (математические лучше) ? Была бы крайне признательна! fantasy02@yandex.ru. Скажите, он (язык) где вообще используется? И как программа запускается, она как приложение работает?
Re[2]: ocaml срочно!!!
От: anastassia  
Дата: 15.05.07 15:00
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>anastassia,


A>>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна, а в общих чертах понять надо-вопрос жизни и смерти))) icq:200942748, спасателям всегда открыто!


LCR>Пиши вопросы в http://rsdn.ru/forum/?group=decl что-нибудь придумаем.


ой спасибо , что отозвались))) проблема собственно в чем-надо продемонстрировать как этот самый ocaml работает, может у кого есть программки маленькие (математические лучше) ? Была бы крайне признательна! fantasy02@yandex.ru. Скажите, он (язык) где вообще используется? И как программа запускается, она как приложение работает?
Re[2]: ocaml срочно!!!
От: anastassia  
Дата: 15.05.07 15:03
Оценка:
Здравствуйте, Aquila, Вы писали:

A>Здравствуйте, anastassia, Вы писали:


A>>очень нужна помощь в освоении ocaml, элементарная. Я, как девушка, в этом не сильна,


A>Ты удивишься, но у многих парней с этим тоже проблемы. С OCaml'ом.



Удивляюсь))) тем менее глупо я себя чувствую, задавая такие вопросы, я-то думала тут все профи)))
Re[2]: ocaml срочно!!!
От: anastassia  
Дата: 15.05.07 15:11
Оценка:
Здравствуйте, konsoletyper, Вы писали:


K>Странно, если учитывать ещё и это
Автор: MacDed
Дата: 25.04.07
, то можно прийти к выводу, что где-то в одном из многочисленных вузов среди преподов появился принципиальный функциональщик. Или такие вещи уже по программе изучают?


Нет. Преподаватели как-раз "впервые" слышат о таком))) просто девушкам, заканчивающим сложные специальности и не умеющим рассчитывать всякие сложные штуковины проще дипломы писать на примере языков всяких...но как оказалось с этим тоже могут быть проблемы))) преподаватели лично у меня сидят на паскале и си...
Re[3]: ocaml срочно!!!
От: Кодт Россия  
Дата: 15.05.07 16:12
Оценка:
Здравствуйте, anastassia, Вы писали:

A>ой спасибо , что отозвались))) проблема собственно в чем-надо продемонстрировать как этот самый ocaml работает, может у кого есть программки маленькие (математические лучше) ? Была бы крайне признательна! fantasy02@yandex.ru. Скажите, он (язык) где вообще используется? И как программа запускается, она как приложение работает?


Насчёт окамла не знаю, а вот к SML.net шла демка, играющая в "жизнь".
Если программируешь под винды, то можешь вместо окамла попробовать его родного брата — F# (там сделаны послабления в синтаксисе и типы согласованы с дотнетовскими).
И F#, и SML.net интегрируются в VS2003 / VS2005.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 15.05.07 16:42
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Нет. Преподаватели как-раз "впервые" слышат о таком))) просто девушкам, заканчивающим сложные специальности и не умеющим рассчитывать всякие сложные штуковины проще дипломы писать на примере языков всяких...но как оказалось с этим тоже могут быть проблемы))) преподаватели лично у меня сидят на паскале и си...


А кто посоветовал OCaml? И почему не Standard ML или Haskell? И что за задачи такие предполагается решать на OCaml'е?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[4]: ocaml срочно!!!
От: anastassia  
Дата: 15.05.07 17:24
Оценка:
Здравствуйте, konsoletyper, Вы писали:


K>А кто посоветовал OCaml? И почему не Standard ML или Haskell? И что за задачи такие предполагается решать на OCaml'е?


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

Задачи? может сортировки какие, уравнений решение...А с графикой там как? Может график нарисовать или фигуру какую..

Скажите, ocaml запускается как? его к чему-то присоединять надо?
Re[5]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.05.07 22:20
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Задачи? может сортировки какие, уравнений решение...А с графикой там как? Может график нарисовать или фигуру какую..


Все можно, только ОКамл в такой среде варился, что вокруг него одни аскеты. Вот рейтрейсер на нем найти элементарно, а сортировку пузырьком ни в жизнь .

A>Скажите, ocaml запускается как? его к чему-то присоединять надо?


Очень советую взять F#. Для него есть плагин к VS 2005 (можно скачать бесплатно Express-весрию если нет полной). По нему много разных примеров можно найти в блогах авторов. В том числе и графические. И хороший туториал тоже имеется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ocaml срочно!!!
От: Mirrorer  
Дата: 16.05.07 05:57
Оценка: :))) :)
Здравствуйте, VladD2, Вы писали:


VD>Все можно, только ОКамл в такой среде варился, что вокруг него одни аскеты. Вот рейтрейсер на нем найти элементарно, а сортировку пузырьком ни в жизнь .

Неправда ваша

По ключевым словам Ocaml Bubble Sort
Гугль второй ссылкой выплевывает
это

(* Interactive loop to read in numbers to be sorted *)
let rec getNumbers l count =
  if count < 25 then
    (print_string "> ";
    match read_line () with
      "" | "0" -> Array.of_list l
    | s -> getNumbers ((int_of_string s)::l) (count + 1))
  else Array.of_list l;;
  
(* bubblesort routine, per the specs *)
let rec bubbleSort arr =
  let swap a b = let temp = arr.(a) in arr.(a) <- arr.(b); arr.(b) <- temp in
  let finished = ref true in
  for i = 1 to Array.length arr - 1 do
    if arr.(i-1) > arr.(i) then 
      (* Swap if needed and set flag to continue for another round. *) 
      (swap (i-1) i; finished := false)
  done;
  if !finished then (* Iterate through the array, printing out its contents *)
    (Array.iter (fun i -> Printf.printf "%d " i) arr; print_newline ())
  else bubbleSort arr;;

let _ = bubbleSort (getNumbers [] 0);;
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[3]: ocaml срочно!!!
От: Аноним  
Дата: 16.05.07 09:13
Оценка: 26 (1) +1
Здравствуйте, anastassia, Вы писали:

A>Скажите, он (язык) где вообще используется?


Про использование его в индустрии — читайте статью тов. Мински в последнем номере Monad.Reader:

http://www.haskell.org/sitewiki/images/0/03/TMR-Issue7.pdf

Про всё остальное — в Hump:

http://caml.inria.fr//cgi-bin/hump.en.cgi

Ну и конечно же гугль с википедией никто не отменял.
Re[4]: ocaml срочно!!!
От: anastassia  
Дата: 16.05.07 17:00
Оценка:
Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д. Как он вообще среди функциональных — не самый же отсталый? Исключительно ваше мнение!!!
Re[5]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 16.05.07 17:19
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д. Как он вообще среди функциональных — не самый же отсталый? Исключительно ваше мнение!!!


Поставь вопрос шире. Зачем тебе это все надо? Экзамен, лаба, научная работа, развлечение, впечатление произвести, работу сделать. Опиши короче ситуацию.
Re[5]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 16.05.07 17:21
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д. Как он вообще среди функциональных — не самый же отсталый? Исключительно ваше мнение!!!


Конечно же далеко не самый отсталый: на соревнованиях по программированию окамлеры постоянно занимают первые места вместе с хаскеллерами. Недаром в Microsoft Research ведутся работы по развитию обоих этих языковых семейств — Хаскелл и F# (развитие Окамля).
Тут не зря так настойчиво рекомендуют F# — плагин к Visual Studio для F# действительно очень удобен. Большая часть программ на Окамле должна работать на F# (без больших переделок)...
Re[5]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.07 18:09
Оценка: 3 (1) +2
Здравствуйте, anastassia, Вы писали:

A>Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д. Как он вообще среди функциональных — не самый же отсталый? Исключительно ваше мнение!!!


Я в нем не проффесионал, но могу в общих чертах, тык сызыть...

Хорош тем что:
1. Совмещает в себе ООП и ФП (сокращения понятны?).
2. Статически типизированный.
3. Порождает довольно быстрый код, так как п.2 и без заскоков вроде Хаскелевской ленивости (в прочем, наверное есть варианты).
4. Как и все языки линейки ML поддерживает вывод типов, что позволяет писать программы почти не указывая типы явно (как на скриптах), но при этом получая надежный и быстрый код.
5. Очень безопасный язык. Запрещены многие вольности с типами допустимые даже в считающихся типобезопасными языках вроде Явы.
6. Как прямой потомок ML-я поддерживает сопоставление с образцом (pattern matching), что позволяет сщественно упростить решение многих задач. Например, разработку компиляторов.
7. Имеет мощьный препроцессор (на возглас "препроцессор — сакс!" надо отвечать "ламер, это же не С++-ный препроцессор") поволяющий менять синтаксис языка и создавать DSL-и (тут надо добавлять "это по научному, вам не понять...".

Плохо там:
1. Реализация ООП несколько урезанная и непривычная для тех кто изучал С++/Яву/Дельфи...
2. Статическая тмпизация излишне параноидальная. Это приводит к проблемам п. 1.
3. Вывод типов основан на алогоритме Хиндли/Миллера который требует уникальности всех идентификторов и не позволяет пергружать фукнции (создавать две фукнции с одним именем чтобы компилятор сам выбирал нужную).
4. Язык вообще очень непохож на классические ООЯ и вообще императивные языки (С, Паскаль...). Для привыкших к оным он выглядит как форменное издевательство. А если еще не понимать что такое сопоставление с образцом, то полный пипец получается.
5. Очень плохо поддерживает динамические действия (компонетный подход и т.п.).
6. Имеет очень аскетичные средства разработки (в основном поддержку в текстовых редакторах).

Отчасти некоторые проблемы решены в том самом F#.

Лично мое мнение — это проходной язык. Как и многие другие он много дал с научной точки зрения, но будущего за ним нет. Причем даже не потому, что он сам по себе плох, а потому, что его не примет программистское сообщество привыкшее к С-подобным языкам. Темболее, что языки вроде Scala и Nemerle скомуниздили у него все приемущества и устранили его недостатки. А языки вроде (да что уж там, "вроде"?) Хаскеля превзашли его с точки зрения дальнешего развития функционального подхода.

Однако Хаскель полнеший тормоз, а Scala, Nemerle и даже F# зависят от сред исполнения (Явы и .NET-а). А в области языков компилирующихся в родной код процессоров и обеспечивающих производительность сравнимую с С++ и при этом отлично поддерживающие ФП и неплохо поддериживающие ООП пожалуй больше языков и нет. По крайней мере это очень неплохой выбор.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.07 18:13
Оценка:
Здравствуйте, VladD2, Вы писали:

Да... Все сказанное об ОКамле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ocaml срочно!!!
От: EvilChild Ниоткуда  
Дата: 16.05.07 19:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>3. Вывод типов основан на алогоритме Хиндли/Миллера который требует уникальности всех идентификторов и не позволяет пергружать фукнции (создавать две фукнции с одним именем чтобы компилятор сам выбирал нужную).

Правильный вариант написания Hindley–Mil<b>n</b>er.
now playing: Noisia — Street Dreams
Re[7]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.05.07 19:13
Оценка: :)
Здравствуйте, EvilChild, Вы писали:

EC>Правильный вариант написания Hindley–Mil<b>n</b>er.


А, ну, нихай. А и правда с поганым пивом путается.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ocaml срочно!!!
От: anastassia  
Дата: 16.05.07 19:19
Оценка:
Здравствуйте, VladD2,


ой аж зачиталась))) вот там си частенько упоминался, меня собственно это и интересует- с++ в противопоставлении с Obj. CAML! Я так понимаю, последний конкретно эффективней))) Вы уж меня извините, я кроме си, делфи и ассемблера(одним глазом) в жизни-то ничего и не видела, вроде как недоросла еще до некоторых прог.выражений)))) Если не затруднит-это можно подоступнее объяснить?Буду крайне признательна
Re[6]: ocaml срочно!!!
От: anastassia  
Дата: 16.05.07 19:22
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Поставь вопрос шире. Зачем тебе это все надо? Экзамен, лаба, научная работа, развлечение, впечатление произвести, работу сделать. Опиши короче ситуацию.


ситуация-проще некуда, диплом защищать на след.неделе, там один дядечка вредный будет, может всяких вопросов назадавать, вот и интересуюсь у людей умных и продвинутых))) Интересует меня противопоставление императивные-функциональные языки( на примере си++ и кэмла).
Re[7]: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 16.05.07 19:50
Оценка:
Здравствуйте, anastassia, Вы писали:

A>ой аж зачиталась))) вот там си частенько упоминался, меня собственно это и интересует- с++ в противопоставлении с Obj. CAML! Я так понимаю, последний конкретно эффективней)))


Ага, эффективнее для программиста. По скорости работы программы, скорее, OCaml чуть-чуть проигрывает C++. Но как правило, это ничего не значит, т.к. на C++ очень тяжело делать нормальную высокоуровневую оптимизацию, а на ML-подобных языках это делается в два касания.

A> Вы уж меня извините, я кроме си, делфи и ассемблера(одним глазом) в жизни-то ничего и не видела, вроде как недоросла еще до некоторых прог.выражений)))) Если не затруднит-это можно подоступнее объяснить?Буду крайне признательна


А Dам, барышня, обязательно ОКамл нужен? Дело в том, что ОКамл — язык, производный от ML. Но существует много языков, которые так или иначе вобрали в себя фичи ML. Например, Nemerle или Хаскель. Если Вам хочется увидеть "как выглядит ОКамл", то не обязательно смотреть на ОКамл. Достаточно поглядеть на Nemerle или Хаскель. Тут на сайте как раз недавно пару хороших статей с примерами по этим языкам выложили.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[8]: ocaml срочно!!!
От: anastassia  
Дата: 16.05.07 20:08
Оценка:
Здравствуйте, konsoletyper, Вы писали:


K>А Dам, барышня, обязательно ОКамл нужен? Дело в том, что ОКамл — язык, производный от ML. Но существует много языков, которые так или иначе вобрали в себя фичи ML. Например, Nemerle или Хаскель. Если Вам хочется увидеть "как выглядит ОКамл", то не обязательно смотреть на ОКамл. Достаточно поглядеть на Nemerle или Хаскель. Тут на сайте как раз недавно пару хороших статей с примерами по этим языкам выложили.



Да вот нельзя другого...Как-то все на этом кэмле завязалось )) На окэмл я уже поглядела)))по-моему мы друг другу не понравились Но это не страшно, мне всего-то один раз надо рассказать какой это прекрасный язык и что ну никак без него нельзя))) Что от metalanguage-то знаю, как раз весь диплом об этом, но пример надо именно на кэмле и на си(одну и ту же сортировку), вроде как посмотрите-сравните, как все красиво!

а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?
Re[6]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 16.05.07 20:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> Однако Хаскель полнеший тормоз...


Как ты любишь повторять, это зависит... :о)
Можно провести простейшие тесты, в которых анализатор строгости в Хаскелле позволяет сгенерировать более быстрый код, чем даже в Си (пример — функция Аккермана).

VD2> А в области языков компилирующихся в родной код процессоров и обеспечивающих производительность сравнимую с С++ и при этом отлично поддерживающие ФП и неплохо поддериживающие ООП пожалуй больше языков и нет.


Ну, можно привести в пример Common Lisp и Scheme, в которых есть отличная поддержка не только ФП, ООП и метапрограммирования, но и компиляторы, генерирующие нативный код не хуже (или ненамного хуже), чем у Си — Stalin, Bigloo, mzScheme, SBCL...
Re[9]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 16.05.07 20:29
Оценка: +1
Здравствуйте, anastassia, Вы писали:

A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


Просто, как бы это сказать... ОКамл чуть-чуть устарел. Хотя его новые реинкарнации — F# и Nemerle — продолжают его дело (грязное иперативное ООПное дело), но тем не менее, самые новые разработки в области информатики (Computer Science) сейчас крутяться именно вокруг Хаскелла — потому Хаскелл так и интересен.

Немерлёй же тут (на данном конкретном форуме) увлекаются, так как это язык, нахватавший всяких разных фишек из кучи разных языков — ФП, ООП, метапрограммирование. Ну прям новый статический Лисп с сишным синтаксисом... :о))
Re[10]: ocaml срочно!!!
От: deniok Россия  
Дата: 16.05.07 20:32
Оценка: :))) :))) :)))
Здравствуйте, geniepro, Вы писали:

По-моему. Сейчас. Кто-то. Получит. По полной. Программе.
Re[4]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 06:22
Оценка:
A>Скажите, он (язык) где вообще используется?

Мне известен один случай: пересылка лент новостей в аську(с маленькой буквы), или если по научному — RSS to XMPP transport

Впрочем не очень удобный, на мой вкус.
http://www.jabber.ru/search/node/rss
Re[10]: ocaml срочно!!!
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 17.05.07 06:37
Оценка:
geniepro,

G>Просто, как бы это сказать... ОКамл чуть-чуть устарел.


Ну да, GADTs, dependent types и прочих высоких технологий нет — всё, можно ставить крест? Дело в том, что OCaml уникален — ему не нужен тяжёлый рантайм, статически типизирован с выводом типов, достаточно мощные типы для многих задач, и это может сыграть в его пользу. Какая-нибудь ниша всё равно найдётся.

И мне кажется, уже две type-лаборатории это чересчур. Одной в лице Хаскеля достаточно
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[11]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 07:26
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>И мне кажется, уже две type-лаборатории это чересчур. Одной в лице Хаскеля достаточно

Как ни крути, Окамл — уже type-лаборатория. Например, попробуй эмулировать полиморфные варианты на Хаскеле.
Или почитай, как народ извращается. У Окамла не такая уж простая система типов.
Re[9]: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 17.05.07 07:29
Оценка:
Здравствуйте, anastassia, Вы писали:

A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


Просто чтобы доходчиво описать OCaml, понадобится время и литературно-педагогические способности. А по Хаскелю и по Немерле на сайте уже есть замечательные статьи. Я так понял, что нужно не разбираться в тонкостях OCaml, а в общих чертах представить себе, что это такое. Тогда вполне подойдут статьи о похожих языках: Функциональное программирование в Nemerle
Автор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.
и Мягкое введение в Haskell
Автор(ы): Пол Хьюдак, Джон Петерсон, Джозеф Фасел
Дата: 03.03.2007
Задача данного материала – обеспечить «мягкое» введение в программирование на Haskell для имеющих опыт программирования, по крайней мере, на одном языке, желательно функциональном (даже если это «почти функциональный» язык, такой как ML или Scheme).
. Ещё где-то тут на форуме была ссылка на книгу по F# (на английском). А так, можно посмотреть ссылки, которые кинул lomeo тут
Автор: lomeo
Дата: 15.05.07
.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[12]: ocaml срочно!!!
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 17.05.07 08:17
Оценка:
palm mute,

LCR>>И мне кажется, уже две type-лаборатории это чересчур. Одной в лице Хаскеля достаточно

PM>Как ни крути, Окамл — уже type-лаборатория. Например, попробуй эмулировать полиморфные варианты на Хаскеле.

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

В принципе согласен, да. Окамл не прост. Я с этим и не спорил, меня встревожила фраза "OCaml чуть чуть устарел" by geniepro. Подожду, может он ответит, что он имел ввиду под ней.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[13]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 08:21
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>В принципе согласен, да. Окамл не прост. Я с этим и не спорил, меня встревожила фраза "OCaml чуть чуть устарел" by geniepro. Подожду, может он ответит, что он имел ввиду под ней.


С утверждением geniepro тоже не согласен.
Re[7]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 08:57
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Здравствуйте, Gaperton, Вы писали:


G>>Поставь вопрос шире. Зачем тебе это все надо? Экзамен, лаба, научная работа, развлечение, впечатление произвести, работу сделать. Опиши короче ситуацию.


A>ситуация-проще некуда, диплом защищать на след.неделе, там один дядечка вредный будет, может всяких вопросов назадавать, вот и интересуюсь у людей умных и продвинутых))) Интересует меня противопоставление императивные-функциональные языки( на примере си++ и кэмла).


1) Забей. Пусть твой научный тебя защищает от дядьки.
2) Противопоставления никакого нет и быть не может — OCaml полноценный императивный ОО язык. ("Чистый" функциональный язык, о котором можно сказать, что он "распространен" — вообще один. Это Хаскель.) Наиболее существенные (принципиальные) отличия OCaml от С++, (синтаксис в рассчет не берем) — система типов Хиндли-Милнера (обращаем особенное внимание на параметрические типы — более гибкий параметрический полиморфизм), сопоставление с образцом (более гибкий ad-hoc полиморфизм), автоматическое управление памятью (сборка мусора), функции высокого порядка + замыкания.
Re[7]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 17.05.07 10:05
Оценка:
Здравствуйте, geniepro, Вы писали:

VD2>> Однако Хаскель полнеший тормоз...


G>Как ты любишь повторять, это зависит... :о)

G>Можно провести простейшие тесты, в которых анализатор строгости в Хаскелле позволяет сгенерировать более быстрый код, чем даже в Си (пример — функция Аккермана).

Что то не верится. Си всё таки считай ассемблер и есть.
Приведи, пожалуйста.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 10:16
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д.


Я уже давал ссылку на мнение тов. Мински, к его списку претензий могу добавить ещё отсутствие continuations и недоступность компилятора из рантайма в native.

A> Как он вообще среди функциональных — не самый же отсталый?


Пожалуй, самый практичный. Компромисс между теоретической чистотой и требованиями суровой жизненной практики. При этом он более-менее общего назначения, в отличии от других практических узкоспециализированных языков, таких как Erlang.

Я его использовал неоднократно в реальных проектах, но сейчас по ряду причин перешел на Лисп — мне возможности метапрограммирования всё же важнее, чем типизация по Хиндли-Милнеру.
Re[8]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 10:24
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>2) Противопоставления никакого нет и быть не может — OCaml полноценный императивный ОО язык. ("Чистый" функциональный язык, о котором можно сказать, что он "распространен" — вообще один. Это Хаскель.)


Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.
Re[9]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 10:30
Оценка: 25 (3)
Здравствуйте, anastassia, Вы писали:

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


Нельзя рассказывать про ML, не рассказав, зачем он создавался. А создавал его тов. Робин Милнер, ныне нач. отдела в Microsoft Research, для одной конкретной цели — создание систем автоматического доказательства теорем. И наивысшим расцветом этого дела стала система HOL, с которой вам и следует непременно познакомиться. То, что язык оказался удачным, и его начали применять далеко за пределами первоначального предназначения — это чистая случайность.

Кстати, ещё об одном важном применении ML — следующий официальный стандарт языка EcmaScript (известного как JavaScript) будет содержать строгую формальную спецификацию в виде программы на Standard ML с поддержкой continuations. Как формальный язык спецификаций ML, пожалуй, действительно лучший: у ленивых, "истинных" языков есть очень серьёзные проблемы с оценкой времени выполнения и с доказательством конечности алгоритма, а для строгих языков эти задачи пусть и тяжко, но решаются.

A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


Не знаю. Я в сторону Nemerle не шуганусь ни за какие коврижки, а Хаскелль применяю, и весьма активно, но только для весьма узкоспециализированных задач. Я скорее в сторону Лиспа постоянно от OCaml шугаюсь.
Re: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 10:41
Оценка: +1
Ещё вспомнил одно всем известное применение OCaml: в Википедии он формулки рисует.
Re[9]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 11:13
Оценка: :))
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Gaperton, Вы писали:


G>>2) Противопоставления никакого нет и быть не может — OCaml полноценный императивный ОО язык. ("Чистый" функциональный язык, о котором можно сказать, что он "распространен" — вообще один. Это Хаскель.)


А> Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.


Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.
Re[10]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 11:35
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.


Так ведь беда C++ именно в том, что это — два абсолютно разных языка, никак друг с другом не связанных. Одним из другого не воспользуешься. В рантайме C++ не поисполняешь выражений языка темплейтов, при раскрутке темплейтов sscanf(...) не дёрнешь.
Re[11]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 11:56
Оценка: +2 :))
Здравствуйте, Аноним, Вы писали:

G>>Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.


А> Так ведь беда C++ именно в том, что это — два абсолютно разных языка, никак друг с другом не связанных. Одним из другого не воспользуешься. В рантайме C++ не поисполняешь выражений языка темплейтов, при раскрутке темплейтов sscanf(...) не дёрнешь.


Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.
Re[12]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 12:19
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.


А что в вышеизложенном не есть правда? С чем из этого умная и грамотная комиссия может не согласиться?
Re[13]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 13:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Gaperton, Вы писали:


G>>Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.


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


1) Не стоит говорить с комиссией о тех вещах, которые она, комиссия, знает. Порвут как тузик грелку на ровном месте. Лучше концентрироваться на узкоспециальных.
2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++. Поэтому глупо их противопоставлять. Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти.
Re[14]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 13:16
Оценка:
Здравствуйте, Gaperton, Вы писали:


G>2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++.


Чушь какая. Это тьюринг-полный язык, пусть и узкоспециализированный. Что с того, что в языке нет ввода/вывода? Он от этого менее языком не становится. Синтаксис есть, семантика есть, любой алгоритм в рамках этой семантики выразить можно — значит, сугубо по определению — это есть язык.

G> Поэтому глупо их противопоставлять.


Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык. И GNU autotools — конечно же тоже часть языка C++, как же без этого.

G> Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти.


Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.
Re[9]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 13:22
Оценка: :))
Здравствуйте, anastassia, Вы писали:

A>Да вот нельзя другого...Как-то все на этом кэмле завязалось )) На окэмл я уже поглядела)))по-моему мы друг другу не понравились Но это не страшно, мне всего-то один раз надо рассказать какой это прекрасный язык и что ну никак без него нельзя))) Что от metalanguage-то знаю, как раз весь диплом об этом, но пример надо именно на кэмле и на си(одну и ту же сортировку), вроде как посмотрите-сравните, как все красиво!


A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


Ну прям так сразу и все. Грамотные пацаны и девчонки шугаются в сторону Erlang!
Re[15]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 13:38
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Gaperton, Вы писали:



G>>2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++.


А> Чушь какая. Это тьюринг-полный язык, пусть и узкоспециализированный. Что с того, что в языке нет ввода/вывода? Он от этого менее языком не становится. Синтаксис есть, семантика есть, любой алгоритм в рамках этой семантики выразить можно — значит, сугубо по определению — это есть язык.


Возражения комиссии будут вполне обоснованы, потому как ты при всем желании не сможешь предъявить комиссии описание и стандарт "языка темплейтов С++" (не у него ни своего синтаксиса, ни семантики). Это не язык программирования, а одна из техник применения фрагментов языка С++. Дальнейшие твои упорствования комиссия может истрактовать, как непонимание разницы между языком, его синтакситом и семантикой, и техникой программирования на этом языке. Тут уже один шажок — (и пара словечек вроде "чушь") и будут поставлены под сомнения результаты всей твоей работы. Один хрен — комиссия в ней ничего не понимает. Не все же соглашаться.

G>> Поэтому глупо их противопоставлять.


А> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык.

Если команды препроцессора описаны в стандарте С++ — то это один язык. С++. Если нет — то нет.

А>И GNU autotools — конечно же тоже часть языка C++, как же без этого.

Ну, это уже не знаю. Что за autotools такой. Но вряд ли это часть С++.

G>> Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти.

А> Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.
"
— Что такое экзамен?
— Это разговор двух умных людей.
— А если один из них дурак?
— Тогда второй не получит зачет.
"
Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++. Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++. Если же экзаменуемый будет настаивать на "языке темплейтов" в данном противопоставлении, комиссия, я думаю, с полным правом может усомниться в его компетентности и даже вменяемости. Надо уметь отвечать на заданный вопрос, а не на какой-нибудь другой.
Re[16]: ocaml срочно!!!
От: Аноним  
Дата: 17.05.07 14:01
Оценка: -3
Здравствуйте, Gaperton, Вы писали:

G>Возражения комиссии будут вполне обоснованы, потому как ты при всем желании не сможешь предъявить комиссии описание и стандарт "языка темплейтов С++" (не у него ни своего синтаксиса, ни семантики).


Есть. То, что это часть описания стандарта C++ — ничего не меняет.

G> Это не язык программирования, а одна из техник применения фрагментов языка С++.


Приплыли, язык уже назвали "одной из техник".

G> Дальнейшие твои упорствования комиссия может истрактовать, как непонимание разницы между языком, его синтакситом и семантикой, и техникой программирования на этом языке.


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

G> Тут уже один шажок — (и пара словечек вроде "чушь") и будут поставлены под сомнения результаты всей твоей работы. Один хрен — комиссия в ней ничего не понимает. Не все же соглашаться.


А>> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык.

G>Если команды препроцессора описаны в стандарте С++ — то это один язык. С++. Если нет — то нет.

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

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


G>Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++.


А я вот — не пойму. Я что, дурак?

G> Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++.


"Разумеется" — это только для гуманитариев. Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.

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


Вы, как гуманитарий, увидели какой-то скрытый от всех прочих людей смысл в этом вопросе. Поздравляю.
Re[7]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:04
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Как ты любишь повторять, это зависит... :о)

G>Можно провести простейшие тесты, в которых анализатор строгости в Хаскелле позволяет сгенерировать более быстрый код, чем даже в Си (пример — функция Аккермана).

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

G>Ну, можно привести в пример Common Lisp и Scheme, в которых есть отличная поддержка не только ФП, ООП и метапрограммирования, но и компиляторы, генерирующие нативный код не хуже (или ненамного хуже), чем у Си — Stalin, Bigloo, mzScheme, SBCL...


Ни Common Lisp, ни Scheme не поддреживают ООП на уровне языка. Для CL есть MOP — но это стандарт (которых похоже так и не реализуется одинаково всеми) на макро-библиотеку. В ОКамле же поддержка ООП встроена в язык.

Что до скорости, то Common Lisp и Scheme могут компилироваться только в JIT-манере. Плюс языки динамически типизированные без вывода таипов. По этому в них приходится явно задавть повсеместно типы чтобы получить хотя бы похожую на С-шную прозводительность. Сгенерировать более быстрый код они не в силах приципиально. Это просто вранье. Тут могут быть олько случаи вроде сравнения с освсем плохим компилятором С или сравнение разных алгоритмов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:04
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Не знаю. Я в сторону Nemerle не шуганусь ни за какие коврижки, а Хаскелль применяю, и весьма активно, но только для весьма узкоспециализированных задач.


А можно эту мысль развить? Ну, обоснования там привести и т.п.
Особенно это интересно в свете:

А>Я скорее в сторону Лиспа постоянно от OCaml шугаюсь.


Потому как Nemerle и есть ОКамл с С-подобным синтаксисом в котром доведен до ума ООП и прикручены Лисповские макросы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:04
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.


XSLT сомнительно. Там циклы, переменные и даже расширения (стандартом описанные) скриптовые.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:04
Оценка:
Здравствуйте, <Аноним>, Вы писали:

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


Проблема в том, что она не сможет объяснить сказанное. Во-первых, для этого знать нужно не мало. А во вторых это все должны быть способны понять преподователи. А они скорее всего это все не поймут. Вон поглядите на выступления оных на наших форумах. Они ООП то с рудом понимают.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: Трурль  
Дата: 17.05.07 14:06
Оценка: :))) :))) :))) :))
Здравствуйте, Аноним, Вы писали:


А> Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.

It has been remarked that computer scientists would rather use each other's toothbrushes than each other's notation.

Re[8]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 17.05.07 14:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ленивость же можно эффективно эмулировать на других языках. Коду, возможно, будет болоше, но результат тот же.


Один из бенефитов ленивости by default в том, что кода при ней меньше.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 17.05.07 14:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>XSLT сомнительно. Там циклы, переменные и даже расширения (стандартом описанные) скриптовые.


Что значит "скриптовые"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: ocaml срочно!!!
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 17.05.07 14:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Я в сторону Nemerle не шуганусь ни за какие коврижки,


Почему?
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[15]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:45
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А> Чушь какая. Это тьюринг-полный язык, пусть и узкоспециализированный. Что с того, что в языке нет ввода/вывода? Он от этого менее языком не становится. Синтаксис есть, семантика есть, любой алгоритм в рамках этой семантики выразить можно — значит, сугубо по определению — это есть язык.


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

G>> Поэтому глупо их противопоставлять.


А> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык. И GNU autotools — конечно же тоже часть языка C++, как же без этого.


Дык это части одного языка. На них есть спецификация. Они стандартизованы.

А> Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.


Боюсь, они вообще ничего не поймут. Да и задачи у них другие.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 14:45
Оценка: +2
Здравствуйте, <Аноним>, Вы писали:

А> Сдаётся мне, что у вас очень серьёзные пробелы в образовании.


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


От себя сказу, что у меня лично нет сомнений в том, что Гапертон понимает что такое метапрограммирование на шаблонах С++ и что из себя пердставляет "язык шаблонов", т.е. рекурсивное воплощение шаблонов. Про Александруску он наверно тоже слышал. Так что не стоит переводить треминологический спор (бессмысленный и беспощадный) в "сам дурак".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Что значит "скриптовые"?


JavaScript, например. В прочем, у МС он расширятся с помощью C#.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Один из бенефитов ленивости by default в том, что кода при ней меньше.


Если добавить "иногда", то соглашусь. Но к данному вопросу это отношения не имеет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 15:06
Оценка:
Здравствуйте, Трурль, Вы писали:

А>> Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.

Т>

It has been remarked that computer scientists would rather use each other's toothbrushes than each other's notation.


Кстати, похоже это еще одно воплошение Винипоха, Колхоза и т.п. В общем, троллит товарищь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: Gaperton http://gaperton.livejournal.com
Дата: 17.05.07 15:41
Оценка: +1 :))
Здравствуйте, Аноним, Вы писали:

А> Сдаётся мне, что у вас очень серьёзные пробелы в образовании. Семантика есть — значит это язык.

Не стоит вот так собеседнику говорить про "пробелы" — это проигрышно для вас, даже если бы у вас было хорошее образование. Хотя бы потому, что кроме семантики, у языка синтаксис еще должен быть. У вашего "языка темплейтов" своего синтаксиса нет, он есть у С++. Какая досада.

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

Нет, к сожалению для вас я закончил профильный факультет МГУ (ВМиК), и достаточно хорошо представляю себе как поведение дипломной комиссии, так и что такое язык программирования. Уж не хуже выпускников мухосранских и московских "технических" вузов третьего эшелона, точно.

А> В формальном определении понятия "язык программирования" нет ни слова о том, куда должны быть подшиты страницы с описанием этого самого языка, чтобы он считался "самостоятельным" языком. Если можно выделить замкнутую семантику — то она и будет самостоятельным языком, чисто формально, а про всё остальное пусть волнуются гуманитарии, и желательно — где либо подальше от программирования.


Язык задается описанием синтаксиса (без этого вы ай-ай-ай — не то что транслятор не напишете — вы вообще не сможете вообще понять, текст на вашем "языке" написан, или нет) и семантики (которую вообще нельзя однозначно задать не имея синтаксиса языка). Если вы способны дать отдельное изолированное описание этой пары — вы действительно описали отдельный язык.

G>>Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++.

А> А я вот — не пойму. Я что, дурак?
Не знаю, не знаю. Вас просят противопоставить нечто языку С++ — подразумевая весь С++, включая шаблоны и прочее. Вы же берете часть С++, и противопоставляете его всему С++. И как это понимать? Вы — дурак? Или вы чего-то не знаете? Или вы просто ошиблись сгоряча, не поняв вопрос?

G>> Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++.

А> "Разумеется" — это только для гуманитариев. Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.
Как у нас любит говорить VladD2 — "очередное бездоказательное утверждение"
Re[18]: ocaml срочно!!!
От: anastassia  
Дата: 17.05.07 16:08
Оценка: :)))
Ого-го какие нешуточные бои развернулись!))) Все же программисты- люди увлеченные)))) И как кто-то тут правильно заметил, мозги у меня, может и не прополоскались, но уж точно офигели от всего этого объема информации! за 5 лет учебы не "постигала" так много так быстро
А позвольте поинтересоваться, вы все занимаетесь непосредственно написанием прог по жизни? или есть просто любители?
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 16:16
Оценка:
Господа, любая реакция на действия модератора возможна только по почте на адрес moderator@rsdn.ru.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 17.05.07 18:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>XSLT сомнительно. Там циклы, переменные и даже расширения (стандартом описанные) скриптовые.


Ну и что? Расширения — только функции; минимальная интеграция с внешним миром, так сказать. Переменные неизменяемые. Как следствие — возможны ленивые вычисления (уж не знаю, реализованы ли они на самом деле). Каждый шаблон можно вполне рассматривать как функцию result-tree-fragment = f (nodeset, nodeset, ...). С использованием EXSLT брюки превращаются: nodeset = exslt:node-set(result-tree-fragment). Насколько я успел понять из здешних флеймов (гы, нехилый у меня источник самообразования ), всего этого достаточно, чтобы обозвать язык чисто функциональным. Да, кстати, ООП там также не пахнет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[13]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 18:48
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR> меня встревожила фраза "OCaml чуть чуть устарел" by geniepro. Подожду, может он ответит, что он имел ввиду под ней.


Вообще-то я вовсе не предлагаю списывать Окамл со счетов... ;о)
Просто у меня лично сложилось такое впечатление — по сравнению с Хаскеллем и Немерле Окамл действительно выглядит несколько архаично — ну так он и старше (вроде бы)...

Ну хорошо, какие сейчас новости в мире Окамля? (Кроме F#)
Какие новые идеи появляются сейчас у создателей Окамля?
Может быть, я не прав, и действительно Окамл развивается дальше? Или всё-таки он уже остановился в развитии, а следовательно — устарел?
Re[12]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 17.05.07 19:04
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Что значит "скриптовые"?


VD>JavaScript, например. В прочем, у МС он расширятся с помощью C#.


А, это я стормозил Я подумал, что ты говоришь о скриптовых переменных, скриптовых циклах и скриптовых расширениях.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 19:05
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Ну хорошо, какие сейчас новости в мире Окамля? (Кроме F#)

Да, революционных изменений в языке давно не было, периодически выходят новые релизы с багфиксами и т.п. Правда, в последнем релизе основательно переделали Camlp4 — народ возмущался. Но, с другой стороны, отсутствие экспериментальных расширений системы типов в каждом релизе не делает язык устаревшим, скорее он становится пригоднее для реальных проектов.
G>Какие новые идеи появляются сейчас у создателей Окамля?
Recent publications of project Gallium
Re[8]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 19:23
Оценка: 10 (1)
Здравствуйте, lomeo, Вы писали:

G>> Можно провести простейшие тесты, в которых анализатор строгости в Хаскелле позволяет сгенерировать более быстрый код, чем даже в Си (пример — функция Аккермана).


L> Что то не верится. Си всё таки считай ассемблер и есть.

L> Приведи, пожалуйста.

Конечно-конечно, с удовольствием! :о))

Celeron 1.8 (128k lvl2-cash), 512MB DualDDR266, i865

clean    : ack 3 11  : 0.72 sec  Clean 2.1.1
haskell  : ack 3 11  : 0.88 sec  GHC 6.6
f#       : ack 3 11  : 0.92 sec  F# 1.9.1.8
c        : ack 3 11  : 1.1  sec  Visual C++ 2005
c#       : ack 3 11  : 2.6  sec  Visual C# 2005
scheme   : ack 3 11  : 4.3  sec  DrScheme/MzScheme


Clean:
module ack
import StdInt

ack :: Int Int -> Int
ack m n | m == 0    = n + 1 
        | n == 0    = ack (m-1) 1
        | otherwise = ack (m-1) (ack m (n-1))

Start = ack 3 11


Haskell:
ack :: Int -> Int -> Int
ack m n | m == 0    = n + 1 
        | n == 0    = ack (m-1) 1
        | otherwise = ack (m-1) (ack m (n-1))

main = print (ack 3 11)


F#:
let rec ack (m:int) (n:int) : int =
        if m = 0 then n + 1       else
        if n = 0 then ack (m-1) 1 else
        ack (m-1) (ack m (n-1))

let st = System.DateTime.Now
let h  = ack 3 11
let ft = System.DateTime.Now
let t  = time ft - time st
do  System.Console.WriteLine ("ack 3 11 = {0} & time is {1}\n", h, t)


C:
#include <stdio.h>
#include <conio.h>
#include <Windows.h>

int ack (int m, int n)
{
    if (m == 0) return n + 1;           else
    if (n == 0) return ack (m - 1, 1);  else
    return ack (m - 1, ack (m, n - 1));
}

void main(void)
{
    DWORD st, ft;
    int   m;

    st = GetTickCount();

    m  = ack (3, 11)+1; // Единица здесь прибавляется, а затем убавляется ниже, для того,
                        // что бы шаловливый оптимизатор не заоптимизировал программу слишком сильно 
                        // и не вызвал ack до обоих вызовов GetTickCount (есть такой глюк)

    ft = GetTickCount();
    printf("%d\n\nTime is %ld  msec\n", m-1, (ft-st));
}


C#:
using System;
using System.Collections.Generic;
using System.Text;

namespace Ackerman
{
    class Program
    {
        static long Time(DateTime t)
        {
            return (((t.Hour * 60) + t.Minute) * 60 + t.Second) * 1000 + t.Millisecond;
        }

        static int Ack(int m, int n)
        {
            if (m == 0) return n + 1;         else 
            if (n == 0) return Ack(m - 1, 1); else 
            return Ack(m - 1, Ack (m, n - 1));
        }

        static void Main(string[] args)
        {
            DateTime st, ft;

            st = DateTime.Now;

            int a = Ack(3, 11);

            ft = DateTime.Now;
            Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, Time(ft) - Time(st));
        }
    }
}


Scheme:
(module a mzscheme

  (define (ack m n)
    (cond ((= m 0) (+ n 1))
          ((= n 0) (ack (- m 1) 1))
          (else    (ack (- m 1) (ack m (- n 1))))))

  (define t (current-milliseconds))

  (define a (ack 3 11))

  (printf "(ack 3 11): ~s in ~s~n" a (- (current-milliseconds) t))
)

(require a)


С программой на Scheme вообще-то в данном примере не совсем короректная ситуация — я не знаю, как указать компилятору использовать тип int32. Боюсь, здесь используется стандартный подход — пока результат влезает в определённую машинную разрядность (в DrScheme, по-моему, 64 бита), числа хранятся и оперируются в этом виде (int64), а как только выходит за пределы этих 64 бит, вычисления идут уже с BigInt.
Даже если разрядность компилятором в данном случае ограничена типом int64, то вот уже как минимум полуторократное замедление программы по сравнению с другими — ведь там везде расчёты с типом int32... То есть производительность получается примерно на уровне C#...
В программах на С# и Scheme ещё идёт и проверка на выход за пределы диапазона целых чисел, тогда как в других языках её нет — это тоже замедляет расчёты.

ЗЫ. Но вообще-то пример довольно искусственный...
Re[15]: ocaml срочно!!!
От: palm mute  
Дата: 17.05.07 19:25
Оценка:
Здравствуйте, palm mute, Вы писали:

G>>Какие новые идеи появляются сейчас у создателей Окамля?

PM>Recent publications of project Gallium

Если интересно дальнейшее развитие ML — см. проект Successor ML.
Re[8]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 19:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> Это все сказки. Практика она однозначно показывает, что добиться производитльности которую обеспечивают строгие, статически-типизированные, компилируемые языки на Хаскеле невозможно. И виной тому ленивость.


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

VD2> Что до скорости, то Common Lisp и Scheme могут компилироваться только в JIT-манере. Плюс языки динамически типизированные без вывода таипов. По этому в них приходится явно задавть повсеместно типы чтобы получить хотя бы похожую на С-шную прозводительность.


Был такой язык Self — весь из себя динамический. Вряд ли есть язык более динамический, чем Self...
Сановцы, разработчики Self'а, смогли создать для него компилятор, генерирующий код всего в 1.7 раза медленнее, чем у лучших (на тот момент) компиляторов Си. Они в своих исследованиях выяснили, что теоретически можно добиться отставания в скорости всего на треть. А потом начали делать Яву...

VD2> Ни Common Lisp, ни Scheme не поддеживают ООП на уровне языка. Для CL есть MOP — но это стандарт (которых похоже так и не реализуется одинаково всеми) на макро-библиотеку.


"Библиотека — это язык, пытающийся вырваться на свободу..."

Ну какая разница — встроено в язык или реализовано в виде библиотеки типа CLOS?.. Главное, что использование того же CLOS'а для лисперов выглядит совершенно естественно, так, как буд то это часть языка, а не какая-то левая библиотека. К тому же CLOS входит в стандарт Common Lisp'a, а значит её таки можно считать частью языка...
Re[11]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 17.05.07 20:54
Оценка:
Здравствуйте, konsoletyper, Вы писали:

K>Здравствуйте, <Аноним>, Вы писали:


А>> Я в сторону Nemerle не шуганусь ни за какие коврижки,


K>Почему?


Эх, не хотелось бы мне участвовать в очередном флейме, но не могу удержаться от цитаты:
______________________

Алан Перлис однажды заметил: “Язык, освоение которого не позволяет найти новые подходы к программированию, не заслуживает изучения”.
______________________

Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...
Есть ли в Немерле своя "национальная идея"?
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Ну и что? Расширения — только функции; минимальная интеграция с внешним миром, так сказать. Переменные неизменяемые. Как следствие — возможны ленивые вычисления (уж не знаю, реализованы ли они на самом деле). Каждый шаблон можно вполне рассматривать как функцию result-tree-fragment = f (nodeset, nodeset, ...). С использованием EXSLT брюки превращаются: nodeset = exslt:node-set(result-tree-fragment). Насколько я успел понять из здешних флеймов (гы, нехилый у меня источник самообразования ), всего этого достаточно, чтобы обозвать язык чисто функциональным. Да, кстати, ООП там также не пахнет.


Ну, и как быть с циклами? Разве в чистых ФЯ они могут быть?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, geniepro, Вы писали:

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


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

G>Был такой язык Self — весь из себя динамический. Вряд ли есть язык более динамический, чем Self...


Он и сейчас есть. Развите Смолтока.

G>Сановцы, разработчики Self'а,


Чё? А орлы из Ксерокс-Парка не обидятся на присвоедие их разработок Сану?

G> смогли создать для него компилятор, генерирующий код всего в 1.7 раза медленнее, чем у лучших (на тот момент) компиляторов Си.


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

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


... и сделаои ее типобезопасной... и теперь код на яве отстает всего на треть (в лучшем случае).

VD2>> Ни Common Lisp, ни Scheme не поддеживают ООП на уровне языка. Для CL есть MOP — но это стандарт (которых похоже так и не реализуется одинаково всеми) на макро-библиотеку.


G>"Библиотека — это язык, пытающийся вырваться на свободу..."


Ага. А демогогия — это искуство мыслить творчески.

G>Ну какая разница — встроено в язык или реализовано в виде библиотеки типа CLOS?..


Огромная. Она не является вастью языка. Более того она является другим языком, так как это макро-библиотека. Я вот на Немерле могу сэмулировать С++, но ведь от этого Немерле С++-ом ведь не станет. Или станет?

G> Главное, что использование того же CLOS'а для лисперов выглядит совершенно естественно,


Главно, что о нем даже не слышно. А мои попытки скомпилировать CLOS-примеры окончились не чем, так как все три скаченные мной компилятора/интерпретатора ругались на этот код, но в разных местах.

G> так, как буд то это часть языка, а не какая-то левая библиотека. К тому же CLOS входит в стандарт Common Lisp'a, а значит её таки можно считать частью языка...


Незнаю как в стандарт, я такого вообще не видел, вот в реализации он что- очень разные "входит". Столь разный, что плакать охота.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, Gaperton, Вы писали:

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

G>Нет, к сожалению для вас я закончил профильный факультет МГУ (ВМиК), и достаточно хорошо представляю себе как поведение дипломной комиссии, так и что такое язык программирования. Уж не хуже выпускников мухосранских и московских "технических" вузов третьего эшелона, точно.

Ну, я не могу понять... Ну, этого орла мы забаним по IP, так он один фиг из под прокси видимо лезит. Но тебя то если забанят, то уже на долго. Неужели нельзя не реагировать на подобные провакационные выпады в той же манере?
В общем, в этот раз я сделал вид, что не заметил, но на будующее, просьба просто молчать если хочется ответить гадость.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Если интересно дальнейшее развитие ML — см. проект Successor ML.


Дык и Хаскель, и Немерле, и Скала — это и есть равитие ML, точнее его идей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:32
Оценка: 2 (1)
Здравствуйте, geniepro, Вы писали:

G>
G>        static long Time(DateTime t)
G>        {
G>            return (((t.Hour * 60) + t.Minute) * 60 + t.Second) * 1000 + t.Millisecond;
G>        }
G>        ...
G>            Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, Time(ft) - Time(st));
G>


Круто! В следующий разп попробуй тупо: ft — st. Тебе наверняка понравится .
А вообще для этих целей есть класс System.Diagnostics.Stopwatch:
using System;
using System.Diagnostics;

class Program
{
    static int Ack(int m, int n)
    {
        if (m == 0)      return n + 1;
        else if (n == 0) return Ack(m - 1, 1);
        else             return Ack(m - 1, Ack(m, n - 1));
    }

    static void Main(string[] args)
    {
        Stopwatch timer = Stopwatch.StartNew();
        int a = Ack(3, 11);
        Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, timer.Elapsed);
    }
}

На моей машине выводит:
Ack(3, 11) = 16381  time = 00:00:00.8839232


Что до твоих тестов, то я не специалист в развороте рекурсии, но что-то мне говорит, что если это сделать, то С/С++ в версии MS VC и/или Intel C++ как всегда порвут всех. Хотя конечно не сильно.

Тот факт что F#, т.е. энергичный язык хостящийся на дотнете показал почти такое же время как ленивые языки говорит только о том, что скорость в этом тесте определяется не ленивостью (которая тут на фиг не упала), а качеством оптимизации концевой рекурсии. Если сделать скидку на то, что F# еще вынужден JIT-ить метод в момент его первого выполнени, то становится очевидным, что приемуществ у ленивых языков нет.

Так вот подобные тесты никак не показывают скорость код в общем. Это частный случай на котором как раз в первую очередь тестируются ФЯ и который осовсем не характерен для реального кода.

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

На последок, вот тебе Немерлевый вариант. Думаю, он должен отработать примерно так же как F#-ый:
using System;
using System.Diagnostics;

static int Ack(int m, int n)
{
    if (m == 0)      return n + 1;
    else if (n == 0) return Ack(m - 1, 1);
    else             return Ack(m - 1, Ack(m, n - 1));
}

Stopwatch timer = Stopwatch.StartNew();
int a = Ack(3, 11);
Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, timer.Elapsed);

У меня он отрабатывает за:
Ack(3, 11) = 16381  time = 00:00:00.4611239


G>С программой на Scheme вообще-то в данном примере не совсем короректная ситуация — я не знаю, как указать компилятору использовать тип int32. Боюсь, здесь используется стандартный подход — пока результат влезает в определённую машинную разрядность (в DrScheme, по-моему, 64 бита), числа хранятся и оперируются в этом виде (int64), а как только выходит за пределы этих 64 бит, вычисления идут уже с BigInt.

G>Даже если разрядность компилятором в данном случае ограничена типом int64, то вот уже как минимум полуторократное замедление программы по сравнению с другими — ведь там везде расчёты с типом int32... То есть производительность получается примерно на уровне C#...

Это все домыслы. От чего тормозит C# известно. Его компилятор не оптимизирует концевую рекурсию.

G>В программах на С# и Scheme ещё идёт и проверка на выход за пределы диапазона целых чисел, тогда как в других языках её нет — это тоже замедляет расчёты.


Опять домыслы. В С# по умолчанию выход за границы диапазовно не контролируются. Это надо включать отдельной опцией компилятора или оборачивать код в блок checked. Такая проверка идет по умолчанию в Немерле, но как показал мой тест она ровным счетом ничего не меняет (по крайней мере на моем Core 2 Duo).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 21:45
Оценка: :)))
Здравствуйте, geniepro, Вы писали:

А>>> Я в сторону Nemerle не шуганусь ни за какие коврижки,


K>>Почему?


G>Эх, не хотелось бы мне участвовать в очередном флейме, но не могу удержаться от цитаты:

G>______________________

G>Алан Перлис однажды заметил: “Язык, освоение которого не позволяет найти новые подходы к программированию, не заслуживает изучения”.

G>______________________

G>Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...


Вот их комбинацию и дает. Лисп не дает. Хаскель не дает. А он дает. В Хаскеле тоже ничего по сути нового. И не надо по классы типов и монады рассказывать. Калссы типов под именем интерфейс были в Яве. Монады — это извращение для борьбы с собственной чистотой. Так и тут вывод типов из использоания для в сложной и не приспособленной для этого системе типов. Макросы кучи новых видов которые ранее в природе не всречались. Раздельная компиляция макросов. Информация о типах в них. Да море всего.

G>Есть ли в Немерле своя "национальная идея"?


Ясно начинается демогогия. Что и следовало ожидать.

Ответом в той же манере будет: А зачем изучать Лисп? Все что в нем есть, есть в Немерле. Даже больше.

Ты ведь говоришь о языке для работы? Хаскель тебе явно не подходит. Видимо то ли скорость не удовлетворяет, то ли императивщинка нужна кое где, то ли макросы. Судя по тому, что ОКамл тоже не очень удовлетворяет, раз шугаешся, то значит нужны макросы. Вот Немерле и есть тот ОКамл с полноценными макросами превосходящими те же Лисповские (за счет доступности информации о типах внутри макроса).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 22:54
Оценка:
Здравствуйте, geniepro, Вы писали:

Я все же справился с разворотом рекусрии на C#, так что думю, что он сейчас станет победятлом :
using System;
using System.Diagnostics;

class Program
{
    static int Ack(int m, int n)
    {
        while (m != 0)
        {
            if (n == 0)
                n = 1;
            else
                n = Ack(m, n - 1);
            m--;
        }

        return n + 1;
    }

    static void Main(string[] args)
    {
        Stopwatch timer = Stopwatch.StartNew();
        int a = Ack(3, 11);
        Console.WriteLine("Ack(3, 11) = {0}  time = {1}", a, timer.Elapsed);
    }
}


Ну, пока этот код не перепишут на С.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 23:02
Оценка:
Здравствуйте, VladD2, Вы писали:

Гы. На моей машине VC слил C#-у отработав примерно как F#.

Короче крутость ленивых языков не подтвердилась.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 17.05.07 23:28
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Дм.Григорьев, Вы писали:


ДГ>>Ну и что? Расширения — только функции; минимальная интеграция с внешним миром, так сказать. Переменные неизменяемые. Как следствие — возможны ленивые вычисления (уж не знаю, реализованы ли они на самом деле). Каждый шаблон можно вполне рассматривать как функцию result-tree-fragment = f (nodeset, nodeset, ...). С использованием EXSLT брюки превращаются: nodeset = exslt:node-set(result-tree-fragment). Насколько я успел понять из здешних флеймов (гы, нехилый у меня источник самообразования ), всего этого достаточно, чтобы обозвать язык чисто функциональным. Да, кстати, ООП там также не пахнет.


VD>Ну, и как быть с циклами? Разве в чистых ФЯ они могут быть?


В XSLT 1.0 циклов нет. Только через рекурсию. Или через извраты типа "находим или создаём какое-нить множество узлов подходящего размера и сканируем его". Учитывая запредельную "компактность" синтаксиса, это просто рай на земле. Ненавижу...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[13]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 17.05.07 23:38
Оценка:
ДГ>В XSLT 1.0 циклов нет. Только через рекурсию.

Хм, или ты имел в виду обход дерева в цикле?

<xsl:for-each select="rowset/row">
    <xsl:value-of select="@id"/>
</xsl:for-each>


Явно изменяемой переменной "текущий узел" тут нет, эту конструкцию вполне можно реализовать через рекурсию (типа прологовского L := (A | L) или как-то так). Фиг знает, как оно реализовано на самом деле в том же libxslt.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[13]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 23:51
Оценка: +2
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>В XSLT 1.0 циклов нет.


http://www.w3.org/TR/xslt

и ищешь по "8 Repetition" или "xsl:for-each".

ДГ> Только через рекурсию. Или через извраты типа "находим или создаём какое-нить множество узлов подходящего размера и сканируем его". Учитывая запредельную "компактность" синтаксиса, это просто рай на земле. Ненавижу...


Незнаю. Если бы в XSLT не было идиотского, основанного на XML синтаксиса, то был бы очень ничего себе язычек генерации текста. А вот в перемешку с генерируемым HTML этот XML-синтаксис выглядит просто ужасно. Идеологически же язык очень ничего себе. Идея шаблонов и паттерн-матчинга на базе XPath очень здравая.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 17.05.07 23:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Идеологически же язык очень ничего себе. Идея шаблонов и паттерн-матчинга на базе XPath очень здравая.


+1. Потому и использую его, любимого.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[14]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.05.07 23:55
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Хм, или ты имел в виду обход дерева в цикле?


ДГ>
<xsl:for-each select="rowset/row">
ДГ>    <xsl:value-of select="@id"/>
ДГ></xsl:for-each>


ДГ>Явно изменяемой переменной "текущий узел" тут нет, эту конструкцию вполне можно реализовать через рекурсию (типа прологовского L := (A | L) или как-то так). Фиг знает, как оно реализовано на самом деле в том же libxslt.


Какого к черту дерева? Это самый что ни наесть стандартный цикл.

Насколько я понимаю переменные в нем тоже без проблем присваиваются.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 18.05.07 00:20
Оценка:
Здравствуйте, VladD2, Вы писали:

ДГ>>
<xsl:for-each select="rowset/row">
ДГ>>    <xsl:value-of select="@id"/>
ДГ>></xsl:for-each>


VD>Это самый что ни наесть стандартный цикл.

VD>Насколько я понимаю переменные в нем тоже без проблем присваиваются.

Присваиваются... Один раз. Вот тебе полный рекурсивный аналог for-each, только тело цикла вынесено в отдельный шаблон. Где здесь разрушающее присваивание?

<xsl:template name="for-each">
    <xsl:param name="nodeset"/>
    <xsl:if test="count($nodeset)!=0">
            <xsl:call-template name="for-each-body">
                    <xsl:with-param name="node" select="$nodeset[1]"/>
                </xsl:call-template>
                <xsl:call-template name="for-each">
                    <xsl:with-param name="nodeset" select="$nodeset[1]/next-sibling::node()"/>
                </xsl:call-template>
        </xsl:if/>
</xsl:template>


Примечание: next-sibling возвращает всё множество узлов, следующих за данным и имеющих того же родителя.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[16]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 00:29
Оценка: -2 :)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Присваиваются... Один раз.


Уверен?

Попробуй присвой переменную до цикла, измени ее значение в цикле, и используй его после цикла.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 18.05.07 00:45
Оценка:
Здравствуйте, VladD2, Вы писали:

ДГ>>Присваиваются... Один раз.


VD>Уверен?

VD>Попробуй присвой переменную до цикла, измени ее значение в цикле, и используй его после цикла.

<xsl:variable name="test" select="1"/>
<xsl:for-each select="/*/objs/r">
    <xsl:variable name="test" select="2"/>  <-------
    ...
</xsl:for-each>
<xsl:value-of select="$test"/>


В указанной строчке генерируется ошибка "xsl:variable : redefining test", на выходе пусто (шаблон не прорабатывает). Тебе известны какие-либо другие способы "изменить значение" переменной в XSLT?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[13]: ocaml срочно!!!
От: deniok Россия  
Дата: 18.05.07 03:42
Оценка: 2 (2) +2
Здравствуйте, VladD2, Вы писали:


VD> В Хаскеле тоже ничего по сути нового. И не надо по классы типов и монады рассказывать. Калссы типов под именем интерфейс были в Яве.


Сравнивать явовские интерфейсы и классы типов Хаскелла — всё равно, что сравнивать макросы C и Лиспа. Инструменты радикально разной мощности.
Re[10]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 07:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> Ответом в той же манере будет: А зачем изучать Лисп? Все что в нем есть, есть в Немерле. Даже больше.


Просто Лисп — классика. Полувековая история компьютинга, всё-таки... ;о)

VD2> Ты ведь говоришь о языке для работы? Хаскель тебе явно не подходит. Видимо то ли скорость не удовлетворяет, то ли императивщинка нужна кое где, то ли макросы. Судя по тому, что ОКамл тоже не очень удовлетворяет, раз шугаешся, то значит нужны макросы. Вот Немерле и есть тот ОКамл с полноценными макросами превосходящими те же Лисповские (за счет доступности информации о типах внутри макроса).


Нет-нет, Влад, это не ко мне. Я не тот Аноним 673, который шугается от Немерле... :о)

Мне Немерле любопытен, хотя и не настолько, что бы скачивать исходники компилятора из SVN или где они там хранятся, и билдить их вручную.
А та версия, что я скачал с их сайта (в виде инсталлятора), не может откомпилировать твой вариант Ack на Немерле...

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

VD2> Круто! В следующий раз попробуй тупо: ft — st. Тебе наверняка понравится


О, пасип, понравилось! :о))

VD2> Я все же справился с разворотом рекусрии на C#, так что думю, что он сейчас станет победятлом :


Боюсь, эта версия стала дятлом, а не победятлом... :о)) Она работает ещё медленнее (немного), чем оригинальная...

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

VD2> Короче крутость ленивых языков не подтвердилась.


О какой крутости ленивости шла речь? Я лишь заявил, что ленивость можно побороть анализатором строгости или ручным форсированием выполнения...
Re[14]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 07:19
Оценка: +1
Здравствуйте, deniok, Вы писали:

D>Здравствуйте, VladD2, Вы писали:


VD>> В Хаскеле тоже ничего по сути нового. И не надо по классы типов и монады рассказывать. Калссы типов под именем интерфейс были в Яве.


D>Сравнивать явовские интерфейсы и классы типов Хаскелла — всё равно, что сравнивать макросы C и Лиспа. Инструменты радикально разной мощности.


Мало того — Ява появилась существенно позже Хаскелла. Тогда уж правильнее было говорить об интерфейсах Objective C...
Re[12]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 07:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> Ну, и как быть с циклами? Разве в чистых ФЯ они могут быть?


Ну... смотря в каких.
Вот SISAL — считается чистым ФЯ, но там есть конструкция, очень похожая на цикл, и даже называется циклом, но — это язык с однократным присванием, и этот "цикл" на самом деле распараллеливается на разные процессоры и выполняет все итерации одновременно (если есть свободные процессоры)...
Re[10]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 07:46
Оценка:
Здравствуйте, VladD2, Вы писали:

G>> Сановцы, разработчики Self'а,


VD2> Чё? А орлы из Ксерокс-Парка не обидятся на присвоение их разработок Сану?


Упс, был не прав! Я имел в виду The Self Group, located at Sun Microsystems Laboratories, которые и вели разработку оптимизирующего компилятора для Self'а...

Я просто хочу сказать, что динамичность или ленивость — не непреодолимые преграды, их можно обойти хорошими компиляторами.
Например, Stalin (компилер для Scheme) для той же функции Аккермана генерирует код в три раза более быстрый, чем GCC (правда, сразу признаюсь, я сам этого не проверял, мне показывали бенчмарки)...
Re[11]: ocaml срочно!!!
От: Mirrorer  
Дата: 18.05.07 09:10
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Мне Немерле любопытен, хотя и не настолько, что бы скачивать исходники компилятора из SVN или где они там хранятся, и билдить их вручную.

G>А та версия, что я скачал с их сайта (в виде инсталлятора), не может откомпилировать твой вариант Ack на Немерле...

Попробуй это May 2007 CTP (настоящая)
Автор: Блудов Павел
Дата: 13.05.07


Может понравится
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[12]: ocaml срочно!!!
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 18.05.07 10:10
Оценка: :))) :))) :)
Здравствуйте, geniepro, Вы писали:

G>Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...


Вообще это вопрос личный, язык как женщина — мне не даёт, тебе не даёт, Владу даёт.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: ocaml срочно!!!
От: Аноним  
Дата: 18.05.07 11:07
Оценка:
G>>Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...
VD>Вот их комбинацию и дает.

Комбинация идей — будет "новым подходом к программированию" ?

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


VD>Ответом в той же манере будет: А зачем изучать Лисп?

Он же написал, что он ужде шугается — т.е. он уже в какой-то мере изучил Лисп. А Немерл будет совсем новым.
Re[14]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 11:15
Оценка: -1
Здравствуйте, deniok, Вы писали:

D>Сравнивать явовские интерфейсы и классы типов Хаскелла — всё равно, что сравнивать макросы C и Лиспа. Инструменты радикально разной мощности.


Если убрать понты в корман, то окажется, что ничего особо революционного там нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 11:15
Оценка: -2 :)))
Здравствуйте, lomeo, Вы писали:

G>>Разве Немерле даёт что-то новое, чего не давал бы какой-нибудь другой язык? Он только комбинирует в себе кучу разных идей...


L>Вообще это вопрос личный, язык как женщина — мне не даёт, тебе не даёт, Владу даёт.


Значит с женищинами у вас та же история. Ну, оно и понятно .
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 11:15
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Просто Лисп — классика. Полувековая история компьютинга, всё-таки... ;о)


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

G>Нет-нет, Влад, это не ко мне. Я не тот Аноним 673, который шугается от Немерле... :о)


Может быть. Когда вас там сортировать то?

G>Мне Немерле любопытен, хотя и не настолько, что бы скачивать исходники компилятора из SVN или где они там хранятся, и билдить их вручную.


Вообще-то если на машине стоит Тортила, то нужно забить пукть к репозиторию (http://nemerle.org/svn/nemerle/trunk). Нажать ОК, и дождаться пока исходники скачаются. Далее выполрить BuildAndReg-1-phase.cmd и через две минуты на машине будет компилятор. С интеграцией, правад, сложнее. Но как правильно заметил
Автор: Mirrorer
Дата: 18.05.07
товарищь Mirrorer есть CTP-версия. Она отстает от компилятора максимум на 2 недели.

G>А та версия, что я скачал с их сайта (в виде инсталлятора), не может откомпилировать твой вариант Ack на Немерле...


Ну, уж это ты загибаешь. Я Акермана компилировал
Автор: VladD2
Дата: 29.01.06
более года назад.

В прочем, ссылку тебе дали. Так что обсуждать уже точно нечего.

G>Когда, кстати, немерлевцы обновят инсталлятор компилятора?


Скажу по сикрету, что теперь это делает товаридь Блудов. Он сделал единый инсталятор для компилятора и Интеграции со студией. CTP которых переодически выкладываются в соответствующем формуе.

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


Что у тебя там за косят вылез я не знаю. Акерман должен компилироваться даже компилятором трехлетней давности. Правда похоже, что за последнее время Немерле отстал в области компиляции акерманов. F# это делает лучше .

VD2>> Я все же справился с разворотом рекусрии на C#, так что думю, что он сейчас станет победятлом :


G>Боюсь, эта версия стала дятлом, а не победятлом... :о)) Она работает ещё медленнее (немного), чем оригинальная...


Что то не то говоришь. Возможно в дебаге компилируешь или запускаешь из под студии, а не отдельно или по Ctrl+F5. Или все зависит от процессора. У меня F#-ная версия показвает .29 сек, а Шарповская .20. Код почти идентичный, только у Шарповской версии размер стека 8. Может из-за выравнивания все дело происходит. Вообще — это конечно не тест, а идиотизм. Тут уже ветер за форточкой на результат влияет (выравнивания и т.п.).

G>Как мне известно, в этой функции нельзя обойтись одними итерациями, не сэмулировав при этом стек и "рекурсию для бедных"...


А ты код то внимтельно посмотрел? Развернута концевая рекурисия (заменена на цикл в соответствии с классикой жанра). Обычный рекурсивный вызов оставлен на месте.

VD2>> Короче крутость ленивых языков не подтвердилась.


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


Кто утверждал, что на том же акермане все будут порваны. А вот у меня C# лидер в желтой майке, только надо рекурсию ручками развернуть.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 11:15
Оценка:
Здравствуйте, geniepro, Вы писали:

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


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

G>Например, Stalin (компилер для Scheme) для той же функции Аккермана генерирует код в три раза более быстрый, чем GCC


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

Вот только Акерманы и Фибоначи — это вырожденные случае примитивщины по совместительству являющиеся юнит-тестами для компиляторов функциональных языков. Так что их результаты не показательны. Вот тут был неплохой тест — Альфа Блэнд. Как я помню единственный функциональный язык приблизившийся к С++ по скрости был Клин и то после полной аннотации типов всего что можно и после устранения всех причуд компилятора. Код при этом был хуже чем на С++. Лично у меня даже сомнений не осталось после этого.

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


Еще раз повторяю, что пдобные тесты начинают зависить от ветра за форточкой. Выравнивание чуть по другому и уже приемущество на треть. Тут как крата ляжет. Если же компилятор специально на алгоритм оптимизировлся, то и говорить не о чем. Вседа можно подобрать последовательность инструкций которые некоторый процессор исполнит идиально. Алгоритмически быстрее этого варианта думаю сделать невозможно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: Lloyd Россия  
Дата: 18.05.07 11:37
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уверен?


VD>Попробуй присвой переменную до цикла, измени ее значение в цикле, и используй его после цикла.


Как это сделать покажешь?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 11:44
Оценка: +1
Здравствуйте, <Аноним>, Вы писали:

А>Комбинация идей — будет "новым подходом к программированию" ?


Радикально новых идей нет лет 30. Все что придумано развитие тех времен. Не программировать же из-за этого на Симуле и Лиспе тех времен?

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


Если человеку не совсем плевать на сам проект, то выбирать нужно наиболее удобный язык (как в прочем и вообще инфраструктуру). Такой, чтобы максимально облегчал решение задачи.

VD>>Ответом в той же манере будет: А зачем изучать Лисп?

А>Он же написал, что он ужде шугается — т.е. он уже в какой-то мере изучил Лисп. А Немерл будет совсем новым.

Ну, а что шагать, то в пролое? Ежу понятно, что у Лиспа окромя макросов ничего нет. Ну, так теперь не только Лисп ими обладает.

Вот и выглядит странно это заявление. Больше похоже на откровенный снабизм или фанатизм. Из серии "Васик это для ламеров".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: ocaml срочно!!!
От: aka50 Россия  
Дата: 18.05.07 11:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, <Аноним>, Вы писали:


VD>Вот и выглядит странно это заявление. Больше похоже на откровенный снабизм или фанатизм. Из серии "Васик это для ламеров".


Всем известно лисп и асм впереди планеты всей
http://lukewelling.com/wp-content/uploads/2006/08/programmer%20hierarchy.pdf

ЗЫ: это шутка, памидорами не бросать
Re[8]: ocaml срочно!!!
От: Аноним  
Дата: 18.05.07 12:09
Оценка:
VD> Сгенерировать более быстрый код они не в силах приципиально. Тут могут быть ... или сравнение разных алгоритмов.

Если в разных языках естественно выглядят разные алгоритмы — почему это не записать в достоинства языку и чем это делает сравнение бессмысленным ?
Возражение странное.
Re[10]: ocaml срочно!!!
От: Mamut Швеция http://dmitriid.com
Дата: 18.05.07 12:09
Оценка: :)
A>>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?

G>Ну прям так сразу и все. Грамотные пацаны и девчонки шугаются в сторону Erlang!


Ну, дык, я зря, что ли, "Декларативное программирование" заспамливаю сообщениями об Эрланге?


dmitriid.comGitHubLinkedIn
Re[2]: ocaml + mediawiki
От: Mamut Швеция http://dmitriid.com
Дата: 18.05.07 12:18
Оценка:
А>Ещё вспомнил одно всем известное применение OCaml: в Википедии он формулки рисует.

Подробнее об этом здесь: http://meta.wikimedia.org/wiki/Enable_TeX

Вот, собственно, и сама программа: http://files.rsdn.ru/9088/math.zip (выковырял из свой вики )


dmitriid.comGitHubLinkedIn
Re[11]: ocaml срочно!!!
От: deniok Россия  
Дата: 18.05.07 12:32
Оценка: :))) :)
Здравствуйте, Mamut, Вы писали:

A>>>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


G>>Ну прям так сразу и все. Грамотные пацаны и девчонки шугаются в сторону Erlang!


M>Ну, дык, я зря, что ли, "Декларативное программирование" заспамливаю сообщениями об Эрланге?


Ты это, поосторожнее. А то кончите как Nemerle
Re[9]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 12:36
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Если в разных языках естественно выглядят разные алгоритмы — почему это не записать в достоинства языку и чем это делает сравнение бессмысленным ?


Записывай, но не надо сюда производительность прилетать.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 12:36
Оценка: -1 :))
Здравствуйте, Lloyd, Вы писали:

VD>>Попробуй присвой переменную до цикла, измени ее значение в цикле, и используй его после цикла.


L>Как это сделать покажешь?


Не, ну, это вы же ученые. Вы и думайте. Мое дело предложение сделать. (с)
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: ocaml срочно!!!
От: Аноним  
Дата: 18.05.07 12:53
Оценка:
А>>Комбинация идей — будет "новым подходом к программированию" ?

VD>Радикально новых идей нет лет 30. Все что придумано развитие тех времен. Не программировать же из-за этого на Симуле и Лиспе тех времен?


Заметь, geniepro говорит "изучать", а ты говоришь "программировать". Не факт что у него етсь такая возможность.

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


VD>Если человеку не совсем плевать на сам проект, то выбирать нужно наиболее удобный язык (как в прочем и вообще инфраструктуру). Такой, чтобы максимально облегчал решение задачи.


Если ты управляешь проектом и наьираешь под свой вкус программеров — то да. А есл наоборот.
Сам же говорил, кажется, что в серьезном проекте за самопальную макро-библиотеку в Лиспе ли, Немерле ли надо наказывать?
Вот и представь что ты ведёшь проект, выбрал для него, допустим Nemerle. А твой подчиненный выбрал для своей части общего проекта — Scala. Потому что eмy так удобнее и максимально облегает ему решение своей задачи.
Re[11]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 17:18
Оценка:
Здравствуйте, Mamut, Вы писали:

A>>> а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?


G>> Ну прям так сразу и все. Грамотные пацаны и девчонки шугаются в сторону Erlang!


M> Ну, дык, я зря, что ли, "Декларативное программирование" заспамливаю сообщениями об Эрланге?


Кстати, а что там за история была с запретом на использование Эрланга в Эриксоне, что привело к уходу из Эриксона почти всех создателей Эрланга?
Re[12]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 17:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD2> А ты код то внимтельно посмотрел? Развернута концевая рекурисия (заменена на цикл в соответствии с классикой жанра). Обычный рекурсивный вызов оставлен на месте.


VD2> Кто утверждал, что на том же акермане все будут порваны. А вот у меня C# лидер в желтой майке, только надо рекурсию ручками развернуть.


В-общем, ждём Трурля. Он меня когда-то убедил, что функцию Аккермана нельзя реализовать с хвостовой рекурсией или в итеративном виде без имитации рекурсии...

VD2> Вот только Акерманы и Фибоначи — это вырожденные случае примитивщины по совместительству являющиеся юнит-тестами для компиляторов функциональных языков.


Так я сразу оговорился, что пример искусственный. За уши можно любое опровержение чему угодно притянуть...
Re[15]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 17:21
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Вот и выглядит странно это заявление. Больше похоже на откровенный снабизм или фанатизм. Из серии "Васик это для ламеров".


Однако мы сильно отклонились от темы. Вряд ли наш фанатизм поможет Настасье с её дипломной работой...

Предлагаю такую тему для Анастасии:

Регулярно проводятся различные соревнования между программистами, в частности — ICFP, на которых разрешено использовать любые языки программирования. Вот, например, описание одного из финалов в презентации "Industrial Functional Programming", стр. 27 и далее.
Участие принимало более 800 команд со всего мира, было принято 39 решений, на следующих языках:
C/C++      7        Mercury      1    
Clean      1        ML           9
Dylan      1        Perl         2
Eiffel     1        Python       1
Haskell    6        Scheme       2
Java       6        Smalltalk    2

В результате первые четыре места заняли: (трассировщик лучей)

1) O’Caml
2) O’Caml
3) Haskell
4) Mercury

C/C++ и прочие императивные языки оказались в глубоком пролёте...

В следующих соревнованиях места распределились так: (программа компрессии HTML страниц)

1) Haskell
2) Dylan
3) O'Caml, C (видимо, часть программы на O'Caml, часть — на С)

В прошлогодних (ICFP-2006) соревнованиях первые места выглядели так: (вапще куча разных крутых задач)

1) Haskell
2) O'Caml
3) Haskell

Короче, вывод для диплома предлагаю такой:

Функциональные языки позволяют сэкономить кучу времени при создании алгоритмически сложных программ в условиях жёсткого дефицита времени и потратить это сэкономленное на кодировании и отладке программ время на поиск наиболее оптимальных алгоритмов — самых быстрых, самых качественных и т.д...
Re[16]: ocaml срочно!!!
От: anastassia  
Дата: 18.05.07 19:54
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Предлагаю такую тему для Анастасии:


G>Регулярно проводятся различные соревнования между программистами, в частности — ICFP, на которых разрешено использовать любые языки программирования.

G>Короче, вывод для диплома предлагаю такой:

G>Функциональные языки позволяют сэкономить кучу времени при создании алгоритмически сложных программ в условиях жёсткого дефицита времени и потратить это сэкономленное на кодировании и отладке программ время на поиск наиболее оптимальных алгоритмов — самых быстрых, самых качественных и т.д...


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

А еще вопросик, более старые версии окамла где поискать можно?годика так 2000-2002...
Re[17]: ocaml срочно!!!
От: palm mute  
Дата: 18.05.07 21:30
Оценка:
Здравствуйте, anastassia, Вы писали:

A>А еще вопросик, более старые версии окамла где поискать можно?годика так 2000-2002...

http://caml.inria.fr/pub/distrib/
Re[16]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.05.07 22:27
Оценка:
Здравствуйте, geniepro, Вы писали:
G>В результате первые четыре места заняли: (трассировщик лучей)

G>1) O’Caml

G>2) O’Caml
G>3) Haskell
G>4) Mercury

Ага. Игрушечные. А реальные рейтрэйсеры на чем написаны (в Маййе, 3D Max-а и т.п.)?

G>В следующих соревнованиях места распределились так: (программа компрессии HTML страниц)


G>1) Haskell

G>2) Dylan
G>3) O'Caml, C (видимо, часть программы на O'Caml, часть — на С)

А на чем написанв 7zip, rar?

G>В прошлогодних (ICFP-2006)


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


G>Функциональные языки позволяют сэкономить кучу времени при создании алгоритмически сложных программ в условиях жёсткого дефицита времени и потратить это сэкономленное на кодировании и отладке программ время на поиск наиболее оптимальных алгоритмов — самых быстрых, самых качественных и т.д...


Ага. Остается только хотя бы выучить один язык, чтобы аргументировано излагать свои мысли.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 18.05.07 23:55
Оценка: 1 (1) +7
Здравствуйте, VladD2, Вы писали:

VD2> А реальные рейтрэйсеры на чем написаны (в Маййе, 3D Max-а и т.п.)?

VD2> А на чем написанв 7zip, rar?

А за какое время были написаны все эти Майи, 3ДМаксы и 7Зипы с Винрарами?
Неужто за те же трое суток, что и на этих соревнованиях? 8-о

Вообще я тебя не понимаю — тут-то ты к чему придрался?

VD2> Пойми там принимают участие те, кто таким образом повышает свой авторитет в глазах знакомых, да и в собственных глазах. Лично я ни в жинь не пойду туда соревноваться. Мне просто это не интересно. Это спорт. У него свои правила, и свои цели.


У них свой спорт, у тебя — свой...
Хотя лично мне кажется гораздо более полезным участвовать в таких соревнованиях, чем на форуме обвинять оппонентов в фанатизме и демагогии, не замечая этого же за собой...
Неужели все, кто не немерлер — твои враги?
Re[18]: ocaml срочно!!!
От: anastassia  
Дата: 19.05.07 20:39
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>http://caml.inria.fr/pub/distrib/


изменения большие претерпел?
Re[19]: ocaml срочно!!!
От: palm mute  
Дата: 19.05.07 21:01
Оценка:
Здравствуйте, anastassia, Вы писали:

PM>>http://caml.inria.fr/pub/distrib/

A>изменения большие претерпел?
См. файлик:
http://caml.inria.fr/pub/distrib/ocaml-3.10/notes/Changes
Там подробная история изменений.
А зачем вам устаревшие версии, не пойму?
Re[20]: ocaml срочно!!!
От: anastassia  
Дата: 20.05.07 12:44
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>См. файлик:

PM>http://caml.inria.fr/pub/distrib/ocaml-3.10/notes/Changes
PM>Там подробная история изменений.
PM>А зачем вам устаревшие версии, не пойму?


Да у меня тут куча материалов по какой-то старой версии, разобраться надо с последней явно не совпадает....
Re[12]: ocaml срочно!!!
От: Аноним  
Дата: 21.05.07 13:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что у тебя там за косят вылез я не знаю. Акерман должен компилироваться даже компилятором трехлетней давности. Правда похоже, что за последнее время Немерле отстал в области компиляции акерманов. F# это делает лучше .


Да надо просто поудалять return'ы или добавить using imperative (или как оно там).
Re[13]: ocaml срочно!!!
От: anastassia  
Дата: 21.05.07 14:22
Оценка:
Уважаемые! Поделитесь, кто может, пузырьком на си++!
Re[14]: ocaml срочно!!!
От: palm mute  
Дата: 21.05.07 14:51
Оценка: +1
Здравствуйте, anastassia, Вы писали:

A>Уважаемые! Поделитесь, кто может, пузырьком на си++!

http://www.google.com/search?q=bubble+sort+c%2B%2B
Re[17]: ocaml срочно!!!
От: Mamut Швеция http://dmitriid.com
Дата: 21.05.07 14:54
Оценка:
G>>В прошлогодних (ICFP-2006)

VD>Пойми там принимают участие те, кто таким образом повышает свой авторитет в глазах знакомых, да и в собственных глазах. Лично я ни в жинь не пойду туда соревноваться. Мне просто это не интересно. Это спорт. У него свои правила, и свои цели.



Если бы я смог вот таким вот образом: http://users.livejournal.com/_adept_/24049.html поднять свой авторитет. Ыыы. Сразу бы туда ломанулся Но увы, не могу


dmitriid.comGitHubLinkedIn
Re[16]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 23:54
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Заметь, geniepro говорит "изучать", а ты говоришь "программировать". Не факт что у него етсь такая возможность.


Я его перепутал с одним анонимом который говорил, что он точно не будте смотреть в сторону ... Сори.

А>Если ты управляешь проектом и наьираешь под свой вкус программеров — то да. А есл наоборот.


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

А>Сам же говорил, кажется, что в серьезном проекте за самопальную макро-библиотеку в Лиспе ли, Немерле ли надо наказывать?


За несанкционированную.

А>Вот и представь что ты ведёшь проект, выбрал для него, допустим Nemerle. А твой подчиненный выбрал для своей части общего проекта — Scala. Потому что eмy так удобнее и максимально облегает ему решение своей задачи.


Такого конечно быть не может (не должно). Но если я скажем выбрал для проекта Яву, а подчиненный прийдет ко мне и аргументированно предложит заменить (или дополнить) ее на Скалу (можно C# на Nemerle), то я подумаю. В прочем, я понимаю и тех кто боится делать такие замены даже прекрасно понимая все приемущества этого выбора. Страх и риск дело такое...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 23:54
Оценка: -2
Здравствуйте, geniepro, Вы писали:

G>А за какое время были написаны все эти Майи, 3ДМаксы и 7Зипы с Винрарами?


За время позволившее выпустить продукт и полуить прибыль.

G>Неужто за те же трое суток, что и на этих соревнованиях? 8-о


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

G>У них свой спорт, у тебя — свой...

G>Хотя лично мне кажется гораздо более полезным участвовать в таких соревнованиях, чем на форуме обвинять оппонентов в фанатизме и демагогии, не замечая этого же за собой...
G>Неужели все, кто не немерлер — твои враги?

Ну, не скажи. Если почитав форум хотя бы один человек примет более осмысленное решение, то уже труд (флэйм ) не пропал даром. А вот будь этих конкурсных работ не 10, а 10000 ничего ровным счетом не изменится. И если их будет 0, то тоже не изменится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.05.07 23:54
Оценка:
Здравствуйте, anastassia, Вы писали:

A>Уважаемые! Поделитесь, кто может, пузырьком на си++!


Да мы и так на си++ чем только не ...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: ocaml срочно!!!
От: anastassia  
Дата: 23.05.07 13:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да мы и так на си++ чем только не ...




А я вот уверена, что вы должны знать про трассировщик лучей))) не объясните доступным русским языком, что это за зверь такой?
Re[16]: ocaml срочно!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.05.07 20:42
Оценка: 2 (1)
Здравствуйте, anastassia, Вы писали:

A>А я вот уверена, что вы должны знать про трассировщик лучей))) не объясните доступным русским языком, что это за зверь такой?


У тебя зеркальце есть? Надесь, есть.
Вот чтобы его в 3D сэмулировать. В прочем...
Трассировка лучей

Если на пальцах, то это такие методы просчета изображений с помощью которых можно получить изобразение с приломлениями, отражениями и другими "похжестями на настоящисти".
Эти алгоритмы потребляют очень много процессорного времени и стало быть на любом языке их писать нельзя (а только на тех, что обеспечивают высокую производительность). Кроме того алогоритмы не самые простые. Вот ОКамл как раз почти идиально подходит для этой задачи, так как порождает довольно быстрый код и при этом позволяет написать алгоритм максимально кратко.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: ocaml срочно!!!
От: Андрей Хропов Россия  
Дата: 23.05.07 21:21
Оценка:
Здравствуйте, anastassia, Вы писали:

A>А я вот уверена, что вы должны знать про трассировщик лучей))) не объясните доступным русским языком, что это за зверь такой?


Для начала можно почитать здесь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[17]: ocaml срочно!!!
От: Андрей Хропов Россия  
Дата: 23.05.07 21:50
Оценка: 2 (1) :))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, anastassia, Вы писали:


A>>А я вот уверена, что вы должны знать про трассировщик лучей))) не объясните доступным русским языком, что это за зверь такой?


VD>У тебя зеркальце есть? Надесь, есть.

VD>Вот чтобы его в 3D сэмулировать. В прочем...
VD>Трассировка лучей

VD>Если на пальцах, то это такие методы просчета изображений с помощью которых можно получить изобразение с приломлениями, отражениями и другими "похжестями на настоящисти".

VD>Эти алгоритмы потребляют очень много процессорного времени и стало быть на любом языке их писать нельзя (а только на тех, что обеспечивают высокую производительность). Кроме того алогоритмы не самые простые. Вот ОКамл как раз почти идиально подходит для этой задачи, так как порождает довольно быстрый код и при этом позволяет написать алгоритм максимально кратко.

ля тех кто еще не читал — Сравнение реализаций трассировки лучей на C++, Java, OCaml, SML, Common Lisp и Scheme здесь.

Ну а на K (наследнике J) занимает всего 7 строк :

// scalar ray-tracer
//  http://www.ffconsultancy.com/free/ray_tracer/comparison.html

/ unit vector
U:{x%_sqrt x _dot x}

/ ray_sphere
S:{[r;s]:[0>d:_sqr[s 1]+_sqr[b:v _dot r 1]-v _dot v:s[0]-*r;0i;0>t:b+e:_sqrt d;0i;0<u:b-e;u;t]}

/ intersect
I:{[r;h;o]:[~4:*o;:[~S[r;*o]<*h;h;h _f[r]/o 1];~h[0]>l:S[r]o;h;(l;U r[0]-o[0]-l*r 1)]}

/ ray_trace
T:{[r;o;d;z;l]:[0i=*h:I[r;z]o;0.;~0>g:h[1]_dot l;0.;0i=*I[(r[0]+(r[1]**h)+d*h 1;-l);z]o;-g;0.]}

/ inner loop: 0-15
N:{[n;o;i]0{x+T[(0 0 -4.;U(i+(y%4)-n%2),n);o;_sqrt 2^-42;0i,,3#0.]U -1 -3 2.}/+4_vs!16}

/ outer loop: nxn -> PGM
R:{[k;n]"P5\n",(5:n,n),"\n255\n",_ci _.5+15.9375*N[n*1.;C[k;0 -1 0.]1.]'+|@[n _vs!n*n;0;|:]}

/ create scene = sphere or (sphere;5-scenes)
C:{[k;c;r]:[k=1;(c;r);((c;r*3);(,(c;r)),C[k-1;;r%2]'+c+-3 3[2_vs 2 3 6 7]*r%_sqrt 12)]}

\t q:R[3]32
"temp.pgm"6:q
\"C:\\Program Files\\IrfanView\\i_view32.exe" temp.pgm


(отсюда)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[18]: ocaml срочно!!!
От: Дм.Григорьев  
Дата: 24.05.07 02:01
Оценка: +1 :))) :))) :))
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Ну а на K (наследнике J) занимает всего 7 строк :


АХ>
skipped


М-дааааа.... А если этот код зазиповать, результат будет ещё короче, причём практически без потери читабельности.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[19]: ocaml срочно!!!
От: deniok Россия  
Дата: 24.05.07 04:04
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Здравствуйте, Андрей Хропов, Вы писали:


Бедные наследники APL.

Страшно далеки они от народа.

(с) В.И.Ульянов-Ленин

Re[19]: ocaml срочно!!!
От: Трурль  
Дата: 24.05.07 08:53
Оценка: +1 :)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>М-дааааа.... А если этот код зазиповать, результат будет ещё короче, причём практически без потери читабельности.

Да и короче практически не будет.
Re[20]: ocaml срочно!!!
От: anastassia  
Дата: 25.05.07 15:31
Оценка: :))) :)
Спасибо БольШоЕ всем местным жителям))) не без вашей помощи диплом успешно защитила!
Поздравляю! :) [-]
От: Дм.Григорьев  
Дата: 25.05.07 22:16
Оценка: +3
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[17]: ocaml срочно!!!
От: Аноним  
Дата: 29.05.07 22:04
Оценка:
G>>В следующих соревнованиях места распределились так: (программа компрессии HTML страниц)

G>>1) Haskell

G>>2) Dylan
G>>3) O'Caml, C (видимо, часть программы на O'Caml, часть — на С)

VD>А на чем написанв 7zip, rar?


я пишу архиватор на хаскеле + c++. алгоритмы упаковки требуют максимальной скорости — они пишутся на c++ (хотя на 90% я просто беру чужие, из того же 7-zip к примеру :D). код, работающий с архивами, не столь критичен ко времени, и его я пишу на хаскеле. по моим оценкам, получается в три раза короче и соответственно разработка идёт в три раза быстрее. как результат, я уже сейчас по сумме функциоанльности обошёл 7-zip (понятно, что это моё имхо)
Re[18]: ocaml срочно!!!
От: geniepro http://geniepro.livejournal.com/
Дата: 30.05.07 15:07
Оценка: +1 :))
Здравствуйте, Аноним, Вы писали:

А>я пишу архиватор на хаскеле + c++. алгоритмы упаковки требуют максимальной скорости — они пишутся на c++ (хотя на 90% я просто беру чужие, из того же 7-zip к примеру :D). код, работающий с архивами, не столь критичен ко времени, и его я пишу на хаскеле. по моим оценкам, получается в три раза короче и соответственно разработка идёт в три раза быстрее. как результат, я уже сейчас по сумме функциоанльности обошёл 7-zip (понятно, что это моё имхо)


Булат? 8-о
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.