C#. История появления языка программирования C# и технологии Microsoft .NET

История появления языка программирования C# и технологии Microsoft .NET. Причины возникновения, преимущества и недостатки Microsoft .NET


Содержание


Поиск на других ресурсах:

1. Технологии программирования, основанные на C-ориентированных языках. История и этапы развития. Язык программирования C

К C-ориентированным языкам программирования относятся такие известные языки как C++, C#, Java. Часть синтаксиса языков была задействована во многих других языках, таких как Kotlin, JavaScript, PHP, Python.

Первым языком семейства C-ориентированных языков был язык программирования C. Язык был разработан в 1972 году известным ученым Денисом Ритчи. Язык базировался на структурном подходе к программированию и решал проблемы кризиса программного обеспечения тех времен. Таким образом, 1972 стал годом начала развития большого семейства языков программирования, введении нового синтаксиса по сравнению с языком Паскаль, обеспечении более гибкого структурированного кода и т.д. Автор этой статьи и этого сайта также родился в этом году.

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

Для правильного построения программы особенно важное место занимали этапы проектирования и разработки. Ошибки, сделанные на этих этапах, могли в будущем значительно усложнить «сопровождение» программы и ее дальнейшее развитие.

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

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

 

2. Языки программирования C++ и Java

Дальнейшее развитие C-ориентированные языки получили в 1979 году с появлением языка C++, разработанного Бьярном Страуструпом. Этот язык реализовал парадигму объектно-ориентированного подхода в программировании и стал развитием языка C. В языке C++ синтаксис был полностью заимствован из языка C. Язык C++ добавлял в язык C новые объектно-ориентированные возможности.

Но с течением времени в области программного обеспечения появлялись новые требования, требующие изменений в технологиях и появления новых языков программирования. На эти требования повлияло мощное развитие сетей, в частности сети Интернет. Как следствие, современная программа должна была обеспечивать:

  • межплатформенную переносимость программного обеспечения;
  • удобную передачу проектов по сетям;
  • сокращение времени разработки программного обеспечения и т.д.

Программное обеспечение должно работать правильно на любой платформе (Windows, UNIX, Linux, Mac OS и другие). Основным здесь отсутствие конфликтов с операционной системой при переносе приложения с одной операционной системы на другую.

Как следствие, в 1991 году компанией Sun Microsystems было реализовано решение этой проблемы с помощью нового языка программирования «Oak», позже получившего название Java. Автором языка Java считается Джеймс Гослинг.

Чтобы обеспечить кроссплатформенность необходимо наличие интегрированной среды исполнения Java. Для обеспечения выполнения приложений Java, операционная система должна иметь соответствующее установленное программное обеспечение адаптирующее Java-приложение под нужды конкретной операционной системы. Для каждой операционной системы компанией Sun был разработан соответствующий вариант среды выполнения. Благодаря этому межплатформенная переносимость для Java-приложений является одной из самых лучших среди известных технологий.

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

 

3. Язык программирования C# и платформа .NET

После появления языка программирования Java продолжилось создание C-ориентированных языков.
В 2000 году компания Microsoft анонсировала появление нового языка программирования под названием C#. Главным архитектором языка считается Андерс Хейлсберг, также являющийся автором Turbo Pascal, Delphi, TypeScript. Этот язык предлагал более богатый набор языковых средств и механизмов по сравнению с Java.

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

Язык C# есть составной частью платформы .NET и ее связующим звеном. Платформа .NET является концепцией Microsoft для развития средств разработки программного обеспечения. В основе технологии лежит совокупность программных модулей, входящих в набор средств под названием Microsoft .NET Framework. С помощью этого программного набора в операционной системе Windows выполняются .NET-приложения.

 

4. Причины возникновения платформы Microsoft .NET

