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

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

Содержание:

ВВЕДЕНИЕ

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

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

Для достижения этой цели рассмотрим следующие задачи:

Рассмотреть историю развития языков программирования

Охарактеризовать языки высокого уровня и рассмотреть работу компилятора

Выявить классификацию языков программирования высокого уровня

Согласно классификацию рассмотреть наиболее известные языки высокого уровня

Выявить их особенности, достоинства и недостатки.

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

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

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

1.1. История развития языков программирования

Основным понятием, которое в дальнейшем мы будем использовать, является «язык программирования». Дадим определение этому термину.

Язык программирования - это формальный искусственный язык, который, как и любой естественный язык, имеет алфавит, лексику, морфологию и синтаксис, а также семантику.

Говоря об общем понимании термина «язык программирования» в среде программистов-профессионалов и, прежде всего, создателей отдельных разновидностей языков программирования, можно выделить три основные точки зрения:

1) язык программирования как функция, так как он предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами;

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

3) язык программирования как исполнение: это понимание связано с тем, что язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

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

Надо отметить, что такое программирование было очень медленным, утомительным и подверженным ошибкам. Программу было очень трудно контролировать. Кроме того, при программировании в машинных кодах надо хорошо знать внутреннюю структуру ЭВМ, принцип работы каждого блока. И самое плохое в таком языке, что программы на данном языке являются машинозависимыми, т.е. для каждой ЭВМ необходимо было составлять свою программу, а также программирование в машинных кодах требует от программиста много времени, труда, повышенного внимания.

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

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

Во второй половине 1950-х годов появляются первые языки программирования высокого уровня. Философия, стоящая за этими языками, заключается в создании высокоуровневой системы обозначений, облегчающей программисту написание программ для численных вычислений, бизнес-приложений и символьных программ. В последующие десятилетия было создано множество языков программирования с новыми возможностями, которые сделали написание программ более простым, естественным и надёжным. Рассмотрим более подробно их ключевые особенности в следующем параграфе.

1.2. Языки программирования высокого уровня

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

Середина 50-х гг. характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных кодах стала уменьшаться, стали появляться языки программировании нового типа, выступающие в роли посредника между машинами и программистами. Эти языки программирования были машинонезависимыми (не привязаны к определенному типу ЭВМ).

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

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

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

Для связывания между собой объектных файлов, порождаемых компилятором, а также файлов библиотек предназначен компоновщик, или редактор связей (от англ. link – связывать, сцеплять). Результатом его работы является единый файл (исполняемый файл), который содержит весь текст результирующей программы на машинном языке. Для выполнения этой задачи компоновщик проходит по объектному коду, начиная с точки входа (главной исполняемой функции), находит все вызовы внешних процедур и функций, обращений к внешним переменным и увязывает их с кодом тех модулей, в которых они описаны. Функции, описанные в разных модулях исходной программы, могут вызывать друг друга сколь угодно много раз. Компоновщик должен найти соответствие каждому из этих вызовов и определить («разрешить») соответствующую ссылку. Ссылки, которым компоновщик не смог найти соответствие, называются неразрешёнными. В этом случае компоновщик выдаёт сообщение об ошибке.

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

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

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

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

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

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

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

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

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

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

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

Языки программирования высокого уровня подразделяют на [3]:

        • процедурно-ориентированные (ПОП);
        • предметно-ориентированные;
        • объектно-ориентированные (ООП).

Рассмотрим подробнее каждый из этих типов.

1. Процедурно-ориентированный.

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

Проблема при применении ПОП заключается в обработке данных. В ПОП данным не придается никакого значения. Под данными мы понимаем информацию, полученную от пользователя, новые результаты, полученные после вычислений, и т.д. Например, в языке C используются классы памяти (storage classes) языка. В C элемент данных (переменная) должен быть объявлен как GLOBAL для того, чтобы он мог быть доступен двум или более функциям программы. Если в программе насчитывается 10 функций, то все эти 10 функций могут получить доступ к глобальной переменной. Вполне возможно, что одна функция может случайно изменить значение этой глобальной переменной. И если она является ключевым элементом программы, любые такие случайные манипуляции повлияют на всю программу. Тогда будет слишком трудно отлаживать и выявлять функцию, вызывающую проблемы, особенно если программа очень большая.

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

2. Предметно-ориентированный.

Рассмотрим особенности языков другого класса. Предметно-ориентированные языки широко применяются в современной разработке программных приложений. Им можно дать следующее определение: «языки программирования, выводящие уровень абстракции за рамки программирования, задавая решение, в котором непосредственно используются концепции и правила из конкретной предметной области». Хотя языки общего назначения (General Purpose Language, GPL), такие как Java или Kotlin, широко применяются в самых разных предметных областях, предметно-ориентированные языки адаптированы к конкретной предметной области, что обеспечивает им чрезвычайно высокую эффективность в этой области. Такие языки предоставляют абстракции, адекватные решаемой проблеме, и позволяют выражать решения кратко и емко, причем для использования таких решений зачастую не требуется квалификация программиста.

3. Объектно-ориентированный.

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

Абстрагирование – способ выделения существенных характеристик некоторого объекта (абстракций), отличающих его от всех других видов объектов и, таким образом, четко определяющих его концептуальные границы.

Иерархия – способ упорядочения абстракций (классов) по уровням.

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

Модульность – способ разложения системы на связанные, но относительно самостоятельные части (модули).

Большинство объектно-ориентированных языков являются версиями процедурно-ориентированных и предметно-ориентированных.

Согласно выявленной классификации произведем подробный обзор наиболее известных языков программирования высокого уровня.

2.2 Процедурно-ориентированные языки

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

1) Язык Фортран (Fortran).

Является одним из первых языков программирования высокого уровня. Был создан в период с 1954 по 1957 года группой программистов под руководством Джона Бэкуса в корпорации IBM и это стало следующим этапом развития языков программирования.  К его основным достоинствам относится наличие огромного числа математических библиотек, поддержка работы с целыми, вещественными и комплексными числами высокой точности, встроенных средств обработки массивов. Он используется и по сей день, однако, не столько по причине удачного дизайна, сколько в силу большого количества написанных на нём программ, изменять и, тем более, переписывать которые нет смысла. Его структура способствует тому, что компилятор может очень хорошо оптимизировать вычисления.

К недостаткам можно отнести отсутствие средств отладки и анализа поведения программы, сложность понимания исходного кода. По сути, на данный момент Фортран является узкоспециализированным языком, применяемым для научных и инженерных вычислений.

2) Язык Бейсик (Basic). Был разработан в 1964 г. в качестве языка для обучения программированию.

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

Одним из основных недостатков языка является то, что он поддерживает только операционные системы семейства Windows, DOS и Mac OS X, что значительно сужает сферы его применения. Также к недостаткам можно отнести низкую скорость работы и отсутствие механизма наследования реализации объектов. С 1964 язык совершенствовался и претерпевал существенные изменения, появилось множество его диалектов.

Язык BASIC на данный момент устарел и практически нигде не используется. Тем не менее, BASIC сыграл весьма важную роль в развитии вычислительной техники и языков программирования в частности. Диалекты BASIC являются достаточно структурированными языками, они сопоставимы по возможностям с такими языками, как Си, Паскаль. В настоящее время довольно популярна обновлённая версия языка - Visual Basic

3) Язык Си (С) был создан в 1969—1973 годах в качестве языка системного программирования и первоначально предназначался для написания ОС UNIX.

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

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

Язык Си имеет свои существенные особенности, перечислим некоторые из них.

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

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

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

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

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

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

4) Язык Паскаль (Pascal). Был создан математиком Н. Виртом специально для обучения программированию в 1969. Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Один из первых языков, для которых была создана реализация «на самом себе» -- компилятор Паскаля был написан на самом Паскале.

В начале 1970-х годов для переноса Паскаль-систем на различные аппаратные платформы была создана система Pascal-P, в которой был единый компилятор Паскаля в промежуточный язык (P-код) и для каждой платформы создавался быстрый интерпретатор P-кода. Заимствование этой системы привело к созданию системы UCSD-Pascal в Университете Сан-Диего (Калифорния, США), намного позже её идеи были заимствованы создателями языка Java (байт-код, компиляция в байт-код, интерпретатор байт-кода).

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

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

