- •Введение
- •Лекция 1. Предмет информатики. Информатика как наука
- •Лекция 2. Понятие информации
- •Лекция 3. Информационный процесс в автоматизированных системах
- •Лекция 4. Кодирование информации
- •Лекция 5. Понятие о системах счисления
- •Лекция 6. Переводы чисел, простейшая арифметика в системах счисления
- •Лекция 7. Информатизация общества
- •Лекция 8. Технические средства реализации информационных процессов
- •Лекция 9. Магистрально-модульный принцип архитектуры персональных компьютеров
- •Лекция 10. Устройство персонального компьютера
- •Лекция 11. Алгоритмические основы информатики
- •Лекция 12. Форма записи алгоритма
- •Лекция 13. Структурное программирование
- •Лекция 14. Предпрограммная подготовка задачи
- •Лекция 15. Понятие о языках программирования
- •Лекция 16. Программное обеспечение эвм
- •Лекция 17. Операционные системы
- •Лекция 18. Виды прикладного по
- •Лекция 19. Прикладное по
- •Лекция 20. Компьютерные вирусы
- •Лекция 21. Методы защиты от компьютерных вирусов
- •Лекция 22. Компьютерные сети
- •Лекция 23. Работа в сети
- •Соединение локальных сетей между собой
- •Беспроводные сети
- •Лекция 24. Защита информации и сведений, составляющих государственную тайну
- •Лекция 25. Приемы и предупреждение компьютерных преступлений
- •394026 Воронеж, Московский просп., 14
Лекция 15. Понятие о языках программирования
Языки программирования.
Понятие компилятора, транслятора и интерпретатора.
Системы программирования.
Языки программирования
В настоящее время в мире существует несколько сотен реально используемых языков программирования, для каждого из которых существует своя область применения. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования - чем меньше детализация, тем выше уровень языка. По этому критерию можно выделить следующие уровни языков программирования:
машинные;
машинно-ориентированные (ассемблеры);
машинно-независимые (языки высокого уровня).
Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.
Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Языки высокого уровня делятся на:
алгоритмические (Basic, Рascal, C и др.), которые предназначены для однозначного описания алгоритмов;
логические (Рrolog, Lisр и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.
объектно-ориентированные (C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
Каждый компьютер имеет свой машинный язык, то есть свою совокупность машинных команд, которая отличается количеством адресов в команде, назначением информации, задаваемой в адресах, набором операций, которые может выполнить машина и др.
При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций.
Процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять.
Когда нужно иметь эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).
Язык Ассемблера – это система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде.
Он позволяет программисту пользоваться текстовыми мнемоническими кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Позволяет использовать различные системы счисления для представления числовых констант, использовать комментарии и др.
Перевод программы с языка ассемблера на машинный язык осуществляется специальной программой, которая называется ассемблером и является простейшим транслятором.
Транслятор (англ. translator - переводчик) - программа-переводчик, которая преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.
Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.
С помощью языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст либо автоматически перевести в машинный код, затем использовать отдельно от исходного текста, либо сразу выполнять команды, указанные в тексте программы.
Компилятор (англ. compiler - составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Компилятор полностью обрабатывает весь текст программы, просматривая его в поисках синтаксических ошибок, выполняет определенный смысловой анализ и затем автоматически переводит на машинный язык – генерирует машинный код. Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы. В результате законченная программа получается компактной и эффективной, работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код.
Основной недостаток компиляторов – трудоемкость трансляции языков программирования, ориентированных на обработку данных сложной структуры, часто заранее неизвестной или динамически меняющейся во время работы программы. Тогда в машинный код приходится вставлять множество дополнительных проверок, анализировать наличие ресурсов операционной системы, динамически их захватывать и освобождать, формировать и обрабатывать в памяти компьютера сложные объекты, что на уровне жестко заданных машинных инструкций осуществить довольно трудно, а для ряда задач практически невозможно.
Интерпретатор (англ. interpreter - истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
Интерпретатор берет очередной оператор языка их текста программы, анализирует его структуру и затем сразу исполняет. Только после того как текущий оператор успешно выполнен, интерпретатор перейдет к следующему. Если один и тот же оператор должен выполняться в программе многократно, интерпретатор всякий раз будет выполнять его так, как будто встретил впервые. Программы, в которых требуется осуществить большой объем повторяющихся вычислений, могут работать медленно. Чтобы выполнить эту программу на другом компьютере там также должен быть установлен интерпретатор – без него текст программы – это просто набор символов.
Интерпретатор моделирует некую виртуальную вычислительную машину, для которой базовыми инструкциями служат не элементарные команды процессора, а операторы языка программирования.
С помощью интерпретатора допустимо в любой момент остановить работу программы, исследовать содержимое памяти, организовать диалог с пользователем, выполнить сколь угодно сложные преобразования данных и при этом постоянно контролировать состояние окружающей программно-аппаратной среды, благодаря чему достигается высокая надежность работы. Интерпретатор при выполнении каждого оператора проверяет множество характеристик операционной системы и при необходимости максимально подробно информирует разработчика о возникающих проблемах. Интерпретатор удобен для использования в качестве инструмента изучения программирования, так как позволяет понять принципы работы любого отдельного оператора языка.
После того, как программа откомпилирована, ни сама исходная программа, ни компилятор больше не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался.
Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения.
В реальных системах программирования перемешаны технологии и компиляции, и интерпретации. В процессе отладки программа может выполняться по шагам, а результирующий код не обязательно будет машинным – он даже может быть исходным кодом, написанным на другом языке программирования, или промежуточным машиннонезависимым кодом абстрактного процессора, который в различных компьютерных архитектурах станет выполняться с помощью интерпретатора и компилироваться в соответствующий машинный код.
Системы программирования
Система программирования - система для разработки новых программ на конкретном языке программирования.
Современные системы программирования обычно предоставляют пользователям мощные и удобные средства разработки программ. В них входят:
компилятор или интерпретатор;
интегрированная среда разработки;
средства создания и редактирования текстов программ;
обширные библиотеки стандартных программ и функций;
отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;
"дружественная" к пользователю диалоговая среда;
многооконный режим работы;
мощные графические библиотеки; утилиты для работы с библиотеками
встроенный ассемблер;
встроенная справочная служба;
другие специфические особенности.
Популярные системы программирования – Turbo Basic, Quick Basic, Turbo Pascal, Turbo C. В последнее время получили распространение системы программирования, ориентированные на создание Windows-приложений:
пакет Borland Delphi (Дельфи).
пакет Microsoft Visual Basic.
пакет Borland C++.
Контрольные вопросы
Приведите примеры языков программирования: машинных, машинно-ориентированных и машинно-независимых.
Что такое язык ассемблера?
На какие виды делятся языки высокого уровня?
Что такое компилятор, транслятор и интерпретатор?
Что такое системы программирования?
Приведите примеры наиболее популярных систем программирования.
Что входит в современные системы программирования?