Similar presentations:
Интегрированные среды разработки программ. Лекция 2
1.
Интегрированные средыразработки программ
Лекция 2
2.
2Интегрированная среда разработки программ
должна поддерживать следующие процессы:
процесс разработки кода и интерфейса (design time)
процесс компиляции (compile time)
процесс компоновки (link time)
процесс выполнения (run time)
3.
3Интегрированная среда разработки программного
обеспечения
(IDE, Integrated development environment)
Транслятор с языка программирования
Редактор кода
Отладчик
Средства автоматизации сборки
Библиотеки стандартных функций
4.
4Технология RAD (Rapid application development,
быстрая разработка приложений)
Средства визуальной разработки программ
Браузер классов
Инспектор объектов
Диаграмма иерархии классов
5.
5Интегрированные среды разработки программного
обеспечения
среды разработки,
предназначенные
для нескольких языков
программирования
(Microsoft Visual Studio)
среды разработки,
предназначеные
для одного языка
программирования
(Borland Delphi)
Сравнение различных IDE
6.
6Транслятор (от англ. translate –переводить)
переводит программу с языка высокого
уровня на язык команд процессора
Виды трансляторов:
Компилятор – транслирует программу целиком и формирует выполняемый
код, который может затем исполняться без системы программирования
Интерпретатор – транслирует и сразу исполняет программу, не формируя
объектный код
Выходной язык транслятора может быть машинным языком для компьютера с
другой архитектурой, нежели тот, в котором работает транслятор. Такой
транслятор называется кросс-транслятором, а система
программирования кросс-системой программирования (используются
для разработки программ для архитектур, не имеющих собственных
операционных систем или систем программирования (контроллеры,
управляющие микропроцессоры)
7.
7Между компиляцией и интерпретацией нет
непроходимого барьера
Выполняемый код
совпадает с
машинным –
чистая компиляция.
Промежуточный код
совпадает с
исходным –
чистая интерпретация.
8.
8Языки программирования принято разделять на
компилируемые и интерпретируемые в силу типичных
различий:
скорость выполнения программы, скомпилированной в
машинный код, превосходит скорость интерпретируемой
программы, как правило, в десятки и сотни раз;
в случае использования компилятора, при внесении
изменений в исходный код программы, прежде чем эти
изменения можно будет увидеть в работе программы,
необходимо выполнить компиляцию исходного текста.
9.
9 В ранние годы развития программирования на языки сильно влиялвыбор способа выполнения
Компилируемые языки требовали задания типа данных переменной
до ее первого использования, интерпретируемые языки в силу своей
динамической природы позволяли отказаться от этого требования, что
давало больше гибкости и ускоряло разработку.
Изначально интерпретируемые языки преобразовывались в машинный
код построчно, то есть каждая логическая строка компилировалась
непосредственно перед выполнением. В результате каждая
инструкция, заключенная в тело цикла и исполняемая несколько раз,
столько же раз обрабатывалась транслятором.
В настоящее время большинство интерпретируемых языков
предварительно транслируются в промежуточное представление байт-код, который исполняется интерпретатором или виртуальной
машиной.
10.
Байт-код10
(англ. byte-code) псевдокод — машинно-независимый код низкого уровня,
генерируемый транслятором и исполняемый байт-кода (он называется
виртуальной машиной).
Занимает промежуточное положение между компиляцией в машинный код
и интерпретацией.
Преимущество — в портируемости, т. е. один и тот же байт-код может
исполняться на разных платформах и архитектурах, как и интерпретируемые
языки.
Байт-код менее абстрактный, более компактный и более «компьютерный»,
чем исходный код, эффективность байт-кода обычно выше, чем чистая
интерпретация исходного кода, предназначенного для правки человеком.
Многие современные интерпретируемые языки (Perl, PHP, Ruby) используют
байт-код.
Программы на Java обычно передаются на целевую машину в виде байткода, который перед исполнением транслируется в машинный код «на лету»
с помощью JIT-компиляции.
11.
12JIT-компиляция
Just-in-time compilation (JIT, компиляция «на лету»), dynamic
translation (динамическая компиляция) — технология увеличения
производительности программных систем, использующих байткод, путём компиляции байт-кода в машинный код
непосредственно во время работы программы.
Таким образом достигается высокая скорость выполнения по
сравнению с интерпретируемым байт-кодом, сравнимая с
компилируемыми языками за счёт увеличения потребления памяти
(для хранения результатов компиляции).
JIT используется в реализациях Java, JavaScript, .NET Framework
Видимо, впервые компиляция на лету была введена в реализациях
динамического интерпретируемого языка Smalltalk.
12.
13Преимущества интерпретации
Большая портируемость (переносимость, англ. portability),
кроссплатформенность — программа будет работать на любой
платформе, на которой есть соответствующий интерпретатор.
Как правило, более совершенные и наглядные средства
диагностики ошибок в исходных кодах.
Упрощение отладки исходных кодов программ.
Меньшие размеры кода по сравнению с машинным кодом,
полученным после компиляторов.
Принципы и стиль программирования не требуют создания и
описания специальных конструкций, оформляющих программу
(манифестов, классов, типов данных). Это позволяет
разрабатывать и тестировать код постепенно, что удобно для
написания небольших программ и для изолированной разработки
модулей сложных систем.
13.
14Недостатки интерпретации
Меньшая производительность по сравнению с
компилируемыми языками, преобразуемыми в машинный
код. Трансляция в байт-код и JIT-компиляция не решают этой
проблемы полностью. Дополнительный слой интерпретатора
или виртуальной машины замедляет выполнение программы
и может требовать больше ресурсов.
Большинство ошибок можно поймать только во время
выполнения. В результате в среднем интерпретируемый код
следует тестировать тщательнее компилируемого, строже
придерживаться соглашений по оформлению программ и
использовать дополнительные анализаторы качества кода.
14.
15Платформа .NET Framework
Под платформой понимается нечто большее, чем среда
разработки.
Платформа .NET включает не только среду разработки для нескольких
языков программирования, называемую Visual Studio.NET, но
механизмы поддержки баз данных, электронной почты и коммерции
и т.п.
В эпоху стремительного развития Интернета , объединяющего
компьютеры разных архитектур, важнейшими задачами при
создании программ становятся:
переносимость — возможность выполнения на различных типах
компьютеров;
безопасность — невозможность несанкционированных действий;
использование готовых компонентов — для ускорения разработки;
межъязыковое взаимодействие — возможность применять
одновременно несколько языков программирования.
15.
Платформа .NET позволяет успешно решать все эти задачи16 Для обеспечения переносимости компиляторы, входящие в состав
платформы, переводят программу в промежуточный язык (Microsoft
Intermediate Language, MSIL, или просто IL ) , который не содержит
команд, зависящих от языка, операционной системы и типа
компьютера. Программа на этом языке выполняется под управлением
общеязыковой среды выполнения (Common Language Runtime, CLR).
Среда CLR может быть реализована для любой операционной
системы. При выполнении программы CLR вызывает JIT-компилятор,
переводящий код с языка IL в машинные команды конкретного
процессора.
Каждая часть программы компилируется один раз и сохраняется в
кэше для дальнейшего использования.
Компилятор в качестве результата своего выполнения создает сборку —
файл с расширением ехе или dll, который содержит код на языке IL и
метаданные.
Метаданные представляют собой сведения об объектах, используемых в
программе, а также сведения о самой сборке. Они позволяют
организовать межъязыковое взаимодействие, обеспечивают
безопасность и облегчают развертывание приложений, то есть
установку программ на компьютеры пользователей.
16.
17Платформа .NET Framework
Платформа .NET Framework является
надстройкой над операционной системой, в
качестве которой может выступать любая
версия Windows. На сегодняшний день
платформа .NET Framework включает в себя:
четыре официальных языка: С#, VB.NET,
Managed C++ (управляемый C++) и
JScript .NET;
объектно-ориентированную среду CLR
( Common Language Runtime ), совместно
используемую этими языками для создания
приложений под Windows и для Internet;
ряд связанных между собой библиотек
классов под общим именем FCL
(Framework Class Library).
17.
18Технология .NET
.NET-приложения
исполняются в два этапа.
На первом этапе исходный
код компилируется во время
построения проекта,
получается сборка
(assembly), содержащая
команды промежуточного
языка MSIL. Код IL сохраняется
в файле.
18.
19Технология .NET
При этом файлы MSIL,
генерируемые компилятором,
например, С#, идентичны ILфайлам, генерируемым
компиляторами с других языков
.NET.
Самой важной
характеристикой среды CLR
является то, что она общая; одна
среда выполняет программы,
написанные на любом из
доступных платформе языков.
Их число постоянно
увеличивается.
19.
20Технология .NET
Второй этап компиляции
наступает непосредственно
перед фактическим
выполнением. На этом этапе
CLR транслирует
промежуточный код IL в
низкоуровневый собственный
машинный код, выполняемый
процессором.
20.
21Технология .NET
При выполнении .NETпрограммы системы CLR
активизирует JIT-компилятор,
который превращает MSIL во
внутренний код процессора.
Этот этап известен как
оперативная компиляция "на
лету" (Just-In-Time) или JITкомпиляция (JIT'ing), и он
проходит одинаково для всех
приложений .NET.
21.
22Технология .NET
При исполнении программы
CLR берет на себя управление
памятью, контроль типов и
решает за приложение ряд
других задач.
22.
24Лекция окончена
Спасибо за внимание
☺
programming