Information

Created: 04.02.2007 | Level: for all | Access: free | University: Новосибирский Государственный Университет
Introduction to Programming in Lisp За почти полувековую историю своего существования язык Лисп зарекомендовал себя как система с практически неограниченными возможностями символьного программирования. Лисп и его диалекты послужили основой широкого спектра прикладных разработок, оказавших существенное влияние на распространение информационных технологий.
Знакомство с Лиспом - важная составляющая современного образования в области информатики. Лисп является ключом для изучения типовых задач системного программирования и искусственного интеллекта.

План занятий

LessonTitle <<Date
-
Lecture 1
22 minutes
Рекурсивные функции и структуры данных
Целью курса является изучение языка Лисп и техники программирования на Лиспе. Первая лекция вводит общие понятия, используемые при определении языка Лисп, его реализации и применении. В центре внимания идеи символьной обработки информации и принципы функционального программирования.
Contents
    -
    Тест 1
    30 minutes
    -
    Lecture 2
    18 minutes
    Работа с Лисп-системой
    Вторая лекция адресована практикам, предпочитающим изучение языка программирования сопровождать немедленным экспериментом, умеющим находить информацию в сетях и устанавливать на компьютере системы программирования. Но и новичкам имеет смысл познакомиться с системой программирования на Лиспе сразу, не дожидаясь полной картины изучаемого языка. Рассмотрим следующее: Диалог с Лисп-системой Запуск Лисп-программ из файлов Пошаговое вычисление Сайты с Лисп-системами
    Contents
      -
      Тест 2
      30 minutes
      -
      Lecture 3
      32 minutes
      Списки и атомы
      Третья лекция знакомит с основами символьной обработки информации и структурами данных, удобно приспособленными для символьной обработки. Рассматривается базовый набор элементарных функций над списками и S-выражениями (символьными выражениями).
      Contents
        -
        Тест 3
        30 minutes
        -
        Lecture 4
        31 minute
        Запись Лисп-программ
        Теперь рассмотрим правила записи программ на Лиспе. Такие правила различны для обычных и специальных функций. Для Лиспа характерно предпочтение рекурсивных функций. Функции могут иметь названия или быть безымянными, сконструированными для разового использования.
        Contents
          -
          Тест 4
          30 minutes
          -
          Lecture 5
          29 minutes
          Определение языка программирования
          Теперь можем дать более точное определение Лиспа как языка программирования и показать методы программирования на Лиспе. Рассмотрим синтаксис языка Лисп и его семантику. Познакомимся с техникой накопительных параметров, позволяющей при программировании обходиться без глобальных переменных, и методом вспомогательных функций, обеспечивающим управление уровнем абстрагирования информационной обработки.
          Contents
            -
            Тест 5
            30 minutes
            -
            Lecture 6
            26 minutes
            Интерпретатор
            Теперь рассмотрим определение операционной семантики Лиспа в виде универсальной функции, задающей правила вычисления форм и применения функций к аргументам. Проанализируем требования к определению семантики, удобно сопоставимой с синтаксической сводкой правил языка. Дадим лаконичное определение универсальной функции EVAL, вычисляющей произвольное выражение языка, и APPLY, применяющей функции языка к их аргументам. Отметим специфику предикатов и истинности, принятой в языке Лисп.
            Contents
              -
              Тест 6
              30 minutes
              -
              Lecture 7
              32 minutes
              Отображения и функционалы
              После изучения идеального Лиспа переходим к знакомству с приемами создания его практичных расширений. В данной лекции мы рассмотрим базовые средства обработки чисел и строк, примеры которых помогут разобраться с техникой программирования отображений. При определении отображений вполне естественно используются безымянные функции. Приведены примеры определения фильтров и сверток (редукций).
              Contents
                -
                Тест 7
                30 minutes
                -
                Lecture 8
                32 minutes
                Имена и контексты
                Данная лекция посвящена организации эффективной работы с определениями функций. Рассматривается оптимизационная техника именования значений и подвыражений на разных уровнях вложенности блоков, представление переменных и констант, а также локализация функций по блокам
                Contents
                  -
                  Тест 8
                  30 minutes
                  -
                  Lecture 9
                  13 minutes
                  Оперирование вычислениями
                  Теперь рассмотрим менее очевидные методы повышения эффективности и результативности вычислений, такие как замедленные (ленивые) вычисления, организация оптимальных рецептов вычисления и работа с событиями.
                  Contents
                    -
                    Тест 9
                    24 minutes
                    -
                    Lecture 10
                    19 minutes
                    Свойства атомов и работа с памятью
                    Теперь рассмотрим более подробно следующие механизмы эффективной работы со структурами данных в памяти. Рассмотрим списки свойств атома, работающие как встроенная база данных, организацию структуры данных в памяти и деструктивные, способные разрушить состояние памяти, операции над структурами данных, а также основной механизм повторного использования памяти - "Сборка мусора".
                    Contents
                      -
                      Тест 10
                      30 minutes
                      -
                      Lecture 11
                      19 minutes
                      Стандартное программирование
                      Эта лекция посвящена привычным методам программирования. Для этого в Лисп введена функциональная модель средств императивного программирования в виде специальной функции Prog, а также специальных функций для представления в программах на Лиспе присваиваний и циклов.
                      Contents
                        -
                        Тест 11
                        12 minutes
                        -
                        Lecture 12
                        24 minutes
                        Расширения и приложения Лиспа
                        В заключении рассмотрим как дальше осваивать Лисп, практично использовать возможности Лисп-систем и систем функционального программирования. Познакомимся немного с историей Лиспа
                        Contents
                          -
                          Тест 12
                          12 minutes
                          -
                          5 hours
                          -