Записки реликта - λ-экстремизм [entries|archive|friends|userinfo]
Latimeria chalumnae

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

λ-экстремизм [Nov. 1st, 2007|01:51 am]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, , , , ]

Сегодня, разбираясь со студентами, что мы можем и чего не можем сделать с функцией, то ли вспомнил, то ли придумал замечательную формулировку:

В принципе, все управляющие конструкции, кроме лямбды — это синтаксический сахар.

Строго говоря, для Питона, который мы используем в качестве рабочего языка, это не совсем так (и даже совсем не так): питоновская lambda очень слабенькая, а в Питоне-3000 будет, как обещает камрад ван Россум, ещё слабее (я уже не говорю о том, что в языке без оптимизации хвостовой рекурсии попытка писать без for и while даст нам, мягко выражаясь, не слишком эффективный код).

Но усвоить вышеизложенный принцип надо. Мышление в рамках конкретных управляющих конструкций сильно мешает. Характерный момент — сложности с пониманием таких вещей, как замыкания или рекурсия, возникают в основном у тех, кто имеет опыт программирования. Вредная идея, что "цикл — это нечто, имеющее переменную-счётчик цикла и повторяющееся заданное количество раз" — она тоже от знакомства с алгол-подобными языками.

Может, стоило всё-таки делать курс на основе Scheme? Хотя это была бы жесть, да… к тому же для Scheme, увы, нет GUI-библиотеки, хотя бы сравнимой с PyQt4.
LinkОставить комментарий

Comments:
From:[info]tristes_tigres
Date:November 1st, 2007 - 11:11 pm
(Link)
А на Хаскеле есть.
[User Picture]
From:[info]uri
Date:November 3rd, 2007 - 07:47 am
(Link)
Haskell в контексте моей работы это всё-таки запредел (это двухлетние курсы, продуктом которых должен быть аккуратный кодер на C++/C#/Java).

А какая приличная GUI-библиотека есть под Haskell?
From:[info]tristes_tigres
Date:November 3rd, 2007 - 11:15 am
(Link)
А разве Haskell так уж сложен для того, кто может освоить C++ или Java ?
По-моему, основам можно научить очень быстро, синтаксис там простой и прозрачный, ну разве что монады требуют некоторых раздумий.

На Хаскеле есть GTK и vxWidgets, кроме того, можно вызывать Win32 функции