Интерпретатор языка Lisp (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница, с помощью формы Новый_проект)
 
 
(не показано 5 промежуточных версии 2 участников)
Строка 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
 +
 
Введение в промышленную разработку
 
Введение в промышленную разработку
---
 
  
 
=== Направления развития ===
 
=== Направления развития ===
Строка 41: Строка 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: ???