LINUX.ORG.RU
ФорумTalks

O Lisp'e


0

0

Взял в библиотеке книгу... http://rail.uk.to/Lisp.jpg

Только вчера её начал читать, так что експертом по лиспу ни в коем случае пока что не являюсь.

Пока что первые мысли от прочтения двадцати пяти страниц -
1) Лисп не так страшен как его малюют - синтаксис бейсика опаснее для мозга.
2) Хотя это и функциональный язык, там необязательно использовать рекурсию в каждом вызове (xDDD)
3) Как бы сказало поколение пепси, "Лисп взял у Ruby всё лучшее - блоки (with-open-file ...) и символы (:symbol-type-thing)". Хотя понятно, что наоборот. Отсюда вопросы:
а) почему так много современных языков игнорирует эти достаточно удобные фичи?
б) почему на лиспе так мало идёт software development в настоящее время? (я знаю, что есть немного современных успешных проектов включая ту игру для PS2 [и emacs...], но далеко не каждый день сталкиваешься с такими)

Конструктивный флейм приветствуется :)

Ответ на: Вперёд, за Lisp! от bugmaker

> сравни теперь читабельность, да?

> (if (smth1 (smth2 a)) (smth3 b) (smth4 c)) 

> def smth (a, b, c):
  x=None
  if smth1(smth2 (a)):
    x=smth3 (b)
  else:
    x=smth4 (c)
  return x

  smth (a, b, c)


Гы. В случае с питоном как минимум понятно что аффтар нам закодировал.
Где вызов функции, где срабатывает оператор, где объявление :) 
А в программе на лиспе я ничего не понял. 
Из текста соврешенно непонятно что такое smth1, smth2, smth3, smth4. 
Это макросы или функции ?И если это макросы то как черт возьми это будет  выглядеть в виде последовательности действий компутера ?
Какова семантика конструкции (if (smth1 (smth2 a)) (smth3 b) (smth4 c)) ? Мне непонятно. Ну да. Это плата за гибкий синтаксис. 

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

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

> В случае с питоном как минимум понятно что аффтар нам закодировал. Где вызов функции, где срабатывает оператор, где объявление :)

Это потому, что ты недостаточно хорошо знаешь Питон и еще хуже Лисп :)

> Из текста соврешенно непонятно что такое smth1, smth2, smth3, smth4. Это макросы или функции ?И если это макросы то как черт возьми это будет выглядеть в виде последовательности действий компутера ?

В случае Питона точно так же непонятно, что такое smth*: функция, класс, bounded method, unbounded method, генератор... А последовательность действий компьютера интересует меня в предпоследнюю очередь.

> Какова семантика конструкции (if (smth1 (smth2 a)) (smth3 b) (smth4 c)) ? Мне непонятно.

А какова семантика конструкции (smth3(b) if smth1(smth2(a)) else smth4(c))? Мне непонятно :) А ведь это Питон (причем окружающие скобочки важны). Семантика выражения это не какая-то "интуитивно понятная" субстанция, а формально описанная в спецификации вещь.

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

> Гы. В случае с питоном как минимум понятно что аффтар нам закодировал.

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

> )):

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

> А в программе на лиспе я ничего не понял.

Не ты один. Увы, лисп язык программирования, который нужно учить, а не программируемых калькуляторов.

> Из текста соврешенно непонятно что такое smth1, smth2, smth3, smth4.

(smth... - вычисленное значение, smth... без скобки слева - связанное с этим символом, чё тут непонять?

> Это макросы или функции?

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

> И если это макросы то как черт возьми это будет выглядеть в виде последовательности действий компутера ?

Вот-вот :D

> Какова семантика конструкции (if (smth1 (smth2 a)) (smth3 b) (smth4 c)) ? Мне непонятно.

она совершенно очевидна

> Ну да. Это плата за гибкий синтаксис.

Это плата за приближение терминов программы к терминам задачи.

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

Эт хигня, вы ещё виндовсь не видели...

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

Цитата из материала со ссылки:

"It is often suggested that one of the SocialProblemsOfLisp is that LispUsersAreArrogant.

No, they're just perceived as arrogant by lesser beings."

Ну хоть у кого-то есть чувство юмора :)

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

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

Нет, это происходит от того, что мало кто пробует лисп до того, как ему "на пальцах" покажут чем так крут лисп. Естественно ответ один - В САД! Пробуйте сами, а если что будет непонятно - тогда вам объяснят :)

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

> В случае Питона точно так же непонятно, что такое smth*: функция, класс, bounded method, unbounded method, генератор...

Так это недостаток питона значит. Синтаксис должен однозначно соответствовать семантике конструкции.

> А последовательность действий компьютера интересует меня в предпоследнюю очередь.

Гы. А мне всегда казалось что основной смысл любой программы состоит в том, как она будет выполняться :)

> А какова семантика конструкции (smth3(b) if smth1(smth2(a)) else smth4(c))? Мне непонятно :) А ведь это Питон (причем окружающие скобочки важны).

Ну это опять таки недостаток питона. Чем строже синтаксис тем понятнее.

> Семантика выражения это не какая-то "интуитивно понятная" субстанция, а формально описанная в спецификации вещь.

А ты когда программируешь думаешь о смысле того что пишешь ? Ты наверное все на уровне формализмов рассуждаешь да ?

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