OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 16:05
Оценка:
Может ли кто-нибудь подсказать, что выбрать для реализации библиотеки лексического/синтаксического анализа ?
Важна скорость и удобство.Собственно интересует пока только прототипирование,но если скорость будет приличной можно и остановиться на выборе,по сему важны привязки к C(++) .

Причина выбора этих языков — изучение ФЯ .
Об OCaml слышал — хорошая скорость, жуткий синтаксис.
О LISP слышал много чего хорошего,причём использовать/реализовать можно любую парадигму программирования.Но вот о скорости не нашёл ни чего.Скобки и префиксную запись не считаю проблемой.
Re: OCaml или LISP ?
От: Qbit86 Россия
Дата: 15.02.09 16:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может ли кто-нибудь подсказать, что выбрать для реализации библиотеки лексического/синтаксического анализа ?

А>OCaml или LISP ?

Попробуй F# (OCaml для .NET). Можно программировать как в режиме совместимости с OCaml'ом, так и в более удобном синтаксисе (опция #light). Вместе с компилятором и интерпретатором поставляются утилиты FsLex и FsYacc — генераторы лексических и синтаксических анализаторов.
Глаза у меня добрые, но рубашка — смирительная!
Re: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 16:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может ли кто-нибудь подсказать, что выбрать для реализации библиотеки лексического/синтаксического анализа ?

Тут вопрос личного предпочтения. Семейства ml и lisp довольно сильно отличаются — так что лучше потратить вечер-другой и бегло ознакомиться с обоими.

А>важны привязки к C(++).

Тут, я полагаю, возможности будут примерно равны. Сам имел дело со связкой chicken scheme и C — ничего сложного.

А>Причина выбора этих языков — изучение ФЯ .

А>Об OCaml слышал — хорошая скорость, жуткий синтаксис.
На синтетических тестах ocaml неплох — да. Синтаксис — вполне себе нормальный.

А>О LISP слышал много чего хорошего,причём использовать/реализовать можно любую парадигму программирования.Но вот о скорости не нашёл ни чего.Скобки и префиксную запись не считаю проблемой.

Если цель — ФП, то лучше scheme. Common lisp отличается повышенной императивностью.
По перфомансу cl (например, sbcl) и ocaml близки, а вот scheme серьезно отстает (впрочем, нигде не фигурируют бенчмарки коммерческого компилятора chez — но не думаю, что он кардинально изменит ситуацию).

Всяческую синтетику можно поглядеть здесь: http://shootout.alioth.debian.org/.
Re[2]: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 16:49
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Попробуй F# (OCaml для .NET). Можно программировать как в режиме совместимости с OCaml'ом, так и в более удобном синтаксисе (опция #light). Вместе с компилятором и интерпретатором поставляются утилиты FsLex и FsYacc — генераторы лексических и синтаксических анализаторов.


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

С LISP не понятно как у него со скоростью и с pattern matching'ом , и как бы простота синтаксиса не вышла боком .
Ну и конкретно какой компилятор получше не ясно.Можно и так спросить — "Какова скорость/потребление памяти последних CLISP и SBCL?".

Можно конечно всё попробовать,просто если что-то уж сильно медленно или как-то по другому криво ,то лучше заранее отвергнуть.
Re[2]: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 16:55
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Если цель — ФП, то лучше scheme. Common lisp отличается повышенной императивностью.


А как у Common lisp с pattern matching ?
Re: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 17:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может ли кто-нибудь подсказать, что выбрать для реализации библиотеки лексического/синтаксического анализа ?


ANTLR уже есть. Parsec уже есть. Даже yacc — и тот тридцать лет как есть. Всё есть. Не надо делать N+1-ю библиотеку, пожалуйста.

А>Причина выбора этих языков — изучение ФЯ .


IMHO, не та задача, чтоб ФЯ изучать.

А>Об OCaml слышал — хорошая скорость, жуткий синтаксис.


Зря. Хороший синтаксис, уж всяко лучше чем фигурные скобки.

