Файл: Современные языки программирования (ИСТОРИЯ И ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

Встраиваемые языки к ним относят языки, состоящие из синтаксического и семантического подмножества других языков.

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

Императивная парадигма программирования.

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

Императивная парадигма похожа на приказы отсюда название императивная от англ. Imperative — Приказ повелительного наклонения.

Эта парадигма предполагает под собой последовательность команд, которые должен выполнить компьютер.

Декларативная парадигма программирования.

Эта парадигма является полной противоположностью императивной парадигмы. В ней задается спецификация решения задачи, то есть описывается проблема и какой ожидается результат. Название данной парадигмы идет
от англ. Declare Объявление.

Конкатенативная парадигма программирования

Эта парадигма основана на конкатенации двух фрагментов кода выражая их в композицию. В ней новые функции определяется как композиция функций, а вместо аппликации применяется конкатенация.

Векторная парадигма программирования также известная как многомерный язык.

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

Парадигма метапрограммирования

Эта парадигма основана на создании программ что порождают другие программы как результат своей работы, к примеру на стадии компиляции исходного кода или во время выполнения. [2],[3]

Глава 2. РАСПРОСТРАНЁННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

2.1. C#

С# Разработан группой инженеров из корпорации Microsoft
в 1998 - 2001. Под руководством Андерса Хейлсберга и Скотта Вильтаумота
как язык разработки приложений для Microsoft .NET Framework. В дальнейшем был стандартизирован.


C# относится к С подобным языкам он наиболее близок синтаксисом к Java и С++. Язык обладает статической типизацией, полиморфизмом, перегрузкой операторов, делегатами, атрибутами, событийно ориентированной парадигмой программирования, свойствами, обобщенной парадигмой программирования, итератором, анонимными функциями с поддержкой замыкания, LINQ, обработкой исключительных ситуаций и системой комментирования в формате XML.

C# разрабатывался как язык программирования прикладного уровня для Common Language Runtime далее используется аббревиатура CLR. C# зависит от CLR и его возможностей. Это касается системы типов C# которая отражает Base Class Library платформы .NET Framework. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем, однако, эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET.

Название Си шарп идет от буквенной музыкальной нотации
где латинской C соответствует нота до, а знак диез означает повышение звука
на полутон. Это аналогично С++ где ++ означал инкремент переменной. Название также продолжает игру с цепочкой С, С++, С++++ соответственно С# так как знак шарп напоминает 4-ре знака +.

C# постоянно улучшался и развивался на данный момент достиг версии 8.0

C# является объектно-ориентированным языком, но поддерживает также
и компонентно-ориентированное программирование. Разработка современных приложений все больше тяготеет к созданию программных компонентов в форме автономных и самоописательных пакетов, реализующих отдельные функциональные возможности. Важная особенность таких компонентов — это модель программирования на основе свойств, методов и событий. Каждый компонент имеет атрибуты, предоставляющие декларативные сведения о компоненте, а также встроенные элементы документации. C# предоставляет языковые конструкции, непосредственно поддерживающие такую концепцию работы. Благодаря этому C# отлично подходит для создания и применения программных компонентов. [9]

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


В C# существует единая система типов. Все типы C#, включая типы-примитивы, такие как int и double, наследуют от одного корневого типа object. Таким образом, все типы используют общий набор операций, и значения любого типа можно хранить, передавать и обрабатывать схожим образом. Кроме того, C# поддерживает пользовательские ссылочные типы и типы значений, позволяя как динамически выделять память для объектов, так и хранить упрощенные структуры в стеке.

Чтобы обеспечить совместимость программ и библиотек C# при дальнейшем развитии, при разработке C# много внимания было уделено управлению версиями. Многие языки программирования обходят вниманием этот вопрос, и в результате программы на этих языках ломаются чаще, чем хотелось бы, при выходе новых версий зависимых библиотек. Вопросы управления версиями существенно повлияли на такие аспекты разработки C#, как раздельные модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса.

Версии C#

C# 1.0

C# версии 1.0, выпущенный вместе с Visual Studio .NET 2002, станет очевидно его сходство с Java. В число поставленных перед ECMA задач проектирования входило создание "простого и современного объектно-ориентированного языка общего назначения". В то время схожесть с Java означала достижение этих ранних целей проектирования.

По современным меркам C# версии 1.0 не предоставлял практически никаких возможностей. Программисту пришлось бы писать довольно подробный код. C# версии 1.0 был достойной альтернативой Java на платформе Windows.

Основные возможности C# 1.0 включали следующие компоненты: классы, структуры, интерфейсы, события, свойства, делегаты, выражения, операторы, атрибуты.

C# 1.2

Версия C# 1.2 входит в состав Visual Studio .NET 2003. Он содержит ряд небольших улучшений языка. Наиболее значительным изменением является то, что начиная с этой версии код, создаваемый в цикле foreach, вызывает Dispose
в IEnumerator, если IEnumerator реализует IDisposable.

C# 2.0

Рассмотрим некоторые основные возможности языка C# 2.0, выпущенного в 2005 году вместе с Visual Studio 2005:

Универсальные шаблоны

Разделяемые типы

Анонимные методы

Типы значений, допускающие значение NULL

Итераторы

Ковариантность и контравариантность

Другие возможности C# 2.0 расширяли существующие возможности:

Отдельный доступ к методу получения и методу задания

Преобразования групп методов (делегаты)

Статические классы

Выведение делегата

Хотя сначала C# и был универсальным объектно-ориентированным языком, в C# версии 2.0 все кардинально изменилось. Нащупав опору под ногами, команда разработки уделила внимание решению серьезных проблем, с которыми сталкивались разработчики.


Благодаря универсальным шаблонам легче получать типы и методы, которые могут работать с произвольным типом, при этом обеспечивая безопасность типа. В результате, например, наличие List<T> позволяет использовать List<string> или List<int> и совершать типобезопасные операции с этими строками или целыми числами, выполняя итерацию по ним. Использовать универсальные шаблоны удобнее, чем создавать ListInt, производный
от ArrayList, или выполнять приведение из Object для каждой операции.

В C# версии 2.0 появились итераторы, которые позволяют изучать все элементы в List (или других перечислимых типов) с помощью цикла foreach. Наличие итераторов в качестве первоклассного компонента в языке значительно улучшило удобочитаемость языка и способность воспринимать код.

С# 3.0

C# версии 3.0 был выпущен в конце 2007 года вместе с Visual Studio 2008, однако существенно набор возможностей языка пополнится только в .NET Framework версии 3.5.

Основные возможности в этой версии:

Автоматически реализуемые свойства

Анонимные типы

Выражения запросов

Лямбда-выражения

Деревья выражений

Методы расширения

Неявно типизированные локальные переменные

Разделяемые методы

Инициализаторы объектов и коллекций

Все возможности образуют единый и стратегически значимый набор. Принято считать, что уникальным преимуществом C# было выражение запроса, которое называется LINQ.

Можно отметить деревья выражений, лямбда-выражения и анонимные типы как основу для создания LINQ. В языке C# 3.0 была представлена революционная концепция. Версия C# 3.0 начала закладывать фундамент для превращения C# в гибридный объектно-ориентированный/функциональный язык.

В стиле SQL можно создавать декларативные запросы для выполнения операций с коллекциями. Вместо создания цикла for для вычисления среднего значения из списка целых чисел достаточно использовать list.Average(). Сочетание выражений запросов и методов расширения позволяет сделать работу со списком целых чисел гораздо интеллектуальнее.

C# 4.0

Разработчикам версии C# 4.0, выпущенной вместе с Visual Studio 2010, пришлось приложить серьезные усилия, чтобы не отставать от новаторской версии 3.0. С появлением версии 3.0 язык C# смог выйти из тени Java и занять доминирующее положение.

Следующая версия представила ряд интересных функций:

Динамическая привязка

Именованные/дополнительные аргументы

Универсальная ковариантность и контравариантность

Внедренные типы взаимодействия

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


Значимым событием стало появление ключевого слова dynamic в C# версии 4.0 появилась возможность переопределять компилятор при типизации во время компиляции. Используя это ключевое слово, можно создавать конструкции, характерные для языков с динамической типизацией, таких как JavaScript. Можно создать dynamic x = "a string" и добавить туда шестерку, отложив решение о дальнейших действиях во времени выполнения.

C# 5.0

Версия C# 5.0, выпущенная вместе с Visual Studio 2012, была крайне целенаправленной. Практически все нововведения в этой версии касались другой инновационной концепции: модели async и await для асинхронного программирования. Ниже приведен список основных функций:

Асинхронные члены

Информационные атрибуты вызывающего объекта

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

С появлением async и await функций в 2012 г. C# удалось снова взять лидерство, первоклассным образом внедрив асинхронность в язык.

C# 6.0

Версии 3.0 и 5.0 добавили в объектно-ориентированный язык C# несколько впечатляющих возможностей. Версия 6.0, выпущенная вместе с Visual Studio 2015, отступает от подхода, ориентированного на реализацию уникальных возможностей. Здесь предоставляются менее масштабные функции, с которыми программирование на C# становится гораздо эффективнее:

Статические импорты

Фильтры исключений

Инициализаторы автосвойств

Элементы, воплощающие выражение

Null-распространитель

Интерполяция строк

Оператор nameof

Инициализаторы индекса

Выражение Await в блоках Catch и Finally

Значения по умолчанию для свойств метода получения.

В этой версии C# избавился от стандартного текста, чтобы сделать код более сжатым и удобочитаемым. Эта версия привлекает сторонников простого
и понятного кода.

Новшество, связанное с этой версией, не является функцией языка в обычном понимании. Состоялся выпуск компилятора Roslyn в виде службы. Компилятор C# написан на C#, и можно использовать его
при программировании.

C# 7.0

Эта версия была выпущена вместе с Visual Studio 2017. В этой версии получили развитие некоторые функции из версии C# 6.0, однако компилятор
в виде службы отсутствует. Ниже приведены некоторые из новых функций:

Переменные Out

Кортежи и деконструкция

Сопоставление шаблонов

Локальные функции

Расширенные элементы, воплощающие выражение