LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Отвечу по SBCL:

1. Иммутабельность не особо хорошо поддерживается. Две недели искал ошибку, а ошибка была в голове. Функция sort меняет свой аргумент, а я думал, что копирует. В языке нет встроенных средств для контороля.

2. Функции как объекты есть почти во всех языках, в т.ч. в С (указатели на функцию). Другое дело, раньше в С не было замыканий, не знаю, как сейчас. С замыканиями в SBCL всё хорошо. Зачем нужен, к примеру, карринг, я не знаю, никогда им не пользовался. Предикат или декларация чистоты - вот это полезная вещь, но в SBCL его нет. С другой стороны, само по себе понятие чистоты не однозначно определено.

3. Сопоставление с образцом. В общем-то, не имеет отношения к ФП, в моём понимании. Это работа с данными. В SBCL нет сопоставления с образцом, оно есть в библиотеках, например, в SWANK. На практике лично я почти не пользуюсь им. Проблема в том, что сопоставление - это широкая тема. Вряд ли то сопоставление, которое есть в языке «из коробки», будет подходить для всех случаев. Для каких-то подойдёт, для каких-то нет. В этом плане SBCL тоже будет хорошим выбором.

Ну и по остальным твоим пунктам:

- обратная совместимость в лиспе прекрасная, спокойно собираются проекты из 90-х.

- компилируемый - да. По скорости уступает С в 1,5-3 раза. Раньше был хороший сайт «computer benchmark game», где можно было строить сравнительные гарфики. Но прогресс добрался до него, теперь там нужно выписывать результаты на бумажку и строить графики самостоятельно.

- статическая типизация - да, опциональна. Писать определения типов неудобно, но сама система типов очень хороша, наверное, я не видел лучше. Эффективная, простая, не мешает когда не надо.

- многопоточность - да, офтопик и онтопик. Хотя говорят, что по надёжности лучше CCL. CCL генерирует более медленный код, но в целом качество продукта выше.

Исходная версия den73, :

Отвечу по SBCL:

1. Иммутабельность не особо хорошо поддерживается. Две недели искал ошибку, а ошибка была в голове. Функция sort меняет свой аргумент, а я думал, что копирует. В языке нет встроенных средств для контороля.

2. Функции как объекты есть почти во всех языках, в т.ч. в С (указатели на функцию). Другое дело, раньше в С не было замыканий, не знаю, как сейчас. С замыканиями в SBCL всё хорошо. Зачем нужен, к примеру, карринг, я не знаю, никогда им не пользовался. Предикат или декларация чистоты - вот это полезная вещь, но в SBCL его нет. С другой стороны, само по себе понятие чистоты не однозначно определено.

3. Сопоставление с образцом. В общем-то, не имеет отношения к ФП, в моём понимании. Это работа с данными. В SBCL нет сопоставления с образцом, оно есть в библиотеках, например, в SWANK. На практике лично я почти не пользуюсь им. Проблема в том, что сопоставление - это широкая тема. Вряд ли то сопоставление, которое есть в языке «из коробки», будет подходить для всех случаев. Для каких-то подойдёт, для каких-то нет. В этом плане SBCL тоже будет хорошим выбором.

Ну и по остальным твоим пунктам:

- обратная совместимость в лиспе прекрасная, спокойно собираются проекты из 90-х.

- компилируемый - да. По скорости уступает С в 1,5-3 раза. Раньше был хороший сайт «computer benchmark game», где можно было строить сравнительные гарфики. Но прогресс добрался до него, теперь там нужно выписывать результаты на бумажку и строить графики самостоятельно.

- статическая типизация - да, опциональна. Писать определения типов неудобно, но сама система типов очень хороша, наверное, я не видел лучше. Эффективная, простая, не мешает когда не надо.

- многопоточность - да, офтопик и онтопик. Хотя говорят, что по надёжности лучше CCL. Он генерирует более медленный код, но в целом качество продукта выше.