Скачиваний:
12
Добавлен:
04.09.2023
Размер:
1 Мб
Скачать
☆

1 Концепция структурного программирования. Причины появления концепции. Модульность и функции. Ограничения на логические конструкции. Использование оператора goto.

Структу́рное программи́рование — парадигма программирования, в

основе которой лежит представление программы в виде иерархической структуры блоков.

В соответствии с парадигмой, любая программа, которая строится без использования оператора goto, состоит из трёх базовых управляющих конструкций: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведётся пошагово, методом

«сверху вниз».

Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и

соответственно, усложнения программного обеспечения.

Первоначально идея структурного программирования появилась на свет в связи с оператором goto и сомнениями в целесообразности его применения.

Структурное программирование призвано, в частности, устранить беспорядок и ошибки в программах, вызванные трудностями чтения кода,

несистематизированным, неудобным для восприятия и анализа исходным текстом программы. Такой текст нередко характеризуют как «спагетти-код».

Код с goto трудно форматировать, так как он может нарушать

иерархичность выполнения (парадигму структурного программирования) и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. Кроме того,

оператор goto мешает оптимизации компиляторами управляющих

структур.

Цель

структурного

программирования:

повысить

производительность труда программистов, в том числе при разработке

больших и сложных программных комплексов, сократить число ошибок,

упростить отладку, модификацию и сопровождение программного

обеспечения.

Теорема о структурном программировании (Теорема Бёма — Якопини)

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

последовательность — обозначается: f THEN g

ветвление — обозначается: IF p THEN f ELSE g

цикл — обозначается: WHILE p DO f,

где f, g — блок-схемы с одним входом и одним выходом, р — условие,

THEN, IF, ELSE, WHILE, DO — ключевые слова. Пояснение. Формула f THEN g означает следующее: сначала выполняется программа f, затем выполняется программа g

Подпрограмма (функция, процедура). Исторически сруктурное программирование тесно связано с технологией процедурного программирования, когда сложная программа строится по иерархической структуре в виде дерева функций (подпрограмм, процедур), вызывающих друг друга и обменивающихся данными через списки входных и выходных параметров.

Главная функция подпрограммы – структуризация программы.

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

2 Основные понятия концепции объектно-ориентированного программирования. Причины появления концепции. Объект или класс.

Отличие класса от функции. Понятия абстракции, инкапсуляции,

полиморфизма, наследования.

Недостатки структурного программирования:

Концепция структурного программирования является цельной и самодостаточной. Как таковых, недостатков у нее фактически нет.

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

(по трудоемкости) создание очень крупных программных комплексов,

способных эффективно загрузить ресурсы современного компьютера.

Проблемы:

−сложность и неудобство создания новых программ на основе ранее разработанных (необходимость разбираться в исходных программах и в списках параметров);

−сложность и громоздскость манипуляций со сложными объектами

ииспользования укрупненных функций (сложные объекты или функции приходится описывать через громоздкие структуры, содержащие многочисленных параметры);

−сложность организации многозадачного или многоканального режима обработки данных (многозадачность или многоканальность приходится прописывать в коде программ в явном виде, что очень усложняет

иувеличивает код).

Для решения перечисленных проблем была разработана новая

концепция, получившая название «Объектно-ориентированное

программирование».

Концепция структурного программирования тем не менее остается очень важным базовым принципом.

Объект (класс) – совокупность программного кода и связанных с ним данных, реализующая единую функцию.

Определение класса – программный код, описание логики функционирования.

Экземпляр класса – выделенное в памяти компьютера пространство для размещения данных, связанных с отдельным вызовом класса.

Основные понятия

Абстракция данных. Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой. В ООП рассматривают лишь абстракцию данных (нередко называя её просто

«абстракцией»), подразумевая набор наиболее значимых характеристик объекта, доступных остальной программе. Абстракция связана с понятием

«Черный ящик» - система, описанная только выполняемой функцией, входами и выходами. Инкапсуляция

Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Сокрытие внутренних данных класса.

Ограничение доступа внешних программ к данным класса (private,public, protected).

Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование,

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

Полиморфизм — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Встроенный полиморфизм языков программирования

(одинаковые знаки арифметических операций для разных типов чисел).

Полиморфизм данных, операторов, методов.

3 Платформа .NET Framework. Многоязыковое программирование.

Кроссплатформенность ПО. Web-ориентированные приложения.

.NET Framework — это программная платформа, выпущенная компанией Microsoft, которая подходит для разных языков программирования.

ASP.NET — технология создания веб-приложений и веб-сервисов от компании Microsoft.

Фреймворк .NET представляет мощную платформу для создания приложений.

Можно выделить следующие ее основные черты:

• Поддержка нескольких языков. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), благодаря чему .NET поддерживает несколько языков. При компиляции код на любом из этих языков компилируется в сборку на общем языке CIL (Common

Intermediate Language) - своего рода ассемблер платформы .NET. Поэтому при определенных условиях мы можем сделать отдельные модули одного приложения на отдельных языках. Например, служба, написанная на C++ для

Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#,

может быть перехвачено и обработано в Delphi.

• Кроссплатформенность. .NET является переносимой платформой (с

некоторыми ограничениями). Например, последняя версия платформы на данный момент - .NET 5 поддерживается на большинстве современных ОС

