Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Обзор языков программирования высокого уровня (Обзор Delphi.)

Содержание:

ВВЕДЕНИЕ

К сегодняшнему дню сформировалась очень тесная связь между языками, на которых реализуется речь, и языками, на которых производится программирование. Язык программирования в некотором роде родствен речевым языкам, так как предлагает программисту набор концептуальных инструментов, достаточный для достижения цели – программирования, также как речевые языки обладают достаточным количеством инструментов для выражения мыслей. Тем не менее, большинство языков, применяющихся в речи, относительно статичны, и развиваются спонтанно и временно, в то время как языки программирования прогрессируют сообразно течению времени и развитию технологий.

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

Появление персонального компьютера и операционных систем с пользовательским интерфейсом привело и к развитию языков программирования. Так, сегодня наиболее часто для создания новых программных продуктов используются языки программирования высокого уровня.

Для подробного изучения вопроса необходимо выполнить цель исследования – осуществить обзор языков программирования высокого уровня.

Для достижения данной цели необходимо выполнить следующие задачи:

  • рассмотреть понятие языка программирования, привести его структуру;
  • классифицировать языки программирования;
  • осуществить обзор наиболее распространенных языков программирования высокого уровня: C++, Python и Delphi;
  • подвести итоги исследования.

Объектом исследования выступают языки программирования, а предметом – особенности языков программирования высокого уровня C++, Python и Delphi.

Методологической основой исследования выступили научные труды таких отечественных исследователей проблемы, как Герман О., Павловская Т. А., Хабибуллин И. и др.

Структура работы содержит две главы, каждая из которых, в свою очередь, включает два и три параграфа соответственно. В исследование также включены такие структурные элементы, как введение, заключение и список использованных источников.

Глава 1. Языки программирования

1.1 Понятие языка программирования

Язык программирования – искусственный (формальный) язык, предназначенный для записи программ для исполнителя (например, компьютера или станка с числовым управлением). Язык программирования задается своим описанием. Описание языка программирования – это документ, специфицирующий возможности алгоритмического языка. Обычно описание содержит:

  • алфавит допустимых символов и служебных (ключевых) слов;
  • синтаксические правила построения из алфавита допустимых конструкций языка;
  • семантику, объясняющую смысл и назначение конструкций языка[1].

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

Машинный язык, который состоит из команд процессора ЭВМ, также является языком программирования. Но алгоритмы, записанные на машинном языке, трудны для чтения даже программисту–разработчику, кроме того, работа с таким языком требует знания архитектуры конкретного компьютера, поэтому в программировании, как правило, используют языки более высокого уровня, чем машинные языки. Язык высокого уровня – это язык программирования, понятия и структура которого удобны для восприятия человеком и не зависят от конкретного компьютера, на котором будет выполняться программа[2].

Для того чтобы программу, записанную на языке программирования высокого уровня, можно было выполнить на компьютере, ее надо перевести на машинный язык. Программное средство, выполняющее эту функцию, называется транслятором.

Транслятор – это программа, которая считывает текст программы, написанной на одном языке, и транслирует (переводит) его в эквивалентный текст на другом языке (обычно на машинном языке). Трансляторы бывают двух основных видов: компиляторы и интерпретаторы.

Компилятор преобразует текст исходной программы в набор инструкций для данного типа процессора (машинный код) и далее записывает его в исполняемый файл (exe–файл), который может быть запущен на выполнение как отдельная программа[3]. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык.

Интерпретатор в результате трансляции выполняет операции, указанные в исходной программе. При этом программа остается на исходном языке и не может быть запущена на выполнение без интерпретатора.

Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Pascal, можно написать интерпретатор, а для любого интерпретируемого языка можно создать компилятор, – например, язык Бейсик, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений[4].

Некоторые языки, например Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно–независимый код низкого уровня, байт–код. Далее байт–код выполняется виртуальной машиной. Для выполнения байт–кода обычно используется интерпретация. Подобный подход в некотором смысле позволяет использовать плюсы как интерпретаторов, так и компиляторов.

Состав языка. Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Язык программирования содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания – выражениями, предложения – операторами. Символы, элементарные конструкции, выражения и операторы составляют иерархическую структуру, поскольку элементарные конструкции образуются из последовательности символов, выражения – это последовательность элементарных конструкций и символов, а оператор – последовательность выражений, элементарных конструкций и символов.

Описание языка есть описание четырех названных элементов. Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений – это правила образования любых выражений, имеющих смысл в данном языке. Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке. Описание каждого элемента языка задастся его синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения[5].

Символы языка – это основные неделимые знаки, в терминах которых пишутся все тексты на языке. Элементарные конструкции – это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка. Выражение в языке программирования состоит из элементарных конструкций и символов, оно задает правило вычисления некоторого значения.

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

