LINUX.ORG.RU
ФорумTalks

За что не любят Common Lisp?

 , ,


2

9

Следуя трaдициям, например SUBJ.

Перечислю только минусы, потому что их гораздо меньше, чем плюсов:

Дизайн:

  • большая стандартная библиотека (раздутый стандарт)
  • много повторяющихся функции деляющих почти одно и то же
  • не совсем вменяемые имена функций
  • не совсем доделанная пакетная система
  • MOP не успел попасть в стандарт

B остальном все устараивает, а с выше перечисленным можно жить)

Прошлое:

  • медленные реализации (медленное железо)
  • дорогие лисп-машины
  • дорогой лисп-софт
  • AI Winter
  • профуканы все полимеры еффективными манеджерами Symbolics

Настоящее:

  • не достаточно библиотек на все случаи, приходится пилить свои
  • не совсем качественные библиотеки, приходится снова брать напильник

В остальном все прекрасно и ситуация с библиотеками постепенно исправляется.

★★

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

к черту юзкейсы, читаемо или нет? что именно от тебя ускользнуло?

нечитаемо. только баш читать никто и не собирался.

надо быть законченным мудаком, чтоб не понять.

бинго. Жабу осилит и такой. Прелестный, отвратительно скучный язык.

RedPossum ★★★★★
()
Последнее исправление: RedPossum (всего исправлений: 1)
Ответ на: комментарий от Rastafarra

читаемо или нет? что именно от тебя ускользнуло?

Варниант на Скала как минимум неочевиден - несколько идентификаторов подряд.

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

«лишние символы»

это простая помощь для тебя самого при чтении. Как выделение текста разными цветами в твоем конспектике.

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

В сишечке чуть боле чем везде встречаются одинокие * и const. Константный указатель на указатель на указатель на константный инт встречается относительно редко и трудночитаем.

да, конечно:

       void qsort(void *base, size_t nmemb, size_t size,
                  int (*compar)(const void *, const void *));
...
       main(int argc, char *argv[])
...
           return strcmp(* (char * const *) p1, * (char * const *) p2);
man 3 qsort и обрати внимание, что в main неправильно написано - там массив указателей на константные строки. А не на неконстантные, как пишут по традиции. Ну и разименование функции - просто имя функции (без *), взятие адреса - тоже просто имя, но уже без скобок.

Просто прокомментировал твой CL-код. Не говоря даже, что на си так не пишут.

почему это на сишечке так не пишут? что запрещает-то?

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

На С вообще можно было не выеживаться, gcc отптимизирует рекурсию и в «обычной» реализации факториала.

можно. Вопрос был не про рекурсию, а про синтаксически «лишние» символы. В сишечке их не меньше, а столько же. Если не больше, с учётом типизации...

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

Жабу осилит и такой.

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

забавная политика.

Rastafarra ★★★★
()
Последнее исправление: Rastafarra (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Варниант на Скала как минимум неочевиден - несколько идентификаторов подряд.

ну разбавь точками по вкусу.

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

это простая помощь для тебя самого при чтении.

у меня это называется «комментарий». и мне видится очень странным то, что у тебя иначе.

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

забавная политика.

нормальная политика, человечество умнее не становится, где вас, умных, столько наберешь?

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

за них взгляд цепляется при чтении.

и царапается

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

«лишние символы» --- это фетиш такой, да? :)

ага. что-бы одностроки писать, и что-бы другие задроты могли их прочитать.

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

Такие дела...

Можешь хоть примерно объяснить, к чему был этот «пример»?

мда...

Ну, если ты согласен, то всё хорошо.

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

у меня это называется «комментарий». и мне видится очень странным то, что у тебя иначе.

комментарий это комментарий. А это, помнишь, как девочки-отличницы в школе писали разными пастами в тетрадочках. Определения красным, сам текст черным, заголовок новой лекции зеленым, к примеру. Вот тож самое. Без этого можно и обойтись, но с ним как-то удобнее

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

а сделай-ка бинарник размером в 760 байт из кода на CL

70-е годы прошли, в любом случае, в эти 760 байт вряд ли вместится что-то больше хелловролда

в C для этого надо использовать библиотеки

в которых нужно использовать специальный черезодноместный тип

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

