Файл: «Современные языки программирования» (История развития языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 205

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Выделяют основные понятия языков программирования:

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

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

Переменные. Переменные представляют собой объекты, способные принимать различные значения. Они обладают следующими свойствами: в один момент времени переменная хранит не более одного значения; переменная имеет постоянный тип; переменная хранит текущее значение до записи в нее нового значения; в начале выполнения программы значение переменных считается неопределенным. [13, с.4]

Система программирования – это часть программного обеспечения, с помощью которой разрабатываются все остальные программы. Система программирования состоит из:

-редактора для ввода текста программы на языке программирования

-транслятора этого языка

-библиотеки подпрограмм

-компоновщика

-отладчика.

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

Процесс перевода называется трансляцией, а программа, которая осуществляет этот перевод, называется транслятором.

Рисунок 1. Трансляция программ

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


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

Интерпретатор переводит на язык машинных команд отдельный оператор и этот оператор сразу выполняется. Затем переводится следующий оператор – выполняется и т.д., то есть сколько раз программа выполняется, столько же раз она интерпретируется. Очевидно, что при этом и исходный текст программы, и интерпретатор должны находиться в оперативной памяти.

В основном все языки высоко уровня компилируются и лишь отдельные интерпретируются (Бейсик, Лого, ШАЯ).

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

Отладка. Отладчик позволяет произвести процесс поиска в программе ошибок, просмотреть значения отдельных переменных в любой момент времени (для этого в нужных местах программы предусматривают точки останова) и управлять процессом отладки программы. [2, с.10-13]

В данной главе были рассмотрены теоретические аспекты языков программирования и исторические этапы их создания. Были изучены основные понятия, классификации и разновидности языков программирования. Также было акцентировано изучение таких понятий как: алгоритм, алфавит, синтаксис и семантика.

ГЛАВА 2. ОБЗОР СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

    1. C#


Язык программирования C# был создан в XXI веке и является полностью объектно-ориентированным языком программирования, построенный в соответствии с международными стандартами. C# признан Международным сообществом. Он тесно связан с каркасом Framework.Net, в полной мере учитывает его возможности, что даёт программистам получать преимущества работы с виртуальной машиной. [3, с.4]

Руководителем группы разработчиков языка С# был Аидере Хейлсберг, сотрудник компании Microsoft (ранее входил в группу разработчиков инструментальной системы Builder). Цели, которые преследовались созданием этого языка, были сформулированы им следующим образом:

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

• создать первый компонентно-ориентированный язык программирования семейства C/C++;

• упростить C++, сохранив по возможности его мощь и основные конструкции;

• повысить надёжность программного кода. [4, с.3-4]

Среда разработки проектов на C# является открытой языковой средой, разрешающей использование различных языков программирования, включённых в среду фирмой Microsoft. Языки программирования, которые включаются в среду разработки Visual Studio, используют единый каркас – Framework.Net. Поэтому отдельные части проекта можно разрабатывать на разных языках. Например, программировать класс на одном языке, а потомки класса – на других языках.

Каркас Framework.Net состоит из статической библиотеки классов – FCL (Framework Class Library) и динамической общеязыковой исполнительной среды – CLR (Common Language Runtime). Библиотека FCL содержит классы, задающие типы, которые встроены в язык программирования.

Имеются возможности построения Web-приложений, создания повторно используемых компонентов (Web-служб) и библиотек элементов управления.

Компиляторы языков программирования преобразуют исходный код в промежуточный код языка IL (Intermediate Language). После компиляции проекта создаётся переносимый исполняемый файл (Portable Executable или PE-файл), который содержит код на IL, и метаданные. PE-файл может иметь разные уточнения – exe, dll, mod или mdl. PE-файл с уточнением exe является не обычным исполняемым Windows-файлом, а исходным файлом для транслятора JIT (Just In Time Compiler), оптимально преобразующего поступающий код в команды реального процессора, на котором будет выполняться проект. Метаданные содержат всю информацию, необходимую для выполнения в среде CLR.

Создаваемый на C# проект имеет стандартные и введённые пользователем классы. Стандартные классы хранятся в библиотеке FCL. Класс содержит описание данных, называемых полями класса, описание методов класса и описание событий и имеет свой тип. Тип данных (класса) – это семантическая единица, которая описывает свойства и поведение множества объектов, которые называются экземплярами класса. Состояния объектов определяются полями, поведение объектов – методами, а состояния, в которых могут находиться объекты, – событиями. Каждый класс сохраняется в отдельном файле с одноименным именем.


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

Одним из основных пространством имен библиотеки FCL является пространство System, которое содержит другие пространства и классы, имеющие широкое употребление в различных проектах.

Единица компиляции называется проектом. Сборка является результатом компиляции проекта. Проект включает одно или несколько пространств имён. На начальном этапе создания проекта автоматически строится каркас проекта. Он состоит из классов, являющихся наследниками других классов, входящих в состав библиотеки FCL.

В проекте содержится: информация, необходимая для построения сборки; файлы с классами, созданные разработчиком проекта и построенные автоматически в момент создания проекта; ссылки на все подключаемые к проекту DLL, COM-объекты, другие проекты.

Проект может быть выполняемым, если при построении каркаса в него включается класс, содержащий статическую процедуру с именем Main и невыполняемым – проекты типа DLL. Невыполняемые проекты присоединяются к выполняемым сборкам, откуда и вызываются методы классов.

Результатом компиляции проекта является сборка, которая представляет собой коллекцию из одного или нескольких файлов с помеченными номерами версий. Она содержит описание требуемых ей ресурсов и права доступа к элементам сборки, что позволяет решать вопросы безопасности. Полное описание сборки называется манифестом. Он позволяет идентифицировать сборку. Поэтому описанию CLR не требуется никакой дополнительной информации для развертывания сборки, трансляции промежуточного кода и его выполнения.

Каждый проект помещается в некоторую оболочку, называемую Решением – Solution. Оно может содержать несколько проектов, связанных общей темой.

Язык программирования С# использует набор символов:

• строчные и прописные буквы латинского алфавита;

• символ подчёркивания «_»;

• цифры от 0 до 9;

• набор специальных символов: " { }, [ ] + - % / \; ' : ? <> = ! & # ~ *.

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

Различают пять типов лексем:

• идентификаторы;

• ключевые слова;

• знаки (символы) операций;

• литералы;


• разделители.

Все типы лексем, кроме ключевых слов и идентификаторов, имеют собственные правила словообразования.

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

Идентификаторы состоят из набора строчных и прописных букв, цифр, символа подчёркивания и строятся по определённым правилам:

• первым символом идентификатора может быть только буква;

• следующими символами идентификатора могут быть буквы, цифры и нижнее подчёркивание;

• длина идентификатора не ограничена.

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

Идентификаторы, входящие в фиксированный словарь, называются ключевыми словами. В качестве имён объектов их использовать нежелательно.

Для пояснения текста программы используются два вида комментариев. Комментарий, заключённый в символы /* Комментарий */, пропускается компилятором. Если комментарий начинается с символа //, то он заканчивается в конце строки, на которой он появился.

Язык программирования С# является типизированным языком. Каждый объект характеризуется своим типом, который указывает компилятору размер объекта и его свойства. Например, объект типа double занимает в памяти 8 байтов, объект Label может быть видим или невидим. Различают встроенные типы, определённые в языке, и пользовательские типы, которые выбирает программист. Типы могут быть размерные и ссылочные. Различие между ними определяет способ, которым их значения сохраняются в памяти. Размерные типы хранят своё фактическое значение в стеке, ссылочные – сохраняют в стеке лишь адрес объекта, а сам объект хранится в куче (основной памяти). Доступ к куче осуществляется намного медленнее, чем к стеку.

Систему типов можно разбить на две категории типов, каждая из которых разделена на подкатегории: типы значений, ссылочные типы и параметризованные типы (типы-шаблоны). Схема типов приведена на рисунке 2. [3, с.4-8]

Рисунок 2. Схема типов

Язык С# разработан прежде всего для платформы .NET (произносится как дот-нет), которая является средой, объединяющей программные технологии, для разработки Web- и Windows-приложений (отсюда и название).

Основу среды .NET составляет CLR (Common Language Runtime) - общеязыковая среда исполнения, которая состоит из двух основных частей: