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

Классификация языков программирования. Критерии выбора среды и языка разработки программ (Основные понятия и эволюция языков программирования)

Содержание:

Введение

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

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

Цель работы – описать языки и среды программирования.

На основании поставленной цели можно сформулировать следующие задачи:

– изучить понятие, сущность, классификацию и эволюцию языков программирования;

– изучить понятие, сущность и виды сред программирования;

– описать критерии выбора среды и языка разработки программ.

Объект исследования – программирование.

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

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

– учебники;

– учебно-методические пособия;

– научные журналы;

– сборники статей;

– сборники трудов по материалам конференций;

– карманные справочники;

– энциклопедические словари и др.

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

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

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

В ходе исследования изучены труды таких российских ученых в области информатики и программирования как Р. Аблязов, Н.П. Быканов, Т.Н. Губина, А.П. Ершов, С.В. Зыков, Г.Н. Исаева, О. Калашников, Е.В. Кудрина, А.В. Матросов и др.

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

1.1 Основные понятия и эволюция языков программирования

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

Программирование – процесс создания программ.

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

В классическом учебнике «Курс программирования» Е. Жоголевой и Н. Трифоновой [10] дано следующее определение: «Алгоритмический язык – это алфавит языка (набор символов), система правил образования из этих символов конструкций, с помощью которых представляются определенные компоненты алгоритма (синтаксис языка), и система правил истолкования этих конструкций, позволяющих однозначно воспроизводить процесс переработки данных (семантика языка)».

В книге «Сравнительное изучение языков программирования» Брайана Хигмана [35] дано следующее толкования данному понятию: «Назначение языка программирования состоит в передаче и хранении упорядоченных последовательностей инструкций или алгоритмов».

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

Следовательно, язык программирования – это формализованный язык для написания программ.

Все языки программирования являются искусственными, так как в них семантика и синтаксис строго определены [15].

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

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

Команда – элементарное предписание, предусматривающее выполнение какого-либо действия [5].

Операторы – действия, предписываемые командой.

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

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

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

На основании данных событий в истории развития языков программирования можно выделить следующие этапы [18]:

1 этап (1940 – 1950 гг.) – машинные коды, непосредственно воспринимаемые машиной. Составление программ для первых ЭВМ – малопроизводительный и утомительный процесс с большим количеством ошибок.

2 этап (1950 – 1960 гг.) – символические ассемблеры – условные мнемонические обозначения-автокоды. Программа, составленная на ассемблере, переводится на машинный язык с помощью специальной программы, тоже называемой ассемблером.

3 этап (1960 – 1970 гг.) – процедурно-ориентированные, объектно-ориентированные языки программирования высокого уровня.

4 этап (1970 – 1980 гг.) – языки систем управления базами данных.

5 этап (1995 – 1999 гг.) – языки, приближенные к человеческой логике и применимые в интернете.

6 этап (с 2000 г.) – виток функционального программирования. Новые языки и появление полноценного объектно-ориентированного программирования заставили разработчиков вернуться к императивному программированию. Но в XXI веке все изменилось. Этому способствовали маломощные машины – смартфоны. Высокие требования при скромной производительности вынуждают мыслить функциями, а не привязываться к данным [18].

Основные виды языков программирования представлены в таблице 1.

Таблица 1

Основные виды языков программирования

Язык

Сфера применения

Описание

Ада

В обороне

Высокого уровня

Ассемблер

Работы, требующие детального контроля за аппаратным обеспечением, быстрого исполнения и программ малого размера

Быстрый и эффективный, но требующий определенных усилий и навыков

Бейсик

В образовании, бизнесе, дома

Прост в изучении

С

Системное программирование, универсальное программирование

Быстрый и эффективный, широко используется как универсальный язык

С ++

В объектно-ориентированном программировании

Основан на языке С

Кобол

Программирование в бизнесе

Жестко ориентирован на коммерческие задачи, прост в изучении, но очень много операторов

Форт

Управление приложениями

Использует инверсную польскую запись

Фортран

Научная работа и вычисления

Основан на математических формулах

Лисп

Искусственный интеллект

Язык символов с репутацией трудно изучаемого

Модула-2

Системное программирование и программирование в режиме реального времени, универсальное программирование

Высоко структурирован, предназначен заменить Паскаль для приложений «реального мира»

Оберон

Универсальное программирование

Небольшой компактный язык, соединяющий в себе многие черты Паскаля и Модула-2

Паскаль

Универсальный язык

Высоко структурирован

Пролог

Искусственный интеллект

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

Источник: [17]

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

В настоящее время сложилось довольно много классификаций языков программирования. Приведем самые известные из них.

1. Классификация по поддерживаемым методологиям;

Появилась примерно в 80-х годах XX века. Основные группы языков программирования согласно этой классификации:

а) языки императивного программирования;

