Общая информация
Во 2 семестре 2009–2010 учебного года на практических занятих по обязательному спецкурсу
«Парадигмы программирования» изучаются языки Haskell и F#. Компилятор ghc
установлен на mephisto.ccfit.nsu.ru.
Преподаватель: Александр Геннадьевич Фенстер, fenster@fenster.name, +7 913 9053295.
Лектор: Лидия Васильевна Городняя.
Рекомендуемая литература:
- Душкин Р. В. Функциональное программирование на языке Haskell. М.: ДМК-пресс, 2006.
Лично я эту книгу заказал в books.ru и не пожалел;
вряд ли её реально найти в книжных магазинах в Новосибирске. Впрочем, если у кого-то
получится — сообщите мне, пожалуйста.
- A Gentle Introduction to Haskell на haskell.org
- Лекции по ФП Р. В. Душкина
- haskell.ru
- Литература по F# ожидается.
|
|
Таблица результатов
|
#
|
Фамилия, имя
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
Итого
|
Оценка за практику
|
| 1 |
Агбаш Игорь |
+
|
+
|
+
|
+
|
|
|
|
|
|
|
4 |
|
| 2 |
Балабанов Артём |
+
|
+
|
+
|
+
|
|
|
|
|
|
|
4 |
|
| 3 |
Бердов Валерий |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
+
|
|
8 |
|
| 4 |
Бовкун Екатерина |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
|
|
7 |
|
| 5 |
Боровский Виктор |
+
|
+
|
|
|
|
|
|
|
|
|
2 |
|
| 6 |
Добросельский Максим |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
|
|
7 |
|
| 7 |
Жиров Александр |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
|
|
7 |
|
| 8 |
Зырянов Константин |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
|
|
7 |
|
| 9 |
Ивлев Александр |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
9 |
|
| 10 |
Клименко Александра |
+
|
|
+
|
|
|
|
|
|
|
|
2 |
|
| 11 |
Комышев Евгений |
+
|
+
|
+
|
+
|
|
+
|
|
+
|
|
|
6 |
|
| 12 |
Косырькова Ольга |
+
|
+
|
+
|
|
|
+
|
+
|
+
|
|
|
6 |
|
| 13 |
Кошелев Анатолий |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
9 |
|
| 14 |
Крупин Сергей |
+
|
+
|
+
|
|
|
+
|
+
|
+
|
+
|
|
7 |
|
| 15 |
Кутинова Мария |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
+
|
+
|
9 |
|
| 16 |
Мокшин Павел |
+
|
+
|
+
|
+
|
+
|
+
|
|
+
|
+
|
|
8 |
|
| 17 |
Полунин Денис |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
|
8 |
|
| 18 |
Свиридов Валентин |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
|
9 |
|
| 19 |
Сенцов Евгений |
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
+
|
10 |
|
| 20 |
Стененко Александр |
+
|
+
|
+
|
+
|
+
|
+
|
|
+
|
+
|
|
8 |
|
| 21 |
Степанкевич Евгений |
+
|
+
|
+
|
+
|
|
|
|
|
|
|
4 |
|
| 22 |
Суслопаров Денис |
+
|
+
|
+
|
+
|
|
+
|
+
|
|
+
|
|
7 |
|
| 23 |
Усова Анна |
+
|
+
|
+
|
+
|
|
+
|
+
|
+
|
+
|
|
8 |
|
| 24 |
Федотов Виктор |
+
|
+
|
+
|
+
|
|
|
|
|
|
|
4 |
|
| 25 |
Штайгер Ирина |
+
|
+
|
+
|
+
|
|
+
|
|
|
|
|
5 |
|
Гистограмма
|
Список семестровых заданий
В этом году я решил отойти от схемы прошлых лет:
«много очень простых задач, пара задач чуть сложнее и две индивидуальные задачи».
В процессе придумывания индивидуальных задач постоянно приходилось думать о том, красиво ли задача решается
на Хаскелле. Но сейчас я подумал, что с детским садом надо завязывать. Лучший способ почувствовать язык
программирования — написать на нём несколько реальных программ, а самые реальные программы для обучения
можно найти только в реальной жизни (а также в заданиях первого курса по программированию). В результате в этом семестре у нас не будет детсада
типа «развернуть список» (на лиспе уже все развернули), а будут вполне жизненные задачки,
каждая из которых достойна написания небольшого скриптика на перле или несложной программки на нормальном языке.
Прошу прощения за некоторый перекос в сторону задач, связанных с разбором текстов (парсингом). Жизнь — она
и в самом деле такая.
Задания по Haskell
- Заголовки MIME. Если посмотреть на заголовки письма в «сыром» виде, можно
заметить, что длинные заголовки разбиваются по строкам, причём продолжение заголовка начинается
с символа табуляции:
From: Alexander Fenster <fenster@fenster.name>
To: Somebody <somebody@example.com>,
John Doe <john@example.com>,
example@example.com
Subject: this subject looks like a very long
text which continues on the second line
X-Mailer: vim
(пример в .txt с реальными '\t')
Склейте длинные заголовки, чтобы получилось следующее:
From: Alexander Fenster <fenster@fenster.name>
To: Somebody <somebody@example.com>, John Doe <john@example.com>, example@example.com
Subject: this subject looks like a very long text which continues on the second line
X-Mailer: vim
- CSV. Первый курс, задача 13. (пример входного файла)
- Имя пользователя. Первый курс, задача 12.
- Подсчёт количества вхождений слов в текст. Первый курс, задача 19.
- Архиватор Хаффмана.* Реализуйте архиватор и деархиватор, работающие по алгоритму Хаффмана.
Для простоты реализуйте обе программы в виде фильтра: читаем из
stdin,
печатаем в stdout. Про сложность получившегося алгоритма, записанного в функциональном стиле,
и время работы на больших файлах в этом задании можно не задумываться, но если у вас получится сделать быстрого Хаффмана —
будет просто замечательно.
Задания по F#
По предложению Лидии Васильевны оставлены те же задачи, что и на Haskell. :-)
Ситуация осложнена тем, что у нас в терминалке F#, насколько я знаю, нет
(в комплект имеющейся 2005-й студии он вроде бы не входит).
Варианты: работа на своём ноутбуке, работа в Linux (mono).
Желающим я могу завести аккаунты на сервере с установленным mono.
* Необходимо для получения оценки «отлично».
|