deniok: (Рыжий)
[personal profile] deniok

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

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

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

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

Date: 2015-09-23 05:05 am (UTC)
From: [identity profile] alogic.livejournal.com
Наконец-то! Поздравляю и спасибо :)

По поводу Haskell Platform идут дебаты, нужна ли она. Для Windows рекомендуют ставить MinGHC. Он по объёму меньше и в нём правильная среда для сборки программ, требующих Unix (bash встроен ) Ещё там находится stack, которым теперь собирают пакеты, чтобы не иметь проблем с зависимостями, как в cabal. С помощью stack можно даже версию ghc поменять. Вообще автор stack говорит, что только его ставьте, а уже через него всё остальное :)
Edited Date: 2015-09-23 05:17 am (UTC)

Date: 2015-09-23 06:15 am (UTC)
From: [identity profile] deni-ok.livejournal.com
Я почитывал эту дискуссию, там есть разумные мысли. Но все-таки во вводном курсе я боюсь рекомендовать инструменты без накопленной истории использования. Тем более, что курс про язык, а не про инфраструктуру.

Date: 2015-09-24 12:32 am (UTC)
From: [identity profile] alogic.livejournal.com
Поcидев под Windows с MinGHC, я понял, почему люди любят дистрибутивы Линукс, где всё из исходников собирается. Это сам по себе увлекательный квест, когда надо недостающие зависимости достраивать и завороженно глядеть на процесс компиляции -- закончится или нет. Так что я теперь несколько пристрастен :) Кроме того эстетически красивей минималистичное ядро с парой библиотек, на которое можно достроить всё остальное.

А вот сборка под Haskell Platform может закончиться неудачей -- Windows, похоже, всё более и более маргинализируется среди разработчиков.

Впрочем, с Платформой гораздо проще указать, что откуда скачать и поставить :))
Edited Date: 2015-09-24 12:32 am (UTC)

Date: 2015-09-24 08:38 am (UTC)
From: [identity profile] deni-ok.livejournal.com
Ну у нас был выбор - получить пару хмыков от продвинутых слушателей, или долго и нудно объяснять паре десятков полных новичков как им установить среду. Мы выбрали второе :)

Date: 2015-09-24 08:40 am (UTC)
From: [identity profile] deni-ok.livejournal.com
То есть первое, конечно!

Date: 2015-09-25 11:51 am (UTC)
From: [identity profile] alogic.livejournal.com
Да ладно, кроме меня никто не пристаёт:)

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

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

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

Date: 2015-09-24 08:26 am (UTC)
From: [identity profile] deni-ok.livejournal.com
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 взята.

Date: 2015-10-20 05:11 pm (UTC)
From: [identity profile] arthur welf (from livejournal.com)
Денис Николаевич, большое спасибо вам за курс. И за тот, что на Степике, и за вот этот: https://www.youtube.com/playlist?list=PLlb7e2G7aSpRDR44HMNqDHYgrAOPp7QLr (лямбла-исчисление в нём вы просто волшебно объяснили!).

Date: 2015-11-08 02:05 am (UTC)
From: [identity profile] udpn.livejournal.com
Отличный курс, пусть и на не очень хорошей платформе.

Date: 2015-11-08 07:35 am (UTC)
From: [identity profile] deni-ok.livejournal.com
Спасибо.

А какие недостатки у платформы?

Date: 2015-11-14 08:33 pm (UTC)
From: [identity profile] udpn.livejournal.com
Там много ошибок как в клиентской части, так и в серверной, пару десятков я репортил около года назад, пока не отчаялся. Кроме того, качество курсов по Python и, особенно, С++ сделало платформе плохую репутацию, и я был несколько удивлён, что курс по Haskell размещён именно там.

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

Profile

deniok: (Default)
deniok

February 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223 242526
2728     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 10th, 2025 11:05 am
Powered by Dreamwidth Studios