Наиболее известной реализацией Паскаля является система Turbo Pascal (выросшая затем в Borland Pascal и далее в Delphi) фирмы Borland, в которой язык был значительно расширен, были устранены некоторые недостатки языка, добавлены новые возможности. Язык стал богаче, но в отсутствие отраслевой стандартизации, потерял переносимость и общность (до появления в 1998 году Kylix -- Delphi для Linux, продукты Borland работали только на платформе DOS/Windows, в настоящее время Kylix фактически заморожена).

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

2.3 Предметно-ориентированные языки

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

1) Язык Лисп был предложен Дж. Маккарти в работе в 1960 году и ориентирован на разработку программ для решения задач не численного характера. Английское название этого языка - LISP является аббревиатурой выражения LIStProcessing (обработка списков) и хорошо подчеркивает основную область его применения. Понятие “список” оказалось очень емким.

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

2) SQL символизирует собой структурированный язык запросов. Это - язык, который дает нам возможность создавать и работать в реляционных базах данных, являющихся наборами связанной информации, сохраняемой в таблицах. Язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде.

Язык SQL предоставляет программисту следующие функциональные возможности:

1. Организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами баз данных (БД).

2. Чтение данных. SQL дает пользователю или приложению возможность читать из БД содержащиеся в ней данные и пользоваться ими.

3. Обработка данных. SQL дает пользователю или приложению возможность изменять БД, т.е. добавлять в неё новые данные, а также удалять или обновлять уже имеющиеся в ней данные.

4. Управление доступом. С помощью SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.

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

6. Целостность данных. SQL позволяет обеспечить целостность БД-ых, защищая ее от разрушения из-за несогласованных изменений или отказа системы.

Таким образом, SQL является достаточно мощным языком для взаимодействия с системой управления базами данных (СУБД). SQL — это легкий для понимания язык и в то же время универсальное программное средство управления данными.

Успех языку SQL принесли следующие его особенности:

- независимость от конкретных СУБД;

- переносимость с одной вычислительной системы на другую;

- наличие стандартов;

-реляционная основа;

- высокоуровневая структура;

- возможность выполнения специальных интерактивных запросов:

- обеспечение программного доступа к базам данных;

- возможность различного представления данных;

- полноценность как языка, предназначенного для работы с БД;

- возможность динамического определения данных;

- поддержка архитектуры клиент/сервер.

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

3) Язык Пролог.

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

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

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

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

- доказательства теорем и вывода решений в задачах;

- дифференцировании, интегрировании и т. д.;

- разработки упрощенных версий систем ИИ;

-создания естественно-языковых интерфейсов для существующих программ;

- перевода текстов с одного языка на другой, в том числе - с одного языка программирования на другой;

- создания базы данных.

Логическая база данных на Prolog строится из множества фактов и правил. Особую роль в интерпретаторе на Prolog играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система на Prolog выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.

4) HyperText Markup Language (HTML) - язык разметки гипертекста - предназначен для написания гипертекстовых документов, публикуемых в World Wide Web. Дадим определения некоторым понятиям.

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

Как уже отмечалось, HTML-документ содержит символьную информацию. Одна ее часть - собственно текст, т. е. данные, составляющие содержимое документа. Другая -- теги (markup tags), называемые также флагами разметки, -- специальные конструкции языка HTML, используемые для разметки документа и управляющие его отображением. Именно теги языка HTML определяют, в каком виде будет представлен текст, какие его компоненты будут исполнять роль гипертекстовых ссылок, какие графические или мультимедийные объекты должны быть включены в документ. Графическая и звуковая информация, включаемая в HTML-документ, хранится в отдельных файлах. Программы просмотра HTML-документов (браузеры) интерпретируют флаги разметки и располагают текст и графику на экране соответствующим образом. Для файлов, содержащие HTML-документы, приняты расширения .htm или .html.

В этом параграфе мы рассмотрели четыре языка предметно-ориентированного типа. Языков программирования этого типа существует великое множество и каждый является узкоспециализированным для каждого типа задач.

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

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

1) Язык C++ произошел от языка С в начале 1980-х, когда Бьёрн Страуструп, сотрудник фирмы Bell Laboratories, усовершенствовал язык С под свои нужды. Программист добавил к С возможность работы с типами данных (классами) и объектами.

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

1. С++ поддерживает разные технологии и стили программирования, включая объектно-ориентированное, обобщенное и метапрограммирование;

2. Более надежное освобождение ресурсов путем автоматического вызова деструкторов при уничтожении объектов;

