LINUX.ORG.RU

Ocaml язык вчерашнего дня ?


0

0

Можно ли изучать язык Ocaml с целью применять в реальной работе ?

Смысл вопроса - не является ли язык,скажем мягче, языком секодняшнего дня,не имеющий будущего.Например, появился F# c хорошей финансовой поддержкой.На каком-то форуме попадалось фраза,если не ошибаюсь, суть которой "... появились новые языки как Nemerle,которые лишены недостатков старых языков ..."

Развивается ли Ocaml? Насколько стабилен его компилятор или постоянно глючит ?


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

>В итоге вы просто газанули и ничего не ответили по вопросу.
Потому что вопрос задан в стиле «каким грибом был Ленин - мухомором или подберезовиком?»

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

> почему таки Common Lisp переплевывает все остальные языки и почему самый большой продукт на нем - emacs

Emacs никак не связан с Common Lisp. Из открытых проектов самый большой на Common Lisp это Maxima (или ACL2, по строкам кода не сравнивал).

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

> На правах не тролля. Напишите новость или статью, где вы рассказываете почему таки Common Lisp переплевывает все остальные языки

Тебе бы сначала хотя бы хоть какой-то ликбез по лиспу нужен, чтобы совсем не нести несусветную чушь, а так вообще тут можешь почитать http://lisper.ru/articles/common-lisp-technologies

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

> При чём тут grammar? Ты приплел Common Lisp к emacs-у, хотя между ними нет ничего общего.

gramar-nazi из-за groovy

На википедии написано

Written in    C and Emacs Lisp

Если вам очень важно, что не Common, то извиняйте

Тебе бы сначала хотя бы хоть какой-то ликбез по лиспу нужен, чтобы совсем не нести несусветную чушь, а так вообще тут можешь почитать http://lisper.ru/articles/common-lisp-technologies

Если вы внимательно читали, то таки поняли что НЕ ЗНАЮ НИЧЕГО о Lisp и попросил вкратце обьяснить зачем ради него сливать Scala, Groovy, Ruby

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

> Если вы внимательно читали, то таки поняли что НЕ ЗНАЮ НИЧЕГО о Lisp и попросил вкратце обьяснить зачем ради него сливать Scala, Groovy, Ruby

Ну хотя бы затем, что код на Лиспе работает раз в 20-100 быстрее, чем на перечисленных монстриках.

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

> Там тоже нет 100-кратной разницы :)

ну по потреблению памяти - «раз в 20» вполне походит, а по скорости - да, всего-лишь до в 14 раз быстрее

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

> а по скорости - да, всего-лишь до в 14 раз быстрее

Не, там в среднем около 5, наверное, выйдет, а медианное значение так вообще 3.

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

ну я про среднее и не писал, кстати если сравнивать с Intel C++ - то потребление памяти программами на лиспе просто неприличное получается

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

>> Ой, правда?

Правда :)

Было бы правдой, если бы анонимус сказал «на _некоторых_ перечисленных монстриках» :)

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

> ну я про среднее и не писал, кстати если сравнивать с Intel C++ - то потребление памяти программами на лиспе просто неприличное получается

Это так, никто не спорит - из-за жирного рантайма.

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

> Ещё вопросы есть?

Только один - зачем сливать Scala? Она по производительности не хуже Лиспа.

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

> Это так, никто не спорит - из-за жирного рантайма.

статистика по тестам говорит, что это не так - разброс от 16Мб до 276Мб

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

Кто нибудь вообще те тесты смотрел? Там код на Common Lisp якобы местами с оптимизирующими инструкциями, а на деле весь вывод забит сообщениями о том, что ничего не удалось оптимизировать, а так по всем тестам. Просто надо руки автору кода по обрывать и больше в результаты тех тестов не смотреть.

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

> Просто надо руки автору кода по обрывать и больше в результаты тех тестов не смотреть.

может лучше написать письмо со своим вариантом решения?

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

Groovy и Ruby таки работают медленно. Их нужно использовать когда это допустимо.

Но есть оговорка относительно Groovy. Он java-интероперабелен. Тоесть любой класс можно написать на Java, которые гоняет на скорости C++ и потребление памяти меньше почти с каждым апдейтом. В тоже время Groovy - это Java с вкусностями и экспериметнальными конструкциями. Тоесть почти любой код на Java - правильный groovy. Язык чтобы быстро писать и не заморачиваться если вы его не знаете полностью.

Со Scala ситуация другая, он по скорости работает почти идентично Java, также интероперабелен с Java и очень мощный синтаксически. В нем есть ФП, идеи с Erlang, несколько паттернов встроены в синтаксис. И это тоже не принудительно, если не надо, можно писать не функционально, а к примеру обьектно-ориентировано.

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

