Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП / ЯП / ЯП экзамен.doc
Скачиваний:
229
Добавлен:
11.05.2015
Размер:
322.05 Кб
Скачать
  1. Списки и функциональные выражения в функциональных языках программирования.

  1. Механизмы и средства взаимодействия программы с операционной системой.

Первый этап загрузки ОС. В системном блоке компьютера находится постоянное запоминающее устройство BIOS, в котором содержатся программы тестирования блоков компьютера и первого этапа загрузки ОС. Они начинают выполнятся с первым импульсом тока при включении компьютера. На этом этапе процессор обращаются к диску и проверяет наличие на определенном месте (в начале диска) очень небольшой программы - загрузчика. Если эта программа обнаружена, то она считывается в ОЗУ и ей передается управление.

Второй этап загрузки ОС. Программа - загрузчик, в свою очередь, ищет на диске базовый модуль ОС, переписывает его в память и передает ему управление.

Третий этап загрузки ОС. В состав базового модуля входит основной загрузчик, который ищет остальные модули ОС и считывает их в ОЗУ. После окончания загрузки ОС управление передается командному процессору и на экране появляется приглашение системы к вводу команды пользователя.

Заметим, что в оперативной памяти во время работы компьютера обязательно должны находится базовый модуль ОС и командный процессор. Следовательно, нет необходимости загружать в оперативную память все файлы ОС одновременно. Драйверы устройств и утилиты могут подгружаться в ОЗУ по мере необходимости, что позволяет уменьшать обязательный объем оперативной памяти, отводимый под системное программное обеспечение.

  1. Функциональное программирование. Основные положения. Основные отличия от других типов языков программирования.

Функциональное программирование - представляет собой набор определенных функций. Функцию определяют через другую функцию. В функциональном программировании вся программа ФУНКЦИЯ.

Программа на таком языке представляет собой совокупность описаний функций и выражения, которые необходимо вычислить. Оно вычисляется посредством редукции (т. е. серии упрощений). Функциональное программирование не использует концепцию памяти как хранилища значений переменных. Операторы присваивания отсутствуют, вследствие чего переменные обозначают не области памяти, а объекта программы, что полностью соответствует понятию переменной в математике. Наличие стройной математической основы обеспечивает возможность использования алгебраических методов создания структуры, преобразования и исследования программ. Это в какой-то мере приближает их к описанию структуры мышления человека.

Примером функционального языка является язык LISP (List Processing-обработка списков) Разработан и реализован в Массачусетском технологическом институте в 1959 г. Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.

Основные положения этого стиля восприняты многими языками программирования с общей логикой уточнения решаемых задач и обобщения решений на основе выбранных специально базовых конструкций:

  1. Базовые конструкции определяются как строгие функции.

  2. При необходимости выполняются преобразования программ, (компиляция, оптимизация, ре-факторинг и т.п.) для улучшения эксплуатационных характеристик, связанных с процессами исполнения программ.

  3. Важный критерий качества программирования - полнота системы решений и универсальность реализованных определений для синтаксически управляемой обработки данных функциями высоких порядков (компилятор и т.п.), что существенно повышает надежность проектов для развивающихся постановок задач.

  4. Разработка ИС предусматривает выполнение ряда шагов, начальные из которых выполняют роль упрощенных прототипов для реализации последующих, возможно другими, более эффективными, средствами.

функциональное программирование представляет собой набор определенных функций, которые определяются рекурсивно или через другие функции. В процессе выполнения программы, ф-ии получают параметры, вычисляют и возвращают результат, в случае необходимости вычисляя значения других функций.

Порядок вычисления в функц ЯП не описывается, описывается лишь желаемый результат в виде системы функций. Большинство функц ЯП реализуются как интерпретаторы (Lisp, Haskell, ML, Standart ML…)

Свойства функциональных ЯП:

  1. краткость и простота – ФЯП выходят на более абстрактный уровень, чем традиц. ЯП

  2. строгая типизация – большинство ошибок могут быть исправлены на стадии компиляции. Строгая типизация позволяет генерировать эффективный код и ускорить выполнение программ. Некоторые ФЯП поддерживают перегрузку операций.

  3. Модульность – позволяет разделить программу на несколько сравнительно независимых частей с четко определенными связями между ними.

  4. Отсутствие побочных эффектов – в чистом функ программировании оператор присваивания отсутствует. Объекты нельзя уничтожать\изменять, можно только создавать новые, путем декомпозиции или синтеза существующих. Таким образом, невозможно получить 2 разных значения при вызове 1 и той же функции с одним аргументом дважды, как бывает в императивных ЯП.

  5. Отложенное вычисление – аргументы в функции вычисляется, только если они нужны для вычисления результата, тогда как в традиционных ЯП вызов функции приводит к вычислению всех аргументов. (если ФЯП не поддерживает отложенные вычисления, он называется строгим)

Соседние файлы в папке ЯП