Интерпретатор языка Lisp (проект) — различия между версиями
Sakutylev (обсуждение | вклад) (Новая страница, с помощью формы Новый_проект) |
Sakutylev (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
=== Что это за проект? === | === Что это за проект? === | ||
"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, который можно будет использовать как отдельно, так и внутри других программ. |
Версия 14:09, 9 декабря 2014
Ментор | Александр Потапенко |
Учебный семестр | Весна 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: ???