Интеграция разнородных языковых механизмов в рамках одного языка программирования

Интеграция разнородных языковых механизмов в рамках одного языка программирования

Автор: Столяров, Андрей Викторович

Шифр специальности: 05.13.11

Научная степень: Кандидатская

Год защиты: 2002

Место защиты: Москва

Количество страниц: 105 с. ил

Артикул: 2320461

Автор: Столяров, Андрей Викторович

Стоимость: 250 руб.

Интеграция разнородных языковых механизмов в рамках одного языка программирования  Интеграция разнородных языковых механизмов в рамках одного языка программирования 

Введение
Разнообразие языковых средств и проблема выбора
О классификации языков программирования
Термин парадигма и его применение в программировании Технологическая моти вация мул ьти парад и гмального подхода Мультипарадигмальный подход и человеческий фактор . . Проблема сочетания разнородных языковых механизмов . Существующие подходы к построению программ с использованием различных стилей
Пакеты взаимосвязанных программ.
Встраиваемые интерпретаторы.
Расширяемые интерпретаторы .
Компиляция из одного языка в другой.
Создание нового языка
Расширение существующего языка
Новый подход постановка задачи .
1 Предлагаемый подход
1.1 Основные предпосылки
1.1.1 Си как язык моделирования алгебр
1.1.2 Язык Лисп как алгебра.
1.2 Алгебра 8вы ражен ий как предметная область библиотеки классов
1.3 Средства конструирования списков
1.4 Выбор базового языка.
1.5 Итоги .
2 Импорт парадигм языка Лисп в проекты на Си ИК Библиотека Ii
2.1 Мотивация выбора языка.
2.1.1 Ниша языка Лисп в мультипарадигмальном
программировании.
2.1.2 Особенности языка Лисп в контексте метода
непосредственной интеграции
2.1.3 Диалекты языка Лисп и потребности мульти
парадигмальных проектов
2.2 Библиотека Ii.
2.2.1 Основные классы архитектуры
2.2.2 Списки и их представление
2.2.3 Средства конструирования списков
2.2.4 Лисповский символ и его представление
2.2.5 Лексическое и динамическое связывание .
2.2.6 Поддержка реализации функции
2.2.7 Функциональные типы данных.
2.2.8 Средства описания библиотечных функций . .
2.2.9 Применение лиспфункций .
2.2. Дополнительные типы выражений.
2.2. Пример кода.
2.3 Вспомогательный транслятор.
2.3.1 Назначение и принципы работы
2.3.2 Директивы транслятора
2.3.3 Строение генерируемого модуля
2.3.4 Отображение имен символов языка Лисп на
множество идентификаторов Си
2.3.5 Соглашения об именах.
2.3.6 Реализация и процесс раскрутки транслятора
2.4 Ii i как диалект Лиспа.
2.5 Итоги .
3 Импорт парадигм языка Рефал в проекты на Си . Расширение библиотеки Ii
3.1 Мотивация выбора языка.
3.2 Рефалподе и стема библиотеки Ii
3.2.1 Моделирование рефалвыражений с помощью
лисповских списков.
3.2.2 Рефалпеременные. Возможность расширения
их функциональности
3.2.3 Конструкции расширенного Рефала5 и их моделирование .
3.2.4 Лиспфункции и их вызов из рефалфункций .
3.2.5 Вызов рефапфункций из кода на Лиспе . .
3.3 Транслятор Ре фал а
3.3.1 Первая промежуточная версия.
3.3.2 Версия с использованием возможностей расширения .
3.4 Итоги .
4 Импорт парадигм логического программирования в проекты на СиЦ
4.1 Выбор альтернативного языка.
4.1.1 Логическое программирование.
4.1.2 Языки логического программирования. Выбор
языка для интеграции.
4.1.3 Интеграция с уже введенными средствами . .
4.2 Дэйталогподсистема библиотеки 1п1,еЫЬ
4.2.1 Предикаты Дэйтапога.
4.2.2 Атомы.
4.2.3 Константы и переменные
4.2.4 Средства конструирования Дэйталогконструкций
4.2.5 Алгебра подстановок.
4.2.6 Дэйталогмашина. Итераторы
4.2.7 Обеспечение работы со списками
4.2.8 Обращения к Лиспмашине.
4.3 Итоги .
Заключение
Краткий обзор проделанной работы
Основные результаты.
Перспективы.
Благодарности
Ли тера т ура
Предисловие
Эффективность работы программиста во многом зависит от адекватности используемых изобразительных средств по отношению к решаемой задаче. Так. было бы сложно решать задачу символьного дифференциирования. имея в распоряжении только представление текста как массива символов. С другой стороны, весьма страно было бы использовать для написания интерактивной программы язык, допускающий только чистые функции, не имеющие побочных эффектов хотя это и возможно при наличии ленивых вычислений.
Ограничиваясь при реализации проекта одним конкретным языком. мы. как правило, вынуждены довольствоваться наработанными вокруг этого языка изобразительными приемами, что при решении частных подзадач может оказаться неудобным за неимением в избранном языке адекватных средств. Поэтому у многих программистов часто возникает потребность воспользоваться при решении той или иной частной подзадачи средствами языка программирования, отличного от основного языка проекта.
В то же время попытка использования в проекте нескольких языков может обернуться столь высокими накладными расходами. что преимущества применения альтернативных изобразительных средств окажутся сведены на нет.
В настоящей работе предложено решение задачи предоставления программистам, владеющим альтернативными языками лакими. как Лисп. Пролог. Рефал и т.п удобных возможностей применения своих навыков в рамках проектов, реализуемых на индустриальных языках программирования в частности, на языке Си . Предложенный метод позволяет избежать большинства проблем. характерных для многоязыковых проектов.
Введение


