Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты по информатике.docx
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
690.47 Кб
Скачать

Вопрос 28

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

Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.

Создатели языков по-разному толкуют понятие язык программирования. К наиболее распространённым утверждениям, признаваемым большинством разработчиков, относятся следующие:

  • Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.

  • Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.

  • Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Вопрос 29

Неструктурные языки (широко использовались 40-е годы)

Преимущества

  • Оптимизация программы под аппаратную архитектуру.

  • Как следствие, обеспечение высокой эффективности вычислений.

Недостатки

  • Для каждого типа вычислительной машины должен был быть написан свой вариант исходного кода.

Применение

  • Быстрые численные расчеты

  • Создание драйверов устройств

Примеры языков: Ассемблеры.

Директивные (структурные) языки (появились в 50-е годы)

Преимущества

  • Повторное использование ранее написанных блоков кода.

  • Высокая степень независимости программы от типа вычислительной машины.

  • Повышение эффективности труда разработчиков, в том числе и за счет абстрагирования от конкретных деталей аппаратного обеспечения.

Недостатки

  • Некоторая потеря в скорости вычислений.

Применение

  • Создание операционных систем и системных программ.

  • Разработка небольших пользовательских приложений.

  • Научные расчеты.

Примеры языков: FORTRAN, C, Pascal.

Декларативные (функциональные и логические) языки (зародились в 60-е годы)

Особенность

  • Программный код на декларативном языке программирования представляет собой описание действий, которые можно осуществлять, а не последовательный набор команд.

Преимущества

  • Легче формализуется математическими средствами.

  • Как следствие, программы проще тестировать, т.е. проверять на наличие ошибок.

  • Высокая степень абстракции.

Недостатки

  • Снижение скорости работы программы.

Применение

  • Доказательство теорем.

  • Возможность обработки разнородных данных.

a) Функциональные языки

Особенность

  • Программу на функциональном языке можно представить как функцию с одним или несколькими аргументами.

Преимущества

  • Автоматическое динамическое распределение памяти компьютера для хранения данных.

  • Программист получает возможность абстрагироваться от представления данных и других рутинных операциях и сосредоточиться на предметной области.

Недостатки

  • Нелинейная структура программы, следовательно, такое программирование сложно для понимания.

  • Относительно невысокая эффективность вычислений.

Применение

  • Обработка рекурсивных структур данных.

  • Обработка символьной информации.

Примеры языков: Haskell.

b) Логические языки

Особенность

  • Программа представляет собой совокупность правил или логических высказываний.

  • В программе могут быть логические причинно-следственные связи.

Преимущества

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

Недостатки

  • Узкий класс решаемых задач.

Применение

  • Эмуляция искусственного интеллекта.

  • Разработка экспертных систем.

Примеры языков: Prolog.

Объектно-ориентированные языки

Особенности

  • Программа представляет собой описание объектов, их свойств (или атрибутов), классов и отношений между ними, способов взаимодействия.

Преимущества

  • Смысловая близость к предметной области любой структуры и назначения. Механизм наследования свойств и методов позволяет строить производные понятия на основе базовых, создавая тем самым модели предметной области.

  • Использование ранее созданных библиотек классов позволяет сэкономить время при разработке новых программных продуктов.

  • Полиморфизм, заложенный в ООП, обеспечивает гибкость и универсальность программного обеспечения.

  • Удобство разработки ПО группой лиц.

Недостатки

  • Сложность полной формализации реального мира создает в дальнейшем трудности тестирования созданного ПО.

Применение

  • Разработка больших пользовательских приложений.

Примеры языков (большинство современных языков программирования поддерживают концепцию объектно-ориентированного программирования): C++, Python.

Языки сценариев

Особенности

  • Программа представляет собой совокупность возможных сценариев обработки данных. Выбор конкретного сценария зависит от наступления того или иного события.

Преимущества

  • Основные достоинства данного класса языков программирования унаследованы от объектно-ориентированных языков.

  • Легкость использования с инструментальными средствами автоматизированного проектирования и быстрого создания ПО.

Недостатки

  • Сложность тестирования.

  • Большое количество вариантов, которые требуется предусмотреть.

  • Большая вероятность побочных эффектов.

Применение

  • Интернет технологии

Примеры языков: JavaScript, Python, PHP.