Файл: Современные языки программирования (1. Основы программирования).pdf
Добавлен: 04.07.2023
Просмотров: 92
Скачиваний: 2
СОДЕРЖАНИЕ
1.1.Языки программирования. Почему нельзя обойтись одним языком?
1.2. Классификации языков программирования
2. Классификация языков программирования высокого уровня
2.1. Особенности языков программирования высокого уровня
2.2. Процедурно-ориентированные языки программирования
2.3. Проблемно–ориентированные языки программирования
2.4. Свойства объектно-ориентированных языков программирования
2.4.1. Абстракция и инкапсуляция
3. Обзор некоторых языков программирования высокого уровня
3.1. Язык программирования Basic
2.4. Свойства объектно-ориентированных языков программирования
Все языки ООП обеспечивают механизмы, которые помогают реализовать объектно-ориентированную модель. К ним относят абстракцию, инкапсуляцию, наследование и полиморфизм. Также их часто называют основными принципами ООП.
2.4.1. Абстракция и инкапсуляция
Абстракция данных – введение типов данных, определенных пользователем и отличных от базовых данных. Эта концепция заключается в возможности определять новые типы данных, с которыми можно работать так же, как и с основными типами данных. Кроме того, абстракция имеет место и при применении шаблонов, то есть введении абстрактных типов данных, которые в зависимости от условий их применения принимают тот или иной тип.
Инкапсуляция – это механизм, который связывает код с данными, которые им обрабатываются, и сохраняет их как от внешнего воздействия, так и от ошибочного использования. Инкапсуляцию можно представить как защитную оболочку, которая предотвращает доступ к коду и к данным из другого кода, находящегося снаружи этой оболочки. Доступ к коду и данным внутри оболочки происходит через четко определенный интерфейс. Мощность такого подхода заключается в том, что каждый знает, как получить доступ к инкапсулированному коду, и может пользоваться им независимо от деталей его реализации и без боязни неожиданных последствий. [7]
Основой абстракции и инкапсуляции есть класс. Класс определяет структуру и поведение (данные и код) некоторого набора объектов. Каждый объект заданного класса содержит как структуру (данные), так и поведение, определяется классом. Поэтому объект иногда еще называют экземпляром класса. Таким образом, класс – это логическая конструкция, а объект – это физическая реальность.
Поскольку цель создания класса – это инкапсуляция сложности, существуют механизмы сокрытия реализации в середине класса. Методы и поля класса могут быть помечены как private (частный, локальный) или public (общий). Модификатор public указывает на все, что нужно знать внешним пользователям класса. Методы и поля с модификатором private доступны только для методов данного класса. Любой код, который не является членом данного класса, не имеет доступа к private-методам и полям. Поскольку private-члены класса доступны для других частей программы только через public-методы класса, можно быть уверенным, что никакие ненужные действия не выполняются.
2.4.2. Наследование
Наследование – это процесс, посредством которого один объект получает свойства другого объекта. Оно важно, так как поддерживает концепцию иерархической классификации. Большей частью знаний можно управлять только с помощью иерархических (т.е. организованных "сверху вниз") классификаций. Без применения классификаций каждый объект нуждался бы в явном определении всех своих характеристик. Благодаря использованию наследования объект требует определения только тех качеств, которые делают его уникальным в своем классе. Поэтому именно механизм наследования позволяет одному объекту быть специфическим экземпляром общего случая.
В окружающем мире мы видим объекты, связанные между собой иерархически, например, животные, млекопитающие, собаки. Если мы хотим описать животных абстрактным образом, нам необходимо определить некоторые их атрибуты, например, размер, вес, пол, возраст и т.д. Животным также присуще определенное поведение – они едят, дышат, спят. Такое описание атрибутов и поведения и определяет класс животных.
Если мы захотим описать более специфический класс животных, такой как млекопитающие, они должны были бы иметь более специфические атрибуты, такие как тип зубов и молочные железы. Такой класс известен как подкласс животных, тогда как класс животных называют суперклассом (родительским классом, классом-предком). [5]
Поскольку млекопитающие – это более точно специфицированные животные, то говорят, что они наследуют все атрибуты животных. Подкласс, что находится на более глубоком уровне иерархии, наследует все атрибуты каждого своего родительского класса в иерархии классов.
Наследование плотно связано с инкапсуляцией. Если данный класс инкапсулирует некоторые атрибуты, то любой подкласс будет иметь те же атрибуты плюс атрибуты, которые он добавляет как часть своей специализации. Это ключевая концепция, которая позволяет объектно-ориентированным программам, расти по сложности в арифметической, а не геометрической прогрессии. Новый подкласс наследует все атрибуты всех своих родителей. Он не имеет непредвиденных связей с остальной частью кода в программе. [3]
Кроме того, в производном классе унаследованные функции могут быть переопределены. Таким образом, строятся иерархии классов, связанных между собой. Если объект наследует атрибуты от одного базового класса, это будет простое наследование. Если объект наследует атрибуты от нескольких родителей, это будет множественное наследование. Но в языке Java множественное наследование в непосредственном виде не существует, его механизм является несколько специфическим.
2.4.3. Полиморфизм
Полиморфизм (греч "polymorphos" – множественность форм) – свойство, которое позволяет использовать один интерфейс для общего класса действий. Специфическое действие точно определяется в зависимости от конкретной ситуации. Например, рассмотрим стек (список типа LIFO – Last-In, First-Out; последним вошел, первым вышел). Программа может потребовать три типа стеков. Один стек используется для целых чисел, второй – для чисел с плавающей точкой, третий – для символов. Алгоритм, реализующий каждый стек, один и тот же, хотя данные, хранящиеся разные. НЕ объектно-ориентированный язык требовала бы создание трех различных стековых подпрограмм, каждая из которых имела бы свое собственное имя. Благодаря полиморфизму можно определить общий для всех типов данных набор стековых подпрограмм, использующих одно и то же имя.
Вообще суть концепции полиморфизма можно выразить фразой "один интерфейс, много методов". Это означает, что можно спроектировать общий интерфейс для группы связанных родственными связями объектов. Это позволяет уменьшить сложность, предполагая использование одного и того же интерфейса для общего класса действий. Задача компилятора – выбрать специфическое действие (т.е. метод) для его использования в каждой конкретной ситуации. Программист не должен делать это "вручную". Ему необходимо только помнить и использовать общий интерфейс.
Итак, полиморфизм – это свойство кода вести себя по-разному в зависимости от ситуации, возникающей в момент исполнения. [7]
При правильном применении приведенные принципы ООП – абстракция, инкапсуляция, полиморфизм и наследование – взаимодействуют таким образом, чтобы создать некоторую среду программирования, которая должно обеспечить более устойчивые и масштабируемые приложения по сравнению с моделью, ориентированной на процессы. Удачно спроектированная иерархия классов является базисом повторного использования кода, для создания и тестирования которого было потрачено много времени и усилий. Инкапсуляция позволяет реализациям путешествовать во времени без разрушения кода, доступ к которому осуществляется с помощью public-интерфейса классов. Полиморфизм позволяет создавать ясный и читаемый код.
3. Обзор некоторых языков программирования высокого уровня
3.1. Язык программирования Basic
Язык Бейсик (Basic) разработали сотрудники Дартмутского колледжа (США) Томасом Курцем и Джоном Кемени в 1964 году с целью обучения студентов. Широкое признание он получил в конце 60-х в начале 70-х годов благодаря применению в малых компьютерах фирм General Electric, Hewlett-Packard, Digital Equipment Corporation и др. [2]
Название языка образовано из первых букв английских слов Beginner's All-purpose Sumbolic Instruction Code. В переводе это означает: «язык программирования для начинающих". Английское слово Basic переводится как элементарный, базовый (например, набор знаний). Первая версия языка насчитывала 14 служебных слов. [2]
Известны десятки версий языка: Дартмутская, Бейсик-Плюс, Бейсик-Агат, Бейсик-Корвет, GW-Бейсик, Турбо Бейсик (Turbo Basic), Быстрый Бейсик (Quick Basic), Power Basic и другие. Все версии имеют много общих элементов, ознакомившись с которыми, можно работать практически с любой версией, например, с GW-Бейсиком или Quick Бейсиком.
Возможности новейших версий (компиляторов, позволяющих создавать exe-файлы) Quick Бейсика и Турбо Бейсика настолько велики, что во многих случаях они успешно конкурируют с языком Паскаль. [7]
3.2. Языка программирования Java.
Язык программирования Java (произносится как "джава"), стал в свое время результатом поиска программной платформы, которая бы обеспечила эффективными средствами разработчиков программных продуктов как для компьютеров с различной аппаратно архитектурой, операционной системой, разного уровня в сети (десктопы, серверы, позже – мобильные телефоны), так и для различных типов техники с программным управлением.
Проект Java созрел в недрах лабораторий Sun Microsystems в 1990-х годах. Его рождение связано с проблемой несовместимости программного обеспечения для разных платформ (DOS, Windows, Unix, Macintosh), а также с появлением и стремительным распространением World Wide Web. В 1991 г. несколько работников Sun (Patrick Naughton, James Gosling, Mike Sheridan) образовали ядро группы, которой поручили создание программной технологии, которая бы была уникальной и имела неоспоримые перспективы. Первоначальное название проекта – Oak. Через несколько лет, после проведения маркетинговых исследований, проект был переименован в Java. С тех пор символом этого языка программирования и платформы в целом является логотип с чашкой горячего кофе (рис. 1). [3]
Рис.1. Символ языка программирования Java.
При разработке Java за основу взяли синтаксис языка С ++. Стержнем новой инструментальной платформы должна стать кроссплатформенность – способность программ работать на различных операционных системах и архитектурах без изменения программного кода.
Первым примером Java-приложений стали апплеты, которые запускались в окне специально созданного браузера WebRunner, позже переименованного в HotJava.
23 мая 1995 г. Java и HotJava был официально представлен Sun. Была предложена концепция платформы, документацию и инструментальный пакет для разработчиков JDK – Java Development Kit. [4]
В декабре 1995 г.. Компании Sun и Netscape (разработчик популярного в то время браузера Netscape Navigator) презентует язык Java Script – язык сценариев, который расширяет HTML и является частью кода веб-страницы. Ее назначение – расширение функциональности и интерактивности работы в браузере. Заметим, что Java и JavaScript – разные языки, с разным позиционированием и возможностями.
В последующие годы выходят новые версии JDK, новые библиотеки классов, в т.ч. с поддержкой 2d-графики, актуального оконного интерфейса, взаимодействия с базами данных и т.д.
В 2009 году Sun Microsystems была поглощена софтверным гигантом Oracle, под эгидой которого осуществляется дальнейшее развитие Java-платформы. [5]
Язык Java – это объектно-ориентированный язык программирования, который ведет свою историю от известного языка C ++. Но, в отличие от последнего, Java является языком, который интерпретируется. Программы, написанные на ней, способны работать в разных местах сети и не зависят от платформы, на которой выполняются написанные на ней приложения. Java сознательно избегает арифметики с указателями и другими ненадежными элементами, которыми изобилует C.
Для отладки программ на языке Java подойдет любой из пакетов: Microsoft Visual J ++, Symantec Cafe, Java Add-On из состава Borland C ++ или Sun Java WorkShop. Если есть желание пользоваться командными файлами, то можно загрузить с Web-сервера "родной" вариант компилятора Java – Java Development Kit (JDK). [9]
В терминах языка Java маленькое приложение, встраиваемое в страницу Web, называется апплетом. Собственно говоря, создание апплетов – основное применение для Java. Апплеты снискали себе звание подлинных украшений для Web. Апплет может быть и окном анимации, и электронной таблицей, и всем, что только можно себе представить. Но это не значит, что на Java нельзя писать нормальные приложения с окнами. Этот язык программирования изначально была создан для обычных приложений, выполняющихся в Internet и в интрасети, и уже потом стал использоваться для изготовления апплетов.