Можешь хоть примерно объяснить, к чему был этот «пример»?

к тому, что за нечитаемым одностроком можно спрятать откровенный быдлокод, а потом расхваливать свой недоязычок за то, что на нём можно «в одну строку писать то, для чего в нормальном ЯП надо 50». В данном случае быдлокод чисто с алгоритмической т.з.

Ну, если ты согласен, то всё хорошо.

нет. я несогласен с тем, чо есть смысл использовать нечитаемые ЯП по типу brainfuck'а или хаскеля. И проблема не в том, что я не осилил, и там и там нет ничего сложного.

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

да, конечно:

Если ты повсеместно пользуешься qsort-ом и сам постоянно пишешь подобное, аргумент принимается - в твоем коде чуть более чем всегда встречаются портянки из *, & и const.

почему это на сишечке так не пишут? что запрещает-то?

Потому что можно написать проще. Ты взял схемный факториал и один в один переписал его на Си.

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

70-е годы прошли, в любом случае, в эти 760 байт вряд ли вместится что-то больше хелловролда

70е прошли. Теперь ОДНО приложение на жабе кушает все 16Гб выделенного сервера.

в которых нужно использовать специальный черезодноместный тип

который хотя-бы работает на компах хотя-бы с 16ю Гб. И при этом не мешает серфингу в www.

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

тебе библиотек для больших чисел мало?

а это уже не три строчки кода

ну и что? целые числа в CL тоже не 3 строчки занимают.

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

70е прошли. Теперь ОДНО приложение на жабе кушает все 16Гб выделенного сервера.

предлагаешь байтодрочерствовать и писать всё на ассемблере?

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

к тому, что за нечитаемым одностроком можно спрятать откровенный быдлокод, а потом расхваливать свой недоязычок за то, что на нём можно «в одну строку писать то, для чего в нормальном ЯП надо 50». В данном случае быдлокод чисто с алгоритмической т.з.

И как это относится к нашей дискуссии?

я несогласен с тем, чо есть смысл использовать нечитаемые ЯП по типу brainfuck'а или хаскеля.

Haskell - один из самых легко читаемых языков в мире.

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

Если ты повсеместно пользуешься qsort-ом и сам постоянно пишешь подобное, аргумент принимается - в твоем коде чуть более чем всегда встречаются портянки из *, & и const.

оно в любой программе сложнее helloworlda есть. К счастью, typedef позволяет это всё записать понятно, без портянок со звёздочками.

Потому что можно написать проще. Ты взял схемный факториал и один в один переписал его на Си.

он не схемный, а математический. Просто в лиспе он записывается точно также, как и у математиков. А в сишечке обычно пишут оптимизированный вариант для i8086 и подобных CPU (где регистры можно по пальцем пересчитать, а стек очень дорогой, и очень маленький). Ну и плюс компилятор у тебя образца 1980го года. Вот только я не знаю как оно у тебя, а у меня компилятор 2012го, а процессор имеет вполне дешёвый стек. Да и регистров достаточно много.

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

Haskell - один из самых легко читаемых языков в мире.

я не верю что ты не видел оптимизированный по скорости хаскельный квиксорт.

а если на нем получается либо тормозное либо нечитаемое... то зачем он такой вообще нужен? :)

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

70-е годы прошли, в любом случае, в эти 760 байт вряд ли вместится что-то больше хелловролда

70-е прошли, а С для числодробилок остался, кстати насчет ресурсов - ecl прекрасно себе падает на 100500 на примере для CL, clisp тоже, а вариант на С - нет, даже без оптимизаций

в которых нужно использовать специальный черезодноместный тип

в том же ecl используется тот самый «черезодноместный тип», да - в С с ним работать не так удобно, зато код будет быстрый, что для тяжелых вычислений предпотительней

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

предлагаешь байтодрочерствовать и писать всё на ассемблере?

я предлагаю не быдлокодить, в надежде на то, что найдётся ещё пара десятков гигов RAM.

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

целые числа в CL тоже не 3 строчки занимают.

это в стандартной библиотеке

по твоему, вычисление в цикле 100500! это стандартная задача? Ну и кому это надо?

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