3. Возможность создавать пользовательские функции-операторы, позволяющие записывать выражения над пользовательскими типами в алгебраической форме;

4. Важным достоинством является предсказуемое выполнение программ, что является важным для систем реального времени;

5. При помощи шаблонов можно создавать обобщенные контейнеры и алгоритмы для разных типов данных;

6. При помощи шаблонов и множественного наследия можно имитировать классы-примеси и комбинаторную параметризацию библиотек;

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

8. C++ - кросплатформенный язык, его стандарт накладывает минимальные требования на компьютер для запуска скомпилированной программы. На С++ разрабатывают программы для различных платформ и систем с помощью компиляторов для большого количества платформ;

9. В С++ существует возможность низкоуровневой работы с адресами памяти, однако, при неосторожном использовании это легко может превратиться в недостаток;

10. Язык С++ спроектирован так, чтобы у программиста был максимальный контроль над всеми аспектами структуры и порядка выполнения программы;

11. Существующий код на C может с минимальными изменениями использоваться в С++.

Часть недостатков С++ унаследовал от C, это:

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

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

3. Неинтуитивные преобразования некоторых типов;

4. Примитивный, унаследованный от С препроцессор;

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

У языка С++ имеются так же и собственные недостатки:

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

7. C++ является слишком сложным и большим языком, из-за чего есть трудности с его изучением;

8. Недостаточность информации о типах данных во время компиляции программы;

9. Шаблоны могут привести к коду очень большого объема;

10. Многие схожие конструкции с С, выполняющие те же самые функции могут сбить с толку программиста;

11. Сложность и ограниченность метапрограммирования на основе шаблонов С++;

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

13. Некоторые считают отсутствие встроенной системы сборки мусора недостатком языка.

2) Язык С#. Спустя долгий срок в 2000 году, корпорация Microsoft выпустила C# («Си шарп»), основным постулатом которого является высказывание: «всякая сущность есть объект». Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода

К принципиально важным решениям, которые были реализованы, можно отнести следующие:

- компонентно-ориентированный подход к программированию;

- свойства как средство инкапсуляции данных );

- обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try);

- унифицированная система типизации (соответствует идеологии Microsoft .NET в целом);

- делегаты (delegate – развитие указателя на функцию в языках C и C++);

- индексаторы (indexer – операторы индекса для обращения к элементам класса-контейнера); - перегруженные операторы ;

- оператор foreach (обработка всех элементов классов-коллекций);

- механизмы boxing и unboxing для преобразования типов;

- атрибуты (средство оперирования метаданными в COM-модели);

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

Исходя из особенностей языка программирования C#, сформулируем основные преимущества данного языка.

1. Язык программирования C# претендует на подлинную объектную ориентированность (всякая языковая сущность претендует на то, чтобы быть объектом);

2. Компонентно-ориентированный подход к программированию, способствующий меньшей машинно-архитектурной зависимости результирующего программного кода, гибкости, переносимости и легкости повторного использования (фрагментов) программ;

3. Ориентация на безопасность кода (в сравнении с С и С++);

4. Унифицированная система типизации;

5. Расширенная поддержка событийно-ориентированного программирования.

Несмотря на достоинства, язык С# имеет некоторые недостатки, такие как:

1. Довольно сложный синтаксис (75% из Java, 10% из C++, 5% из Visual Basic);

2. Мало свежих концептуальных идей (приблизительно менее чем 10% конструкций языка);

3. Относительно невысокая производительность (намного медленнее, чем язык C, но сравним с Java);

4. Не кросс-платформенный язык. Так как С# разработан компанией Microsoft, то и работает он только под операционной системой Windows, хотя в данный момент уже разрабатывается кросс-платформенная версия данного языка.

Ввиду объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов - от высокоуровневой бизнес логики до системных приложений, использующих низкоуровневый код. Также следует отметить, что C# является и Web ориентированным - используя простые встроенные конструкции языка компоненты могут быть преобразованы в Web сервисы. Дополнительными возможностями языка C# - использование Web технологий, таких как: XML (Extensible Markup Language) и SOAP (Simple Object Access Protocol). Среда разработки Web сервисов позволяет программисту смотреть Web приложения, как на родные C# объекты, что дает возможность разработчикам соотнести имеющиеся Web сервисы с их познаниями в объектно-ориентированном программировании.

