Интерпретатор языка Lisp (проект) — различия между версиями
Sakutylev (обсуждение | вклад) |
|||
(не показаны 4 промежуточные версии ещё одного участника) | |||
Строка 7: | Строка 7: | ||
|summer= | |summer= | ||
|categorize=yes | |categorize=yes | ||
+ | |is_archived=yes | ||
+ | |is_remote= | ||
}} | }} | ||
=== Что это за проект? === | === Что это за проект? === | ||
− | "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." - Greenspun's tenth rule | + | "Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." - Greenspun's tenth rule. |
+ | |||
Цель проекта - показать, что существуют альтернативы императивной парадигме программирования, продемонстрировать возможности функционального программирования на примере языка Lisp. Кроме того, будет разрушен миф о том, что горшки обжигают боги. | Цель проекта - показать, что существуют альтернативы императивной парадигме программирования, продемонстрировать возможности функционального программирования на примере языка Lisp. Кроме того, будет разрушен миф о том, что горшки обжигают боги. | ||
Результатом работы станет интерпретатор языка Lisp, который можно будет использовать как отдельно, так и внутри других программ. | Результатом работы станет интерпретатор языка Lisp, который можно будет использовать как отдельно, так и внутри других программ. | ||
− | |||
=== Чему вы научитесь? === | === Чему вы научитесь? === | ||
Основам языка Lisp | Основам языка Lisp | ||
+ | |||
Программировать в функциональной парадигме | Программировать в функциональной парадигме | ||
− | + | ||
− | + | Писать интерпретаторы | |
=== Какие начальные требования? === | === Какие начальные требования? === | ||
Знание Python или C++ | Знание Python или C++ | ||
− | |||
=== Какие будут использоваться технологии? === | === Какие будут использоваться технологии? === | ||
Git или SVN | Git или SVN | ||
− | |||
=== Темы вводных занятий === | === Темы вводных занятий === | ||
Введение в функциональное программирование и язык Lisp | Введение в функциональное программирование и язык Lisp | ||
+ | |||
Введение в промышленную разработку | Введение в промышленную разработку | ||
− | |||
=== Направления развития === | === Направления развития === | ||
Строка 40: | Строка 41: | ||
- встраивание интерпретатора в программы на Python или C++ | - встраивание интерпретатора в программы на Python или C++ | ||
- ??? | - ??? | ||
− | |||
=== Критерии оценки === | === Критерии оценки === | ||
4-5: консольный интерпретатор, осуществляющий лексический анализ выражений на Lisp и реализующий минимальный Тьюринг-полный базис языка (функции ATOM, CAR, CDR, COND, CONS, EQ, QUOTE, специальные формы LABEL и LAMBDA, либо DEFUN) | 4-5: консольный интерпретатор, осуществляющий лексический анализ выражений на Lisp и реализующий минимальный Тьюринг-полный базис языка (функции ATOM, CAR, CDR, COND, CONS, EQ, QUOTE, специальные формы LABEL и LAMBDA, либо DEFUN) | ||
+ | |||
6-7: то же + поддержка арифметики или императивной парадигмы | 6-7: то же + поддержка арифметики или императивной парадигмы | ||
+ | |||
8-10: ??? | 8-10: ??? |
Текущая версия на 19:10, 19 января 2015
Ментор | Александр Потапенко |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Внимание! Данный проект находится в архиве и реализован не будет. |
Что это за проект?
"Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp." - Greenspun's tenth rule.
Цель проекта - показать, что существуют альтернативы императивной парадигме программирования, продемонстрировать возможности функционального программирования на примере языка Lisp. Кроме того, будет разрушен миф о том, что горшки обжигают боги. Результатом работы станет интерпретатор языка Lisp, который можно будет использовать как отдельно, так и внутри других программ.
Чему вы научитесь?
Основам языка Lisp
Программировать в функциональной парадигме
Писать интерпретаторы
Какие начальные требования?
Знание Python или C++
Какие будут использоваться технологии?
Git или SVN
Темы вводных занятий
Введение в функциональное программирование и язык Lisp
Введение в промышленную разработку
Направления развития
- поддержка арифметики (целые и вещественные числа, базовые операции над ними) - поддержка императивного программирования (последовательное выполнение команд, циклы, переменные) - подключение внешних библиотек - встраивание интерпретатора в программы на Python или C++ - ???
Критерии оценки
4-5: консольный интерпретатор, осуществляющий лексический анализ выражений на Lisp и реализующий минимальный Тьюринг-полный базис языка (функции ATOM, CAR, CDR, COND, CONS, EQ, QUOTE, специальные формы LABEL и LAMBDA, либо DEFUN)
6-7: то же + поддержка арифметики или императивной парадигмы
8-10: ???