Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Парадигмы программирования).pdf

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

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

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

Добавлен: 27.04.2023

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

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

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

3. Объектно-ориентированные языки программирования

3.1 Особенности языка программирования C#

C# — это язык программирования с несколькими парадигмами, включающий сильную типизацию, императивность, декларативность, функциональность, объектно-ориентированность (основанный на классах) и различные другие дисциплины программирования, компонентно-ориентированного логики. Он был разработан Microsoft в рамках своей инициативы .NET, а затем одобрен в качестве стандарта Ecma (ECMA-334) и ISO (ISO/IEC 23270: 2006). C # — один из языков программирования, предназначенных для общей языковой инфраструктуры. [12]

При разработке клиентской части нашей программы, в качестве инструмента был выбран именно C#. Он обладает рядом больших преимуществ, которые позволяют вести разработку на нём очень удобной. К его особенностям относятся:

  1. Модернизированный язык.

C# - модернизированная версия C++. Первоначально был язык C, который широко использовался. C++ стал добавлять объектную ориентацию к C, а C++ стал языком построения «реальных» приложений для Windows (согласно разработчикам, на C++). C++ использовался для написания инфраструктуры и приложений низкого уровня, в то время как разработчики Visual Basic писали бизнес-приложений.

C # привносит парадигму быстрого развития VB в мир разработчиков C++ с некоторыми очевидными изменениями. C # использует .NET Framework, что означает, что уже есть доступ к мощному движку форм, который был у разработчиков VB в течение многих лет. В него добавлены новые типы данных, такие как десятичный тип данных для выполнения финансовых расчетов.

  1. Безопасность.

C# является строго типизированным, что даёт ряд преимуществ. Например, невозможно использовать неинициализированные переменные. В C++ легко объявить переменную, а затем проверить ее значение; все, что было в адресе памяти, указанном этой переменной, будет показано, и это может привести к падению приложения. C# complier уведомит, если разработчик попытается использовать переменную, прежде чем инициализировать ее до некоторого допустимого значения. [9, 12]

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


  1. Объектно-ориентированный.

Хотя многие утверждают, что C++ объектно-ориентирован, C# переходит на другой уровень. Даже простые типы данных могут рассматриваться как объекты, а это означает, что INT имеет методы, связанные с ним. Например, вы можете использовать метод ToString для получения строкового значения для int.

Кроме того, символьные строки можно рассматривать как объекты и поддерживать различные методы, такие как ToUpper , ToLower , и многие другие. [9]

  1. Упрощенный синтаксис.

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

Файлы заголовков также были удалены из C#. Операторы имен и ссылочные операторы, “::” и “->” соответственно, были заменены одним оператором.

Возможно, одним из самых больших изменений является то, что типы данных int и bool теперь совершенно разные. Это означает, наконец, становится возможным закончить сопоставления и сравнения в if условиях. [12] Другими словами, следующий код даже не компилируется под C#:

int Counter = 14;

