Файл: Развитие языков программирования и их классификация.pdf
Добавлен: 17.06.2023
Просмотров: 74
Скачиваний: 3
СОДЕРЖАНИЕ
Основы теории языков программирования
1.2. Классификации языков программирования
2. Характеристика современных языков программирования
2.1. Язык программирования С++
2.2. Язык программирования Java
3. Создание графического приложение на языке программирования высокого уровня
3.1. Интегрированная среда разработки C++ Builder
В C#, как в несомненно современном языке, существуют характерные особенности для обхода возможных ошибок. Например, помимо упомянутой выше "сборки мусора", там все переменные автоматически инициализируются средой и обладают типовой защищенностью, что позволяет избежать неопределенных ситуаций в случае, если программист забудет инициализировать переменную в объекте или попытается произвести недопустимое преобразование типов.
Также в C# были предприняты меры для исключения ошибок при обновлении программного обеспечения. Изменение кода, в такой ситуации, может непредсказуемо изменить суть самой программы.
Чтобы помочь разработчикам бороться с этой проблемой C# включает в себя поддержку совместимости версий (vesioning). В частности, в отличии от C++ и Java, если метод класса был изменен, это должно быть специально оговорено. Это позволяет обойти ошибки в коде и обеспечить гибкую совместимость версий.
В C# была унифицирована система типов, теперь есть возможность рассматривать каждый тип как объект. Несмотря на то, используете вы класс, структуру, массив или встроенный тип, вы можете обращаться к нему как к объекту. Объекты собраны в пространства имен (namespaces), которые позволяют программно обращаться к чему-либо.
Это значит, что вместо списка включаемых файлов заголовков в своей программе нужно написать какие пространства имен, для доступа к объектам и классам внутри них, программист будет использовать.
В C# выражение using позволяет не писать каждый раз название пространства имен, когда используется класс из него. Например, пространство имен System содержит несколько классов, в том числе и Console. Можно писать либо название пространства имен перед каждым обращением к классу, либо использовать команду using. [2]
Важной и отличительной от С++ особенностью C# является его простота. К примеру, всегда ли вы помните, когда пишите на С++, где нужно использовать "->", где "::", а где "."? Даже если нет, то компилятор всегда внесет коррективы в случае ошибки. Это говорит лишь о том, что в действительности можно обойтись только одним оператором, а компилятор сам будет распознавать его значение.
Так в C#, оператор"->" используется очень ограничено (в unsafe блоках), оператор "::" вообще не существует. [12]
Практически всегда, используя только оператор ".", больше не нужно стоять перед данным выбором.
В C#, также как и в Visual Basic после каждого выражения case в блоке switch подразумевается break. И более не будет происходить странных вещей если программист забыл поставить break. Однако, если действительно нужно чтобы после одного выражения case программа перешла к следующему, то можно переписать свою программу с использованием, например, оператора goto.
Хотелось бы подчеркнуть современное удобство C#. После начала работы в C#, сразу станет ясно, что довольно большое значение в нем имеют пространства имен.
Так в C#, помимо просто выражения using, предоставляется еще одна очень удобная возможность – использование дополнительного имени (alias) пространства имен или класса. [9]
Современность C# проявляется и в новых шагах к облегчению процесса отладки программы.
Традиционным средством для отладки программ на стадии разработки в C++ является маркировка обширных частей кода директивами #ifdef и т.д.
В C#, используя атрибуты, ориентированные на условные слова, программист может куда быстрее написать отлаживаемый код.
Это существенно упрощает работу, к примеру, вместо того чтобы писать автоматизированный инструмент, который будет проверять каждый класс или интерфейс, на то, является ли он действительно частью абстрактного бизнес объекта, можно просто воспользоваться сообщениями основанными на определенных в объекте локальных атрибутах.[11]
Язык C#, являясь последним из широко распространенных языков программирования, должен впитать в себя весь имеющийся опыт и вобрать лучшие стороны существующих языков программирования, при этом являясь специально созданным для работы в .NET.
Сама архитектура .NET продиктовала ему (как и многим другим языкам, на которых можно писать под .NET) объектно-ориентированную направленность. Конечно, это не является правилом, возможно создание компиляторов даже функциональных языков по .NET, на эту тему существуют специальные работы.
Свой синтаксис C# во многом унаследовал от C++ и Java. Разработчики, имеющие опыт написания приложений на этих языках, найдут в C# много знакомых черт.
Но вместе с тем он является во многом новаторским - атрибуты, делегаты и события, прекрасно вписанные в общую идеологию языка, прочно заняли место в сердцах .NET - разработчиков. Их введение позволило применять принципиально новые приемы программирования. [14]
Из вещей, включенных в спецификацию языка, но не являющихся чисто "программистскими" необходимо отметить возможность использование комментариев в формате XML. Если комментарии отвечают специально описанной структуре, компилятор по ним может сгенерировать единый XML-файл документации.
Рассмотрим основные особенности языка программирования С#:
- Полный и хорошо определенный набор основных типов.
- Полная поддержка классов и объектно-ориентированного программирования, включая наследование интерфейсов и реализаций, виртуальных функций и перегрузки операторов.
- Встроенная поддержка автоматической генерации XML-документации.
- Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).
- Автоматическое освобождение динамически распределенной памяти.
- Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).
- Поддержка свойств и событий в стиле VB.
- Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).
- Указатели и прямой доступ к памяти, если они необходимы. Однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого.
- Возможность использования С# для написания динамических web-страниц ASP.NET.
Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. [13]
Проанализировав материал второй главы можно сделать вывод, что C++ остается наилучшим из языков высокого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода. А Java не может обеспечить полноценное низкоуровневое программирования (программирование драйверов, контроллеров и т.д.).
3. Создание графического приложение на языке программирования высокого уровня
3.1. Интегрированная среда разработки C++ Builder
Каждая программа должна иметь удобный интерфейс для организации диалога с пользователем. Основным элементом интерфейса в Windows являются окна. Одной из разновидностей окон является форма, которая может содержать кнопки, текстовые поля, переключатели и т.д. Поэтому программы, написанные для использования в Windows, обычно имеют оконный (графический) интерфейс. [13]
Для быстрого и удобного создания программ с графическим интерфейсом используют специальные среды визуального программирования. Почти каждый современный язык программирования имеет по крайней мере одну такую среду: Object Pascal - Borland Delphi, Basic - Visual Basic, C++ - Borland C ++ Builder, Microsoft Visual C.
Визуальное программирование еще называют Rapid Application Development (RAD), "быстрая разработка приложений". Технология RAD существенно ускоряет создание программ с графическим интерфейсом. Инструментальная система Builder, подобно другим системам визуального программирования (Visual C, Visual Basic, Delphi и т.д.), в первую очередь является посредником между интерфейсом прикладного программирования Windows (API - Application Program Interface) и программистом, позволяя даже начинающим разработчикам быстро создавать программные продукты, которые будут иметь графический интерфейс пользователя (GUI - Graphic User Interface). [17]
C++ Builder – это технология визуального программирования, в которой максимально автоматизировано ее трудоемкую часть – создание графических программ с диалоговыми окнами.
Оболочка C ++ Builder предоставляет возможность вместо полного самостоятельного написания программы использовать большой набор готовых визуальных объектов, так называемых компонентов, пиктограммы которых размещены на соответствующих вкладках палитры компонентов.
В С++ Builder используется более 100 компонент. Все компоненты собраны в библиотеке визуальных компонентов VCL - Visual Class Library. С++ Builder предназначен для написания программ на языке программирования C++ и сочетает VCL и среду программирования (IDE - Integrated Development Environment), написанную для Delphi с компилятором C++.
Цикл создания программных проектов в C++ Builder является аналогичным Delphi, но с существенными улучшениями. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но, к сожалению, обратное утверждение не справедливо. С++ Builder позволяет методом drag-and-drop довольно просто разрабатывать интерфейсные программы, что приводит к повышению эффективности и простоты программирования, поскольку программисту не надо каждый раз создавать те элементы собственных программ, которые могут быть реализованы с помощью уже существующих объектов.
Основным объектом визуального программирования является компонент. Компонентами в C ++ Builder являются объекты или классы объектов. Их непосредственно видно на экране (за исключением группы невидимых компонентов), их можно передвигать мышью, они могут реагировать на щелчки клавиш клавиатуры, мыши. [14]
В свою очередь, компонентам, в отличие от обычных объектов C++, присущее наличие свойств, событий и методов, которые позволяют осуществлять различные операции с этими компонентами. Свойства (Properties) позволяют легко устанавливать различные характеристики компонентов, такие как название, размеры, контекстные подсказки или источники данных.
Методы (функции-члены) выполняют определенные операции над компонентным объектом, в том числе и такие сложные, как воспроизведение или перемотка устройства мультимедиа.
События (Ivents) связывают внешние воздействия, на которые реагируют компоненты, такие как активизация, нажатие кнопок с кодами реакции на эти воздействия. Кроме того, события могут возникать при таких специфических состояниях компонента, как обновления данных в интерфейсных элементах доступа к базам данных.
В качестве примера объекта рассмотрим компонент Button, который по сути является кнопкой и имеет ряд свойств: имя, размеры (ширина и высота), расположение на форме, определение границ, надпись на кнопке, шрифт, стиль, размер и цвет надписи, видимость (кнопка может существовать, но быть невидимой) и др. [16]
Для кнопки можно создавать различные события, например: щелчок кнопкой мыши, нажатия клавиши клавиатуры и т.д. Методами для кнопки могут быть алгоритмы, которые выполняют такие действия: перемещение самой кнопки, изменение размеров, создание новой или уничтожение существующей кнопки и другие.
Программирование в С++ Builder состоит из двух этапов:
– конструирования визуального интерфейса с помощью компонентов;
– написания программного кода, выполнение команд которого обеспечит решения.
Окно среды C ++ Builder состоит из следующих элементов (рис. 1): [18]
– окно формы;
– окно кода программы;
– главное меню;
– кнопки инструментальных панелей;
– палитра компонентов;
– окно инспектора объектов.
Рисунок 1 – Интерфейс среды разработки C++ Builder
Окно формы занимает большое место и является прямоугольным серым "контейнером" (рис. 1), на который при проектировании формы размещают компоненты (кнопки, надписи, панели, окна редакторов и т.д.). Форма сама является компонентом с названием Form. Без дополнительных указаний заголовок компонента (свойство Caption) совпадает с его названием (свойство Name), к которой добавляется порядковый номер, начиная с 1 (например Button1, Button2). но заголовок можно изменить с помощью свойства Caption. Размеры формы можно изменять или с помощью окна Object Inspector, или просто перетащив мышкой линии границы формы.
Для размещенных на форме компонентов можно вызвать контекстную справку, для чего следует выделить нужный компонент и нажать клавишу <F1>. Если щелкнуть на самой форме и нажать клавишу <F1>, откроется справка по классу формы TForm. [19]
После запуска C++ Builder редактор кода содержит минимальный набор инструкций, обеспечивает нормальное функционирование пустой формы в качестве Windows окна. При создании проекта программист вносит в него нужный программный код.
3.2. Создания графической программы в среде C++ Buider
Рассмотрим методику создания графической программы на примере создания программного продукта для обслуживания клиентов автозаправочной станции. [20]
Графическая программа предназначена для формирования заказа пользователя при покупке топливно-смазочных материалов. Менеджер должен ввести в программу с помощью переключателя один из нескольких видов топлива, потом ввести в соответственном окне количество нефтепродукта. При этом автоматически будет подсчитано на какую стоимость будет выполнена покупка топлива.[15]