Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Комментарии к курсу ФП по SICP

Речь пойдет о курсе лекций по функциональному программированию, который пишет antilamer. Мне не нравится, как обычно, всё :)

Например, такие важные потом понятия, как ссылочная прозрачность, equational reasoning и подстановочная модель вычислений, описаны непонятно, неправильно или не описаны вообще. Вместо четкого в SICP определения семантики Scheme через подстановки -- туманное "тождественное равенство" в главе про лямбда-исчисление, и в главе про схему лисповский define вводится опять как синоним этой туманности, ничего не проясняя и только дальше запутывая читателя в столь фундаментальном вопросе.

На мой взгляд, подстановки нельзя выбрасывать из курса. Можно написать, что a = b - это макроопределение, или даже совсем переписать пример кода на макроязыке, например на препроцессоре си, используя #define, а не знак равенства, ассоциирующийся с присваиванием:

#define square (\x . x * x)
#define sum-squares (\x y . square x + square y)
#define hypot (\x y . sqrt (sum-squares x y)) 
#define abs (\x . if (x > 0) then x else (-x))


Кроме того, не упомянуто, что пробный язык ("не совсем чистый вариант лямбда-исчисления") допускает рекурсивные определения. Ведь без рекурсии можно писать только простые выражения и ни о какой универсальности речи не идет. Мейнстримовые языки тоже имеют рекурсию, но в них она не имеет ключевого значения, т.к. есть другие управляющие структуры (циклы), а тут -- имеет. Поэтому упомянуть про рекурсию важно, да и изложение это не засорит.

Дальше еще хуже -- воистину "не читайте русских газет по утрам". Scheme описывается в терминах "вызываются функции" и "кого-то интересует значение". Бедные студенты! Им внушаются ложные принципы, от которых потом трудно будет уйти. Например, неизбежно они не смогут понять что такое "чистый IO". Ведь IO всегда с сайд-эффектами! Но на самом деле чистота не важна -- важна ссылочная прозрачность, даже Чёрч-Россеровость не так важна. Я негодую.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 28 comments