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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

Исходя с цели нужно выполнить такие задачи:

  • рассмотреть основные определения, классификацию языков программирования;
  • изучить основные принципы парадигм программирования;
  • выполнить рассмотрение современных языков программирования: C++, C#, Java и другие.
  1. Объектом исследования является теория языков программирования.

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

По мере развития новейшей вычислительной техники возникли также разные языки программирования, которые исследовались разными разработчиками и учеными: Динман М.К. [6], Д. Лафоре, [13], Харви Дейтелс [17].

1. ОСНОВНЫЕ ПОНЯТИЯ О ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

Понятие о программном обеспечении

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

Программное обеспечение, можно условно разделить на три категории (рисунок 1) [5]:

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

– прикладное ПО, обеспечивающее выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, обработка информационных массивов и т.д[10].

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

структура программного обеспечения

Рисунок 1 – Классификация программного обеспечения

Системным программным обеспечением называются программы общего пользования не связаны с конкретным применением ПК и выполняют традиционные функции: планирование и управление задачами, управления вводом-выводом и т.д [19].

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

К системному ПО относятся [20]:

– операционные системы (эта программа загружается в ОЗУ при включении компьютера) метод использование прикладной программа

– программы – оболочки (обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS, например, Norton Commander)

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

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

– утилиты (вспомогательные или служебные программы, которые представляют пользователю ряд дополнительных услуг)

Необходимо отметить, что часть утилит входит в состав операционной системы, а другая часть функционирует автономно. Большая часть общего (системного) ПО входит в состав ОС. Часть общего ПО входит в состав самого компьютера (часть программ ОС и контролирующих тестов записана в ПЗУ или ППЗУ, установленных на системной плате). Часть общего ПО относится к автономными программам и поставляется отдельно [19].

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

Пакеты прикладных программ – это система программ, которые по сфере применения делятся на проблемно – ориентированные, пакеты общего назначения и интегрированные пакеты. Современные интегрированные пакеты содержат до пяти функциональных компонентов: тестовый и табличный процессор, СУБД, графический редактор, телекоммуникационные средства[3].

К прикладному ПО, например, относятся [8]:

– Комплект офисных приложений MS OFFICE;

– Бухгалтерские системы;

– Финансовые аналитические системы;

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

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

– Редакторы HTML или Web – редакторы.

1.2. Характеристика инструментального программного обеспечения

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

В самом общем случае для создания программы на выбранном языке программирования (языке системного программирования) нужно иметь следующие компоненты [11]:

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

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

3. Редактор связей или сборщик, который выполняет связывание объектных модулей и формирует на выходе работоспособное приложение – исполнимый код [7].

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

4. В последнее время получили распространение визуальный методы программирования (с помощью языков описания сценариев), ориентированные на создание Windows-приложений. Этот процесс автоматизирован в средах быстрого проектирования. При этом используются готовые визуальные компоненты, которые настраиваются с помощью специальных редакторов [14].

Наиболее популярные редакторы (системы программирования программ с использованием визуальных средств) визуального проектирования:

Borland Delphi - предназначен для решения практически любых задачи прикладного программирования

Borland C++ Builder – это отличное средство для разработки DOS и Windows приложений

Microsoft Visual Basic – это популярный инструмент для создания Windows-программ

Microsoft Visual C++ - это средство позволяет разрабатывать любые приложения, выполняющиеся в среде ОС типа Microsoft Windows [20].

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

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

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

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

Также можно сформулировать перечень требований, что могут быть выставлены к ЯП:[4]

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

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

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

– гибкостью называется возможность удобного или же несложного описания самых разных методов для сложных математических вычислений с применением набора изобразительных методов и средств (блок-схем) в конкретном ЯП [3];

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

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

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

Машинный вид команды программы, состоящий из символов «0» и «1», указывает, какое действие должен выполнять центральный процессор. Значит для того, чтобы задать ЭВМ последовательность инструкций, которые ему надо выполнить, нужно описать последовательность двоичных кодов для соответствующих команд [18].

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