Действия, заданные операторами, выполняются над данными. Предложения языка программирования, в которых даются сведения о типах данных, называются описаниями или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторов образует программу на языке программирования[6].

Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Количество языков программирования постоянно растет, хотя этот процесс явно замедлился. Некоторыми языками пользуется только небольшое число программистов, другие становятся известны миллионам людей. Часть из них узкоспециализированны (предназначены для решения определенного класса задач), а часть – универсальны. Профессиональные программисты иногда применяют в своей работе более десятка разных языков программирования.

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

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

К специализированным языкам можно отнести язык АРТ (Automatically Programmed Tools) – первый специализированный язык программирования для станков с числовым управлением. Язык был разработан группой американских специалистов в 1956–1959 гг. под руководством математика Дугласа Т. Росса. Язык СOBOL (Common Business–Oriented Language), созданный в США под руководством Грейс Мюррей Хоппер в 1959 г., ориентирован на обработку экономической информации. Математик Грейс Мюррей Хоппер (рисунок 1) возглавила проект по разработке СOBOL в чине капитана второго ранга, впоследствии она стана контр–адмиралом. Г. М. Хоппер называют «мамой и бабушкой» СOBOLа[7].

Грейс Мюррей Хоппер

Рисунок 1 Грейс Мюррей Хоппер

К специализированным языкам можно отнести и современные языки web–программирования Perl и PHP. Языки Рапира, Е–язык (Россия), SMR (Великобритания), LOGO (США) можно отнести к языкам, предназначенным для обучения программированию.

Самыми распространенными универсальными языками программирования сегодня являются C++, Delphi, Java, Pascal, Visual Basic, Python. Рассматривая языки программирования как самостоятельный объект исследования, можно провести их классификацию по концепции построения языка.

Языки программирования можно разделить на два класса: процедурные и непроцедурные (рисунок 2)[8]. Процедурные (императивные) языки – это языки операторного типа. Описание алгоритма на этом языке имеет вид последовательности операторов. Характерным для процедурного языка является наличие оператора присваивания (Basic, Pascal, С). Программа, написанная на императивном языке, очень похожа на приказы, выражаемые повелительным наклонением в естественных языках, то есть это последовательность команд, которые должен выполнить компьютер. Программируя в императивном стиле, программист должен объяснить компьютеру, как нужно решать задачу.

Непроцедурные (декларативные) языки – это языки, при использовании которых в программе в явном виде указывается, какими свойствами должен обладать результат, но не говорится, каким способом он должен быть получен. Непроцедурные языки делятся на две группы: функциональные и логические[9].

Декларативные языки программирования – это языки программирования высокого уровня, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил и фактов). Характерной особенностью декларативных языков является их декларативная семантика. Основная концепция декларативной семантики заключается в том, что смысл каждого оператора не зависит от того, как этот оператор используется в программе. Декларативная семантика намного проще семантики императивных языков, что может рассматриваться как преимущество декларативных языков над императивными[10].

https://xn----7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/img/321.gif

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

Логические языки

В программах на языках логического программирования соответствующие действия выполняются только при наличии необходимого разрешающего условия на вывод новых фактов из данных фактов согласно заданным логическим правилам. Логическое программирование основано на математической логике (см. «Логические операции. Кванторы», «Логические выражения»).

Первым языком логического программирования был язык Planner, он был разработан Карлом Хьюитом в Лаборатории искусственного интеллекта Массачусетсского технологического института в 1969 г. В этом языке была заложена возможность автоматического вывода (получения) результата из данных и заданных правил путем перебора вариантов (совокупность которых называлась планом). Но самым известным языком логического программирования является ПРОЛОГ, который был создан во Франции в Марсельском университете в 1971 г. Аленом Кольмеро (рисунок 3).

https://xn----7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/img/330.gif

Рисунок 3 Ален Кольмеро

Программа на языке ПРОЛОГ содержит две составные части: факты и правила. Факты представляют собой данные, с которыми оперирует программа, а совокупность фактов составляет базу данных ПРОЛОГа, которая, по сути, является реляционной базой данных. Основная операция, выполняемая над данными, – это операция сопоставления, называемая также операцией унификации или согласования. Правила состоят из заголовка и подцелей. Выполнение программы, написанной на ПРОЛОГе, начинается с запроса и состоит в доказательстве истинности некоторого логического утверждения в рамках заданной совокупности фактов и правил. Алгоритм этого доказательства (алгоритм логического вывода) и определяет принципы исполнения программы, написанной на ПРОЛОГе[11].

В отличие от программ, составленных на языках процедурного типа, предписывающих последовательность шагов, которые должен выполнять компьютер для решения задачи, на ПРОЛОГе программист описывает факты, правила, отношения между ними, а также запросы по проблеме.