Императивная программа похожа на приказы (англ. imperative – приказ), выражаемые повелительным наклонением на естественном языке, т.е. представляет собой последовательность команд, которые должен выполнить компьютер [4].

– языки структурного императивного программирования (языки структурного программирования);

– языки императивного параллельного программирования (языки параллельного программирования).

б) языки объектно-ориентированного программирования;

Это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых – экземпляр определенного класса, а классы образуют иерархию наследования [15].

в) языки функционального программирования;

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

г) языки логического программирования;

Логическое программирование – парадигма программирования, которая основана на автоматическом доказательстве теорем, принципах логического вывода информации на основе заданных фактов и правил вывода.

д) языки программирования в ограничениях.

Это парадигма программирования, в которой отношения между переменными указаны в форме ограничений.

2. Классификация по принадлежности к семействам;

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

– семейство уникальных языков;

– семейство универсальных языков;

– семейство языков параллельного программирования;

– Pascal-семейство;

– C-семейство;

– Ada-семейство;

– Simula-семейство;

– Prolog-семейство;

– Lisp-семейство.

3. Классификация по ориентации на предметные области;

Язык программирования может быть специализированным под некоторую предметную область [4].

Выделим несколько таких предметных областей:

– языки конфигурирования;

– языки описания виртуальной реальности;

– языки описания аппаратуры;

– языки создания графиков;

– языки программирования агентов;

– языки скриптов;

– языки разметки;

– языки форматирования текстов;

– промежуточные языки программирования.

4. Классификация по степени абстракции от аппаратуры (машины);

Выделим три группы языков [12]:

а) языки низкого уровня;

Имеют простые машиноподобные команды и осуществляют прямой доступ к памяти (например, ассемблер для любой архитектуры).

б) языки высокого уровня;

Предоставляют возможность определять сложные структуры данных, при этом доступ к памяти осуществляется через операции. Примеры: Ada, Pascal, С [8].

в) языки сверхвысокого уровня.

Команды исполняются на абстрактной машине, доступ к памяти скрыт. Примеры: SETL, Prolog, Miranda, APL.

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

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

К первому (1954 – 1958 гг.) он относит Fortran I, Flowmatic, Algol-58, IPL-V, предоставившие пользователям возможность работы с математическими формулами [9].

Второе поколение (1959 – 1961 гг.) у Вэгнера составляют Fortran II, Algol-60, COBOL, LISP.

В третьем поколении (1962 – 1970 гг.) присутствуют PL/1 (Fortran + Algol + COBOL), Pascal (развитие Algol-60), Algol-68 (преемник ALGOL-60), Simula.

К четвертому поколению (1970 – 1980 гг.) Вэгнер относит множество языков программирования, из которых лишь немногие доказали свою жизнеспособность.

6. Классификация языков программирования по категориям связана с методами, которые используются при написании программ (рисунок 1).

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

Рассмотрим их подробнее.

1.2.1 Языки программирования низкого уровня

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

К языкам программирования низкого уровня относят [33]:

– программирование в машинных кодах;

– ассемблер;

– макроассемблер.

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

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

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

Рассмотрим подробнее самый популярный из языков программирования данного уровня – ассемблер (рисунок 2).

Рисунок 2 – Язык Ассемблер

Assembler c английского языка означает «сборщик». Речь идет о компиляторе и трансляторе, которые производят шифровку данных [30].

Если говорить о структуре и работе языка программирования assembler, можно сказать, что его команды полностью соответствуют командам процессора, т.е. язык использует удобные для человека мнемокоды. В отличие от других языков, assembler для записи ячеек памяти вместо адресов использует метки, они в процессе исполнения кода переводятся в директивы. Это своего рода адреса, которые не переводятся в машинный язык, они нужны для распознавания средой разработки. Для каждой серии процессоров разработана индивидуальная система команд. При таком раскладе корректным будет любой процесс, в том числе и переведенный машинный код [30].

Наиболее важным и удобным приспособлением языка assembler является то, что на нем можно написать практически любую программу для процессора, и она при этом будет очень компактной. Если код получается слишком большим, то среда разработки перенаправляет некоторые процессы в оперативную память компьютера [14]. При этом все процессы выполняются без ошибок и довольно быстро. Драйвера, BIOS, операционные системы, компиляторы, интерпретаторы и т.д. – все это программы, написанные на языке assembler. При применении дизассемблера, который совершает перевод из машинного кода в компьютерный язык, можно понять как работает та или иная системная задача, даже если к ней нет комментариев. Но это возможно только тогда, когда программы легкие, в нетривиальных кодах разобраться сложнее [1].