4) Язык Delphi можно назвать достаточно многофункциональной и сильной средой разработки приложений, RAD-оболочкой, в которой собраны последние подходы к программированию. Библиотеку VCL, на основе которой написана оболочка Delphi, называют в какой-то степени революционной. Если сравнить Delphi и C++ нельзя не заметить, что эффективность работы кода, который написан на языке Pascal, на пару процентов отличается от кода, сгенерированного на языке C++. Можно сделать вывод, что потенциалы языка почти не ограничены.

Одним из основных преимуществ Delphi перед его аналогами заключается в достаточно быстром процессе разработки программных продуктов, которые, в свою очередь, включают в себя довольно замысловатый интерфейс. Еще можно отметить наличие обширного набора компонентов, обеспечивающих работу с базами данных. Упорядоченный набор данных работает с разными базами данных, как с локальными, так и с промышленными. Например с такими, как, Oracle или MS SQL Server. Так же возможность управления базами данных на логическом уровне не используя низкоуровневые запросы к драйверам можно назвать значительным плюсов Delphi в этой области применения.

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

1. Максимальная простота, наглядность и удобство при разработке элементов пользовательского интерфейса – большую часть работы выполняют уже готовые компоненты из библиотеки визуальных компонентов (VCL);

2. Гибкость и универсальность при работе с базами данных: поддерживаются все современные технологии; доступ к различным базам данных осуществляется через одни и те же компоненты;

3. Быстрый компилятор: проверку внесенных в программу исправлений можно осуществлять довольно часто;

4. Мощные средства отладки приложений;

5. Хорошая справочная система;

6. Имеется возможность изучения внутреннего устройства Delphi: все библиотеки Delphi (как стандартные, так иVCL) поставляются в исходных кодах;

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

8. Возможность написание своих собственных компонентов «с нуля» или на основе уже существующих;

9. Возможность разработки кросс-платформенных приложений (для Windows и Linux), используя переработанную библиотеку компонентов CLX – аналог библиотеки VCL.

Недостатки Delphi:

1. Больший размер результирующих exe-файлов по сравнению с другими системами разработки;

2. Некоторая сложность при использовании Windows API , связанная с необходимостью преобразования между типами данных языков C и Pascal (особенно при использовании строк и указателей);

3. Необходимость установки на целевую машину драйверов Borland Database Engine (BDE) для доступа к базам данных Paradox или dBase из приложений Delphi.

5) Язык Java. На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году в недрах компании Sun Microsystems, впоследствии поглощенной компанией Oracle. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. И к настоящему времени язык Java проделал большой путь, было издано множество различных версий.

Текущей версией является Java 11, которая вышла в сентябре 2018 года. А Java превратилась из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые в целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов. Кроме того, язык Java активно применяется для создания программного обеспечения для целого ряда устройств: обычных ПК, планшетов, смартфонов и мобильных телефонов и даже бытовой техники. Достаточно вспомнить популярность мобильной ОС Android, большинство программ для которой пишутся именно на Java.

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) -- программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

-- применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,

-- широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,

-- аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

К особенностям языка Java относится:

1. Независимость от архитектуры ЭВМ.

Самое большое преимущество Java — его “нейтральность” по отношению к любой архитектуре. Программа, полностью написанная на Java, будет исполняться везде, где есть Виртуальная Java-машина, JVM (Java Virtual Machine). Все оборудование и ОС спрятаны именно там. Разработка системы может вестись на любой удобной платформе, а затем, в зависимости от цены, производительности, имеющейся поддержки либо привязанностей продавца, сгенерированный Java-код, может быть перенесен на любую другую платформу. Единственное, что должны сделать программисты — это изучить язык Java и соответствующие библиотеки классов Java.

2. Безопасность

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

Система интерпретации и система исполнения Java функционируют таким образом, чтобы Java-программа не смогла нанести какой-либо ущерб пользовательскому компьютеру. Виртуальная Java-машина проверяет каждый байт кода на допустимость, а затем интерпретирует его. И более того, нужно очень потрудиться, чтобы испортить загруженный Java-код. Байтовый код создается таким образом, чтобы директивы типа “записать данные поверх операционной системы” было невозможно выполнить, а те проблемы, которые байтовый код всё же может создать, блокируются виртуальной машиной.