А>О LISP слышал много чего хорошего,причём использовать/реализовать можно любую парадигму программирования.Но вот о скорости не нашёл ни чего.Скобки и префиксную запись не считаю проблемой.


SBCL довольно шустр.
Re[3]: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 17:18
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А как у Common lisp с pattern matching ?

Хз, я cl особо не знаю. В стандарте матчинга, насколько я помню, нет, но вроде есть отдельные либы (в scheme ровным счетом такая же ситуация) — ибо матчинг вполне посильная задача для макросов.
Re[2]: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 17:18
Оценка:
Здравствуйте, Аноним, Вы писали:
А> ANTLR уже есть. Parsec уже есть. Даже yacc — и тот тридцать лет как есть. Всё есть. Не надо делать N+1-ю библиотеку, пожалуйста.

Интересует теория синтаксического анализа,автоматы и т.д. и т.п. .Просто интересует.Посему не интересуют,сторонние решения.Хотя если что то остановил бы выбор на Coco/R(хвалят).

А>>Причина выбора этих языков — изучение ФЯ .

А> IMHO, не та задача, чтоб ФЯ изучать.
Хочу убить двух зайцев.А какую задачку посоветуете вы?
Помоему "сопоставление с образцом" это самое оно,хотя наверное частично и ликвидирует задачку создания собственных автоматов.
Re[2]: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 17:24
Оценка:
Здравствуйте, Аноним, Вы писали:
А> ANTLR уже есть. Parsec уже есть. Даже yacc — и тот тридцать лет как есть. Всё есть. Не надо делать N+1-ю библиотеку, пожалуйста.

Надо-надо. Сделайте, пожалуйста.
Re[3]: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 17:25
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Спасибо,но интересуют только реализации в нативный код

Кстати, можете и haskell попробовать.
Re[4]: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 17:33
Оценка: +1
Здравствуйте, Mr.Cat, Вы писали:

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

А>>Спасибо,но интересуют только реализации в нативный код

MC>Кстати, можете и haskell попробовать.


Синтаксически мне он понравился после беглого прочтения статьи на этом сайте,но насколько я понял со скоростью у него не очень,плюс подводные камни ленивости,монады — ваще чёто не понятное.Думаю для начала это будет слишком круто.
Re[5]: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 17:56
Оценка:
Здравствуйте, Аноним, Вы писали:

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

Хз. На синтетике вполне неплох.
http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=ghc&lang2=ocaml&box=1

А>,плюс подводные камни ленивости,монады — ваще чёто не понятное.Думаю для начала это будет слишком круто.

При желании на практическом уровне это все можно довольно быстро освоить.
Re: OCaml или LISP ?
От: thesz Россия http://thesz.livejournal.com
Дата: 15.02.09 18:36
Оценка: +2 :))) :))) :))) :)))
А>Может ли кто-нибудь подсказать, что выбрать для реализации библиотеки лексического/синтаксического анализа ?
А>Важна скорость и удобство.Собственно интересует пока только прототипирование,но если скорость будет приличной можно и остановиться на выборе,по сему важны привязки к C(++) .

А>Причина выбора этих языков — изучение ФЯ .

А>Об OCaml слышал — хорошая скорость, жуткий синтаксис.
А>О LISP слышал много чего хорошего,причём использовать/реализовать можно любую парадигму программирования.Но вот о скорости не нашёл ни чего.Скобки и префиксную запись не считаю проблемой.

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

Итак, здесь два требования: выразительность (легкость создания библиотеки) и REPL.

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

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

Иными словами, OCaml получается лучше.

Ещё лучше, конечно, Хаскель, но я и так уже прослыл его рекламным агентом. Поэтому от описания совершенного изящного синтаксиса Хаскеля, его выразительнейшей системы типов с типами классов и возможностью более точно выражать инварианты с помощью GADT, великолепного REPL, удивительно эффективного и мощного компилятора, а также уникального в своём роде ленивого порядка вычислений, что заставит тебя сильнее всего почувствовать всю мощь функционального программирования, я воздержусь.

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

Да я вообще о них не буду упоминать.