Намного проще писать программу на языке программирования, который более близок к естественному языку, а работу по «переводу» данной программы в машинный код поручить компьютеру [14].

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

  1. Машинный язык (начало 50-х годов XX ст.). Программы на машинном языке являлись очень длинными последовательностями двоечных цифр и машинно-зависимыми (для каждой ЭВМ нужно было составлять свою программу, которая подходила бы под ее архитектуру) [11].
  2. Ассемблер (середина 50-ых годов XX ст.). Вместо написание программ на бинарном коде программисты могли пользоваться операторами языка Ассемблер (ADD, MOV, SUB и прочими), которые похожи на аббревиатуры английских слов. Программы на этом языке также являются машинно-зависимыми. Языки типа Fortran.

С конца 50-ых гг. XX ст. начали создаваться первые машинно-независимые языки программирования, но для каждого из них были разработаны компиляторы.

Примерами таких языков являются [6]:

– FORTRAN – для технических и научных расчетов;

– COBOL – для коммерческих приложений;

– BASIC – универсальный язык для начинающих.

  1. Алгоритмические языки программирования.

С конца 70-ых г. XX ст. начали создаваться такие языки программирования, что позволяли перейти программисту к структурному программированию (применение операторов выбора, ветвления, цикла и отказ от использования операторов перехода (например, goto). К таким языкам относятся:

– Pascal;

–Си.

  1. Языки объектно-ориентированного направления [11].

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

– С++ – усовершенствование алгоритмического языка Си;

– Object Pascal – создан на основе Pascal.

– Visual Basic – для создания приложений с оконным интерфейсом для ОС Windows.

  1. Языки программирования, использующиеся в компьютерных сетях [11].

В начале 90-х годов XX ст. в связи с быстрым развитием Интернета созданы языки программирования, обеспечивающие кроссплатформенную совместимость. На подключенных компьютерах к Интернету с различными ОС могли запускаться одни и те же программные продукты. Исходная программа компилировалась в промежуточный код, который обрабатывался на компьютере встроенной виртуальной машиной. К таким языкам относяться:

– Java - объектно-ориентированный язык, разработан для создания сетевого ПО;

– JavaScript – язык сценариев для Web-страниц [16].

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

IDE Visual Studio .Net разработана корпорацией Microsoft и позволяет создавать графические приложения на разных объектно-ориентированных языках программирования:

– Visual Basic .Net;

– C# и J;

– Visual J#.

1.4. Парадигмы языков программирования

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

Отметим также, что одним с самых важнейших методов их подразделения является их принадлежность для одного с стилей, главными с которых являются (рисунок 2):[3]

– логические;

– процедурные;

– функциональные;

– объектно-ориентированные.

Рисунок 2 – Парадигмы программирования

Процедурное (или же императивное) программирование часто являются отражением архитектуры для классических ПЭВМ, которая была использована Дж. фон Нейманом.[5]

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

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

Процедурные ЯП также характеризуются основными следующими особенностями:[8]

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

– пригодностью символьных и числовых вычислений;

– отсутствием для этого математической основы;

– эффективностью в реализации некоторых традиционных ПЭВМ.

Одним из самых важнейших классификационных признаков в процедурном языке является уровень[14].

Уровень ЯП определяется его семантической и синтаксической емкостью конструкций, а также степенью ориентации на классического программиста. Стоит заметить, чем более ЯП ориентирован на обычного пользователя, тем выше его уровень.[11]

К процедурным ЯП относят:

– С;

– Basic,

– язык Ассемблера;

– Pascal.

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

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

Аппликативные ЯП включают следующие составные части:[17]

– классы констант;

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

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

– правила формирования самых разных выражений на основании вызовов функций.

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

– вызовы функций могут заменяться значениями;

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

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

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

В результате этого функциями могут быть значениями вызова иной функции или какого-то объекта.

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

Отметим, что ЯП логического программирования, а именно Пролог, часто применяем для системы искусственного интеллекта.

Основным понятием по указанному стиле программировании является принцип отношения. Каждая программа представляется множество определений отношений с разными объектами (в определениях условий и ограничений), также цели (запроса) [13].

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

А в результате вычисление является ненужным продуктом данного процесса [14].

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

Среди таких попыток выделено направление под названием объектно-ориентированного подхода для конструирования и разработки программ. Главную роль при этом в популярности подхода и сыграла ее связь с интерфейсами разных пользователей (особенно графическими).

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

Но распространение мощнейших персональных компьютеров создало еще в 90-х гг. базу для повсеместного использования объектно-ориентированного метода на практике.

В несколько последних лет более широко начинают изучаться языки программирования, что были созданы в рамках популярной объектно-ориентированной методики, а именно С++, Smalltalk, Java,C#.

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

Самые типовые задачи, где ООП является основной перспективной, выделим следующие:[20]

– автоматизация экспериментов;

– интерфейс пользователей;

  1. анимация;
  2. медицина;
  3. связь;
  4. коммуникация;
  5. операционные системы.

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

Объектом является специальная совокупность данных (или же переменных), а также их способов работы (специальных компонентных процедур, функций).

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

Все состояние объекта также описывается при использовании его переменных.

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

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

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

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

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

Класс – множество объектов, что считаются связанными общностью структуры, поведением. Класс сравнивают с шаблоном, по которому могут создаваться объекты. [18]

Именно класс вначале может описываться переменными и методами для объекта, то есть структурами и его поведением, и определяет все основные механизмы создания такого реального объекта, который, представляет при создании экземпляр некоторого класса.[19]

Наведение при использовании классов порядка среди таких объектов – большое достижение, но можно пойти все же дальше, при этом определяя и некоторый порядок также и среди классов [19].

2. Характеристика современных языков программирования

2.1. Язык С++

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

В последние годы господство С++ слегка пошатнулось, ведь широкое развитие получили Java, Python и C#, но маятник мнения опытных разработчиков уже качнулся в обратную сторону, большинство программистов, что оставили программировать на С++, поспешили сразу возвратится к привычному ЯП. [6]

ЯП С++ – ЯП для общего назначения, что часто применим для написания кода системного программирования, понимаемом при этом в очень широком понимании.

Кроме того, ЯП С++ успешно применяется для написания приложений, выходящих далеко за рамки классического кода. Реализации ЯП С++ также часто присутствует полностью на всех ПК, от самых малофункциональных – и для применения в супер-ПК. [20]

Б. Страуструп является самым первым создателем и разработчиком ЯП С++, а также создателем транслятора. Он является авторитетным и очень опытным сотрудником научного центра корпорации AT&T, что находится в Нью-Джерси.

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

Он специализируется и в сфере операционных систем, разных распределенных ИС, принципов программирования, моделирования, а также является автором руководства С++.

ЯП С++ обязан безусловно языку С [17], который сохраняется в качестве некоторое его подмножество. В нем сохранены все свойственные для С средства и методы программирования низкого уровня, предназначенные для разрешения задач по системного программирования. [6]

Название С++ придумано Р. Маскитти в 1982 г. Оно имело возможность показать свой эволюционный характер для нового ЯП С++. Обозначение «++» определяет операцию инкремента.

Изначально ЯП С++ был спроектирован также для того, чтоб Б. Страуструпу и его команде не надо было выполнять программирование программы на ЯВ ассемблера или других ЯП низких уровней. [3]

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

До какого-то времени определенного какого-то графика по разработке для языка С++ не было. Реализация и документирование для всех средств шли параллельно.

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

Примерно в 1984 г. стало очевидным, что работы по стандартизации С++ будут неизбежными и надо приступить незамедлительно к проектированию базиса.

Организация AT&T внесла также свой вклад в рассматриваемый этап работы. Больше 90 представителей выполняли приемы для изучение и комментировали аспекты языка, что стали современной версией для руководства по С++.

В процессе разработки ЯП С++ самым важным этапом была его простота. Поскольку при возникновении вопросов, именно что надо упростить: либо руководство, или документацию, то всегда выбирали первое. Огромное значение также все разработчики придавали совместимости ЯП С++ с С, что мешало изменить весь синтаксис.[9]

Пример кода на С++ показан на рисунке 3:[10]

Результат пошуку зображень за запитом "код С++"

Рисунок 3 – Пример кода С++

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

Хотя иногда пользователю понадобится самому создать некоторый тип, то он может его определить с легкостью посредством самого языка. Написание программ в С++ также сводится и к определению зависящих параметров для типов или области программирования. [9]

Язык С++ создавался и по причине использования его для традиционной сферы, а именно в системах для программирования С на ОС Linux. Но есть уже обоснованные способы по применению С++ в этой богатой программной среде. К примеру, все системы трансляции, динамическую загрузка данных и БД, можно применять также и в Linux.[16]

2.2. Язык Java

ЯП Java является кросс-платформенным языком программирования, что был создан корпорацией Sun Microsystems [12].

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

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

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

Java – не лишь ЯП, но и специальная платформа проектирования приложений. Изначально указанный язык назывался Oak, и был разработан Джеймсном Гослингтом с целью программирования разных бытовых электронных устройств [13].

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

Чтобы не связывать разработку программного обеспечения с конкретно применяемой платформой, Д. Гослингт начал использовать разные расширение компилятора С++ [15].

Заметим, со временем он понял, что только один С++ не будет удовлетворять всем необходимым потребностям, как бы не расширять его. Поэтому в середине 1990 г. спроектировал язык Oak.

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

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

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

Пример кода показан на рисунке 4:

Результат пошуку зображень за запитом "пример кода на java"

Рисунок 4 – Пример кода Java

В последнее время внесен ряд новых усовершенствований, которые увеличивали скорость выполнения некоторых программ [14]:

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

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

Такие идеи нашли выражение в структуре CLI.[20]

2.3. Язык C#

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

Указанные языки могут устраивать многих разработчиков, хотя не обеспечивают в действительности какой-то требуемой продуктивности разработки. [5] Процессы для написания приложения при использовании ЯП С++ занимает много времени, чем разработка такого же приложения на C#.

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

Традиционным средством для выполнения отладки программных продуктов на стадиях выполнения этапов разработки C++ является маркировка частей кода программ директивами #ifdef.

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

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

ЯП C#, являясь одним из последних с широко используемых ЯП, имеет возможность впитать полностью весь опыт, лучшие стороны всех современных ЯП, при этом являясь также созданным для программирования в среде программирования .NET.

Архитектура.NET продиктовала ему перспективную объектно-ориентированную направленность. [6]

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

2.4. Язык Ruby

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

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

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

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

Ruby был задуман еще в 1993 г. японцем Юкихиро Мацумото, который стремился создать язык, что бы вобрал из других языков лучше подходы, облегчающие работу программиста (рисунок 5).

Результат пошуку зображень за запитом "язык ruby описание"

Рисунок 5 – Логотип Ruby

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

Мацумото хотелось, чтоб это был только объектно-ориентированный, простой при использовании высокоуровневый язык программирования. Таким образом, главное назначение языка Ruby – это создание мощных и одновременно понятных программ, в которых важна не так скорость работы программы, как малое время разработки, а также понятность и простота его синтаксиса [17].

Язык функционирует принципу «наименьшей неожиданности»: написанная программа должна себя вести так, как хочет того программист. Он также выполнил наследование идеологии языка Perl в предоставлении программисту возможностей для достижения одного и такого же результата разными способами [6].

В Японии Ruby был популярным с момента его появления первой версии в 1995 г.

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

После 2000 года началось распространение языка Ruby по всему миру, а этому способствовало появление разных англоязычных книг [4]:

– «Programming Ruby»;

– «Why's (Poignant) Guide to Ruby».

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

Настоящий всплеск интереса к языку Ruby спровоцировало появление модуля Ruby-On-Rails (или RoR) — фреймворка для разработки веб-приложений. RoR стал катализатором для Ruby, благодаря которому данный язык получил признание сейчас во всем мире.

Настоящий скачок и интерес к применению языка для серьёзных проектов начался после выхода версии Ruby 1.8.0 в 2003 г. и новой версии Ruby on Rails в 2007 году, что и вывело программирование языком Ruby на новый качественный уровень. [14]

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

А это значит, что скорость разработки их заметно возрастает.

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

Поэтому вся разработка Ruby могла быть разделена на 2 ветви [14]:

– создание новых версий 1.9;

– поддержка версий 1.8,

что являются предтечей следующих версий языка, Ruby 2. На рисунке 6 показано изменение быстродействия версий Ruby [3]:

https://habrastorage.org/getpro/habr/post_images/368/95c/a18/36895ca18ae8150581705c6be294e95a.gif

Рисунок 6 – Увеличение быстродействия

Согласно рейтингу компании TIOBE Ruby в 2016 году занял 5 место среди самых популярных языков программирования, а это более 1,5% всего рынка (рисунок 7) [15].

https://habrastorage.org/getpro/habr/post_images/1bb/6eb/d15/1bb6ebd15afbc585bcae4241f900b66f.gif

Рисунок 7 – Рейтинг языков программирования

Рисунок 8 показывает количество предложений по работе, он совпадает также с выводами фирмы TIOBE – спрос на Ruby есть, и достаточно высокий, но он все-таки ниже, нежели спрос на Python, или значительно ниже, нежели на язык PHP, что и ясно – несравнимы активные сроки использования таких языков (рисунок 11) [13]:

https://habrastorage.org/getpro/habr/post_images/267/ec5/919/267ec591931cbda4ca578bc0e22e360b.gif

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

На рисунке 8 видно, как стремительно растёт интерес к самым различным языкам, а темпы развития Ruby очень впечатляют: за последние 3 года они стремительно возросли в почти 2,5 раза [11].

2.5. Язык JavaScript

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

Возможности JavaScript сильно зависят от окружения, в котором он работает. Например, Node.JS поддерживает функции чтения/записи произвольных файлов, выполнения сетевых запросов и т.д [16].

В браузере для JavaScript доступно всё, что связано с манипулированием веб-страницами, взаимодействием с пользователем и веб-сервером.

Например, в браузере JavaScript может:

– Добавлять новый HTML-код на страницу, изменять существующее содержимое, модифицировать стили.

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

– Отправлять сетевые запросы на удалённые сервера, скачивать и загружать файлы (технологии AJAX и COMET).

– Получать и устанавливать куки, задавать вопросы посетителю, показывать сообщения [14].

– Запоминать данные на стороне клиента («local storage»).

Возможности JavaScript в браузере ограничены ради безопасности пользователя. Цель заключается в предотвращении доступа недобросовестной веб-страницы к личной информации или нанесения ущерба данным пользователя [10].

Примеры таких ограничений включают в себя:

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

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

– Существуют способы взаимодействия с камерой/микрофоном и другими устройствами, но они требуют явного разрешения пользователя. Таким образом, страница с поддержкой JavaScript не может незаметно включить веб-камеру, наблюдать за происходящим и отправлять информацию в ФСБ [6].

– Различные окна/вкладки «не знают» друг о друге. Иногда одно окно, используя JavaScript, открывает другое окно. Но даже в этом случае JavaScript с одной страницы не имеет доступа к другой, если они пришли с разных сайтов (с другого домена, протокола или порта).

Это называется «Политика одинакового источника» (Same Origin Policy). Чтобы обойти это ограничение, обе страницы должны согласиться с этим и содержать JavaScript-код, который специальным образом обменивается данными [13].

Это ограничение необходимо, опять же, для безопасности пользователя. JavaScript может легко взаимодействовать с сервером, с которого пришла текущая страница. Но его способность получать данные с других сайтов/доменов ограничена. Хотя это возможно в принципе, для чего требуется явное согласие (выраженное в заголовках HTTP) с удалённой стороной. Опять же, это ограничение безопасности.

Подобные ограничения не действуют, если JavaScript используется вне браузера, например — на сервере. Современные браузеры предоставляют плагины/расширения, с помощью которых можно запрашивать дополнительные разрешения [4].

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

Программные интерфейсы приложения (API), встроенные в браузеры, обеспечивающие различные функциональные возможности, такие как динамическое создание HTML и установку CSS стилей, захват и манипуляция видеопотоком, работа с веб-камерой пользователя или генерация 3D графики и аудио сэмплов [8].

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

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

2.6. Язык Python

В 1989 году сотрудник голландского института, тогда мало кому известный Г. ван Россум взял участие в проекте создания ЯП ABC. Язык предназначался для замены языка программирования BASIC, для обучения основным концепциям программирования.[4]

В результате ученый в течении пары недель на своем домашнем ПК написал интерпретатор другого языка, для чего он позаимствовал некоторое количество прогрессивных идей того времени из ABC. После этого Гвидо начал его распространять созданный ЯП через Интернет.

На ранних этапах создания подключился довольно известный в то время эксперт Стив Маевский, который до 1995 года вел блог "Сравнительная критика ЯП".

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

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

Через некоторое время ван Россум переехал в Америку. Его пригласили на работу в корпорацию CNRI, где он и использовал Python для проектов, которыми занималась корпорация.

Так это продолжалось до изобретения в 1998 г. версии 1.5.1, когда в жизни Гвидо начались пертурбации [11].

Корпорация, где он работал, оставляла ему очень мало времени на развитие Питона, а это ученого перестало устраивать.

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

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

Версия 2.0 – довольно большой шаг вперед, хотя в первую очередь это можно констатировать в социальном плане. В данной версии самое главное, что такой процесс развития ЯП и интерпретатора стал намного открытее. Гвидо перевел все составные части языка на SourceForge.

Сам процесс развития всех версий стал виден большему количеству пользователей. Сообщество пользователей выросло, оно стало требовать предоставления возможности участия для развития языка, и Гвидо пошел на это [11].

Кроме казанной активности произошло еще много чего нового и интересного в развитии ЯП:[16]

– появился Юникод;

– появился новый инструмент регулярных выражений, что работает как для классических строк, так и для формата Юникод.

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

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

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

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

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

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

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

– Встроенная поддержка формата Unicode в строках. Для Python необязательно писать код на английском языке, в программе может вполне использоваться другой язык [4].

– Поддержка ООП. При этом реализация его в Python является одной с самых понятных по сравнению с другими языками.

– Автоматическая сборка мусора, а также отсутствие утечек памяти при выполнении программ.

– Интеграция с языками C/C++, если возможностей Python будет недостаточно [11].

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

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

– Кроссплатформенность. Программа, которая написана на Python, будет работать совершенно одинаково на зависимо от того, в какой именно операционной системе ее запустить. Отличия возникают только в редких случаях, но их легко заранее можно предусмотреть благодаря наличию документации. [8]

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

О рассматриваемом ЯП есть уже масса положительных отзывов, поэтому определить его недостатки очень проблематично. Единственным недочетом считают небольшую медлительность в процессе выполнении алгоритма при его сравнении с Java и иными языками программирования. Но зато ЯП Python является интерпретируемым. Если же программа достойна внимания, то разные ее участки можно быстро подкорректировать. Над улучшением работы Python трудятся специалисты, которые учли уже его незначительные недочеты, а также могут внести некоторые адекватные исправления [5].

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

Стоит отметить, что в ЯП присутствуют очень многие модули для его расширяемости.

2.7. Язык Go

На рынке языков программирования появился новый игрок – язык программирования Go от компании Google. Если верить официальным заявлениям Google, то Go – это универсальный язык, пригодный для любых задач. Google анонсировал язык Go в 2009 году, и с тех пор он немного изменился, но цели и задачи у него остались прежние: этот язык предназначен для системного программирования и по своей сути очень похож на С++.

Язык Go – это компилируемый и многопоточный язык общего назначения, имеющий много общих черт с языком С++, поэтому для успешного освоения представленного материала необходимы определенные знания в C++ [4].

В языке Go отсутствуют такие понятия, как класс, конструктор и деструктор (вместе с соответствующими зарезервированными словами). Однако в нем существуют структуры, позаимствованные из языка С, к которым можно привязать функции, поэтому в go можно создавать код и в стиле ООП.

Наличие «сборщика мусора» упрощает работу с памятью, по сравнению с C или С++. Существуют и указатели, но арифметика для них не предусмотрена [16].

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

Многопоточность поддерживается на уровне языка, для связи потоков используются каналы [4].

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

  1. GCC;
  2. стандартная библиотека С;
  3. генератор bison;
  4. make;
  5. awk;
  6. редактор ed.

Язык go поддерживает исходный код в кодировке UTF-8, поэтому никаких специальных действий для использования символов, не входящих в английский алфавит, не потребуется. Даже в имени переменной могут содержаться китайские иероглифы [17].

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

Например, существует пять вариантов целочисленного типа int: int, int8, int16, int32, int64. Такие же типы данных, но с префиксом u, представляют беззнаковые значения.

Числа с плавающей точкой представлены тремя типами: float, float32 и float64. В языке Go нет неявного приведения типов, поэтому при компиляции могут возникать ошибки.

Имеется даже два типа данных для комплексных переменных: complex64 и complex128. Встроенный тип string представляет собой неизменяемый массив байт [3].

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

ЗАКЛЮЧЕНИЕ

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

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

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

К примеру, язык C++ позволяет качественно применить типизированные, расширяемые данные, прикрепляемые к объекту, а также разнообразные шаблонные классы и лямбда-функции.

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

В процессе написания работы были реализованы такие задачи:

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

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

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

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

  1. Хортон А. Visual C++ 2010. Полный курс. Издательский дом «Вильямс». – 2014. – 300 с.
  2. Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. – 2014. – 436 с.
  3. Брайан Керниган, Деннис Ритчи. Язык программирования Python. Издательство «Невский диалект». – 2014. – 320 с.
  4. Бьерн Страуструп. Программирование. Принципы и практика использования С++. Издательский дом «Вильямс». – 2015. – 258 с.
  5. Джесс Либерти. Освой самостоятельно Java за 21 день. Издательский дом «Вильямс». – 2017. – 230 с.
  6. Динман М.И. Python. Освой на примерах. – СПб.: БХВ-Петербург, 2017.– 260 с.
  7. Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на JS. Издательство «Эксмо». – 2013. – 400 с.
  8. Кнут, Дональд, Эрвин. Искусство программирования. Том 1: Уч. пос. М.: Издательский дом. «Вильямс», 2014.– 720с.
  9. Кубенский А.А. Структуры и алгоритмы обработки данных: процедурно-ориентированный подход. – СПб.: БХВ-Петербург, 2013. – 464с.
  10. Лаптев В.В. С++. Объектно-ориентированное программирование. Задачи и упражнения. – СПб.: Питер. 2013. – 288 с.
  11. Майерс С. Эффективное использование С++. – М.: ДМК Пресс; – СПб.: Питер. 2013.–240с.
  12. Прата С. Язык программирования С#. Издание 6. Издательский дом «Вильямс» – 2016. – 304 с.
  13. Р. Лафоре. Объектно-ориентированное программирование в С#. Издательство «Питер». Издание 4. – 2014. – 628 с.
  14. С++ Стандартная библиотека. Для профессионалов./Н. Джосьютис. – СП Питер, 2017. – 350 с.
  15. Седжвик Роберт. Фундаментальные алгоритмы на Python. К.: Издательство «ДиаСофт», – 2014. – 500 с.
  16. Скляров В.А. Язык Java и объектно-ориентированное программирование. – Минск. «Вышейшая школа». – 2017. – 478с.
  17. Харви Дейтел, Пол Дейтел. Как программировать на Python . Пер. с англ. – М.: ЗАО «Издательство БИНОМ», 2017. – 430 с.
  18. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Go. Учеб. пособие. – Финансы и статистика, 2014. – 464с.
  19. Штерн Виктор. Основы С++: Методы программной инженерии.– Издательство «Лори», 2013. – 860с.
  20. Язык Python: Учеб. Пособие /И.Ф. Астахова, С.В. Власов, В.В. Фертиков, А.В. Ларин.–Мн.: Новое знание, 2013. – 203 с.