К причинам возникновения технологии .NET можно отнести:

  • обеспечение межплатформенной переносимости. Развитие глобальной сети Internet и средств коммуникации потребовали создания приложений (приложений, программных решений), которые могли бы выполняться на любом компьютере независимо от архитектуры операционной системы;
  • потребность в упрощении процесса развертывания программного обеспечения. Современное программное обеспечение требует правильного сопровождения. Это означает, что появляются новые версии приложений, которые не должны конфликтовать с предыдущими версиями. Процесс сопровождения достаточно частый, а потому требует максимальной оперативности;
  • потребность в создании среды исполнения программных решений. Такая среда создает необходимые условия для безопасного выполнения разнообразных приложений, решает проблемы контроля распределения ресурсов в операционной системе;
  • обеспечение необходимых коммуникационных возможностей в соответствии с существующими стандартами по созданию соответствующей технологии разработки программных решений;
  • обеспечение межъязыковой интеграции. Здесь предполагается создание такого программного кода, который интегрируется с кодом, созданным с использованием других технологий.

 

5. Преимущества и недостатки платформы Microsoft .NET

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

  • эффективное решение проблемы межъязыкового взаимодействия. Это достигается путем реализации механизмов, позволяющих импортировать программные модули из сборок, написанных на других языках программирования. Также следует отметить приведение данных «неизвестных» или «специфических» типов в соответствующие типы общей системы типов .NET Framework. Все эти возможности умножаются наличием соответствующего специализированного программного обеспечения;
  • решение проблемы развертывания приложений. При этом все приложения являются архитектурно неправильными. Процесс развертывания достигается путем компилирования приложений не в исполнительный код, а в промежуточный код. Этот промежуточный код называется Common Intermediate Language (CIL или IL). После того, как сформирован промежуточный код, команда запуска программы вызывает компиляцию промежуточного кода в исполнительный код с учетом особенностей архитектуры компьютера, на котором происходит компиляция. Этот процесс обеспечивается с помощью так называемой JIT-компиляции (Just In Time Compilation);
  • размер .NET-приложений невелик. Это объясняется тем, что все необходимые библиотеки базовых классов (Base Class Library) содержатся на каждом клиентском компьютере. Здесь предполагается, что .NET Framework обязательно должен быть установлен на компьютере клиента для корректной работы .NET-приложения. Таким образом, .NET-приложение не сохраняет все необходимые библиотеки в своем исходном коде. Эти библиотеки подключаются при запуске приложения, и, как результат, размер .NET-приложения есть минимальным;
  • использование единой среды времени выполнения приложений – CLR (Common Language Runtime). Благодаря этой среде возможно использование безопасного (управляемого) программного кода (Managed Code). В безопасном коде среда выполнения управляет выделением памяти и различного рода ресурсов, а также управляет доступом к ним. Благодаря этому у разработчика уменьшается количество проблем путем избегания дополнительного программирования задач управления памятью, распределения ресурсов и т.д. Таким образом, программист непосредственно сосредотачивается на решении поставленной задачи.

Однако не все проблемы были решены этой технологией. Ниже перечислены недостатки технологии Microsoft .NET:

  • межплатформенная переносимость .NET-приложений хорошо пригодна только для семейства операционных систем Windows. Для других операционных систем (например Linux), разработанное приложение требует модификации, в которой будут учтены различия в архитектурах этих систем. Это наиболее существенный недостаток платформы Microsoft .NET;
  • первый запуск приложения происходит с задержкой. Это связано с тем, что компиляция происходит после запуска приложения. Здесь рассматривается случай, когда приложение уже готово к выполнению и не содержит синтаксических ошибок. Однако второй, третий и последующие запуски приложения происходят быстро, потому что уже сформирован исполнительный файл (во временной директории) и повторная компиляция не требуется. Если формируется новая версия приложения или исполнительный файл будет удален, то произойдет перекомпиляция, после которой первый запуск снова будет замедлен;
  • относительно замедленное выполнение приложения. Причин тому несколько. Во-первых, это интегрированная среда выполнения, которая отнимает часть системных ресурсов на собственные нужды. Во-вторых, это использование среды выполнения как посредника между ресурсом и приложением для обеспечения безопасности. Среда получает ссылку на ресурс от приложения и возвращает этот ресурс. Если бы приложение обращалось к ресурсу напрямую, то исполнение ускорилось бы.

 


Связанные темы