Возможности применения языка ПРОЛОГ весьма обширны. Среди наиболее известных – применение в символической математике, планировании, автоматизированном проектировании, построении компиляторов, базах данных, обработке текстов на естественных языках. Но, наверное, самое характерное применение ПРОЛОГа – это экспертные системы.

На сегодняшний день существует целый класс логических языков; так, от языка Planner также произошли логические языки программирования QA–4, Popler, Conniver и QLISP. Языки программирования Mercury, Visual Prolog, Oz и Fril произошли уже от языка Prolog.

Функциональные языки

Первым языком функционального типа является язык ЛИСП, созданный в Массачусетсском технологическом институте в 1956–1959 гг. Джоном Маккарти (рисунок 4), который в 1956 г. на Дармутской конференции (США) впервые предложил термин «искусственный интеллект».

Джон Маккарти

Рисунок 4 Джон Маккарти

И хотя до сих пор не утихают споры вокруг этого термина и развившегося научного направления в его рамках, исследователи единодушны в использовании функциональных и логических языков для данной области. Значительное число работ по искусственному интеллекту реализовано на ЛИСПе[12].

После своего появления ЛИСПу присваивали много эпитетов, отражающих его черты: язык функций, символьный язык, язык обработки списков, рекурсивный язык. С позиций сегодняшней классификации ЛИСП определяется как язык программирования функционального типа, в основу которого положен метод https://xn----7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/img/lyamda.gif–исчисления (метод https://xn----7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/img/lyamda.gif–исчисления разработан в 30–е годы прошлого столетия А.Черчем в качестве строгой математической модели для вычислимых функций, см. «Теория алгоритмов»).

Программа, написанная на функциональном языке, состоит из неупорядоченного набора уравнений, определяющих функции и значения, которые задаются как функции от других значений. Программы и данные ЛИСПа существуют в форме символьных выражений, которые хранятся в виде списковых структур. ЛИСП имеет дело с двумя видами объектов: атомами и списками. Атомы – это символы, используемые для идентификации объектов, которые могут быть числовыми и символьными (понятия, материалы, люди и т.д.). Список – это последовательность из нуля или более элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. Над списками выполняются три примитивные операции: извлечение первого элемента списка; получение оставшейся части списка после удаления первого элемента; объединение первого элемента списка L и оставшейся части списка Q[13].

Тексты программ на функциональных языках программирования только описывают способ решения задачи, но не предписывают последовательность действий для решения.

В качестве основных свойств функциональных языков программирования обычно рассматриваются следующие:

  • краткость и простота;
  • строгая типизация;
  • модульность;
  • функции – объекты вычисления;
  • чистота (отсутствие побочных эффектов);
  • отложенные (ленивые) вычисления[14].

Объектно–ориентированные языки

Объектно–ориентированные языки – это языки, в которых понятия процедуры и данных, используемых в обычных системах программирования, заменены понятием «объект» (см. статью «Объектно–ориентированное программирование»). Языком объектно–ориентированного программирования в чистом виде считается SmallTalk, возможности объектно–ориентированного программирования заложены также в Java, C++, Delphi[15].

Дальнейшее развитие современного программирования связано с так называемым «параллельным программированием». Для реализации этой технологии разрабатываются специализированные объектно–ориентированные языки. К языкам такого типа относят, например, MC# (mcsharp) – высокоуровневый объектно–ориентированный язык программирования для платформы .NET, поддерживающий создание программ, работающих в распределенной среде с асинхронными вызовами.

Глава 2. Обзор языков программирования высокого уровня

2.1 Обзор C++

С++ является расширением языка С. С представляет собой гибкий и мощный язык программирования, использовавшийся для разработки наиболее важных программных продуктов в течение прошедших лет. Однако, как только проект превышает определенные размеры, возможности применения языка С достигают своих границ. В зависимости от проекта, программы размером от 25000 до 100000 строк оказываются трудными для разработки и управления потому, что их трудно охватить целиком. Работая в Bell Laboratories в Murray Hill, штат Нью–Джерси, Бьярн Страуструп (Bjarne Stroustrup) добавил к языку С несколько расширений с целью решить эту проблему. Первоначально язык назывался «С с классами». Это название было заменено на С++ в 1983 году[16].

Большинство сделанных Страуструпом добавлений к С поддерживают объектно–ориентированное программирование (далее – ООП), которое иногда сокращенно называют ООП. В следующем разделе будут кратко изложены основные концепции объектно–ориентированного программирования. Как отмечает Страуструп, целый ряд объектно–ориентированных концепций был добавлен в С++, основываясь на языке Симула–67. Поэтому С++ представляет собой смесь двух мощных программных методов.

