Общая информация
Во 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.
* Необходимо для получения оценки «отлично».
|