к тому, что за нечитаемым одностроком можно спрятать откровенный быдлокод, а потом расхваливать свой недоязычок за то, что на нём можно «в одну строку писать то, для чего в нормальном ЯП надо 50». В данном случае быдлокод чисто с алгоритмической т.з.

И как это относится к нашей дискуссии?

самое прямое - из-за нечитаемости сами фанаты хаскеля спутали алгоритм...

Haskell - один из самых легко читаемых языков в мире.

ага. Как русский для меня - самый простой, и самый читаемый. Вот английский текст я читаю в 10 раз медленнее, а китайский - вообще не умею.

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

большие числа - это вполне себе стандатная задача, особенно по нынешним временам

рассказывай - где тебе не хватает int64_t

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

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

нет, не тоже самое.

полезный конспект: «рука -> стакан_с_водкой -> взять» или на твой вкус, бесполезный: «если вы правша, согните правую руку в локтевом суставе...».

и как ты его не раскрашивай, красок и бурной деятельности много, толку мало.

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

я не верю что ты не видел оптимизированный по скорости хаскельный квиксорт.

ещё-бы он показал, а то я не осилил нагуглить...

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

оно в любой программе сложнее helloworlda есть. К счастью, typedef позволяет это всё записать понятно, без портянок со звёздочками.

Есть, но не «чуть более чем везде».

он не схемный, а математический. Просто в лиспе он записывается точно также, как и у математиков.

Насмешил. Математический факториал не размазывается на две функции с хвостовой рекурсией.

А в сишечке обычно пишут оптимизированный вариант для i8086 и подобных CPU

Ты в своем факториале тоже привел оптимизированный под схему(!) вариант. Этот оптимизированный для схемы факториал ты обмазал сначала о CL, потом о си, хотя в обоих случаях можно было обойтись циклом.

Ну и плюс компилятор у тебя образца 1980го года. Вот только я не знаю как оно у тебя, а у меня компилятор 2012го, а процессор имеет вполне дешёвый стек. Да и регистров достаточно много.

Я так и не понял, знаешь ты, какой у меня компилятор, или нет?

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

большие числа - это вполне себе стандатная задача, особенно по нынешним временам

большие как 100500!? И где ты ТАКИЕ числа видел?

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

нет, не тоже самое.

Мы же по прежнему о том что у вас все скобочки одинаковые а в более других языках все разные или вообще применяется что-то другое? Так вот, когда параметры функции и тело функци отделяются разными символами - это хорошо.

полезный конспект: «рука -> стакан_с_водкой -> взять» или на твой вкус, бесполезный: «если вы правша, согните правую руку в локтевом суставе...».

первый прочитает только написавший, второй кто угодно. чтд.

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

Есть, но не «чуть более чем везде».

почти везде. На край есть #define, embedded'цам не привыкать.

Насмешил. Математический факториал не размазывается на две функции с хвостовой рекурсией.

П-большое - это и есть внутренняя функция с начальными значениями 1 и 1.

Ты в своем факториале тоже привел оптимизированный под схему(!) вариант. Этот оптимизированный для схемы факториал ты обмазал сначала о CL, потом о си, хотя в обоих случаях можно было обойтись циклом.

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

Я так и не понял, знаешь ты, какой у меня компилятор, или

нет? не. i8086 и компилятор 80х? Тогда извини. Пиши дальше итерации...

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

на 640 килобайтах каждому

т.е. примеров у тебя нет и фраза «большие числа - это вполне себе стандатная задача» была мягко говоря ни о чем?

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

я не верю что ты не видел оптимизированный по скорости хаскельный квиксорт.

Напрасно не веришь. Не видел.

Зато видел исходники Data.List.sort, которая более чем читабельна.

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

самое прямое - из-за нечитаемости сами фанаты хаскеля спутали алгоритм...

Если ты не заметил, то этот «алгоритм» привёл почему-то ты. Я ещё раз прошу тебя объяснить, нафиг ты вообще об этом вспомнил.

ага.

То есть, ты согласен. Вот и ладушки.

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

В криптографии нужны, например. Жаль у меня не осталось презентации о применении больших челых чисел, там много пунктов было.

imtw
()
Ответ на: комментарий от drBatty
(define (fac n)
  (for/fold ([P 1])
      ([i (in-range 1 (+ n 1))])
    (* P i)))
x4DA ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.