Здравствуйте, anastassia, Вы писали:
A>Профессионалы! Выскажетесь!!! Кто с CAML знаком, чем плох, чем хорош, чем удобен, чем нет и т.д.
Я уже давал ссылку на мнение тов. Мински, к его списку претензий могу добавить ещё отсутствие continuations и недоступность компилятора из рантайма в native.
A> Как он вообще среди функциональных — не самый же отсталый?
Пожалуй, самый практичный. Компромисс между теоретической чистотой и требованиями суровой жизненной практики. При этом он более-менее общего назначения, в отличии от других практических узкоспециализированных языков, таких как Erlang.
Я его использовал неоднократно в реальных проектах, но сейчас по ряду причин перешел на Лисп — мне возможности метапрограммирования всё же важнее, чем типизация по Хиндли-Милнеру.
Re[8]: ocaml срочно!!!
От:
Аноним
Дата:
17.05.07 10:24
Оценка:
Здравствуйте, Gaperton, Вы писали:
G>2) Противопоставления никакого нет и быть не может — OCaml полноценный императивный ОО язык. ("Чистый" функциональный язык, о котором можно сказать, что он "распространен" — вообще один. Это Хаскель.)
Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.
Здравствуйте, anastassia, Вы писали:
A>Да вот нельзя другого...Как-то все на этом кэмле завязалось )) На окэмл я уже поглядела)))по-моему мы друг другу не понравились Но это не страшно, мне всего-то один раз надо рассказать какой это прекрасный язык и что ну никак без него нельзя)))
Нельзя рассказывать про ML, не рассказав, зачем он создавался. А создавал его тов. Робин Милнер, ныне нач. отдела в Microsoft Research, для одной конкретной цели — создание систем автоматического доказательства теорем. И наивысшим расцветом этого дела стала система HOL, с которой вам и следует непременно познакомиться. То, что язык оказался удачным, и его начали применять далеко за пределами первоначального предназначения — это чистая случайность.
Кстати, ещё об одном важном применении ML — следующий официальный стандарт языка EcmaScript (известного как JavaScript) будет содержать строгую формальную спецификацию в виде программы на Standard ML с поддержкой continuations. Как формальный язык спецификаций ML, пожалуй, действительно лучший: у ленивых, "истинных" языков есть очень серьёзные проблемы с оценкой времени выполнения и с доказательством конечности алгоритма, а для строгих языков эти задачи пусть и тяжко, но решаются.
A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?
Не знаю. Я в сторону Nemerle не шуганусь ни за какие коврижки, а Хаскелль применяю, и весьма активно, но только для весьма узкоспециализированных задач. Я скорее в сторону Лиспа постоянно от OCaml шугаюсь.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Gaperton, Вы писали:
G>>2) Противопоставления никакого нет и быть не может — OCaml полноценный императивный ОО язык. ("Чистый" функциональный язык, о котором можно сказать, что он "распространен" — вообще один. Это Хаскель.)
А> Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.
Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.
Re[10]: ocaml срочно!!!
От:
Аноним
Дата:
17.05.07 11:35
Оценка:
Здравствуйте, Gaperton, Вы писали:
G>Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.
Так ведь беда C++ именно в том, что это — два абсолютно разных языка, никак друг с другом не связанных. Одним из другого не воспользуешься. В рантайме C++ не поисполняешь выражений языка темплейтов, при раскрутке темплейтов sscanf(...) не дёрнешь.
Здравствуйте, Аноним, Вы писали:
G>>Да, действительно. Надо обязательно заявить дипломной комиссии, что "С++" и "язык темплейтов С++" — это два разных языка, и противопоставить их друг другу. Ну еще бы — один императивный, а другой чисто функциональный.
А> Так ведь беда C++ именно в том, что это — два абсолютно разных языка, никак друг с другом не связанных. Одним из другого не воспользуешься. В рантайме C++ не поисполняешь выражений языка темплейтов, при раскрутке темплейтов sscanf(...) не дёрнешь.
Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.
Re[12]: ocaml срочно!!!
От:
Аноним
Дата:
17.05.07 12:19
Оценка:
Здравствуйте, Gaperton, Вы писали:
G>Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.
А что в вышеизложенном не есть правда? С чем из этого умная и грамотная комиссия может не согласиться?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Gaperton, Вы писали:
G>>Я бы предложил прекратить студентке мозги поласкать. Чего доброго — начитается, и действительно скажет что-нибудь подобное комиссии.
А>А что в вышеизложенном не есть правда? С чем из этого умная и грамотная комиссия может не согласиться?
1) Не стоит говорить с комиссией о тех вещах, которые она, комиссия, знает. Порвут как тузик грелку на ровном месте. Лучше концентрироваться на узкоспециальных.
2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++. Поэтому глупо их противопоставлять. Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти.
Re[14]: ocaml срочно!!!
От:
Аноним
Дата:
17.05.07 13:16
Оценка:
Здравствуйте, Gaperton, Вы писали:
G>2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++.
Чушь какая. Это тьюринг-полный язык, пусть и узкоспециализированный. Что с того, что в языке нет ввода/вывода? Он от этого менее языком не становится. Синтаксис есть, семантика есть, любой алгоритм в рамках этой семантики выразить можно — значит, сугубо по определению — это есть язык.
G> Поэтому глупо их противопоставлять.
Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык. И GNU autotools — конечно же тоже часть языка C++, как же без этого.
G> Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти.
Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.
Здравствуйте, anastassia, Вы писали:
A>Да вот нельзя другого...Как-то все на этом кэмле завязалось )) На окэмл я уже поглядела)))по-моему мы друг другу не понравились Но это не страшно, мне всего-то один раз надо рассказать какой это прекрасный язык и что ну никак без него нельзя))) Что от metalanguage-то знаю, как раз весь диплом об этом, но пример надо именно на кэмле и на си(одну и ту же сортировку), вроде как посмотрите-сравните, как все красиво!
A>а почему, собственно, все так шугаются от него в сторону Nemerle или Хаскеля?
Ну прям так сразу и все. Грамотные пацаны и девчонки шугаются в сторону Erlang!
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Gaperton, Вы писали:
G>>2) Умная комиссия укажет тебе на то, что "язык темплейтов С++" языком программирования не является — это одна из техник программирования на стандартном С++.
А> Чушь какая. Это тьюринг-полный язык, пусть и узкоспециализированный. Что с того, что в языке нет ввода/вывода? Он от этого менее языком не становится. Синтаксис есть, семантика есть, любой алгоритм в рамках этой семантики выразить можно — значит, сугубо по определению — это есть язык.
Возражения комиссии будут вполне обоснованы, потому как ты при всем желании не сможешь предъявить комиссии описание и стандарт "языка темплейтов С++" (не у него ни своего синтаксиса, ни семантики). Это не язык программирования, а одна из техник применения фрагментов языка С++. Дальнейшие твои упорствования комиссия может истрактовать, как непонимание разницы между языком, его синтакситом и семантикой, и техникой программирования на этом языке. Тут уже один шажок — (и пара словечек вроде "чушь") и будут поставлены под сомнения результаты всей твоей работы. Один хрен — комиссия в ней ничего не понимает. Не все же соглашаться.
G>> Поэтому глупо их противопоставлять.
А> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык.
Если команды препроцессора описаны в стандарте С++ — то это один язык. С++. Если нет — то нет.
А>И GNU autotools — конечно же тоже часть языка C++, как же без этого.
Ну, это уже не знаю. Что за autotools такой. Но вряд ли это часть С++.
G>> Как именно комиссия разовьет эту мысль дальше — думать не хочется. Тут можно с фантазией подойти. А> Если они не дураки, то прекрасно поймут, о чём тут речь идёт. Не дураки ведь пользуются только строго формальными определениями.
"
— Что такое экзамен?
— Это разговор двух умных людей.
— А если один из них дурак?
— Тогда второй не получит зачет.
"
Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++. Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++. Если же экзаменуемый будет настаивать на "языке темплейтов" в данном противопоставлении, комиссия, я думаю, с полным правом может усомниться в его компетентности и даже вменяемости. Надо уметь отвечать на заданный вопрос, а не на какой-нибудь другой.
Здравствуйте, Gaperton, Вы писали:
G>Возражения комиссии будут вполне обоснованы, потому как ты при всем желании не сможешь предъявить комиссии описание и стандарт "языка темплейтов С++" (не у него ни своего синтаксиса, ни семантики).
Есть. То, что это часть описания стандарта C++ — ничего не меняет.
G> Это не язык программирования, а одна из техник применения фрагментов языка С++.
Приплыли, язык уже назвали "одной из техник".
G> Дальнейшие твои упорствования комиссия может истрактовать, как непонимание разницы между языком, его синтакситом и семантикой, и техникой программирования на этом языке.
Сдаётся мне, что у вас очень серьёзные пробелы в образовании. Семантика есть — значит это язык.
G> Тут уже один шажок — (и пара словечек вроде "чушь") и будут поставлены под сомнения результаты всей твоей работы. Один хрен — комиссия в ней ничего не понимает. Не все же соглашаться.
А>> Ага, ага, а ещё C++ и C-препроцессор — это тоже всё один язык. G>Если команды препроцессора описаны в стандарте С++ — то это один язык. С++. Если нет — то нет.
Скажите, вы, случайно, не гуманитарий? Уж больно у вас гуманитарские представления.
В формальном определении понятия "язык программирования" нет ни слова о том, куда должны быть подшиты страницы с описанием этого самого языка, чтобы он считался "самостоятельным" языком. Если можно выделить замкнутую семантику — то она и будет самостоятельным языком, чисто формально, а про всё остальное пусть волнуются гуманитарии, и желательно — где либо подальше от программирования.
G>Это во первых. А во вторых — если экзаменуемый не дурак, то он прекрасно поймет, что имеют в виду, когда просят противопоставить функциональный язык императивному на примере сравнения с С++.
А я вот — не пойму. Я что, дурак?
G> Уж разумеется, речь идет совсем не о "языке темплейтов С++" как примере функционального языка для сравнения с С++.
"Разумеется" — это только для гуманитариев. Я же — computer scientist, я математик, и мнение гуманитариев мне до лампочки.
G> Если же экзаменуемый будет настаивать на "языке темплейтов" в данном противопоставлении, комиссия, я думаю, с полным правом может усомниться в его компетентности и даже вменяемости. Надо уметь отвечать на заданный вопрос, а не на какой-нибудь другой.
Вы, как гуманитарий, увидели какой-то скрытый от всех прочих людей смысл в этом вопросе. Поздравляю.
Здравствуйте, 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, <Аноним>, Вы писали:
А> Не знаю. Я в сторону Nemerle не шуганусь ни за какие коврижки, а Хаскелль применяю, и весьма активно, но только для весьма узкоспециализированных задач.
А можно эту мысль развить? Ну, обоснования там привести и т.п.
Особенно это интересно в свете:
А>Я скорее в сторону Лиспа постоянно от OCaml шугаюсь.
Потому как Nemerle и есть ОКамл с С-подобным синтаксисом в котром доведен до ума ООП и прикручены Лисповские макросы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, <Аноним>, Вы писали:
А> Зря вы так, про Хаскелль... Не один он. Например, есть чистый функциональный распространённый язык — язык темплейтов в C++. Есть чистый функциональный распространённый язык — XSLT.
XSLT сомнительно. Там циклы, переменные и даже расширения (стандартом описанные) скриптовые.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, <Аноним>, Вы писали:
А>А что в вышеизложенном не есть правда? С чем из этого умная и грамотная комиссия может не согласиться?
Проблема в том, что она не сможет объяснить сказанное. Во-первых, для этого знать нужно не мало. А во вторых это все должны быть способны понять преподователи. А они скорее всего это все не поймут. Вон поглядите на выступления оных на наших форумах. Они ООП то с рудом понимают.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.