3. Надежность

Java ограничивает в нескольких ключевых областях и таким образом способствует обнаружению ошибок на ранних стадиях разработки программы. В то же время в ней отсутствуют многие источники ошибок, свойственных другим языкам программирования (строгая типизация, например). Большинство используемых сегодня программ “отказывают” в одной из двух ситуаций: при выделении памяти, либо при возникновении исключительных ситуаций.

В традиционных средах программирования распределение памяти является довольно нудным занятием — программисту приходится самому следить за всей используемой в программе памятью, не забывая освобождать ее по мере того, как потребность в ней отпадает. Зачастую программисты забывают освобождать захваченную ими память или, что еще хуже, освобождают ту память, которая все еще используется какой-либо частью программы. Исключительные ситуации в традиционных средах программирования часто возникают в таких, например, случаях, как деление на нуль или попытка открыть несуществующий файл, и их приходится обрабатывать с помощью неуклюжих и нечитабельных конструкций (кроме Delphi).

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

4. Объектная ориентированность

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

5. Простота и мощь

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

6. Богатая объектная среда

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

7. Производительность и предсказуемость

Язык Java довольно медленный — в 40 раз медленнее C++. Java — язык медленный, потому что это интерпретатор, потому что он является объектно-ориентированным и потому что это язык с повышенным обеспечением безопасности. Его производительность предсказать трудно, поскольку в нём используется чистка памяти (“сборка мусора”).

8. Размер кода

В целом Java-система очень велика. Создаваемый код довольно велик — Windows-станции для хорошей работы должны иметь хотя бы 20 Мб памяти. Размер программы можно уменьшить, используя динамическую компоновку и подключение классов только в необходимый момент. Конечно, это не позволит исполнять на калькуляторе приложение, разработанное на использование всех ресурсов рабочей станции, однако позволит разрабатывать приложения для работы именно на калькуляторе. В некотором смысле это все-таки нарушает постулат “аппаратной независимости” Java, но только в том, что позволяет Java-приложениям работать там, где в противном случае речь о применении Java не шла бы вовсе.

9. Требования к памяти

Требования к памяти очень тесно связаны с процессом “сборки мусора”. Java нужно очень много дополнительной памяти, чтобы чистка памяти не происходила в неподходящий момент. Наиболее простой способ борьбы с издержками “сборки мусора” — включить чистку памяти в механизм ее распределения. Тогда отпадает всякая необходимость заботиться о выделении времени или асинхронном запуске “сборки мусора” либо выделении дополнительной памяти для синхронного запуска этого процесса. Если память прикладной системы не слишком велика, то это может быть не так плохо, как кажется. Затраты на “сборку мусора” будут зависеть только от объема распределяемой памяти.

JavaScript – это язык программирования полностью интегрированный с html и css, позволяющий решать широкий спектр задач как в фонт-энд, так и бек-энд разработке.

Целью создания JS было оживление статичных страниц в браузерах пользователей. Скриптом называют программу написанную на JavaScript.

Хоть JavaScript и не представляет широких возможностей по работе с процессором, паматью и тд компьютера, оставаясь языком программирования общего назначения, он обладает рядом черт делающих его практически незаменимым в среде веб-разработки:

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

-- Он позволяет обрабатывать практически любые действия пользователя на странице (клики, движение курсора, нажатие клавиш).

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

-- Обрабатывать cookie и тд.

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

-- Скрипты не могут взаимодействовать на прямую с жестким диском пользователей (не может записывать/удалять файлы, запускать программы и тд).

-- Язык работает только в одной вкладке браузера, он не может получать/передавать данные в другие вкладки за исключением тех случаев, когда скрипт сам их и открыл.

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

Недостатки:

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

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

Преимущества:

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

2. Полная интеграция с кодом и оформлением страницы (html и css) делает этот язык практически незаменимым при веб-разработке.

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

7) PHP (англ. PHP: Hypertext Preprocessor — «PHP: Препроцессор Гипертекста») — скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. В настоящее время поддерживается подавляющим большинством представителей хостинга. Входит в LAMP — «стандартный» набор для создания вебсайтов (Linux, Apache, MySQL, PHP). PHP отличается наличием ядра и подключаемых модулей, «расширений»: для работы с базами данных, сокетами, динамической графикой, криптографическими библиотеками, документами формата PDF

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

