- •Оглавление
- •Основные понятия объектно-ориентированного программирования.
- •Технологии разработки программных средств.
- •Процесс подготовки программ в интегрированной среде программирования. Этапы подготовки программ в интегрированной среде программирования.
- •Параллельный и последовательный ввод-вывод. Сравнительная оценка, достоинства и недостатки.
- •Системная шина ibm pc
- •Ввод вывод в программно-управляемом режиме, по прерываниям от ву и в режиме пдп. Сравнительная оценка достоинства и недостатки.
- •Ввод сигнала в программно-управляемом режиме. Пример реализации.
- •Ввод сигнала по прерываниям. Принципы организации и логика работы.
- •Ввод сигнала по прерываниям. Пример реализации.
- •Универсальный последовательный канал usb. Назначение, основные принципы работы и характеристики.
- •Канал ближней беспроводной связи bluetooth. Назначение, основные принципы работы и характеристики.
- •Локальные компьютерные сети. Назначение, области применения. Аппаратные и программные средства.
- •Аппаратные технические средства:
- •Программные технические средства:
- •Локальные компьютерные сети. Принципы логической организации (одноранговые и с выделенным сервером).
- •Локальные компьютерные сети. Защита информации в лкс. (методы защиты информации в одноранговых лкс и сетях с выделенным сервером)
- •Глобальная компьютерная сеть «интернет». Сетевые протоколы tcp/ip.
- •Адреса в "интернет" (доменные, ip, url)
- •1.Доменные адреса
- •3. Указатели url
- •Электронная почта.
- •Глобальная компьютерная сеть "интернет". Понятие гипертекста. «всемирная паутина» www.
- •Поиск медицинской информации в «интернет». Система medline.
- •Базы данных. Основные понятия. Требования и основные принципы построения.
- •Основные требования к организации базы данных
- •Базы данных. Реляционная модель логической организации.
- •Иерархическая модель данных
- •Сетевая модель данных
- •Реляционная модель данных
- •Экспертные системы. Основные понятия и области применения.
- •Экспертные системы. Средства разработки. Примеры эс медицинского назначения.
- •Разработка прототипа эс.
- •Медицинская экспертная система дифференциальной диагностики
- •Медицинская экспертная система Хронос Эксперт
- •Экспертная система "Домашний Доктор"
-
Технологии разработки программных средств.
Основные принципы построения П.О.:
-
Компилирующие программы;
-
Интерпретируемые (MATLAB);
-
Программы в работающие в режиме динамической компиляции.
Компиляция — перевод текста с языка программирования на внутренний язык компьютера.
*Трансляция преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Виды компиляции:
-
Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.
-
Построчная. То же, что и интерпретация.
-
Условная. Компиляция, при которой транслируемый текст зависит от условий, заданных в исходной программе компилятора. Так, в зависимости от значения некоторой константы, можно включать или выключать трансляцию части текста программы.
Структура компилятора.
Процесс компиляции состоит из следующих этапов:
-
Лексический анализ. На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем (лексема-слово как абстрактная единица естественного языка).
-
Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в дерево.
-
Семантический анализ. Дерево разбора обрабатывается с целью установления его семантики (смысла) — например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д. Результат обычно называется «промежуточным представлением/кодом», и может быть дополненным деревом разбора, новым деревом, абстрактным набором команд или чем-то ещё, удобным для дальнейшей обработки.
-
Оптимизация. Выполняется удаление излишних конструкций и упрощение кода с сохранением его смысла. Оптимизация может быть на разных уровнях и этапах — например, над промежуточным кодом или над конечным машинным кодом.
-
Генерация кода. Из промежуточного представления порождается код на целевом языке.
Главное преимущество компилируемых языков — это скорость исполнения. Поскольку они конвертируются в машинный код, они работают гораздо быстрее и эффективнее, нежели интерпретируемые, особенно если учесть сложность утверждений некоторых современных скриптовых интерпретируемых языков.
Низкоуровневые языки как правило являются компилируемыми. Кроме того, компилируемые языки дают разработчику гораздо больше возможностей в плане контроля аппаратного обеспечения, например, управления памятью и использованием процессора.
Проблемы компилируемых языков, в общем-то, очевидны. Для запуска программы, написанной на компилируемом языке, её сперва нужно скомпилировать. Это не только лишний шаг, но и значительное усложнение отладки, ведь для тестирования любого изменения программу нужно компилировать заново. Кроме того, компилируемые языки являются платформо-зависимыми, поскольку машинный код зависит от машины, на которой компилируется и исполняется программа.
Интерпретируемые языки
В отличие от компилируемых языков, интерпретируемым для исполнения программы не нужен машинный код; вместо этого программу построчно исполнят интерпретаторы. Раньше процесс интерпретации занимал очень много времени, но с приходом таких технологий, как JIT-компиляция, разрыв между компилируемыми и интерпретируемыми языками сокращается. Примерами интерпретируемых языков являются PGP и Python. Вот некоторые из концептов, которые стали проще благодаря интерпретируемым языкам:
Независимость от платформы;
Меньший размер исполняемых файлов:
Основным недостатком интерпретируемых языком является их невысокая скорость исполнения. Тем не менее, JIT-компиляция позволяет ускорить процесс благодаря переводу часто используемых последовательностей инструкции в машинный код.
Редко используются, из-за неудобности
Компиляция в MSIL
MSIL (Microsoft Intermediate Language) – промежуточный язык Microsoft
В “сборку” входят инструменты, команды (MSIL), Метаданные, манифест.
Метаданные – буквально переводится как "данные о данных", информация о другом наборе данных. Метаданные — это структурированные, кодированные данные, которые описывают характеристики объектов-носителей информации, способствующие идентификации, обнаружению, оценке и управлению этими объектами.
Манифест – общее название для сборки. Манифест содержит "объявление" рассказывающее (обычно другим программам) что-то о данной программе/модуле и список внешних ссылок.
При компиляции компилятор преобразует исходный код в промежуточный язык Microsoft (MSIL), представляющий собой независимый от процессора набор инструкций, который можно эффективно преобразовать в машинный код. Язык MSIL включает инструкции для загрузки, сохранения, инициализации и вызова методов для объектов, а также инструкции для арифметических и логических операций, потоков управления, прямого доступа к памяти, обработки исключений и других операций. Перед выполнением код MSIL необходимо преобразовать в код для конкретного процессора, обычно с помощью JIT. Поскольку среда CLR предоставляет для каждой поддерживаемой компьютерной архитектуры один или несколько JIT-компиляторов, один набор инструкций MSIL можно компилировать и выполнять в любой поддерживаемой архитектуре. Когда компилятор создает код MSIL, одновременно создаются метаданные. Метаданные содержат описание типов в коде, включая определение каждого типа, на которые есть ссылки в коде, а также другие сведения, используемые средой выполнения во время выполнения.
CLR – (Common Language Runtime) работа с прог. на промежуточном языке CLR (Common language runtime) — общеязыковая исполняющая среда. Она обеспечивает интеграцию языков и позволяет объектам благодаря стандартному набору типов и метаданным), созданным на одном языке, быть «равноправными гражданами» кода, написанного на другом. Другими словами CLR этот тот самый механизм, который позволяет программе выполняться в нужном нам порядке, вызывая функции, управляя данными. И все это для разных языков (c#, VisualBasic, Fortran). Да, CLR действительно управляет процессом выполнения команд (машинного кода, если хотите) и решает, какой кусок кода (функцию) от куда взять и куда подставить прямо в момент работы программы. Процесс компиляции представлен на рисунке 2.
Механизм работы
CLR компилирует код приложения на языке MCIL во время его исполнения, а также предоставляет MSIL-программам (а следовательно и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотеке классов, рисунок 1
Рисунок 1 Механизм работы
Рисунок 2 Процесс компиляции
IL (Intermediate Language) — код на специальном языке . В него преобразуется код из других языков. Вот тогда-то и пропадает зависимость от выбранного языка.
Совмещенные языки. В совмещенных языках исходный код проходит две стадии обработки. На первой стадии происходит компиляция исходного кода до уровня промежуточного языка (байт-код в Java или язык MSIL в технологии .NET). На второй стадии происходит интерпретация промежуточного кода (в Java этим занимается виртуальная машина Java) или докомпиляция промежуточного кода до выполняемого машинного кода (эту функцию осуществляет среда выполнения CLR в технологии .NET).
Программы в режиме динамической компиляции.
Байт-код — набор инструкций, исполняемых виртуальной машиной. Каждый код операции байт-кода — один байт.
Динамическая компиляция
Из-за необходимости интерпретации байт-код выполняется значительно медленнее машинного кода сравнимой функциональности, однако он более переносим (не зависит от операционной системы и модели процессора). Чтобы ускорить выполнение байт-кода, используется динамическая компиляция, когда виртуальная машина транслирует псевдокод в машинный код непосредственно перед его первым исполнением (и при повторных обращениях к коду исполняется уже скомпилированный вариант).
-
JIT-компиляция (Just-in-time compilation, компиляция «на лету»), динамическая компиляция (dynamic translation) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию.
-
JIT-компиляция может быть применена как ко всей программе, так и к её отдельным частям. Например, текстовый редактор может на лету компилировать регулярные выражения для более быстрого поиска по тексту.
-
Большинство реализаций JIT имеют последовательную структуру: сначала приложение компилируется в байт-код виртуальной машины среды исполнения (AOT-компиляция), а потом JIT компилирует байт-код непосредственно в машинный код. В итоге при запуске приложения тратится лишнее время, что впоследствии компенсируется более быстрой его работой.
-
Основная цель использования JIT — достичь и превзойти производительность статической компиляции, сохраняя при этом преимущества динамической компиляции
*, по сути, JIT-компиляция является одной из форм динамической компиляции