Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Первый семестр программирование.docx
Скачиваний:
2
Добавлен:
27.09.2019
Размер:
103.45 Кб
Скачать

1. Языки программирования это формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя.

Тип оператора

Оператор

Ассоциативность

Первичные операторы

(xx.y f(x) a[xx++ x-- new typeof sizeof checked unchecked

Слева направо

Унарные операторы

+ - ! ~ ++x --x (тип)x

Слева направо

Мультипликативные операторы

* / %

Слева направо

Аддитивные операторы

+ -

Слева направо

Операторы сдвига

<< >>

Слева направо

Операторы отношения

< > <= >= is as

Слева направо

Операторы равенства

== !=

Слева направо

Логическое И

&

Слева направо

Логическое исключающее ИЛИ

^

Слева направо

Логическое ИЛИ

|

Слева направо

Условное И

&&

Слева направо

Условное ИЛИ

||

Слева направо

Условный оператор

?:

Справа налево

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

= *= /= %= += -= <<= >>= &= ^= |=

Справа налево

Парадигма программирования — это совокупность подходов, методов, стратегий, идей и понятий, определяющая стиль написания программ.

Основные модели программирования

  • Императивное программирование

  • Функциональное программирование

  • Логическое программирование

  • Объектно-ориентированное программирование

2. Лексические единицы языков программирования.

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

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

Литералы - В С# литералами называются постоянные значения, представленные в удобной для восприятия форме. Например, число 100 является литералом. В С# литералы могут быть любого простого типа. Представление каждого литерала зависит от конкретного типа. Как пояснялось ранее, символьные литералы заключаются в одинарные кавычки. Например, 'а' и '%' являются символьными литералами. Разделители – пробелы, строки переноса в исходном коде программы. Компилятор их игнорирует. Разделители используются для упрощения и логической группировки/разделения элементов кода.

Директивы – это инструкции для компилятора.

Примеры лексем в C#.

3. .NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является исполняющая средаCommon Language Runtime (CLR), способная выполнять как обычные программы, так и серверные веб-приложения. NET Framework поддерживает создание программ, написанных на разных языках программирования.

Программа для .NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для .NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL).

В терминах .NET получается сборка, англ. assembly. Затем код либо исполняется виртуальной машиной CLR, либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Строительные блоки .NET (CLR, CTS и CLS)

Технологии CLR, CTS и CLS очень важны для понимания смысла платформы .NET. С точки зрения программиста .NET вполне можно рассматривать просто как новую среду выполнения и новую библиотеку базовых классов. Среда выполнения .NET как раз и обеспечивается с помощью Common Language Runtime (CLR, стандартная среда выполнения для языков). Главная роль CLR заключается в том, чтобы обнаруживать и загружать типы .NET и производить управление ими в соответствии с вашими командами. CLR берет на себя всю низкоуровневую работу - например, автоматическое управление памятью, межъязыковым взаимодействием, развертывание (с отслеживанием версий) различных двоичных библиотек.

Еще один строительный блок платформы .NET - это Common Type System (CTS, стандартная система типов). CTS полностью описывает все типы данных, поддерживаемые средой выполнения, определяет, как одни типы данных могут взаимодействовать с другими и как они будут представлены в формате метаданных .NET (подробнее о метаданных будет рассказано ниже в этой главе).

Важно понимать, что не во всех языках программирования .NET обязательно должны поддерживаться все типы данных, которые определены в CTS. Common Language Specification (CLS) - это набор правил, определяющих подмножество общих типов данных, в отношении которых гарантируется, что они безопасны при использовании во всех языках .NET. Если вы создаете типы .NET с использованием только тех возможностей, которые совместимы с CLS, тем самым вы сделаете их пригодными для любых языков .NET.

Base Class Library, сокращённо BCL — стандартная библиотека классов платформы «.NET Framework». Программы, написанные на любом из языков, поддерживающих платформу .NET, могут пользоваться классами и методами BCL — создавать объекты классов, вызывать их методы, наследовать необходимые классы BCL и т. д.

Под многоязыковым программированием понимается способность кода, напи¬санного на разных языках, работать совместно. Эта возможность очень важна при создании больших программ, а также желательна при программировании отдельных компонентов, которые можно было бы использовать во многих компьютерных языках и в различной операционной среде.

Домены приложений

Исторически сложилось так, что параллельно запускаемые на одном компьютере программы всемерно изолированы друг от друга.

Приложения изолированы прежде всего из-за того, что адресные указатели зависят от процесса. Указатель, переданный из одного приложения другому, никак не может в нем использоваться. Более того, вы не можете из одного процесса обратиться непосредственно к другому. Вместо этого приходится применять механизм представителей (proxy), которые реализуют косвенные вызовы, как это делается в COM.

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

Изоляция приложений важна также для безопасности программ. Например, вы можете запускать приложения из веб-приложения в единственном процессе браузера так, что приложения не будут иметь доступ к другим данным и ресурсам.

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

Ошибка в одном приложении не может повлиять на другое приложение.

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

Примечание

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

 

Код, исполняемый в одном приложении, не имеет непосредственного доступа к коду или ресурсу другого приложения. CLR обеспечивает изоляцию путем предотвращения вызовов между объектами в разных доменах приложений. Объекты, которыми обмениваются домены, могут быть копиями или передаваться через представителей. Если объект — копия, его вызов локальный. Это означает, что и получатель объекта, и сам объект находятся в одном домене. Если объект получен через представителя, этот объект — удаленный. В этом случае получатель и объект находятся в разных доменах. Как следствие, доступ к метаданным объекта должны иметь оба домена, чтобы обеспечить правильную работу встроенного компилятора для вызова методов (в противном случае происходит ошибка).

Домены и сборки

Перед запуском приложения вы должны загрузить сборку в домен. Запуск типичного приложения вызывает загрузку различных сборок в программный домен. По умолчанию CLR загружает сборку в домен, который содержит ссылку на нее. Таким образом, код и данные сборки изолируются от использующего их приложения.

Если одна и та же сборка используется несколькими доменами, ее код (но не данные) могут разделяться доменами. Это снижает затраты памяти. Данный метод подобен разделению DLL. Сборка называется доменно-нейтральной, если ее код может разделяться другими доменами в одном процессе. CLR решает, будет ли сборка доменно-нейтральной.

Сборка не разделяется между доменами, если предоставляемые ею возможности нужны лишь одному домену.

4.

Тип данных CTS                    Ключевое слово Ключевое слово Ключевое слово

 

VBJ*ET

C#

Managed Extensions for С++

System.BjteByte

Byte

byte

unsigned char

System. SByteSByte

SByte

sbyte

signed char

System. Ir.t'16

Short

short

Short

System. Ir,t32

Integer

i4t

intилиlong

System. Int64

Long

long

_ int64

SYBtsm,01ntl6

UShort

ushort

unsigned short

System.*JInt32

Ulnteger

uir.t

unsigned int ИЛИ unsigned long

System,UInt64

ULong

along

unsigned * lnt64

System., singles Ingle

Single

float

Float

Sys tern. DoBbleDoiible

Double

double

Doable

System .ObjeetObj'eet

Object

object

Object"

System.CharCbar

Char

char

wchar t

System.StringString

String

String

String"

Systsm.DeGlmalDscimal

Decimal

decimal

Decimal

Syatem.Boplea'nBoolean

Boolean

bool

Bool

 

Общеязыковая исполняющая среда clr (Common Language Runtime)

Центральной частью каркаса .NET является его Общеязыковая исполняющая среда - Common Language Runtime (CLR), или .NET runtime.

Код, исполняемый под управлением CLR, часто называют управляемым кодом.

Однако перед тем как код сможет исполниться CLR, любой исходный текст (на C# или другом языке) должен быть скомпилирован. Компиляция в .NET состоит из двух шагов:

  1. Компиляция исходного кода в IL.

  2. Компиляция IL в специфический для платформы код с помощью CLR.

Этот двухшаговый процесс компиляции очень важен, потому что наличие IL(управляемого кода) - это ключ ко многим преимуществам .NET.

Common Intermediate Language (сокращённо CIL) — промежуточный язык, разработанный фирмой Microsoft для платформы .NET FrameworkJIT-компилятор CIL является частью так называемой CLR (англ. Common Language Runtime) — общей среды выполнения языков .NET.

Just-in-time compilation (JITкомпиляция «на лету»), dynamic translation (динамическая компиляция) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения по сравнению с интерпретируемым байткодом[1] (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию. JIT базируется на двух более ранних идеях, касающихся среды исполнения: компиляции байт-кода и динамической компиляции.

5. Пространство имён (англ. namespace) — некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировкиуникальных идентификаторов (то есть имён). Идентификатор, определенный в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же (а скорее, другое) значение, как и такой же идентификатор, определённый в другом пространстве. Языки с поддержкой пространств имён определяют правила, указывающие, к какому пространству имён принадлежит идентификатор (то есть его определение).

Сборки Что такое сборка?

Сборка - это базовый строительный блок приложения в .NET Framework. Это набор функциональности, которая создается, развивается и развертывается, как единый модуль (при этом он может содержаться в одном или нескольких файлах). Все управляемые типы и ресурсы помечаются либо как доступные только внутри сборки, либо как доступные вне модуля.  Составной частью сборки является декларация, которая позволяет сборке быть самоописанной. Декларация идентифицирует сборку (в виде текстового имени), версию, культуру и цифровую сигнатуру(если сборка разделяется среди приложений). 

  • определяет входящие в состав файлы (по имени и хэшу) .

  • указывает типы и ресурсы, существующие в сборке, включая описание тех, которые экспортируются из сборки

  • перечисляет зависимости от других сборок

  • указывает набор прав, необходимых сборке для корректной работы

Эта информация используется в период выполнения, чтобы разрешить ссылки, обеспечить корректное использование версий, проверить целостность загруженных сборок. Среда выполнения может определить сборку для любого запущенного объекта, поскольку любой тип используется только в контексте сборки. Сборки также являются модулями, для которых применяются проверки безопасности доступа кода. Идентификация производится для каждой сборки поотдельности, чтобы определить, какие права можно предоставить коду, который она содержит.  Самоописываемая природа сборок позволяет реализовать безболезненную инсталляцию и развертывание, через XCOPY.