Вот.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: OCaml или LISP ?
От: Qbit86 Россия
Дата: 15.02.09 18:45
Оценка:
Здравствуйте, thesz, Вы писали:

T>Поэтому от описания совершенного изящного синтаксиса Хаскеля... я воздержусь.


«Язык Haskell известен благодаря синтаксису, в сравнении с которым пёрл выглядит псевдокодом...» © Всё-всё, ухожу... :)
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: OCaml или LISP ?
От: thesz Россия http://thesz.livejournal.com
Дата: 15.02.09 19:08
Оценка:
T>>Поэтому от описания совершенного изящного синтаксиса Хаскеля... я воздержусь.
Q>«Язык Haskell известен благодаря синтаксису, в сравнении с которым пёрл выглядит псевдокодом...» © Всё-всё, ухожу... 

На фотографии под штангой — я. Ну, чтобы ты знал, если что.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[5]: OCaml или LISP ?
От: thesz Россия http://thesz.livejournal.com
Дата: 15.02.09 19:23
Оценка:
MC>>Кстати, можете и haskell попробовать.

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


How OCaml can be improved, a less inflamatory version of "Why OCaml sucks".

Наиболее интересное:

The design patterns of Brian Hurt circa 2008 are radically different than the design patterns of Brian Hurt circa 2003. For example, were I to redo extlib now, it’s be purely applicative, heavily functorized, lots of monads, and a fair bit of lazy evaluation, as opposed to the code I wrote in 2003.


Brian Hurt — это автор, опытный программист на ОКамле.

Переводим с расшифровкой: чем опытней программист на Камле, тем ближе его код к коду программиста на Хаскеле. Даже неопытного, выучившего только монады.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[4]: OCaml или LISP ?
От: Qbit86 Россия
Дата: 15.02.09 19:24
Оценка: :))) :))
Здравствуйте, thesz, Вы писали:

T>На фотографии под штангой — я. Ну, чтобы ты знал, если что. ;)


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

Кроме того, в статье перечислены чуть менее чем все существующие в мире программисты на Хаскеле, так что требуемое можно было умозаключить простым исключением.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: OCaml или LISP ?
От: Аноним  
Дата: 15.02.09 19:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>> ANTLR уже есть. Parsec уже есть. Даже yacc — и тот тридцать лет как есть. Всё есть. Не надо делать N+1-ю библиотеку, пожалуйста.


А>Интересует теория синтаксического анализа,автоматы и т.д. и т.п. .Просто интересует.


Если автоматы — то это или внешний генератор, или метапрограммирование (то есть, Лисп). Если PEGи или recursive descent — тогда и функциональщина сгодится. Сейчас в моде Packrat, а он вообще по природе своей сугубо императивен.

А>>>Причина выбора этих языков — изучение ФЯ .

А>> IMHO, не та задача, чтоб ФЯ изучать.
А>Хочу убить двух зайцев.А какую задачку посоветуете вы?

Компилятор какого либо языка написать, например.

А>Помоему "сопоставление с образцом" это самое оно,хотя наверное частично и ликвидирует задачку создания собственных автоматов.


Не, pattern matching этому делу нерелевантен.
Re[5]: OCaml или LISP ?
От: Mr.Cat  
Дата: 15.02.09 19:40
Оценка:
Здравствуйте, Qbit86, Вы писали:
Q>Кроме того, в статье перечислены чуть менее чем все существующие в мире программисты на Хаскеле, так что требуемое можно было умозаключить простым исключением.

Тогда на фото сверху, видимо, Simon Peyton Jones.
Re[5]: OCaml или LISP ?
От: thesz Россия http://thesz.livejournal.com
Дата: 15.02.09 19:42
Оценка:
T>>На фотографии под штангой — я. Ну, чтобы ты знал, если что.
Q>В этом никто и не сомневался, Сергей, потому что ты настолько часто упоминал свою штангу в аргументации, что решительно каждый узнает её в лицо.

Сколько раз я её упоминал?

Здесь, на RSDN. И где угодно ещё.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.