Windows, MacOS, Linux. Используя различные технологии на платформе

.NET, можно разрабатывать приложения для самых разных платформ - Windows, MacOS, Linux, Android, iOS, Tizen.

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

•Разнообразие технологий. Общеязыковая среда исполнения CLR и

базовая библиотека классов являются основой для целого стека технологий,

которые разработчики могут задействовать при построении тех или иных приложений. Например, для работы с базами данных в этом стеке технологий предназначена технология ADO.NET и Entity Framework Core. Для построения графических приложений с богатым насыщенным интерфейсом - технология

WPF и UWP, для создания более простых графических приложений - Windows

Forms. Для разработки мобильных приложений - Xamarin. Для создания веб-

сайтов и веб-приложений - ASP.NET и т.д.

• Производительность. Согласно ряду тестов веб-приложения на .NET 5 в ряде категорий сильно опережают веб-приложения, построенные с помощью других технологий. Приложения на .NET 5 в принципе отличаются высокой производительностью.

Также еще следует отметить такую особенность языка C# и фреймворка

.NET, как автоматическая сборка мусора. Общеязыковая среда CLR сама вызовет сборщик мусора и очистит память.

4 Динамическая компиляция. Основные технологии построения ПО (понятия интерпретации, компиляции, динамической компиляции).

Универсальный промежуточный язык программирования. Байт-код.

Общеязыковая исполняющая среда (CLR). Понятие сборки. Компоненты сборки. JIT компилятор.

Методы построения программ В наиболее общем виде можно выделить три основных метода:

1)Построение предварительно компилированных программ. При этом исполняемая программа переводится на внутренний язык компьютера и полностью строится до ее выполнения.

2)Работа программ в режиме интерпретации. Операторы программы переводятся на внутренний язык компьютера непосредственно в ходе ее выполнения, оператор за оператором (BASIC, MATLAB).

3)Работа программ в режиме динамической компиляции. Каждая часть программы предварительно преобразуется в код на промежуточном языке программирования. В ходе выполнения необходимые модули компилируются во внутренний язык компьютера и затем выполняются.

Преимущества технологии динамической компиляции

•Относительная лёгкость освоения и работы с языками, так как большинство .Net языков – языки высшего уровня.

•Быстрота выполнения конечных исполняемых файлов.

•Исполняющая среда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации.

•Исполняющая среда может контролировать выполнение байт-кода после компиляции, поэтому приложение может быть запущено в «песочнице»

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

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

При этом приложение будет показывать весь свой потенциал скорости,

который возможен на определённых процессорах.

Песочница (sandbox) — специально выделенная (изолированная) среда для безопасного исполнения компьютерных программ. Обычно представляет собой жёстко контролируемый набор ресурсов для исполнения гостевой программы — например, место на диске или в памяти. Доступ к сети,

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

Сборка мусора (garbage collection) — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора

(garbage collector), периодически освобождает память, удаляя объекты,

которые уже не будут востребованы приложениями.

Common Intermediate Language (сокращённо CIL) —

«высокоуровневый ассемблер» виртуальной машины .NET. Промежуточный

язык, разработанный фирмой Microsoft для платформы .NET Framework.

Прежнее название MSIL (Microsoft Intermediate Language) JIT-

компилятор CIL является частью CLR (common language runtime) — общей среды выполнения программ, написанных на языках .NET.

Все компиляторы, поддерживающие платформу .NET, должны транслировать код с языков высокого уровня платформы на язык CIL.

Общеязыковая исполняющая среда

Common Language Runtime (CLR — общеязыковая исполняющая среда) — исполняющая среда для байт-кода CIL, в который компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие).

CLR компилирует код приложения на языке CIL во время его исполнения, а также предоставляет CIL-программам (а следовательно, и

программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотеке классов .NET Framework, (Framework Class

Library).

JIT-компиляция (Just-In-Time compilation, компиляция «на лету»),

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

Сборка .NET

Сборка в терминологии .NET ( assembly) — двоичный файл (exe или dll),

содержащий номер версии информационного продукта, метаданные и инструкции для виртуальной машины .NET.

Файл с исходным кодом, написанном на любом языке поддерживаемой

.NET платформой (C#, VB.NET...), с помощью соответствующего компилятора компилируется в сборку.

Манифест - имя сборки, номер версии, список всех файлов сборки (для многофайловых сборок), ссылки на файлы с определением типов, ссылки на используемые сборки.

Метаданные типов - описывают все классы и члены классов,

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

CIL-код (байт-код) – программный код на промежуточном языке.

Ресурсы - любые неисполняемые данные, которые логически развертываются вместе с приложением.

Код компилируется в приложения или сборки с расширениями exe или dll на языке CIL. Далее при запуске на выполнение подобного приложения происходит JIT-компиляция (Just-In-Time) в машинный код, который затем выполняется. При этом, поскольку наше приложение может быть большим и содержать кучу инструкций, в текущий момент времени будет компилироваться лишь та часть приложения, к которой непосредственно идет обращение. Если мы обратимся к другой части кода, то она будет скомпилирована из CIL в машинный код. При том уже скомпилированная часть приложения сохраняется до завершения работы программы. В итоге это повышает производительность.

5 Построение приложения Windows в интегрированной среде

программирования

MS Visual Studio

Это было в лекции к этой теме