Скачиваний:
2
Добавлен:
04.09.2023
Размер:
1.48 Mб
Скачать

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

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