deniok: (Рыжий)
deniok ([personal profile] deniok) wrote2015-09-11 01:39 pm

Онлайн-курс по Хаскелю

Через неделю запускаем на stepic.org вводный онлайн-курс по Хаскелю Функциональное программирование на языке Haskell.

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

В день, когда я закончил записываться, вышла новая версия Haskell Platform. C реализованными Functor-Applicative-Monad proposal и Foldable/Traversable in Prelude proposal. Очень своевременно. Типы кучи функций над списками в Prelude поменялись на более общие, Applicative я вообще не рассказывал, иначе в формат не уложиться было. Включил рекомендацию ставить прошлую версию Haskell Platform, либо пользоваться последней на свой страх и риск.

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

[identity profile] alogic.livejournal.com 2015-09-24 01:40 am (UTC)(link)
Знаете, первая неделя была увлекательна. Не мог оторваться, пока не закончил. Напишу сразу что заметил, пока не забылось.

1. Почему вы сами пользуетесь ghc-7.6.3? :)
2. Почему не пользуетесь и не рассказываете про клавишу Tab в командной строке? Очень жизнь облегчает.
3. Местами приходится жалеть, что нет слайдов к видео. Приходится крутить ролик и набирать руками код. А может слайды и не нужны, вполне хватит исходника с комментариями, в которых и набираемые в ghci команды будут.
4. Одного тестового случая для задач всё-таки мало, хотя бы парочку. Наверняка, например, в задаче про сумму цифр и их количество большинство валятся на числе 0, но сообщение об ошибке, что некий Test #1 failed им ничего не говорит и лишь вгоняет во фрустрацию. На всех же остальных числах работает! Впрочем, студенты могут и в комментах делиться тестовыми случаями, уже начали. Кстати, идеально загрузка кода и тестирование устроены на codewars.com. Можно вообще прямо туда задачи решать отправлять :)
5. Насчёт фрустраций, опять же. Математика в задачах пугает :) Я с трудом пересилил страх, посмотрел в Википедию и узнал, что интегрировать методом трапеций позволяет довольно простая формула. Так что в итоге мне даже понравилось, вспомнил школу, машинное время и что программирование было нужно народному хозяйству для расчётов советской военной техники. Но теперь, вы же сами говорите, курс про язык, а не про численные методы :) В общем я, что пережил, вам рассказал, а там посмотрим, что статистика по решившим задачу скажет :))

Всё, спасибо за первую неделю, пойду ждать следующую.

[identity profile] deni-ok.livejournal.com 2015-09-24 08:26 am (UTC)(link)
1. ghc-7.6.3 - это то, что поставили на машину в студии. Как и Gedit, впрочем. Я решил, что для рассказа этого вполне достаточно.
2. Про Tab собирался рассказать, но забыл :( Или где-то позже говорю, не помню уже.
3. Комментированные исходники у меня есть, но они совершенно непричесанные и слегка отличающиеся в худшую сторону - по ходу записи возникали идеи как рассказать что-то лучше и точнее, которые нигде не фиксировались.
4. Мы просто не успели написать содержательное сообщение на каждый test case. Это было в планах, но на самом деле делать такой курс - это очень большой объем работы. К тому же не хотелось писать на бестиповом питоне, на котором написан Stepic (в том числе и интерфейс подсистемы тестирования), поэтому мы перетащили большую часть обработки тестов на Haskell. Ну и уткнулись в то, что степик сам развивается, и если корректность работы визуальных инструментов поддерживается, то изменения в API иногда портят дело. В частности, загадочное test #1 failed: Haskell test #4 failed состоит из неубираемой части подсистемы тестирования Stepic и нашего сообщения.
5. Эта задачка вроде бы из SICP взята.