Минусом assembler является то, что как начинающим программистам, так и профессионалам бывает довольно сложно разобрать этот язык. Assembler требует подробного описания команды из-за того, что нужно использовать машинные команды. Это увеличивает вероятность ошибок и повышает сложность выполнения операций. Специалист среднего уровня зачастую пишет плохие коды, чтобы писать качественный код необходимо иметь достаточно высокий уровень классификации. Если платформа, для которой создана программа, меняется, то необходимо переписывать и все команды, т.е. assembler не поддерживает замену аппаратных элементов. Также assembler не поддерживает функцию автоматического регулирования работоспособности процессов [14].

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

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

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

Языки программирования высокого уровня делятся на проблемно-ориентированные и универсальные. Наиболее распространенные универсальные языки (Basic, Pascal, C++, C#) используются для разработки Windows-приложений. Большой вклад в программирование внесли языки Cobol, Fortran, Algol, C и другие, особенно на начальных этапах истории развития языков программирования. К универсальным относятся языки программирования для разработки интернет-приложений. Это современные версии Basic, C#, J# [13].

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

Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых является совокупность программных объектов. Написание на объектно-ориентированном языке программы представляются в виде последовательности создания экземпляров объектов и использовании их методов. К ним относятся Simula и SmallTalk (одни из первых), C++ и Java [36].

Проблемно-ориентированными языками, которые используются на интернет-серверах и клиентских интернет-приложениях, являются Perl, PHP, VBScript, JavaScript.

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

C++ (читается как «си-плюс-плюс») – это компилируемый, статически типизированный язык программирования. Он широко используется для разработки программного обеспечения [31].

Стандарт C++ состоит из двух основных частей: описание ядра языка и описание стандартной библиотеки.

В книге «Дизайн и эволюция C++» Бьерн Страуструп описывает принципы, которых он придерживался при разработке языка. Данные принципы объясняют, почему C++ именно такой, какой он есть [21].

Вот некоторые из них:

– получить универсальный язык со статическими типами данных, переносимый и эффективный;

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

– дать разработчику приложений свободу выбора;

– сохранить совместимость с C;

– избежать разночтений между C и C++: любая конструкция, допустимая в обоих языках, должна обозначать одно и то же в каждом из них и приводить к одному и тому же поведению программы [36];

– избегать особенностей, зависящих от платформы;

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

– не требовать усложненной среды программирования.

Пример кода на языке C++ представлен на рисунке 3.

Рисунок 3 – Пример кода на языке программирования C++

1.2.4 Декларативные языки программирования

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

HTML (Hyper Text Markup Language – «язык разметки гипертекста») – это стандартный язык разметки документов в интернете. Был разработан Тимом Бернерсом-Ли в 1989-1991 годах и изначально создавался как язык обмена научной и технической документацией [6].

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

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

Для перехода от одного HTML-документа к другому применяют гиперссылки. Это изображения или фрагменты текста, которые являются указателями на другие объекты. Связывание страниц осуществляется при помощи HTML разметки.

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

Рисунок 4 – Пример кода на языке программирования HTML

SQL (structured query language – «язык структурированных запросов») – декларативный язык, который применяют для создания, редактирования и управления данными в реляционной базе, управляемой соответствующей СУБД (системой управления базами данных) [2].

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

SQL условно можно назвать языком программирования, но при этом он не является тьюринг-полным. Вместе с тем стандарт языка спецификации SQL/PSM предусматривает возможность процедурных расширений [25].

Первоначально язык SQL был основным способом работы пользователя с базой данных и позволял выполнять следующие операции [34]:

– создание новой таблицы;

– добавление новой записи в таблицу;

– изменение записи;

– удаление записи;

– выборка записей из одной или нескольких таблиц;

– изменение структуры таблицы.

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

Преимущества SQL [25]:

– независимость от конкретной СУБД;

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

– декларативность.

Недостатки SQL [2]:

– несоответствие реляционной модели данных;

– сложность;

– отступления от стандартов;

– сложность работы с иерархическими структурами.

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

Эволюция языков программирования тесно связана с развитием компьютеров, всего насчитывается шесть основных этапов эволюции.

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

– по поддерживаемым методологиям;

– по принадлежности к семействам;

– по ориентации на предметные области;

– по степени абстракции от аппаратуры;

– по истории языков программирования;

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

2. Понятие, сущность и виды сред программирования

2.1 Понятие и сущность среды программирования

Под средой программирования понимают совокупность программ, которая обеспечивает цикл разработки, включающий в себя анализ, спецификацию, проектирование, кодирование (редактирование, компиляцию, компоновку), тестирование и отладку [16].

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

Редактор – это средство создания и редактирования файлов с исходным текстом программы.

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

Компоновщик собирает объектные файлы и формирует исполняемый файл, разрешая внешние ссылки между файлами [11].

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

Прочие компоненты среды программирования следующие [28]:

Библиотекарь – это средство ведения совокупностей библиотек (объектных файлов).

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

Загрузчик копирует исполняемый файл с диска в память компьютера и осуществляет его запуск.

Цикл разработки программы представлен схемой на рисунке 5.

Рисунок 5 – Цикл разработки программы [11]

Охарактеризуем каждый этап.

На этапе анализа определяется то, что должна делать программа. При этом неважно как она должна это делать.

Далее на этапе спецификации дается описание требований к программе в формальном виде.

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

Этап кодирования включает в себя следующие подэтапы: редактирование, компиляция и компоновка.

Компиляция – это преобразование программы или какого-либо ее модуля на языке программирования в программу или модуль на машинном языке или близком к машинному языке [16].

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

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

Компоновщики бывают двух видов [16]:

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

– которые готовят загрузочный файл и сразу физически размещают версию машинного кода в памяти и передают управление на первую команду программы для исполнения.

На этапе тестирования идет подготовка эталонных входных и выходных данных, запуск программы и сравнение полученных данных с эталонными [23].

Отладка – это процесс локализации и исправления ошибок, выявленных во время тестирования.

Классификация ошибок в программе следующая:

– синтаксическая ошибка – нарушение синтаксических правил;

– ошибка времени выполнения (run-time error) – происходит при выполнении синтаксически верной программы, когда она производит какое-либо недопустимое действие (деление на ноль и т.п.);

– логическая ошибка – возникает при разработке и написании алгоритма, при этом программа не содержит ни синтаксических ошибок, ни ошибок времени выполнения, но делает не то, что хотел разработчик.

Выделяют следующие разновидности отладки [19]:

– «сухая» – по тексту (листингу) программы без применения отладчика, компьютера и др.;

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

2.2 Виды интегрированных сред разработки

Деление интегрированных сред разработки на отдельные группы условно, в основном оно происходит по трем факторам:

1. Функционал;

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

2. Поддерживаемые языки;

Хотя и существуют среды, предназначенные для нескольких языков программирования (Embarcadero RAD Studio, Eclipse, Qt Creator, последние версии Xcode и NetBeans или Microsoft Visual Studio), обычно они предназначены для одного конкретного языка программирования (Delphi, Visual Basic, Dev-C++) [19].

3. Лицензионное или свободное программное обеспечение.

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

Из универсальных языков программирования на сегодняшний день наиболее популярны следующие [32]:

– Бейсик (Basic) – для освоения требует начальной подготовки (например, на уровне общеобразовательной школы);

– Паскаль (Pascal) – требует специальной подготовки (например, школы с углубленным изучением информатики и программирования и/или технические ВУЗы);

– Си++, Ява (Java) – требуют высокой профессиональной подготовки (на уровне специализированных средних и высших учебных заведений).

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

Наиболее популярны следующие визуальные среды проектирования программ для операционной системы Windows [24]:

–для Basic – Microsoft Visual Basic;

–для Pascal – Borland Delphi;

–для C++ – Borland C++Bulider;

–для Java – Symantec Cafe.

Объектно-ориентированное (визуальное) программирование поспособствовало созданию технологии быстрой разработки приложений – RAD. Данная технология характерна для нового поколения систем программирования [33].

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

Хотя среда Visual Basic имела в свое время широкий спрос и помогла облегчить процесс программирования для неопытных разработчиков, она имеет множество недостатков. Основной из них – низкая производительность приложений при их выполнении, а также недостаточная строгость и объектная ориентированность языка, способствующая наиболее быстрой разработке, а не созданию мощных приложений [7].

Интерфейс Visual Basic 6.0 представлен на рисунке 6.

Рисунок 6 – Интерфейс Visual Basic 6.0

Delphi – это следующий шаг в развитии среды быстрой разработки. Данная среда лишена многих недостатков Visual Basic. Разработчики Delphi создали инструмент, который похож на среду Visual Basic, но заметно улучшенный [22].

Delphi базируется на языке Object Pascal. Компиляторы с языков семейства Паскаль фирмы Borland (начиная с Turbo Pascal 1.0) были одними из самых быстрых. На текущий момент Object Pascal – это объектно-ориентированный язык программирования с хорошим компилятором [26].

Ориентация приложений Delphi на язык Object Pascal не уменьшает возможности разработчика. Приложения Delphi могут также использовать разработки на других языках программирования, включая C++ и даже ассемблер. Можно применять библиотеки, созданные другими фирмами (например, Microsoft) или независимыми программистами. Можно реализовывать собственные разработки в виде самостоятельно выполняемых файлов или пакетов, поддерживающих выполнение ряда приложений.

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

Интерфейс Delphi 7 представлен на рисунке 7.

Рисунок 7 – Интерфейс Delphi 7

C++ Builder – это программный продукт для быстрой разработки приложений, интегрированная среда программирования, система для разработки программного обеспечения на языке программирования C++ [27].

Изначально C++ Builder разрабатывался компанией Borland Software, а затем ее подразделением CodeGear, сейчас принадлежащим Embarcadero Technologies.

C++ Builder объединяет комплекс объектных библиотек, компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки программы аналогичен Delphi и многим другим средам. Большинство разработанных в Delphi компонентов можно использовать и в C++ Builder, причем даже без модификации, но при этом обратное утверждение неверно [27].

Среда C++ Builder содержит инструменты, которые при помощи drag-and-drop делают разработку визуальной, что упрощает программирование, благодаря встроенному WYSIWYG – редактору интерфейса.

Следующей средой разработки является Symantec Cafe. Это первая интегрированная среда визуальной разработки для создания приложений для страниц сети интернет [32].

Symantec Cafe интегрирует комплект разработчика Java Development Kit компании Sun Microsystems в популярную многооконную среду визуальной разработки, созданную компанией Symantec с целью создания приложений для Windows 95 и Windows NT. Среда Symantec Cafe предлагает полнофункциональную систему управления проектами, а также мощные инструменты просмотра и редактирования кода, что обеспечивает значительное увеличение эффективности разработки приложений на языке Java для сети интернет.

Созданные с помощью Symantec Cafe приложения могут в последующем встраиваться в документы HTML и выполняться на различных платформах при использовании Java-соместимых программ просмотра.

Таким образом, во второй главе нами рассмотрены основные понятие среды программирования (разработки программ). Для этого описаны базовые и прочие компоненты среды, а также поэтапно рассмотрен цикл разработки программы, включающий анализ, спецификацию, проектирование, редактирование, компиляцию, компоновку, тестирование, отладку и внедрение. Изучены виды интегрированных сред разработки по функционалу, поддерживаемым языкам и лицензионному или свободному ПО. Также рассмотрены наиболее популярные среды Microsoft Visual Basic, Borland Delphi, Borland C++Bulider и Symantec Cafe.

3. Критерии выбора среды и языка разработки программ

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

Далее следует выбор технологии программирования (модульное, объектно-ориентированное программирование и т.д.).

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

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

То есть выбора среды и языка разработки программы происходит в четыре этапа (рисунок 8).

Определить задачи и функции разрабатываемой программы

Выбор технологии программирования

Выбор языка программирования

Сравнительный анализ сред разработки

Рисунок 8 – Этапы выбора среды и языка разработки программы

Рассмотрим данную задачу на конкретном примере.

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

Определяем задачи:

– учет основных документов предприятия (продаж, выпуска продукции и т.п.);

– анализ деятельности предприятия посредством отчетности;

– планирование и контроль выполнения определенных функций, этапов процесса, деятельности в целом.

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

Основным достоинством объектно-ориентированного программирования является естественная декомпозиция программного обеспечения, значительно облегчающая разработку программы. Это приводит к полной локализации данных и интегрированию их с подпрограммами обработки, что позволяет вести независимую разработку отдельных объектов [31]. Также объектный подход предлагает способы организации программы, основанные на механизмах наследования, композиции, полиморфизма и наполнения. Данные механизмы позволяют создавать сложные объекты из сравнительно простых объектов, в результате чего увеличивается показатель повторного использования кода и появляется возможность создания библиотек классов [36].

Перейдем к выбору языка программирования. Из универсальных языков программирования на сегодняшний день наиболее популярны [32]:

– Бейсик (Basic);

– Паскаль (Pascal);

– Си++;

– Ява (Java).

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

Наиболее популярны следующие визуальные среды быстрого проектирования программ для выбранных языков программирования [24]:

–для Pascal – Borland Delphi;

–для C++ – Borland C++Bulider.

Из них и будем выбирать.

С++ Builder – продукт компании Borland International для быстрой разработки приложений. Это высокопроизводительный инструмент визуального проектирования приложений, который включает компилятор кода и предоставляет средства визуального проектирования.

В среду разработки С++ Builder также входят: локальный SQL-сервер, библиотеки визуальных компонентов, генераторы отчетов и другие компоненты, которые необходимы для профессиональной разработки информационных систем [27].

С++ Builder производит небольшие по размерам (до 15-30 Кбайт) исполняемые модули (.exe и.dll). За счет небольших по размерам и быстро исполняемых модулей требования к клиентским компьютерам значительно снижаются, что имеет большое значение для конечных пользователей.

Преимущества С++ Builder [13]:

– быстрая разработка приложения;

– высокая производительность;

– низкие требования к ресурсам компьютера;

– наращиваемость за счет встраивания новых инструментов и компонент;

– возможность разработки собственных инструментов и компонент.

В то же время Delphi 7 – это прекрасный инструмент разработки, но и сложная программная среда, состоящая из множества элементов.

Особенно привлекательными в Delphi являются такие возможности, как объектно-ориентированный подход, основанный на формах, высокопроизводительный (32-разрядный) оптимизирующий компилятор, поддержка баз данных, технология компонентов и тесная интеграция с программированием под операционную систему Windows.

Delphi 7 обладает открытой архитектурой, полностью поддерживая технологии ActiveX, Microsoft OLE Automation, ODBC. Компилятор Delphi позволяет получить доступ ко всем ресурсам операционной системы, реализующей интерфейс Win32 (Windows XP и др.) [11].

Программы, разработанные на Delphi используют объектно-ориентированную структуру под названием VCL – Visual Component Library (Библиотека Визуальных Компонентов). Именно структура VCL поднимает быструю разработку приложений на новый уровень, т.к. можно расширить возможности среды программирования за счет создания собственных компонентов. К тому же независимые разработчики уже создали множество компонентов такого рода, которые зачастую распространяются бесплатно [13].

Delphi 7 имеет множество других улучшений:

– расширенная поддержка баз данных;

– улучшенная версия MIDAS с поддержкой интернета;

– инструмент управления версиями TeamSours;

– возможность перевода;

– концепция фреймов;

– большое количество новых компонентов [22].

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

Результаты сравнительного анализа Delphi и Си++ Builder сведем в таблицу 2.

Коэффициент важности для предприятия того или иного фактора устанавливается экспертным путем.

Таблица 2

Результаты анализа сред разработки Delphi и Си++ Builder

Функция

Коэффициент важности, %

Среда программирования

Delphi

C++ Builder

Стоимость

13,7

+

+

Простота сопровождения

13,2

+

-

Временные затраты на разработку

14,8

+

-

Быстродействие

15

+

+

Удобный дизайн

14

+

+

Мощность пакета

13,8

+

+

Возможности языка

15,5

-

+

Сумма

100,0

84,5

72

Источник: составлено автором

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

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

Заключение

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

На основании поставленной цели выполнены следующие задачи:

– изучены понятие, сущность, классификация и эволюция языков программирования;

– изучены понятие, сущность и виды сред программирования;

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

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

– по поддерживаемым методологиям;

– по принадлежности к семействам;

– по ориентации на предметные области;

– по степени абстракции от аппаратуры (машины);

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

– по категориям.

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

Из универсальных языков программирования на сегодняшний день наиболее популярны: Бейсик (Basic), Паскаль (Pascal), Си++, Ява (Java).

Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:для Basic – Microsoft Visual Basic;для Pascal – Borland Delphi;для C++ – Borland C++Bulider;для Java – Symantec Cafe.

Исходя из этого проведен сравнительный анализ Borland Delphi и Borland C++Bulider на конкретном примере решения задачи автоматизации деятельности предприятия.

Список использованных источников

  1. Аблязов Р. Программирование на ассемблере на платформе x86-64 / Р. Аблязов, 2011 г.
  2. Алькаев Р.Р. Обзор возможностей EMS SQL MANAGER FOR SQL SERVER / Р.Р. Алькаев, С.А. Учватов, Н.Д. Толстых // APRIORI. Cерия: Естественные и технические науки. 2016. № 3. – С. 14.
  3. Белущенко Е.А. Языки программирования: эволюция и перспективы развития / Е.А. Белущенко // Аллея науки. 2017. Т. 4. № 10. – С. 850-853.
  4. Быканов Н.П. Классификация языков программирования / Н.П. Быканов // Международный журнал гуманитарных и естественных наук. 2016. Т. 5. № 1. С. 229-232.
  5. Гвоздева В.А. Введение в специальность программиста: учебник / В.А. Гвоздева. – М.: ИНФРА-М, 2005г. – 208с.
  6. Гончаров А.Ю. WEB-ДИЗАЙН. HTML, JAVASCRIPT И CSS: карманный справочник / Гончаров А. Ю. Москва, 2007.
  7. Губина Т.Н. Разработка WINDOWS-приложений на языке VISUAL BASIC в среде программирования VISUAL STUDIO 2005: учебно-методическое пособие / Губина Т.Н. – М: Елец, 2009.
  8. Ермаков А.П. Информатика. Языки программирования высокого уровня: учеб. пособие / А.П. Ермаков, А.Б. Булков. – М-во образования и науки Рос. Федерации, Воронеж. гос. техн. ун-т. Воронеж, 2014.
  9. Ершов А.П. Эволюция языков программирования / А.П. Ершов, С.Б. Покровский // Проблемы информатики. 2017. № 2 (35). – С. 70-79.
  10. Жоголева Е. Курс программирования: учебник / Е. Жоголева, Н. Трифонова. – М: Изд.-во «Наука» 1964 г. – 388 с.
  11. Зыков С.В. Основы современного программирования: учебное пособие для вузов / С.В. Зыков. – М.: ГЛТ , 2012. – 444 c.
  12. Ильичёв М.В. Эволюция языков программирования / М.В. Ильичёв // Экономика и социум. 2016. № 10 (29). – С. 931-933.
  13. Исаева Г.Н. Возможности современных языков программирования высокого уровня / Г.Н. Исаева, Д.А. Пахомов // Современные информационные технологии: сборник трудов по материалам межвузовской научно-технической конференции. МГОТУ. Под науч. ред. В.М. Артюшенко. 2015. – С. 167-175.
  14. Калашников О. Ассемблер – это просто. Учимся программировать / О. Калашников, 2011 г.
  15. Кинзябулатова Р.А. Классификация языков программирования / Р.А. Кинзябулатова, А.Ю. Маврина // Наука: прошлое, настоящее, будущее: сборник статей Международной научно-практической конференции. Ответственный редактор: Сукиасян Асатур Альбертович. 2016. – С. 68-69.
  16. Колдаев, В.Д. Основы алгоритмизации и программирования: учебное пособие / В.Д. Колдаев, под ред. Л.Г. Гагарина. – М.: ИД ФОРУМ, ИНФРА-М, 2012. – 416 c.
  17. Кондратьева Т.Н. Языки программирования. Эволюция. Сравнительный анализ / Т.Н. Кондратьева, Д.А. Бородин // Автоматизация: проблемы, идеи, решения: сборник статей Международной научно-практической конференции. 2017. – С. 21-24.
  18. Кудрина Е.В. Эволюция технологий программирования / Е.В. Кудрина, М.В. Огнева // Информационные технологии в образовании: материалы X Всероссийской научно-практической конференции, Саратов. 2018. – С. 183-189.
  19. Кундиус В.А. Теоретические основы разработки и реализации языков программирования / В.А. Кундиус. – М.: КноРус, 2013. – 184 c.
  20. Матросов А.В. HTML 4.0. Новый уровень создания HTML-документов / А.В. Матросов, А.О. Сергеев, М.П. Чаунин. Санкт-Петербург, 2009.
  21. Михеев И.В. Анализ производительности объектно-ориентированных языков программирования / И.В. Михеев, А.П. Карпов // Проблемы развития предприятий энергетической отрасли в условиях модернизации российской экономики и общества: сборник статей. Ответственный редактор: Г.М. Садчикова. 2016. – С. 81-83.
  22. Мухаметзянов Р.Р. Основы программирования в DELPHI: учебно-методическое пособие / Р.Р. Мухаметзянов – М: Набережные Челны, 2017.
  23. Немцова Т.И. Практикум по информатике: учеб. пособие / Т.И. Немцова, Ю.В. Назарова. – М.: ИНФРА-М, 2008 г. – 288с.
  24. Окулов, С.М. Основы программирования, перераб. / С.М. Окулов. – М.: Бином, 2015. – 336 c.
  25. Оти М. Новые возможности версии T-SQL В SQL SERVER 2016 / М. Оти // Windows IT Pro RE. 2017. № 1. – С. 24.
  26. Павловская Т.А. Паскаль. Программирования на языке высокого уровня: учебник для вузов / Т.А. Павловская. – М: Санкт-Петербург, 2018. (2-е изд).
  27. Павловская Т. C/C++. Программирования на языке высокого уровня: учебник для вузов / Т. Павловская – М: Санкт-Петербург, 2013.
  28. Попов В.Б. Основы информационных и телекоммуникационных технологий. Мультемедия: учебное пособие / В.Б. Попов. – М.: Финансы и статистика, 2007 г. – 336 с.
  29. Прохоров Ю.В. Математический энциклопедический словарь. Часть 4. 1988 г.
  30. Ревич Ю. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера / Ю. Ревич, 2014 г.
  31. Сафонов А.Л. Объектно-ориентированный подход при работе со структурными языками / А.Л. Сафонов // Информационные технологии. Межвузовский сборник научных трудов. Рязанский государственный радиотехнический университет. Рязань, 2016. – С. 136-143.
  32. Семакин И.Г. Основы алгоритмизации и программирования. Практикум: учебное пос. для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков. – М.: ИЦ Академия, 2013. – 144 c.
  33. Сухочев М.Д. Языки программирования высокого и низкого уровней / М.Д. Сухочев // Эволюция научной мысли: сборник статей Международной научно-практической конференции. Научный центр «Аэтерна». 2014. – С. 36-38.
  34. Форд Т. SQL OPERATIONS STUDIO для всех / Т. Форд // Windows IT Pro RE. 2018. № 5. – С. 45.
  35. Хигман Б. Сравнительное изучение языков программирования. – М: 1974 г. – 211 с.
  36. Юнусова С.С. Объектно-ориентированный подход в процессе изучения языков программирования высокого уровня / С.С. Юнусова // Междисциплинарный диалог: современные тенденции в гуманитарных, естественных и технических науках: сборник трудов IV Всероссийской научно-практической конференции преподавателей, ученых, специалистов и аспирантов. 2015. – С. 244-249.

Приложения

Приложение 1

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

Год

Событие

1949

Появляется первый язык программирования Short Code, реально используемый на вычислительном устройстве, но это язык, компилируемый вручную

1951

Грейс Мюррей Хоппер начинает работу над первым компилятором A-0

1954

Джон Бэкус со своей командой начинают разработку языка Fortran в IBM

1956

В Дартмурском колледже Нью-Хэмпшира проходит первая конференция по искусственному интеллекту, также в этом году заканчивается разработка языка программирования Fortran

1958

Выходит язык Fortran II с поддержкой подпрограмм и связи с ассемблером

В Массачусетском технологическом институте Джон МакКарти разрабатывает язык программирования LISP

Выход спецификации Algol – первого структурного процедурного языка програмиирования

1959

Codasyl и Грейс Мюррей Хоппер разрабатывают язык COBOL

Выход LISP 1.5. LISt Processing language – «язык обработки списков», данные и программы в котором представлены системами линейных списков символов.

1960

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

1962

Кеннет Иверсон в компании IBM разрабатывает язык программирования APL

Выход языка Fortran IV

Начало работы над языком SNOBOL (StriNg-Oriented symBOlic Language)

1964

Выпуск компанией IBM языка PL/1

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

Выход языка APL/360, оптимизированного для работы с массивами, предшественник современных научных вычислительных сред, таких как MATLAB. Он использует функциональную парадигму программирования.

1965

Появление языка программирования SNOBOL-3 высокого уровня. Основной целью данного языка являлось показать принцип, что все есть строка.

1966

Выход языка Fortran-66

Начало работы над языком программирования LOGO

Появление языка LISP-2

1967

Начало разработки Никлаусом Виртом одного из наиболее известных языков программирования Pascal на базе Algol

Выход SNOBOL-4 – стабильного релиза SNOBOL

1968

Появление Algol-68

Официальная ANSI-спецификация языка COBOL

Закончена разработка языка LOGO Сеймуром Папертом в МТИ

1970

Разработка языка программирования Forth

Начало работы над языком Prolog

Начало разработки языка SmallTalk в научно-исследовательском центре Xerox PARC

1971

Окончание разработки языка Pascal

1972

Деннисом Ричи в Bell Laboratories разработан язык C

Выход языка SmallTalk-72

Во Франции Аланом Колмера в университете Luminy-Marseilles разработан язык программирования Prolog, использующийся для задач искусственного интеллекта

1974

Выход языка SmallTalk-74

1975

Пол Аллен и Билл Гейтс создают Basic-интерпретатор для первого персонального компьютера Altair

1976

Выход SmallTalk-76

1977

Начало работы Никлаусом Виртом над языком программирования Modula

1978

Выход ANSI-стандарта языка программирования Fortran-77

1979

Джин Ичбиах со своей командой в Honeywell представил язык Ada, созданный в ходе проекта Министерством обороны США с целью разработать единый язык программирования для встроенных систем (систем управления автоматизированными комплексами, функционирующими в реальном времени).

1980

Выход языка Modula-2

Бьярнe Страуструп добавляет к языку C объектно-ориентированные расширения

Выход языка SmallTalk-80

1982

Появление ISO-стандарта языка Pascal

1983

Выход языка ADA

Компания Borland выпускает язык Turbo Pascal

1984

Microsoft вместе с компанией Digital Research выпускает первый компилятор языка C для микрокомпьютеров

1985

Бертранд Мейер представил концепцию языка программирования Eiffel

1986

Появление языка SmallTalk/V – первой версии для микрокомпьютеров

Компания Аpple выпускает язык Object Pascal для компьютеров Mac

Borland представляет язык Turbo Prolog

Выход языка программирования Eiffel

Появление языка C++

1987

Ларри Уолл презентует в Usenet язык Perl – единственный язык программирования, программы на котором выглядят одинаково до и после RSA-шифрования.

1988

Никлаус Вирт заканчивает работу над языком Oberon

1989

Выход спецификации ANSI C

1990

Появление языка Fortran-90

1991

Visual Basic получает награду на весенней выставке Comdex

1994

Внедрение в программное приложение MS Excel языка программирования Visual Basic for Applications

Выход языка Perl 5 – версии с поддержкой объектно-ориентированного программирования

1995

Появление сильно типизированного объектно-ориентированного языка программирования Java

Netscape анонсирует разработку языка JavaScript

Выход ISO-стандарта языка программирования ADA 95 с поддержкой технологий объектно-ориентированного программирования и систем реального времени

1997

ANSI-стандарт C++

2001

Андерс Хейлсберг придумывает C1 - многословный статически типизированный объектно-ориентированный язык на основе классов, со сборкой мусора, одиночной диспетчеризацией вызовов, одиночным наследованием реализации и множественным наследованием интерфейсов. Microsoft провозглашает C1 самым инновационным языком своего времени.

2002

Появление С #

2008

Редактор журнала Nature Клиффорд Линч ввел понятие «большие данные».