Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Беседа о скриптовых и декларативных языках, Lisp (CL), Haskell, Erlang, *ML (OCaml, F#), Ruby, Python 
V
    Опции темы
svg
Дата 14.5.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: нет
Всего: 18



Насколько я сумел заметить, обсуждение "новых",  модных в текущем квартале,
скриптовых языков программирования всегда сводится к позиционированию языка между
LISP и языками со строгой типизацией в стиле Хиндли-Милнера (Haskell, *ML).

Истинно новым всегда оказывается только синтаксис, а описание новых свойств
гордо повествует, что вот это наконец-то делается "почти как в LISP", а вот это
"почти как в Haskell".

Когда меня единожды забодало это "почти" -
почти сборка мусора, почти лексические замыкания, почти мета-объектный протокол -
я месяц выбирал между двумя языками( CommonLisp и OCaml), которые делают все не почти, 
а так как нужно, выбрал и с тех пор не загружаюсь.
 
PM MAIL   Вверх
Void
Дата 14.5.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



svg, мне самому очень нравятся MLоиды, но я весьма удивлен, что OCaml попал в число двух языков, работающих «как надо», особенно если второй — Common Lisp.
Язык сам по себе хорош, но:
— Скудный выбор библиотек. Caml Humps более чем наполовину состоит из разработок в альфа-  и бета-стадии, причем многие из них оставлены авторами несколько лет назад.
— Не очень прозрачный и слабо документированный FFI.
— Метаинформация отсутствует в принципе.
— CamlP4 работает исключительно на уровне синтаксиса.
Почти уверен, что ваш выбор пал на CL и не удивлюсь, если по одной из этих причин. (Сам, увы, знаком с CL только на уровне «читаю по слогам со словарем».)
В общем, для себя я решил, что OCaml стоит использовать для compiler construction, символьных вычислений и прототипирования алгоритмов. Для всего остального даже недо-OCaml от MS F# практичнее.

Кстати, почему при выборе не рассматривался Haskell? Ленивость?

Цитата(svg @  14.5.2006,  19:36 Найти цитируемый пост)
почти сборка мусора, почти лексические замыкания, почти мета-объектный протокол

Все это появилось в Лиспе. Но я бы не стал утверждать, что по сей день является исключительно прерогативой декларативных языков.
Сборка мусора? Да, в скриптовых языках предпочитают делать ref-counting, а настоящий GC лишь рвет циклы. Но насколько критичны эти детали реализации в их use-cases?
Замыкания сегодня реализуют все, кому не лень (если кому лень, никто их насильно из каменного века не вытаскивает). Python и Ruby, по крайней мере, их поддерживают.
Что касается рефлексии, тут да, с Лиспом трудно кому-либо тягаться. Но все-таки она присутствует в современных динамических языках.

(offtop: вы на RSDN не бываете? Что-то мне ваш стиль показался знакомым…) 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
svg
Дата 14.5.2006, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: нет
Всего: 18



Цитата(Void @  14.5.2006,  19:58 Найти цитируемый пост)
svg, мне самому очень нравятся MLоиды, но я весьма удивлен, что OCaml попал в число двух языков, работающих «как надо», особенно если второй — Common Lisp.


Меня очень привлекала производительность OCaml при уровне абстракции языка сопоставимой с Haskell.
Очень впечатлил код MLDonkey - красивая работа,
компактный код, нетривиальная программа.

Выбрал Common Lisp я чисто из недостатка времени, прикинув, что в продуктив с CL я выйду на полгода раньше,
чем с OCaml, тк дабы успеть сделать проект в срок мне нужен был генератор CRUD в стиле RoR, а, имея макросы
и уникальную рефлексию MOP данную задачу я мог решить тривиально. 

С библиотеками в CL такая же чехарда -  почти все, что мне понадобилось, все равно пришлось дописывать/переделывать.


Цитата(Void @  14.5.2006,  19:58 Найти цитируемый пост)
Сборка мусора? Да, в скриптовых языках предпочитают делать ref-counting, а настоящий GC лишь рвет циклы. Но насколько критичны эти детали реализации в их use-cases?


Меня доводило, более чем производительность, что сборка мусора на стороне FFI в Python/Perl отдавалась
на откуп программисту, те ручками. 
Постоянно сталкивался с трудноисправляемыми ошибками из-за этого, тк машина языка подразумевала одно поведение, а
кодер интерфейса какое-то иное.

Цитата(Void @  14.5.2006,  19:58 Найти цитируемый пост)
Замыкания сегодня реализуют все, кому не лень (если кому лень, никто их насильно из каменного века не вытаскивает). Python и Ruby, по крайней мере, их поддерживают.


Ruby - да, автор языка - известный Lisp-программист, ему было бы стыдно сделать иначе.
Python - с ограничениями/оговорками, довольно горбатое определение областей видимости. Но это следствие того,
что изначально Python проектировался простым. Нежданная популярность требует теперь делать его сложным.
В результате прикручивают к мотоциклу "Хонда" ковш эксковатора и лопату грейдера.

Цитата(Void @  14.5.2006,  19:58 Найти цитируемый пост)
Что касается рефлексии, тут да, с Лиспом трудно кому-либо тягаться. Но все-таки она присутствует в современных динамических языках.


Я тоже так думал, пока мне не понадобилось метапрограммирование в Python. На бумаге оно действительно есть.
Реализация - лучше бы не вводили народ в заблуждение, работает только для простых случаев, для которых и нет
надобности такими извращениями заниматься.

 
Цитата
Кстати, почему при выборе не рассматривался Haskell? Ленивость?


Характеристики - область применения на 70% состоит из soft-realtime приложений. 

Это сообщение отредактировал(а) svg - 14.5.2006, 22:15
PM MAIL   Вверх
Void
Дата 14.5.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



Цитата(svg @  15.5.2006,  00:12 Найти цитируемый пост)
Меня очень привлекала производительность OCaml при уровне абстракции языка сопоставимой с Haskell.

Этого у OCaml не отнимешь. При том, что резервы оптимизации далеко не исчерпаны. Единственное, что нельзя обойти в рамках существующей реализации — тегированное представление данных, на целочисленную арифметику это сильно влияет.

Удручает то, что в последние годы INRIA не внесла ни в язык, ни в реализацию ничего существенно нового. Похвально стремление разработчиков сделать язык стабильным и пригодным для промышленного применения. С другой стороны, многие интересные проекты, такие как GCaml, JoCaml, заглохли.

Цитата(svg @  15.5.2006,  00:12 Найти цитируемый пост)
Меня доводило, более чем производительность, что сборка мусора на стороне FFI в Python/Perl отдавалась
на откуп программисту, те ручками. 

Boost.Python пытается это дело до некоторой степени автоматизировать.
С замечаниями в целом согласен.

Цитата(svg @  15.5.2006,  00:12 Найти цитируемый пост)
Характеристики - область применения на 70% состоит из soft-realtime приложений. 

Erlang не рассматривали? Впрочем, заточенность под realtime здесь скорее всего единственное его преимущество перед CL.

Добавлено @ 22:38 
P.S. Господа рубисты, прошу прощения за перевод дискуссии на другие рельсы. Если хотите, можно попросить модераторов разделить тему. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
svg
Дата 15.5.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2005

Репутация: нет
Всего: 18



Цитата(Void @  14.5.2006,  22:37 Найти цитируемый пост)
Erlang не рассматривали? Впрочем, заточенность под realtime здесь скорее всего единственное его преимущество перед CL.


Предыдущая версия системы как раз была на Erlang, работала 4 года.
Работала бы и дальше, но компания Cisco внезапно упокоила поддержку
собственного протокола Tacacs в собственных продуктах.

Времени на реализацию Radius-сервера на Erlang не было, пришлось искать альтернативы.
Сначала пробовал прикрутить FreeSide, но, помаявшись
с переписыванием его Perl-скриптов, плюнул и переписал его целиком на CommonLisp,
временные затраты получились те же.

 
PM MAIL   Вверх
Cr@$h
Дата 24.8.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41




M
Cr@$h
Беседа взята из разговора о недостаках Ruby.

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.1411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.