Эффективность работы программиста во многом зависит от адекватности используемых изобразительных средств по отношению к решаемой задаче. Так. С другой стороны, весьма страно было бы использовать для написания интерактивной программы язык, допускающий только чистые функции, не имеющие побочных эффектов хотя это и возможно при наличии ленивых вычислений. Ограничиваясь при реализации проекта одним конкретным языком. Поэтому у многих программистов часто возникает потребность воспользоваться при решении той или иной частной подзадачи средствами языка программирования, отличного от основного языка проекта. В то же время попытка использования в проекте нескольких языков может обернуться столь высокими накладными расходами. В настоящей работе предложено решение задачи предоставления программистам, владеющим альтернативными языками лакими. Лисп. Пролог. Рефал и т. Си . Предложенный метод позволяет избежать большинства проблем. Появившиеся в конце х годов прошедшего столетия языки программирования высокого уровня показали, что осмысление компьютерной программы возможно в терминах иных, нежели привычные на тот момент номера инструкций процессора и адреса ячеек памяти. Уже самые ранние языки, среди которых были Фортран и Лисп . С появлением первых языков программирования высокого уровня связано начало бесконечного процесса поиска лучшего в том или ином смысле языка. Уже в году Дженет Самметт Л. К настоящему времени общее число разработанных языков программирования оценивается несколькими тысячами. Многие авторы отмечают, что правильный выбор языка программирования является ключевой проблемой, от которой существенно зависит успех любого программистского проекта. ЭВМ, язык программирования нечто большее, чем просто средство описания, алгоритмов он несет в себе систему понятий, на основе которых человек может обдумывать свои задачи, и нотацию, с помощью которой он может вырази ть свои соображения по поводу решения задачи. Эдсгер Дейкстра в своей лекции лауреата премии Тьюринга, озаг главленной Смиренный программист . Все мы знаем, что единственное мыслительное средство, посредством которого вполне конечный фрагмент рассуждения может охватывать миллионы случаев, называется абстракцией. Поэтому наиболее ваэсным видом деятельности компетентного программиста можно считать эффективную эксплуатацию его способиости к абстрагированию. Инструменты, которые мы пытаемся, использовать, а также язык или обозначения, применяемые нами для. Определяющую роль выбора языка программирования прекрасно иллюстрирует пример, приведенный Тимоти Баддом в . В этом примере два программиста решают задачу выделения повторяющихся последовательностей длиной не менее М в массиве целых размером М. Первый программист решает задачу на Фортране с помощью двух вложенных циклов, получая в результате неудовлетворительно медленное решение. Второй же. А . АРЬ. Фортрана, является языком интерпретируемым, получает решение. Автор заостряет внимание читателя на том. Очевидно, что попытка рассмотрения всех или почти всех существующих языков с целью выбора наиболее подходящего обречена на провал, т. К счастью для программистовпрактиков. Такие языки следует считать мертвыми. В некоторых специальных случаях возможно приложение усилий для реанимации мертвого языка специально для нужд того или иного проекта, однако такие случаи редки. Дело в том. Кроме того, все языки программирования обладают алгоритмической полнотой1, что означает, что любая программа может быть реализована на любом языке. Возможно, что язык, на котором мы вынуждены в силу какихлибо причин остановиться. В тех редких случаях, когда неадекватность имеющихся средств требованиям предметной области оказывается слишком высокой, как правило, и возникают новые языки. Впрочем, если для начала эры языков высокого уровня такая ситуация была харатерной. Существую различные способы классификации языков программирования. С точки зрения выбора языка для решения той или иной задачи наиболее релевантной оказывается классификация, опирающаяся на основные методики и подходы к описанию алгоритмов концепции, стимулируемые данным языком .

Рекомендуемые диссертации данного раздела

28.06.2016

+ 100 бесплатных диссертаций

Дорогие друзья, в раздел "Бесплатные диссертации" добавлено 100 новых диссертаций. Желаем новых научных ...

15.02.2015

Добавлено 41611 диссертаций РГБ

В каталог сайта http://new-disser.ru добавлено новые диссертации РГБ 2013-2014 года. Желаем новых научных ...


Все новости

Время генерации: 0.370, запросов: 244