С момента своего возникновения С++ подвергался серьезным ревизиям трижды, первый раз в 1985 году, второй – в 1989 году. Третий пересмотр языка произошел в связи с работой над стандартом ANSI для С++. Первая версия предложенного стандарта была создана к 25 января 1994 года[17]. Комитет ANSI по языку С++ практически сохранил все черты языка, определенные Страуструпом, и добавил несколько новых. Процесс стандартизации обычно является достаточно медленным, и стандартизация С++ не является исключением.

Изобретая С++ путем добавления к языку С поддержки объектно–ориентированного программирования, Страуструп представлял всю важность сохранения философии языка С, включая его эффективность, гибкость и то, что именно программист, а не язык отвечает за разрабатываемое программное обеспечение. Как будет видно, справиться с этой задачей было нелегко. С++ обеспечивает всю свободу языка С одновременно с мощью объектов. Как отмечал Страуструп, С++ позволяет добиться ясности, расширяемости и легкости сопровождения за счет структуризации причем без потери эффективности.

Хотя первоначально С++ был нацелен на работу с очень большими программами, это не ограничивает его применение. Фактически объектно–ориентированные атрибуты языка С++ могут быть эффективно применены фактически к любой задаче программирования. Этот язык часто используется для таких проектов, как создание редакторов, баз данных, персональных систем работы с файлами и коммуникационных программ. Благодаря тому, что С++ унаследовал эффективность языка С, с его помощью разрабатывается высокопроизводительное программное обеспечение[18].

