
- •Глава 2. Учебный курс «прикладное программное обеспечение сапр»: основа ― язык c#
- •2.1. История языка программирования c#
- •2.1.1. Появление и развитие языка c#
- •2.1.2. Название языка c#
- •2.1.3. Особенности языка c#
- •2.1.4. Версии языка c# и развитие языка
- •2.1.5. Текущая версия языка c#, краткое и полное описания версии
- •2.2. Развитие языков программирования до c#
- •2.2.1. Единство языка программирования c# и платформы .Net
- •2.2.2. Язык программирования c и api-интерфейс Windows
- •2.2.4. Среда разработки Visual Studio 6.0
- •2.2.5. Язык программирования Java
- •2.3. Материалы по языку c# в структуре учебного курса
- •2.4. Пример из материалов учебного курса: понятие «Строка»
- •2.4.1. Понятие «Строка»
- •2.4.2. Построение строк
- •2.4.3. Работа со строками
- •2.4.4. Постоянство строк
Глава 2. Учебный курс «прикладное программное обеспечение сапр»: основа ― язык c#
«Лучшие учебники по C# — это учебники по Java»
2.1. История языка программирования c#
2.1.1. Появление и развитие языка c#
Язык C# («си-шарп») ― объектно-ориентированный язык программирования (ООП), появился на свет в июне 2000 году в результате кропотливой работы большой группы разработчиков корпорации Microsoft («майкрософт»), возглавляемойАндерсом Хейлсбергом(Anders Hejlsberg). Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеровIBM («ай-би-эм») ―Turbo Pascal(«турбо -паскаль»), изящная реализация которого послужила образцом для создания всех последующих компиляторов. Кроме того, во время работы в корпорацииBorland, Андерс Хейлсберг прославился созданием интегрированной среды разработкиDelphi(«дельфи»). Андерс руководил этим проектом вплоть до выхода версии 4.0. Появление языка C# и платформы.NET1(«дот-нэт») отнюдь не случайно пришлось на начало лета 2000 года. Именно к этому моменту корпорация Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания веб-приложений (COM+,ASP+,ADO+,SOAP,Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок являлось создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач языка C#. Кроме того, Microsoft не могла больше расширять всё те же инструменты и языки разработки, делая их всё более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-ых годов во времена первых версийWindows. Тогда и наступил момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.
С# и платформа .NET являлись той самой отправной точкой. Если говорить упрощённо, то .NET представлял собой новую платформу, новый набор API (Application Programming Interfaces ―интерфейс программирования приложений) для программирования под Windows, а С# ― её новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 30 лет.
Необходимо отметить, что обратная совместимость со старыми платформами не была потеряна. Существующие программы будут выполняться, а сама платформа .NET была спроектирована таким образом, что она может работать с имеющимся программным обеспечением. Связь между компонентами в Windows тогда почти целиком осуществлялась при помощи СОМ. С учётом этого .NET тогда обладал способностями:
Создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними;
Создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ-компоненты.
Язык С# непосредственно связан с С («Си»),С++(«си-плюс-плюс») иJava («джава» или «ява»). И это не случайно. Ведь это три самых широко распространенных и признанных во всем мире языка программирования. Кроме того, на момент создания С# практически все профессиональные программисты уже владели С, С++ или Java. Благодаря тому что С# построен на столь прочном и понятном основании, перейти на этот язык из С, С++ или Java не представляло особого труда. А поскольку и Хейлсбергу не нужно (да и нежелательно) было изобретать велосипед то он мог сосредоточиться непосредственно на усовершенствованиях и нововведениях в С#.
Предком С# во втором поколении является С, от которого он унаследовал синтаксис, многие ключевые слова и операторы. Кроме того, С# построен на усовершенствованной объектной модели, определенной в С++. Если вы знаете С или С++, то будете чувствовать себя уютно и с языком С#.
Родственные связи С# и Java более сложные. Java также происходит от С и С++ и обладает общим с ними синтаксисом и объектной моделью. Как и Java, С# предназначен для получения переносимого кода, но С# не происходит непосредственно от Java. Напротив, С# и Java — это близкие, но не кровные родственники, имеющие общих предков, но во многом отличающиеся друг от друга. Впрочем, если программист знает Java, то многие понятия С# окажутся ему знакомыми. С другой стороны, если в будущем, читателю учебного курса придётся изучать Java, то многие понятия, усвоенные в С#, могут быть легко распространены и на Java.
Рис. 2. 1. «Предки» C# иJava
Итак, авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков, вроде Java, c богатством возможностей и мощью C++.
По словам самого Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нём присутствуют такие удобные типы данных, как «структуры» и «перечисления» (другой потомок C++ ― Java ― лишён этих элементов, что создаёт определённые неудобства при программировании).
Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic («вижуал бэйсик»). Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных программистом типов, Java же поддерживает ни ту, ни другую возможность. С# ― это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.
Можно выделить основные особенности С# на момент появления:
Полный и хорошо определённый набор основных типов.
Встроенная поддержка автоматической генерации XML-документации.
Автоматическое освобождение динамически распределённой памяти.
Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).
Полный доступ к библиотеке базовых классов .NET, а также лёгкий доступ к Windows API (если это действительно необходимо).
Указатели и прямой доступ к памяти, если они необходимы. Однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого.
Поддержка свойств и событий в стиле Visual Basic.
Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).
Возможность использования С# для написания динамических веб-страниц и веб-приложений ASP.NET.
Одной из областей, для которых C# не был изначально предназначен, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ долгое время после появления C#, оставался в этой области наилучшим из языков низкого уровня. В С# отсутствовали некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений (например, для систем реального времени), в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определённых точках кода. Однако новые версии языка частично (если не полностью) решили и эти проблемы.
1.NET Framework(«дот-нэт фрейм-ворк») — программная платформа, выпущенная корпорацией Microsoft в 2002 году. Основой платформы является исполняющая средаCLR(Common Language Runtime ― общеязыковая исполняющая среда), способная выполнять как обычные программы, так и серверные веб-приложения. NET Framework поддерживает создание программ, написанных на разных языках программирования. Считается, что платформа .NET Framework явилась ответом Microsoft на набравшую к тому времени большую популярность платформу Java компанииSun Microsystems(ныне принадлежит компанииOracle).