if (Counter = 14) {// сделать что-то}

Попытка скомпилировать этот код вернет сообщение об ошибке: “невозможно неявно преобразовать тип int в bool”.

C# также решает проблемы управления памятью, с помощью схемы сборщика мусора .NET. Элементы, на которые больше не ссылаются объекты, отмечаются, и сборщик мусора её очистит.

  1. Комментарии XML.

C# поддерживает введение комментариев XML. Отнюдь это не просто еще один способ добавить комментарии к коду. Комментарии XML могут фактически превратиться в документацию. Комментарии помещаются в формат XML и затем могут использоваться по мере необходимости для документирования кода. Эта документация может включать пример кода, параметров и ссылок на другие темы. Наконец, разработчик имеет смысл документировать свой код, потому что эти комментарии могут стать документацией, независимой от исходного кода. [8]

  1. Не только Microsoft.

C# - это не просто Microsoft. Microsoft выпустила C# для ECMA и она была опубликована в качестве стандарта. Кроме того, проект Mono - это попытка создать версию .NET Framework (часть под названием CLI) с открытым исходным кодом и версию C # с открытым исходным кодом для Linux.

  1. Все о компонентах.

Создание компонентов является простой задачей, так как программа ссылается на эти компоненты в коде. Пространства имен в C# заменяют множество головных болей из мира COM (Component Object Model), в которых приходилось выполнять поиск в реестре, и создавать объекты, и беспокоиться о таких вещах, как IUnknown и IDispatch. Используя C#, вы просто импортируете пространство имен, а затем начинаете использовать классы в этом компоненте.


  1. Сила быть небезопасной.

Многое связано с безопасностью типов в C#, но если вы хотите “водить без ремня безопасности”, вы можете это сделать. Если вам действительно нужно использовать указатели, например, вы можете использовать небезопасное ключевое слово, чтобы отметить блок кода. Это позволяет этому коду обходить проверку безопасности типа Framework и означает, что вы можете напрямую манипулировать памятью. Это делает C# невероятно мощным и является одним из преимуществ C # над VB.NET. [9]

  1. Возможности кроссплатформенного языка.

C# позволяет вам взаимодействовать с любым другим языком на платформе .NET. Многое было сказано о том, как вы можете создать компонент на одном языке и наследовать, и расширять этот компонент на другом языке, что было бы сложным, если не невозможным, с COM. [16]

3.2 Статически типизированный язык программирования общего назначения C++

C++ — это язык объектно-ориентированного программирования общего назначения (OOP), является расширением языка C. Это даёт возможность программировать на C++ в стиле «C» или же в «объектно-ориентированном стиле». В некоторых случаях он может использовать оба варианта, что показывает эффективным примером гибридного языка. [6, 16]

C++ считается языком промежуточного уровня, поскольку он инкапсулирует как языковые функции высокого, так и низкого уровня. Первоначально язык назывался «C с классами», так как он обладал всеми свойствами языка C с дополнительным понятием «классы». Однако в 1983 году он был переименован в C++.

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

Основная особенность языка C++ в наборе шаблонных классов, в которых имеются самые часто используемые алгоритмы и контейнеры. Они уже написаны и могут много раз использоваться разработчиками при написании своих программ. Язык также облегчает объявление пользовательских классов. Классы используют функции для реализации определенных требований. Можно создавать множество объектов класса, у которых будут все свойства определенные для данной сущности. Объекты могут быть определены как экземпляры, и созданы прямо во время выполнения. Эти классы также могут быть унаследованы другими новыми классами, которые по умолчанию используют публичные свойства своих предков и реализует их в своих объектах. [17]


C++ включает в себя большое количество операторов, таких как:

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

Одной из наиболее привлекательных особенностей C++ является то, что он позволяет перегружать определенные операторы.

К основным концепциям С++ относятся полиморфизм, инкапсуляция и наследование. Они вместе составляют основную концепцию объектно-ориентированного программирования. [17]

C++ является одним из самых популярных языков программирования и работает на самых разных платформах оборудования и операционных систем. В качестве эффективного компилятора для собственного кода он реализует себя в таких областях, как системное программное обеспечение, прикладное программное обеспечение, драйверы устройств, встроенное программное обеспечение, высокопроизводительные серверные и клиентские приложения и развлекательное программное обеспечение, такие как видеоигры. Несколько групп разработчиков предоставляют как бесплатное, так и проприетарное программное обеспечение для компилятора C++, включая GNU Project, LLVM, Microsoft и Intel.

C++ сильно повлиял на многие другие популярные языки программирования, в первую очередь на C # и Java. [3, 16]

Язык программирования C++ имеет историю, восходящую к 1979 году, когда Бьёрн Страуструп работал над своей кандидатской диссертацией. Одним из языков, который был создан Страуструпом, был язык под названием «Simula», который, как следует из названия, является языком, в основном предназначенным для моделирования. Язык Simula 67, который был вариантом, с которым работал Страуструп, рассматривается как первый язык для поддержки парадигмы объектно-ориентированного программирования. Страуструп обнаружил, что эта парадигма очень полезна для разработки программного обеспечения, однако язык Simula был слишком медленным для практического использования.

С++ не слишком популярный язык среди начинающих программистов и существенно проигрывает таким языкам, как C# или Java. Тут можно выделить несколько причин. [23]

1. Высокий порог вхождения.

Наверное, нет такого программиста, который бы не слышал о сложности С++. Безусловно, язык обширен, нюансов — несчётное множество. Производительность и глубинный контроль происходящих процессов (особенно если несколько спуститься с C++ к чистому C). Тут опять же следует упомянуть про стандарт C++11, который более приветлив к новичкам, предлагая удобный синтаксис, различного рода контейнеры, алгоритмы и прочие удобные вещи, предназначенные облегчить жизнь и написание кода.


2. Слабое продвижение.

Ни для кого не секрет, как продвигаются такие языки как C# или Java корпорациями-владельцами: Microsoft и Oracle, со стороны Microsoft продвижения весьма заметно. Большинство технологий Microsoft затачиваются именно под C#. Хакатоны, проводимые Microsoft, опять же проходят с использованием C#.

Для C++ такой поддержки нет. Да, для него выпускаются различные инструменты, позволяющие облегчить работу и процесс создания приложений. Тут стоит вспомнить тот же Qt, недавно вышедший ReSharper C++ от JetBrains. В Visual Studio 2015 ввели поддержку некоторых нововведений из последних стандартов, плюс некоторые дополнительные функции — работать стало удобнее. Но с масштабом вышеупомянутых продвижений это всё же в сравнение не идёт. [23]

3. Специализация.

Несмотря на то, что C++ — язык, дающий разработчику, как говорится, все карты в руки, область его применения не всеобъемлюща и занимает определённую нишу. Конкуренты есть, это тоже оказывает свое влияние. Взять, например, мобильную разработку. Основные платформы заняты теми или иными языками: Windows Phone — C#, Android — Java, iOS — Objective-C. И это вовсе не означает, что под эти платформы нет возможности писать на C++, вопрос лишь в том, насколько это будет удобно и будет ли также эффективно. Для веба, разработка под который с каждым годом становится популярнее и популярнее, C++ тоже не очень подходит. Возможность работы с сокетами есть, библиотеки, наподобие Wt, есть. С учётом того, что мобильная и веб-разработка стали очень популярны и только набирают обороты, понятен выбор начинающих в пользу других языков.

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

Как видно из рисунка 2, по сравнению с прошлым годом C++ немного сбавил позиции, но на январь 2019 года всё-таки находится в лидерах, на четвертом месте. [22, 23]

С++ продолжает активно использоваться и занимает свою определённую нишу. Выходящие стандарты добавляют новшеств в язык, делая его удобнее и проще в обращении. Программное обеспечение, написанное на этом языке, также никуда не делось и требует поддержки. В определённых областях C++ как нельзя лучше подходит для написания программного обеспечения, а это, в совокупности с вышеописанным, означает одно — C++ актуален, развивается и сдавать позиции не намерен.

Рисунок 2 — Рейтинг языков программирования от TIOBE [22]