Поскольку С++ является надмножеством С, то большинство программ на языке С являются также программами и на языке С++. (Имеется несколько небольших различий между С и С++, благода­ря которым некоторые типы программ на языке С не будут компилироваться компилятором язы­ка С++. Можно писать программы на С++, которые выглядят в точности как программы на языке С, но в таком случае не будут использоваться пре­имущества, предоставляемые С++–программистам. Кроме того, большинство программистов, пи­шущих на языке С++, используют стиль и некоторые особенности написания программ, которые присущи только С++.

C++ – компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования как процедурное программирование, объектно–ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником – языком C, – наибольшее внимание уделено поддержке объектно–ориентированного и обобщённого программирования.

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений. Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ[19].

C++ добавляет к C объектно–ориентированные возможности. Он вводит классы, которые обеспечивают три самых важных свойства ООП: инкапсуляцию, наследование и полиморфизм.

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

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

В C++ при наследовании одного класса от другого наследуется реализация класса, плюс класс–наследник может добавлять свои поля и функции или переопределять функции базового класса. Множественное наследование разрешено.

Конструктор наследника вызывает конструкторы базовых классов, а затем конструкторы нестатических членов–данных, являющихся экземплярами классов. Деструктор работает в обратном порядке[20].

Наследование бывает публичным, защищённым и закрытым.

Полиморфизм

Целью полиморфизма, применительно к объектно–ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных.

Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование того же интерфейса для задания единого класса действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Полиморфизм может применяться также и к операторам[21].

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

Основным способом организации информации в C++ являются классы. В отличие от структуры (struct) языка C, которая может состоять только из полей и вложенных типов, класс (class) C++ может состоять из полей, вложенных типов и функций–членов. Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными (public), защищёнными (protected) и закрытыми (private). В C++ структуры отличаются от классов тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса – собственные.

С++ – язык, складывающийся эволюционно. Каждый элемент С++ заимствовался из других языков отдельно и независимо от остальных элементов (ничто из предложенного С++ за всю историю его развития не было новшеством в Computer Science), что сделало язык чрезвычайно сложным, со множеством дублирующихся и взаимно противоречивых элементов, блоки которых основаны на разных формальных базах.

Критики С++ не противопоставляют ему какой–либо конкретный язык, а наоборот, утверждают, что для всякого случая применения С++ всегда существует альтернативный инструментарий, позволяющий решить ту же задачу более эффективно и качественно. В свою очередь, сторонники С++ считают некорректным сравнивать различные аспекты С++ с совершенно различными языками, так как общий набор средств и возможностей С++ существенно шире, чем в большинстве языков, с которыми проводится сравнение, и сама по себе широта возможностей, на их взгляд, является веским оправданием несовершенства каждой отдельно взятой возможности. Более того, по их мнению, высокая совместимость с Си является одной из принципиальных черт языка, и потому все недостатки С++ оправданы преимуществами, предоставляемыми этой совместимостью[22].

Достоинства:

  • высокая совместимость с языком С;
  • вычислительная производительность;
  • поддержка различных стилей программирования: структурное, объектно–ориентированное, обобщённое программирование, функциональное программирование, порождающее метапрограммирование;
  • автоматический вызов деструкторов объектов (в порядке обратном вызову конструкторов) упрощает и повышает надёжность управления памятью и другими ресурсами (открытыми файлами, сетевыми соединениями, т. п.);
  • перегрузка операторов;
  • шаблоны (дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных);
  • возможность расширения языка для поддержки парадигм, которые не поддерживаются компиляторами напрямую;
  • доступность. Для С++ существует огромное количество учебной литературы, переведённой на всевозможные языки.

Недостатки:

  • плохо продуманный синтаксис сужает спектр применимости языка;
  • язык не содержит многих важных возможностей;
  • язык содержит опасные возможности;
  • производительность труда программистов на языке оказывается неоправданно низка;
  • громоздкость синтаксиса;
  • тяжелое наследие;
  • необходимость следить за памятью.

В целом С++ является достаточно удобным инструментом реализации целей программирования, показывающим высокую эффективность и функциональность готовых программных продуктов.

2.2 Обзор Python

Python – это универсальный современный язык программирования высокого уровня, к преимуществам которого относят высокую производительность программных решений и структурированный, хорошо читаемый код[23]. Синтаксис Питона максимально облегчен, что позволяет выучить его за сравнительно короткое время. Ядро имеет очень удобную структуру, а широкий перечень встроенных библиотек позволяет применять внушительный набор полезных функций и возможностей. ЯП может использоваться для написания прикладных приложений, а также разработки WEB–сервисов.

Python может поддерживать широкий перечень стилей разработки приложений, в том числе, очень удобен для работы с ООП и функционального программирования. Один из самых популярных интерпретаторов языка – CPython, написанный на Си. Распространяется эта среда разработки бесплатно по свободной лицензии. Интерпретатор поддерживает большинство популярных платформ.

Питон активно развивается. Примерно раз в 2 года выходят обновления. Важной особенностью языка является отсутствие таких стандартов кодировки как ANSI, ISO и некоторых других, они работают благодаря интерпретатору[24].

Язык начал разрабатываться во второй половине 80–х г.г. прошлого века. Автором Питона стал программист из Нидерландов по имени Гвидо ван Россум. Изначально язык должен был стать объектно–ориентированным. Фактически, это был язык сценариев, т.е. скриптовый язык. В феврале 1991 года ван Россум опубликовал исходный код языка в одной из новостных групп.

Основными факторами успеха Python стали удачный выбор места презентации в популярном и массовом профессиональном сообществе в сочетании с действительно простым кодом и широкими возможностями. Впоследствии Гвидо создал специализированный портал PEP, где идет регулярное обсуждение по развитию и улучшению продукта.

В 2008 года появилось большое обновление языка – Python 3.0. Версия продукта известна так же под названием Py3k. В этой версии были устранены многие ключевые недоработки в архитектуре ядра. Что было важно – новая версия продукта сохранила полную совместимость с более старыми вариантами. Сегодня разработчиками поддерживается две линии – Python 3.x и 2.x

Питон – не самый «молодой» язык программирования, но и не слишком старый. К моменту его создания уже существовали такие «монстры», как Pascal или С. А потому при создании ЯП авторы старались взять лучшее из различных платформ для разработчиков. Фактически Python представляет из себя своеобразный «микс» удачных решений более чем из 8 различных языков. К примеру, байт компиляция появилась еще до создания Питона, но была очень удачна в него интегрирована[25].

Питон поддерживает практически все распространенные операционные системы. Он может прекрасно работать на карманных компьютерах, так и на больших серверах. В случае если платформа значительно устаревает, она исключается из поддержки ядра. К примеру, версии языка, начиная от 2.6, уже не работают с платформами Windows 95, 98 и ME. В случае необходимости можно воспользоваться более старыми версиями, отказавшись от применения современных инструментов языка. И тогда приложение будет работать в том числе с этими ОС. Для старых версий периодически выходят патчи. Язык также может поддерживать работу с виртуальной машиной Java[26].

Язык программирования имеет четко структурированное семантическое ядро и достаточно простой синтаксис. Все, что пишется на этом языке, всегда легко читаемо.

Набор операторов в языке вполне стандартен. Удобная особенность синтаксиса – это форматирование текста кода при помощи разбивки их на блоки с помощью отступов, которые создают нажатием клавиш «Space» и «Tab». В синтаксисе отсутствуют фигурные или операторные скобки, обозначающие начало и конец блока. Такое решение заметно сокращает количество строк тела программы и приучает программиста соблюдать хороший стиль и аккуратность при написании кода.

В 2018 году в Питоне были изменены некоторые ключевые термины, но это скорее упростило понимание. А потому проблем у разработчиков при изучении документации не возникает[27].

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

Иногда его сравнивают с такими популярными платформами как Ruby, но, в отличие от него, Python требует меньше оперативной памяти, быстрее взаимодействует с процессором.

Краткий перечень возможностей:

  • любой описанный класс единовременно представляет из себя и объект;
  • функция множественного наследования;
  • поддержка виртуальных функций;
  • возможность легко управлять именами скрывать их особыми метками;
  • возможность жизнью объекта и распределение памяти;
  • управление работы операторов как символьных, так и логических;
  • возможность имитировать поле;
  • управление полями – как прямой, так и частичный доступ;
  • контроль над самыми распространенными операциями. от глубокого до итерации по объекту;
  • возможность создавать триггеры и классы.

Python относится к наиболее востребованным и популярным языкам программирования, о чем свидетельствуют многочисленные рейтинги и анализ предложений на рынке разработки программных продуктов. Он достаточно прост, а потому изучение языка не займет слишком много времени.

2.3 Обзор Delphi

Delphi является языком программирования и средой разработки программного обеспечения. Он разработан Borland (ранее известный как Inprise). Язык программирования Делфи, ранее известный как Object Pascal (Pascal с объектно–ориентированными расширениями), первоначально ориентированный только на Microsoft Windows, но в настоящее время позволяет строить собственные приложения для Linux и Microsoft. NET Framework, и других[28].

Наиболее популярное использование – разработка настольных приложений и баз данных предприятия, а как инструмент язык программирования Делфи может использоваться и для большинства типов развивающихся проектов. Это был один из первых языков, который стал известным как инструмент RAD (быстрая разработка приложений), когда вышел в 1995 году. Delphi 2, вышедший год спустя, поддерживал 32–разрядную среду Windows , и а только несколько лет спустя вышли C, C + + Builder. В 2001 году стала доступна версия под ОС Linux известная как Kylix (классическая греческая урна). Каждый год выходило по одной новой версии, в 2002 году продукт стал известен как Delphi 7 Studio, язык стал официально называться язык программирования Delphi, а не Object Pascal, а также была добавлена поддержка Linux (через Kylix) и. NET (через Предварительный компилятор). Полная поддержка. NET запланирована на предстоящий Delphi 8. Программирование для чайников.

Основные компоненты Delphi и Kylix: язык Delphi (ранее официально известный как языка Object Pascal), ВК / CLX (Visual Component Library), сильные связи с базами данных, в сочетании с мощной IDE (Integrated Development Environment) и дополнительными инструментами поддержки[29].

Особенности языка Delphi включают:

  • прозрачная обработка объектов через ссылки или указатели;
  • свойства как часть языка, вкупе с функциями Get и Set, которые являются прозрачной инкапсуляцией доступа к членам полям;
  • свойства индекса и свойствами по умолчанию, которые обеспечивают доступ к коллекции удобным и прозрачным способом;
  • делегаты или по–другому методы указателей безопасного типа, которые используются для приведения в действие события вызванных компонентами;
  • делегирование реализации интерфейса в поле или свойство класса;
  • простота внедрения обработчики Windows сообщение, отметь метод класса с числом / имя окна сообщений для обработки;
  • большинство функций, перечисленных выше, были введены в Delphi первой и адаптированы на других языках позже[30].

Главным архитектором Delphi, и его предшественника Turbo Pascal, был Андерс Хейлсбергом, пока он не перешел в Microsoft в 1996 году посвятил свое дело основам программирования.

Продукт Delphi распространяется в различных комплектах, каждый из которых предлагает большую функциональность по сравнению с другими:

  • персональный;
  • профессиональный;
  • предприятие;
  • архитектор.

Веские причины для использования Delphi:

  • очень информативные и полезные сообществу новости;
  • может компилировать в один исполняемый, упрощая распределение и сокращение вопросов с разными DLL;
  • VCL и сторонние компоненты, как правило, доступны с полным исходным кодом;
  • мощный и быстрый оптимизирующий компилятор;
  • из одного исходного кода получаются отличные машинные коды для разных ОС;
  • поддержка новейших технологий и стандартов;
  • клоны и альтернативы[31].

Не будучи способным удовлетворить все потребности программистов, есть целый набор дополнительных средств, которые призваны расширить диапазон решаемых задач с помощью Delphi или это можно сделать с помощью вставки кода на других языках, там где Delphi и Kylix бессильны.

Заменители Delphi могут быть использованы в случае невозможности оплатить среду разработки, потребности в бесплатных средах разработки (например, для операционных систем и свободно распространяемого программного обеспечения или в образовательных целях). В большинстве случаев эти альтернативы используются для обучения, а так же для написания серверных компонент, для операционных систем, которые не являются широко распространенными (так было до тех пор, пока не появился Kylix для ОС Linux, котоорая используется в основной массе как ОС для серверов).

Перечислим некоторые:

Free Pascal – замена, которая выпускается в виде компилятора, запускаемого из командной строки. Данная разработка основана на совместимости с основным набором функций как Turbo Pascal, так и Delphi диалектов. Особенности Delphi версий выше 4 реализованы и работают. Работает на большинстве x86 операционных систем, включая Win32, Dos , Linux, BSD и Novell Netware. Поддержка других операционных систем на m68k и PowerPC , статус которых до сих пор меняется очень быстро, не производится. Работа по переносу на платформу SPARC началась.

GNU Pascal (отдельно распространяемых часть GNU Compiler Collection) хотя формально не нацелена на диалекты Borland Паскаль, но содержит совместимость с Borland Pascal, и постепенно впитывает особенности языка Delphi, хотя и не подходит для перекомпиляции больших объемов кода Delphi. Это самый плодовитый компилятор с точки зрения операционных систем и процессоров, хотя, и заслуживает упоминания только в качестве последнего варианта.

Существует инструмент под названием Pocket студия, которая направлена на компиляцию урезанного кода Delphi для КПК.

Virtual Pascal – компилятор, x86 32–разрядный Turbo Pascal и Delphi, совместим в основном с OS/2 и Windows, хотя разработан DOS Extender и экспериментальный Linux кросс–компилятор. Компилятор застрял на уровне около Delphi версии 2, и сайт не претерпел существенных изменений в течение двух лет, но в качестве альтернативы это еще один из лучшимх, с великолепным IDE и отладчиком, хотя Free Pascal тоже не дремлет.

BloodShed распространяет очень хороший графический редактор Win32 (хотя и не RAD) как интерфейс для GNU Pascal и Free Pascal.

Lazarus усилия направлены на создание среды разработки для Free Pascal. Хотя порт GTK становится полезной для написания небольших приложений, таких как средства конфигурирования, то win32 порт все еще нуждается в значительной доработке.

InnerFuse является переводчиком Delphi для встраивания в приложения. Ходят слухи, что работать с несколькими версиями Делфи.

WDOSX является Win32 API эмуляции DOS Extender, который может быть использован для получения консольных приложейний написанных на Delphi, работающих на обычной DOS[32].

ЗАКЛЮЧЕНИЕ

В ходе проведения исследования была достигнута цель работы – осуществлен обзор языков программирования высокого уровня.

Для достижения цели были выполнены следующие задачи:

  • рассмотрено понятие языка программирования, приведена его структуру;
  • классифицированы языки программирования;
  • осуществлен обзор наиболее распространенных языков программирования высокого уровня: C++, Python и Delphi.

Обзор наиболее распространенных языков программирования показал, что каждый из них обладает относительно тождественным числом преимуществ и недостатков, что говорит о субъективности применимости того или иного языка. Так, в зависимости от целей и задач разработки, может выбран любой из рассмотренных языков программирования. В то же время определено, что, несмотря на продолжение развития, Delphi в некоторой степени отстает от своих «Старших братьев» C++ и Python, предлагающих программисту больше свободы и средств для достижения целей программирования. Несмотря на это, есть то, что объединяет все языки программирования высокого уровня – это высокие требования к программисту, его навыкам и знаниям. Так, для продуктивной работы с языками высокого уровня обязательно наличие опыта и навыков работы с более примитивными языками низкого уровня.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Биллиг, В. А. Основы объектного программирования на C# (C# 3.0, Visual Studio 2008) / В. А. Биллиг. – М.: Интернет–университет информационных технологий, Бином. Лаборатория знаний, 2016. – 584 c.
  2. Буховец, А. Г. Алгоритмы вычислительной статистики в системе R. Учебное пособие / А. Г. Буховец, П. В. Москалев. – М.: Лань, 2015. – 160 c.
  3. Васильев, П. П. Турбо Паскаль в примерах и задачах / П. П. Васильев. – М.: Финансы и статистика, 2016. – 496 c.
  4. Гавриков, М. М. Теоретические основы разработки и реализации языков программирования / М. М. Гавриков, А. Н. Иванченко, Д. В. Гринченков. – М.: КноРус, 2014. – 184 c.
  5. Гергель, В. П. Современные языки и технологии параллельного программирования / В. П. Гергель. – М.: Издательство МГУ, 2016. – 408 c.
  6. Герман, О. Программирование на Java и C# для студента / О. Герман, Ю. Герман. – М.: БХВ–Петербург, 2014. – 512 c.
  7. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2015. – 294 c.
  8. Зыков, С. В. Введение в теорию программирования. Курс лекций. Учебное пособие / С. В. Зыков. – М.: Интернет–университет информационных технологий, 2017. – 400 c.
  9. Ишкова, Э. А. C#. Начала программирования / Э. А. Ишкова. – М.: Бином–Пресс, 2016. – 334 c.
  10. Кетков, Ю. Л. Свободное программное обеспечение. FREE PASCAL для студентов и школьников (+ CD) / Ю.Л. Кетков, А.Ю. Кетков. – М.: БХВ–Петербург, 2017. – 376 c.
  11. Культин, Н. Visual Basic для студентов и школьников / Н. Культин. – М.: БХВ–Петербург, 2017. – 354 c.
  12. Медведик, В. И. Практика программирования на Паскаль. Задачи и решения. Учебное пособие / В. И. Медведик. – М.: ДМК Пресс, 2015. – 590 c.
  13. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 480 c.
  14. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – М.: Питер, 2016. – 464 c.
  15. Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. А. Павловская. – М.: Питер, 2015. – 496 c.
  16. Рапаков, Г. Г. Turbo Pascal для студентов и школьников / Г. Г. Рапаков, С. Ю. Ржеуцкая. – М.: БХВ–Петербург, 2017. – 352 c.
  17. Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование / Е. В. Санников. – М.: Солон–Пресс, 2015. – 188 c.
  18. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2016. – 224 c.
  19. Финогенов, К. Г. Использование языка Ассемблера. Учебное пособие / К. Г. Финогенов. – М.: Горячая линия – Телеком, 2017. – 440 c.
  20. Финогенов, К. Основы языка Ассемблера / К. Финогенов. – М.: Горячая Линия – Телеком, Радио и связь, 2017. – 963 c.
  21. Хабибуллин, И. Программирование на языке высокого уровня. C/C++ / И. Хабибуллин. – М.: БХВ–Петербург, 2016. – 512 c.
  22. Хорев, П. Б. Объектно–ориентированное программирование с примерами на С#. Учебное пособие / П. Б. Хорев. – М.: Форум, Инфра–М, 2016. – 200 c.
  23. Черпаков, И. В. Основы программирования. Учебник и практикум / И. В. Черпаков. – М.: Юрайт, 2016. – 220 c.
  1. Гергель, В. П. Современные языки и технологии параллельного программирования / В. П. Гергель. – М.: Издательство МГУ, 2016. – 32 c

  2. Там же, 33 с.

  3. Зыков, С. В. Введение в теорию программирования. Курс лекций. Учебное пособие / С. В. Зыков. – М.: Интернет–университет информационных технологий, 2017. – 24 c

  4. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2015. – 49 c

  5. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 121 c

  6. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2016. – 88 c

  7. Хабибуллин, И. Программирование на языке высокого уровня. C/C++ / И. Хабибуллин. – М.: БХВ–Петербург, 2016. – 201 c

  8. Хабибуллин, И. Программирование на языке высокого уровня. C/C++ / И. Хабибуллин. – М.: БХВ–Петербург, 2016. – 203 c

  9. Черпаков, И. В. Основы программирования. Учебник и практикум / И. В. Черпаков. – М.: Юрайт, 2016. – 65 c

  10. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2016. – 29 c

  11. Финогенов, К. Г. Использование языка Ассемблера. Учебное пособие / К. Г. Финогенов. – М.: Горячая линия – Телеком, 2017. – 33 c

  12. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 212 c

  13. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 213 c

  14. Там же, 216 с.

  15. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2015. – 101 c.

  16. Герман, О. Программирование на Java и C# для студента / О. Герман, Ю. Герман. – М.: БХВ–Петербург, 2014. – 19 c

  17. Там же, 21 с

  18. Ишкова, Э. А. C#. Начала программирования / Э. А. Ишкова. – М.: Бином–Пресс, 2016. – 34 c

  19. Павловская, Т. А. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – М.: Питер, 2016. – 102 c.

  20. Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. А. Павловская. – М.: Питер, 2015. – 62 c

  21. Там же, 63 с.

  22. Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. А. Павловская. – М.: Питер, 2015. – 73 c

  23. Опалева, Э. А. Языки программирования и методы трансляции / Э. А. Опалева, В. П. Самойленко. – М.: БХВ–Петербург, 2015. – 180 c

  24. Там же, 182 с

  25. Черпаков, И. В. Основы программирования. Учебник и практикум / И. В. Черпаков. – М.: Юрайт, 2016. – 99 c

  26. Там же, 101 с

  27. Зыков, С. В. Введение в теорию программирования. Курс лекций. Учебное пособие / С. В. Зыков. – М.: Интернет–университет информационных технологий, 2017. – 212 c

  28. Истомин, Е. П. Информатика и программирование / Е. П. Истомин, A. M. Власовец. – М.: Андреевский Издательский дом, 2015. – 213 c

  29. Кетков, Ю. Л. Свободное программное обеспечение. FREE PASCAL для студентов и школьников (+ CD) / Ю.Л. Кетков, А.Ю. Кетков. – М.: БХВ–Петербург, 2017. – 86 c

  30. Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование / Е. В. Санников. – М.: Солон–Пресс, 2015. – 47 c

  31. Рапаков, Г. Г. Turbo Pascal для студентов и школьников / Г. Г. Рапаков, С. Ю. Ржеуцкая. – М.: БХВ–Петербург, 2017. – 219 c

  32. Семакин, И. Г. Основы программирования и баз данных. Учебник / И. Г. Семакин. – М.: Academia, 2016. – 177 c