Есть функциональный язык (или среда, попрошу не придираться) Common Lisp, есть платформа Java (и ее друзья Scala, Groovy).

Могу ли я так же легко писать на Common Lisp, как я делаю на тех трех языках? Например могу ли я не пользоватья ФП, там где это не уместно, и пользоваться, где это удобно? Могу ли я легко парсить XML, пользоваться RMI, WebServices, многопоточностью, запускать приложения в sandbox (через программируемый диспетчер безопасности, которые охватывает любой ввод-вывод), доставлять их через броузер, просто через сеть с инкрементальным обновлением? Этим возможности не ограничиваются, я на Java пишу OpenGL графику. Разницы в FPS не заметил

Я почему спрашиваю. Я знают только что это узкоспециализированная вещь. Но вы, как люди знающие, просто высказались о Common Lisp, как о панацее, которую еще не догнали, ну и уж точно не перегнали. Вот я задаю вопрос, почему? Я ведь таки не знаю мощности этой платформы/языка/парадигмы. Месячного курса LISP в универе без лабораторных явно не хватает.

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

Погулите другие бенчмарки. Разница с Java не существенна. Но раговор мы вели о Lisp, и согласно вашему любимому бенчмарку

http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=...

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

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

> Есть функциональный язык Common Lisp

Common Lisp не функциональный язык

Например могу ли я не пользоватья ФП, там где это не уместно,

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



См. выше

Могу ли я легко парсить XML


Конечно

пользоваться RMI, WebServices


Отстой, REST рулит, это я не про CL, а про технологии :)

многопоточностью


Да

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


Плохо понял что это такое и зачем оно надо :(

доставлять их через броузер


Кого? Это вы про Java-апплеты? Лучше не стоит.


И это, лисп-срач он в соседней ветке (http://www.linux.org.ru/forum/development/4513948) :)

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

> Плохо понял что это такое и зачем оно надо :(

Очень просто. Хорошее приложение таки запускается в Sandbox, так как оно содержит минимальный конфигурационный файл, который указывает минимальные требования к работе приложения. Например «для работы надо слушать порт 2345 и читать (но не писать) в файл mydata.txt». Такой файл можно написать самому, более того такой файл можно задать по умолчанию для всех приложений. А еще более инными словами будь все приложения на Java, то антивирусные компании разорились бы. Эта модель безопасности охватывает почти все аспекты работы приложения, ему можно разрешить и запретить что угодно.

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

Кого? Это вы про Java-апплеты? Лучше не стоит.

Вернитесь из 90х. Сейчас все работает идеально. Но я имел ввиду Java Web Start.

http://download.java.net/javadesktop/laffy/Laffy.jnlp

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

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

Плохо понял что это такое и зачем оно надо :(

в PLT Scheme, кстати вроде есть

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

> Отстой, REST рулит, это я не про CL, а про технологии :)

У RMI своя ниша, это же только между Java приложениями и с очень большими плюшками. Вы гоняете туда-сюда классы и вообще любые Java обьекты. Ваша функция может вернуть экземпляр класса, но это будет по настоящему класс на сервере и методы будут RMI заглушками. Это не просто пересылка данных, как веб-сервисы. Это технология настоящих распределенных приложений в буквальном смысле слова.

А относительно web-serviсes, я знаю насколько оно избыточное. Писал сервер SOAP/WS c нуля на С++, когда сами сервисы на Python. Опять же, причин это делать нету, просто универ.

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

Могу ли я так же легко писать на Common Lisp, как я делаю на тех трех языках?

Да, но сначала тебе надо будет написать те три языка на Common Lisp.

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

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

Могу ли я легко парсить XML, пользоваться RMI, WebServices, многопоточностью

ХЗ, но наверное.

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

Смотря что ты под этим понимаешь. В принципе, CL позволяет организовать что-то вроде SafeTCL. С гребенями, но можно.

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

Сейчас все работает идеально.

Последний Java-апплет я видел году в 1998, так что, да, работает идеально (не может ошибаться то, чего практически нет).

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

Тролльте не здоровье, не в этом вопрос. Я просто доводы хотел услышать, не против Common Lisp, просто хотел узнать что в нем такого замечательного.

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

код=данные, а соответственно, охуенные макросы
в том числе т.н. «reader macros»(можно менять синтаксис)

компилятор - часть языка
разница между compile-time и run-time размыта

мощнейшая из существующих[в разных языках] подсистема объектно-ориентированного программированя - CLOS, метаобъектный протокол впридачу к ней

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

ну и куча всяких приятных штук по мелочи

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

>код=данные, а соответственно, охуенные макросы

в том числе т.н. «reader macros»(можно менять синтаксис)

метаобъектный протокол впридачу к ней

поподробнее

система обработки исключений без раскрутки стека - можно обрабатывать исключения «изнутри»

Это для чего?

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

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