1. Является си-подобным языком, поэтому многим программистам будет легко перейти на него;

2. Бесплатен;

3. В связке с MySQL является кроссплатформенной технологией;

4. Постоянно совершенствуется;

5. Допускает работу с большинством СУБД;

6. Объектно ориентирован;

7. Поддерживает все популярные протоколы (HTTP, FTP, IMАР, NNTP, POPS, net sockets и другие);

8. Наиболее популярен в мире и в России в частности.

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

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

8) Язык Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, тьюплы).

Достоинства языка. 

1. Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах. Первым таким языком был C, однако его типы данных на разных машинах могли занимать разное количество памяти и это служило некоторым препятствием при написании действительно переносимой программы. Python же таким недостатком не обладает.

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

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

Numerical Python - расширенные математические возможности, такие как манипуляции с целыми векторами и матрицами;

Tkinter - построение приложений с использованием графического пользовательского интерфейса (GUI) на основе широко распространенного на X-Windows Tk-интерфейса;

OpenGL - использование обширной библиотеки графического моделирования двух- и трехмерных объектов Open Graphics Library фирмы Silicon Graphics Inc. Данный стандарт поддерживается, в том числе, в таких распространенных операционных системах как Microsoft Windows 95 OSR 2, 98 и Windows NT 4.0.

Недостатки языка. 

Одним из главных недостатков является его относительно низкая скорость выполнения. Python является языком с полной динамической типизацией, автоматическим управлением памятью. Если на первый взгляд это может казаться преимуществом, то при разработке программ с повышенным требованием к эффективности, Python может значительно проигрывать по скорости своим статическим братьям (C/C++, Java, Go). Что касается динамических собратьев (PHP, Ruby, JavaScript), то здесь дела обстоят намного лучше, Python в большинстве случаев выполняет код быстрее за счет предварительной компиляции в байт-код и значительной части стандартной библиотеки, написанной на Си.

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. // Абрамов В.Г.— М.: Наука, 1988. – 320 с.

Буч Г. Объектно-ориентированный анализ и проектирование

с примерами приложений на С++ // Буч Г. – М.: ООО "И. Д. Вильямс", 2008. - 720 с.

Васильев, А. C#. Объектно–ориентированное программирование // А. Васильев. – М.: Питер, 2017. – 320 c.

Васильев, А. Н Java. Объектно–ориентированное программирование // А.Н. Васильев. – М.: Питер, 2014. – 400 c

Григорьева, А. Л. Процессный подход при проектировании информационной системы ВУЗа // А. Л. Григорьева, Я. Ю. Григорьев, А. Ю. Лошманов – Международный журнал прикладных и фундаментальных исследований. – 2013. – № 5. – С. 168–171;

Епашников A.M., Епашников В.А. Программирование в среде Турбо Паскаль 7.0. // Епашников А.М. — М.: МИФИ, 1994. – 283 с.

Иванова, Г. С. Объектно–ориентированное программирование // Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев. – М.: МГТУ им. Н. Э. Баумана, 2014. – 368 c.

Комлев, Н. Ю. Объектно Ориентированное Программирование. Хорошая книга для Хороших Людей // Н. Ю. Комлев – М.: Солон–Пресс, 2014. – 892 c.

Кьоу, Дж. Объектно–ориентированное программирование // Дж. Кьоу, М. Джеанини. – М.: Питер, 2015. – 240 c.

Мартынов, Н. Н. Алгоритмизация и основы объектно–ориентированного программирования на JavaScript. Информатика и ИКТ. Профильный уровень. 10 класс // Н.Н. Мартынов. – Москва: Высшая школа, 2014. – 272 c.

Павлова А.А. Язык программирования Бейсик / Павлова А.А. // Вычислительная техника и ее применение. - 1990. ? №1. ? С. 6-9

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

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

Страуструп Б. Язык программирования С++ / Страуструп Б. //

URL: http://www.8361.ru/6sem/books/Straustrup-Yazyk_programmirovaniya_c.pdf (Дата обращения: 25.11.2018)

Хорев, П. Б. Объектно–ориентированное программирование // П.Б. Хорев. – М.: Academia, 2017. – 448 c.

http://citforum.ru (Дата обращения: 24.11.2018)