Реферат: Голосовое воспроизведение текста
Программиста, привыкший к платформе Майкрософт, может представить себе C Sharp как промежуточный вариант между C++ и Visual Basic, если рассматривать сложность языковых конструкций и возможности языка.
C Sharp имеет C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Дельфи (ориентированность на создание компонент), в то же время имеет и свой колорит.
При создании языка в основу дизайна легла легкость использования, доминирующая над мощностью языка и скоростью выполнения. Отсюда и сборщик мусора с управляемыми объектными ссылками, который автоматически освобождает за Вас память, отбирая при этом процессорное время. Вы также получаете безопасность работы с типами, а это по мнению многих является вторым важнейшим фактором избежания ошибок.
C Sharp объектно-ориентированный язык, как и вся платформа .NET. Более того, это язык, ориентированный на написание компонент. C Sharp создан для программирования в управляемой среде с присутствующим сборщиком мусора, но позволяет писать и неуправляемый (unmanaged) код.
Цельность концепции видна, скажем в реализации упаковки/распаковки. Это позволяет рассматривать все типы (даже примитивные) как объекты, что разрешает многие проблемы дизайна приложений.
При создании языка рассматривалась не только простота написания приложений, но и их поддержки - в связи с чем в язык включили поддержку XML комментариев и контроля версий. Настоящий подарок для программистов.
Помимо сборщика мусора и безопасности работы с типами для избежания ошибок в языке также применяется автоматическая инициализация переменных. Все типы, которые размещаются в стеке (value types, к которым относятся примитивные типы, структуры и прочие наследники класса ValueType) инициализируются нулями. Объекты остальных типов размещаются в куче, доступ к ним осуществляется по объектной ссылке, и ссылки эти инициализируются в значение null (которая говорит, что данная ссылка не имеет ассоциированного объекта в куче).
В C Sharp представлена концепция пространств имен, аналогичная пакетам в Java. Это позволяет иерархически структурировать Вашу систему типов, делая код намного более понятным и позволяя избежать проблем с именованием. Вы можете рассматривать пространства имен как директории, а языковые типы как файлы в этих директориях.
В языке для работы с событиями и обратными вызовами представлена новая концепция объектно-ориентировано и безопасной с точки зрения системы типов ссылки на функцию - "делегат". Именно эта концепция позволяет описывать события C Sharp компонента без возвратных интерфейсов и дополнительных усилий, достаточно использовать ключевое слово event.
Индексаторы и свойства органично дополняют события до создания описываемого сигнатурой компонента.
C Sharp позволяет использовать при разработке парадигму атрибутивного программирования, когда в компиляционных модулях вместе с типом может сохраняться мета-информация. Данная информация впоследствии может быть получена и использована во время выполнения. Более того, этой информацией может воспользоваться компилятор или, скажем, дизайнер, что позволяет, не запуская компонент, получать информацию о нем.
Работа с атрибутам позволяет использовать COM, COM+ и DLL в C Sharp приложениях, работающих в среде .NET. Перечисления позволяют обезопасить работу с перечисляемыми типами.
Реализация структур как типов, работа с которыми идет по значению, вкупе с возможностью использовать не только вложенные массивы (как в Java), но и многомерные позволяет оптимизировать производительность приложений.
При написании стандартных приложений под .NET трудно подобрать более подходящий язык для реализации всех задуманных идей. По этой причине наилучшим вариантом программного продукта для написания курсовой работы является C Sharp.
1.2. Дополнительные компоненты
При создании приложений, использующих платформу Microsoft .NET, возникает задача применения в собственных проектах уже готовых библиотек кода, написанных на других языках. Сжатые сроки разработки и уже имеющиеся программные блоки не позволяют отказаться от готовых решений, поэтому их приходится использовать, встраивая в структуру собственных проектов.
Код, выполняющийся под управлением среды выполнения (в случае платформы .NET — среды Common Language Runtime), называется управляемым. Напротив, код, запускаемый не под управлением среды, называется неуправляемым. Примером неуправляемого кода могут служить COM-компоненты, Microsoft ActiveX интерфейсы и функции API Win32.
Microsoft .NET Framework позволяет взаимодействовать с COM-компонентами, COM+-службами, внешними типами библиотек и разными службами операционной системы. Перехват исключений различается в управляемом и неуправляемом коде. Платформа .NET Framework предлагает две службы взаимодействия управляемого кода с неуправляемым — Platform Invoke и COM interoperability, которые используют реальные возможности проекта.
Объектная модель COM (Common Object Model) компонентов имеет некоторые существенные отличия от объектной модели компонентов .NET Framework.
· Управление жизненным циклом объектов. Клиенты СОМ-объектов сами управляют этим циклом, среда CLR платформы .NET берет эту задачу на себя.
· Обращение к службам и объектам. Клиенты COM-объектов узнают о функциональности службы путем опроса ее интерфейса, клиенты .NET-объектов могут получить описание функциональности, используя пространство имен Reflection.
· Среда CLR перемещает объекты в памяти для улучшения производительности, обновляя ссылки этих объектов. Клиенты COM имеют постоянную ссылку на ячейки памяти, не изменяющуюся в течение всей жизни объекта.
Для преодоления этих различий CLR предлагает классы-оболочки, которые позволяют управляемым и неуправляемым клиентам думать, что они работают с объектами той же среды, что и они сами. Когда управляемый клиент вызывает неуправляемый метод, CLR создает временную оболочку RCW (Runtime Callable Wrapper). RCW абстрагирует различия между управляемым и неуправляемым кодом. CLR также создает оболочку CCW (COM Callable Wrapper) для обращения процесса, которая позволяет COM-объектам запускать методы .NET-объектов.
Часто требуется применение функций WinAPI, находящихся в файлах dll. Когда служба вызывает функцию, совершаются следующие операции:
· обнаружение необходимой библиотеки;
· загрузка найденной библиотеки в оперативную память;
· обнаружение адреса библиотеки в памяти и передача аргументов функции, с их преобразованием при необходимости;
· после этого передается управление неуправляемой функции и ждет завершения.
Для подключения функции необходимо представить адрес библиотеки и данные о функции: название, входящие и исходящие аргументы.