четверг, 4 декабря 2014 г.

Практикум на Haskell и/или Ocaml.

Зная про себя, что я подвержен синдрому утёнка, про который лурк пишет гораздо понятнее, чем википедия:

психологический принцип, по которому человек, сталкиваясь с какой-либо областью и далее углубляясь в неё, считает первый встреченный им объект из этой области самым лучшим, самым правильным, а все прочие — тем «хуже», чем меньше они похожи на его первую любовь.

Что бы не попасться в эту ловушку (а то я так однажды уже попал на perl ),  совместно с курсом про standart ml на coursera я начал проходить курс по haskell на edx.



Ссылки:
Я неизбежно их сравниваю. Поделюсь этим сравнением.

Курс  Dan Grossman на coursera просто отличный. 
Вся та часть что относится к sml отличная. Изложение понятное, и местами натурально захватывающее, о ряде проблем поднятых там я никогда не думал, и в целом целая куча новый открытий, что не может не радовать.

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

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

Я даже довольно хорошо сдал экзамен по этому разделу



Курс от @headinthebox  совсем другой. Я подозреваю, что лектор скорее программист чем преподаватель.

Довольно много своеобразного юмора, и в лекциях, и в текстах, который я впрочем оценил. Что то вроде:
Но порой мне сложно понять речь, приходится возвращаться, ну спишем на мой плохой английский.

Содержание отличное, несмотря на то что sml курс шёл с опережением, всё равно полно новых и интересных вещей и концепций.

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

В первых нескольких лекциях, как мне показалось, слегка перепутали порядок, и в итоге вышло что то вроде.
Ты сам нагуглил и освоил что то для выполнения задания 1, а потом тебе это же повторно рассказали в лекциях 2.

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

Причем, текст выполнен картинками, что б не скопировали в REPL.
Хотите проверить машиной?
Наберите 10 вариантов в 20 вопросах с картинки всякого бреда, и интерпретатор покажет вам неверный порядок операндов или пропущенную кавычку?

Ужас. Зачем? Категорически отрицаю полезность такой ерунды.
В итоге "с таким настроем слона не продать" не могу себя заставить вчитываться в эти мелочи, и похоже курс провалю.
Пока прогресс не радует:
И это я сейчас уже попривык, а когда первую такую муть увидел, хотелось немедленно бросить.

У меня такое впечатление что курс слегка экспериментальный, меняют правила, задания, сроки на лету, в зависимости от отклика в форумах.
Ну что ж, пожелаю им найти идеальный вариант.
Причём писать код на haskell мне вполне нравится , и даже получается (тёмные столбики на графике это оценка за код - лабы, а вот светлые столбики это вот эти тесты)

И хочется курс закончить, и не могу смирится со способом тестирования.
Ну и переходя от лирики к практике.
Я знаю что любые знания не подкрепленные массивной практикой — бесполезны, и будут забыты немедленно.
Выходит, нужно закрепить.

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

Проекты есть разные, есть мелкие веб сайтики, к примеру: что то собрать по api с других проектов, или сграбить с  html, переобработать и выставить, есть и другие, когда нужно наоборот вести какую то базу и предоставлять api наружу.
И тут, я забуксовал. Ну не с нуля же реализовывать http сервер на haskell? 

Должны быть общепринятые распространенные фреймворки и всякое такое.

Посоветуйте пожалуйста, что лично вы использовали и какие впечатления остались.