Классификация языков программирования




По способу выполнения языки программирования делятся на компилируемые, интерпретируемые, компилируемые на основе псевдокода и совмещенные.

Компилируемые языки. К этой группе относят языки программирования, исходный код которых преобразуется специальной программой-компилятором в объектные модули, которые затем собираются при помощи программы сборки (линковщика) в единый загружаемый модуль. Этот модуль представляет собой выполняемую программу. Компилируемыми являются языки С, С++, Object Pascal.

Интерпретируемые языки. К этой группе относят языки программирования, исходный код которых считывается и выполняется специальной программой- интерпретатором инструкция за инструкцией. Интерпретируемыми являются большинство версий языков Basic и Porth.

Языки, компилируемые на основе псевдокода («шитого» кода). В этих языках исходный код программы компилируется и выполняется как последовательность вызовов подпрограмм из существующих библиотек. Таковыми являются некоторые версии Basic.

Совмещенные языки. В совмещенных языках исходный код проходит две стадии обработки. На первой стадии происходит компиляция исходного кода до уровня промежуточного языка (байт-код в Java или язык MSIL в технологии.NET). На второй стадии происходит интерпретация промежуточного кода (в Java этим занимается виртуальная машина Java) или докомпиляция промежуточного кода до выполняемого машинного кода (эту функцию осуществляет среда выполнения CLR в технологии.NET).

По факту созданию процесса языки программирования делятся на создающие процесс и сценарные.

Языки, создающие процесс. После запуска программы создается отдельный процесс выполнения этой программы. Так происходит в языках С, С++, Oblect Pascal.

Сценарные языки. Сценарий, или скрипт, – это программа, которую выполняет другая программа. В качестве примером можно привести скрипты оболочки в UNIX, программы на языках PHP, Python, Ruby.

По степени автономности языки программирования делятся на автономные и встроенные.

Автономные языки программирования (С, С++, Java) являются автономным инструментом для создания программ.

Встроенные языки программирования являются частью какой-то системы и позволяют создавать программы, предназначенные для работы только в этой системе. Пример наиболее известного встроенного языка – VBA (Visual Basic for Application), который используется только внутри приложений Microsoft Office для автоматизации и расширения их функциональности. Встроенными являются также язык программирования системы 1С и язык JavaScript, который выполняется только внутри интернет-приложений.

По уровню отдаленности языка программирования от естественных языков их делят на низкоуровневые и высокоуровневые.

Языки низкого уровня ближе к логике процессора вычислительной машины, например, машинный язык, ассемблер.

Языки высокого уровня ближе лингвистически к человеческому языку. Это все остальные языки программирования.

По парадигмам языки программирования делятся на императивные (процедурные), функциональные, логические и объектно-ориентированные.

Императивные (процедурные) языки описывают решение задачи как последовательность процедур. К императивным относится большинство современных языков программирования.

Функциональные языки описывают требуемый результат в виде набора вложенных друг в друга функций (Haskell).

Логические языки описывают требуемый результат в виде суммы логических операций (Prolog).

Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы объектно-ориентированного программирования (ООП): инкапсуляцию, наследование и полиморфизм (С++, Java, Object Pascal, и др.).

История языков программирования (с. 559-562)

 

Концепция объектно-ориентированного программирования

 

Поскольку все современные средства разработки программного обеспечения, языки и технологии создания программ продолжают основываться на объектно-ориентированном программировании, предлагаем ознакомиться с основными положениями этого подхода. Объектно-ориентированное программирование базируется на четырех основных принципах: абстракции, наследовании, инкапсуляции и полиморфизме.

Абстракция

Абстракция – это способность языка программирования отображать объекты внешнего мира в форме абстрактных структур в соответствии с решаемой задачей.

Абстрактные структуры, при помощи которых реализуется этот принцип, на­зываются классами.

Класс – это структура описывающая объекты внешнего о мира с помощью двух типов элементов: состояние объекта описывается полями класса (переменными разного типа), а поведение, объекта – его методами (процедурами и функциями).

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

Пример. Предположим, у нас есть три измерительных прибора: термометр, барометр и весы. Чтобы описать эти приборы внутри программы, мы абстрагируем важные для программы свойства этих приборов и создаем три класса (рис. 11.2).

Рис. 11.2. Классы

 

По названиям в соответствующих ячейках видно, что поля класса содержат в себе данные, описывающие состояние класса. Методы класса представляют реализа­цию некоторых действий, то есть описывают поведение класса. Например, метод класса «термометр», который носит название «измерить температуру», призван помещать значение температуры в поле с именем «температура». На рис. 11.3 представлены объекты (экземпляры класса).

Рис. 11.3. Экземпляры классов

 

Наследование

Наследование – это свойство класса порождать другие классы таким образом, что в порожденном классе (классе-потомке) содержатся все поля и все методы класса-родителя (базового класса), а также дополнительно собственные поля и методы.

Пример. В рассмотренном примере у трех разных классов есть одинаковые поля: Инв. номер, Название, Цвет, Исполнение. Каждый раз при создании нового класса измерительного прибора приходится снова и снова создавать эти поля. Данная ситуация значительно упрощается за счет наследования: мы создаем класс Измеритель, в который помещаем эти повторяющиеся поля, а затем наследуем от него наши классы Термометр, Весы и Барометр (рис. 11.4).

Рис. 11.4. Наследование

 

Широкая кривая на рисунке показывает, что при наследовании поля и методы базового класса включаются в состав класса потомка.

 

Полиморфизм

Полиморфизм – это способность объектов выполнять одну и гуже команду разными способами.

Полиморфизм основывается на двух свойствах, которые реализуют объектно-ориентированные языки программирования: способности трактовать объект класса-наследника как тип базового класса и способности класса иметь виртуальные методы. Особенность виртуального метода состоит в том, что он надежно связан с созданным экземпляром класса.

Пример. Если добавить в каждый из классов (в класс Измеритель и каждый из его наследников) метод Сигналить, а в реализации этого метода описали бы для каждого класса свой способ подавать сигнал (для термометра – мигать, для весов – издавать звук сирены, а для барометра – свистеть), то мы могли бы всем объектам, потомкам класса Измеритель, дать команду: измерители, сигналить! И каждый из них подал бы сигнал: термометры бы замигали, весы издали звук сирены, а барометры засвистели. Это и есть результат работы виртуальных методов.

 

Инкапсуляция

Инкапсуляция – это способность класса скрывать от внешнего мира детали внутренней реализации.

Инкапсуляция реализуется в объектно-ориентированном программировании при помощи областей видимости. Области видимости обозначаются в структуре класса специальными служебными словами. Например, слово priyate означает, что все поля и методы, объявленные в этой области видимости, невидимы для внешнего мира, a public, наоборот, – что все, объявленное в этой зоне, для внешнего мира открыто. Таким образом, у класса появляется своего рода защитный корпус, предохраняющий от излишней перегрузки программы объявленными именами и методами. Наружу класс экспонирует только то, что составляет его интерфейс и предназначено для внешнего взаимодействия. Все остальные поля и методы он скрывает внутри, помещая их в область видимости private.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: