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

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

Содержание:

Введение

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

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

В настоящее время, во всем мире широко применяются языки высокого программирования, такие как Фортран, Алгол, Си, С++, Java, Паскаль и другие. Один из самых "старых" - Паскаль. Своей популярности среди программистов он обязан, прежде всего, своей простоте, универсальности и удобству работы в нем. Язык программирования Паскаль используется уже более тридцати лет. На сегодняшний день создано семь версий.

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

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

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

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

Глава 1. История развития языков программирования и их классификация

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

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

[Язык программирования - это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.][1]

Рассмотрим историю развития вычислительной техники. Вспомним самые первые компьютеры и программы для них. Это была эра программирования непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были знать архитектуру машины досконально. [Программы были достаточно простыми, что обуславливалось, во-первых, весьма ограниченными возможностями этих машин, и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке. Вместе с тем такой способ разработки давал программисту просто невероятную власть над системой.][2] Становилось возможным использование таких хитроумных алгоритмов и способов организации программ, какие и не снились современным разработчикам. Например, применялся самомодифицирующийся код. Знание двоичного представления команд позволяло иногда не хранить некоторые данные отдельно, а встраивать их в код как команды.

[Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли, сотрудником Пенсильванского университета.][3] Эта система под названием Short Code являлась примитивным языком программирования высокого уровня.

[Уже в 1951 г. Г.Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов машинные команды.][4] В 1954 г. группа под руководством Г.Хоппер разработала систему, включавшую в себя язык программирования и компилятор, которая в дальнейшем полу название MATH-MATIC.

Середина 1950-х гг. характеризуется стремительным прогрессом в области программирования. Голь программирования в машинных командах стала уменьшали Начали появляться языки программирования нового типа, выступающие в качестве посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN — от FORmula TRANshlor - переводчик формул), разработанный группой программистов фирмы IBM в 1954 г. (первая версия).

В конце 1950-х гг. плодом международного сотрудничества в области программирования явился Алгол (ALGOL — от ALGOrithmic Language — алгоритмический язык). [Алгол предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач.][5] Специалисты-практики восприняли этот язык далеко неоднозначно, но, тем не менее его влияние на развитие других языков и теорию программирования оказалось весьма значительным.

[В нашей стране в те годы под руководством Сергея Петровича Ершова был (создан транслятор Альфа, который представлял довольно удачную русифицированную версию Алгола.][6]

В середине 1960-х гг. сотрудники математического факультета Дартмутского кол-Томас Курц и Джон Кемени создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык звали «универсальным символическим кодом для начинающих» (Beginner's All-urpose Symbolic Instruction Code, или сокращенно, BASIC).

В 1960-е гг. были предприняты попытки преодолеть эту «разносорт-иосицу» путем создания универсального языка программирования. Первым детищем этого направления стал PL/I (Programm Language One), созданный в 1967 г. В дальнейшем на эту роль претендовал АЛГОЛ-68 (1968 г.). Бейсик широко употребляется при написании простых программ; Фортран является классическим языком программирования при решении на ЭВМ математических и инженерных задач; язык Кобол был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса. Еще более специализированным является язык Лого (от гр. logos — слово), созданный для обучения программированию школьников профессором математики и педагогики Сеймуром Пейпертом из Массачусетского технологического института.

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

В течение многих лет программное обеспечение строилось на основе операциональных и процедурных языков, таких как Фортран, Бейсик, Паскаль, Ада, И И сегодня современные версии этих и им подобных языков (Модула, Форт и дЯ доминируют при разработке прикладных программных средств. Однако по мере эволюции языков программирования получили широкое распространение и другие, принципиально иные, подходы к созданию программ.

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

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

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

  • наглядность - желательное использование в языке уже существующих символов, хорошо знакомых и понятных как программистам, так и пользователям компьютеров;
  • единство - использование однозначных символов для обозначения. Количество этих символов должно быть по возможности минимальным;
  • гибкость - применение удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;
  • [модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;
  • однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач.][7]

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

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

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

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

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

Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае “низкий уровень” не значит “плохой”. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора.

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

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

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

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

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

Таким образом, программы, написанные на языке ассемблера, требуют значительно меньшего объема памяти и времени выполнения. [Знание программистом языка ассемблера и машинного кода дает ему понимание архитектуры машины.][14] Несмотря на то, что большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.

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

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

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

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

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

[Основные компоненты алгоритмического языка:

· алфавит,

· синтаксис,

· семантика.][18]

[Алфавит — это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке — никакие другие символы в тексте не допускаются.][19]

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

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

Языки высокого уровня делятся на:

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

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

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

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

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

Разнообразие классов задач привело к тому, что на сегодняшний день разработано несколько сотен алгоритмических языков. Правда, широкое распространение и международное признание получили лишь 10-15 языков. Среди них в первую очередь следует отметить: Fortran и Algol - языки, предназначенные для решения научно-технических задач, Cobol – для решения экономических задач, Basic – для решения небольших вычислительных задач в диалоговом режиме. В принципе каждый из этих языков можно использовать для решения задач не своего класса.

[В то же время в середине 60-х годов начали разрабатывать алгоритмические языки широкой ориентации – универсальные языки. Обычно они строились по принципу объединения возможностей узко-ориентированных языков. Среди них наиболее известны PL/1, Pascal, C, C+ , Modula, Ada. Однако, как любое универсальное средство, такие широко-ориентированные языки во многих конкретных случаях оказываются менее эффективными.][23]

Логические языки- (Prolog, Lisp, Mercury, KLO и др.) ориентированы не на запись алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания. В этих языках указывается что дано и что требуется получить. При этом поиск решения задачи возлагается непосредственно на ЭВМ.

Объектно-ориентированные языки (Object Pascal, C++, Java, Objective Caml. и др.). [Руководящая идея объектно-ориентированных языков заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое - объект.][24]

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

· объект;

· свойство объекта;

· метод обработки;

· событие;

· класс объектов.

[Объект — совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).][25]

Свойство — это характеристика объекта и его параметров. Все объекты наделены определенными свойствами, сочетание которых выделяют (определяют) объект.

Метод — это набор действий над объектом или его свойствами.

Событие — это характеристика изменения состояния объекта.

[Класс — это совокупность объектов, характеризующихся общностью применяемых к ним методов обработки или свойств.][26]

Существуют различные объектно-ориентированные технологии, которые обеспечивают выполнение важнейших принципов объектного подхода:

· инкапсуляция;

· наследование.

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

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

[Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков PL/1.][28] Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. PL/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в PL/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.

Диалоговые языки

[Появление новых технических возможностей поставило задачу перед системными программистами - создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками.][29] Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, неразработанных (не диалоговых) языках. Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе. Одним из примеров диалоговых языков является Бэйсик. [Бэйсик использует обозначения подобные обычным математическим выражениям.][30] Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач.

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

1.3.Эволюция языков программирования

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

Таблица. Поколения языков программирования


Поколения


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


Характеристика


Первое


Машинные


Ориентированы на использование в конкретной ЭВМ, сложны в освоении, требуют хорошего знания архитектуры ЭВМ


Второе


Ассемблеры, Макроассемблеры


Более удобны для использования, но,   по-прежнему машинно-зависимы


Третье


Языки высокого уровня


Мобильные, человеко-ориентированные, проще в освоении


Четвертое


Непроцедурные, объектно-ориентированные, языки запросов, параллельные


Ориентированы на непрофессионального пользователя и на ЭВМ с параллельной архитектурой


Пятое


Языки искусственного интеллекта,

экспертных систем и баз знаний,

естественные языки


Ориентированы на повышение интеллектуального уровня ЭВМ и интерфейса с языками

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

[К первому поколению (англ. first-generation programming language, 1GL) относят машинные языки — языки программирования на уровне команд процессора конкретной машины.][33] Для программирования не использовался транслятор, команды программы вводились непосредственно в машинном коде переключателями на передней панели машины. Такие языки были хороши для детального понимания функционирования конкретной машины, но сложны для изучения и решения прикладных задач.

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

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

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

[Языки второго поколения (2GL) создавались для того, чтобы облегчить тяжёлую работу по программированию, перейдя в выражениях языка от низкоуровневых машинных понятий ближе к тому, как обычно мыслит программист.][35] Эти языки появились в 1950-е годы, например, такие языки как Фортран и Алгол. Наиболее важной проблемой, с которыми столкнулись разработчики языков второго поколения, стала задача убедить клиентов в том, что созданный компилятором код выполняется достаточно хорошо, чтобы оправдать отказ от программирования на ассемблере. [Скептицизм по поводу возможности создания эффективных программ с помощью автоматических компиляторов был довольно распространён, поэтому разработчикам таких систем должны были продемонстрировать, что они действительно могут генерировать почти такой же эффективный код, как и при ручном кодировании, причём практически для любой исходной задачи.][36]
Третье поколение языков программирования начинается с появления в 1956 г. первого языка высокого уровня — Fortran, разработанного под руководством Дж. Бэкуса в фирме IBM. За короткое время Fortran становится основным при решении инженерно-технических и научных задач. Первоначально Fortran обладал весьма ограниченными средствами обеспечения работы с символьной информацией и с системой ввода-вывода. Однако постоянное развитие языка сделало его одним из самых распространенных. Под третьим поколением (3GL) первоначально понимались все языки более высокого уровня, чем ассемблер. [Главной отличительной чертой языков третьего поколения стала независимость от аппаратного обеспечения, то есть выражение алгоритма в форме, не зависящей от конкретных характеристик машины, на которой он будет исполняться.][37] Код, написанный на языке третьего поколения, перед исполнением транслируется либо непосредственно в машинные команды, либо в код на ассемблере и затем уже ассемблируется. При компиляции, в отличие от предыдущих поколений, уже нет соответствия один-к-одному между инструкциями программы и генерируемым кодом.

Третьим направлением развития языков четвертого поколения можно считать языки запросов, позволяющих пользователю получать информацию из баз данных. Языки запросов имеют свой особый синтаксис, который должен соблюдаться, как и в традиционных ЯП третьего поколения, но при этом проще в использовании. Среди языков запросов фактическим стандартом стал язык SQL (Structured Query Language).

[Термин языки программирования четвёртого поколения (4GL) лучше представлять как среды разработки четвёртого поколения. Они относятся к временному периоду с 1970-х по начало 1990-х.][38]

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

[Четвертым направлением развития являются языки параллельного программирования (модификация ЯВУ Fortran, языки Occam, SISAL, FP и др.), которые ориентированы на создание программного обеспечения для вычислительных средств параллельной архитектуры (многомашинные, мультипроцессорные среды и др.), в отличие от языков третьего поколения, ориентированных на традиционную однопроцессорную архитектуру.][39]

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

К интенсивно развивающемуся в настоящее время пятому поколению относятся языки искусственного интеллекта, экспертных систем, баз знаний (InterLisp, ExpertList, IQLisp, SAIL и др.), а также естественные языки, не требующие освоения какого-либо специального синтаксиса (в настоящее время успешно используются естественные ЯП с ограниченными возможностями - Clout, Q&A, HAL и др.).

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

Подводя итог данному периоду развития языков программирования, можно сделать вывод, что языки программирования высокого уровня (FORTRAN, ALGOL, LISP,COBOL и т.д. ) не похожи на язык ассемблера. [Языки высокого уровня разработаны специально для того, чтобы можно было иметь дело непосредственно с задачей, решаемой программой.][40] Так как данные языки описывают процедуру, то они иногда называются процедурными языками. Языки высокого уровня машинно-независимы. Программы, написанные на языке ассемблера непосредственно относятся к той машине, на которой они должны выполняться.

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

1. Алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;

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

3. Конструкции операторов задаются в удобном для человека виде;

4. Поддерживается широкий набор типов данных.][41]

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

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

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

Языки программирования высокого уровня используют в аппаратно-независимых системах программирования.

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

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

а) язык Фортран (Fortran). Является одним из первых языков программирования высокого уровня.

Это первый компилируемый язык, его автор Джим Бэкус, который создал его в 50-е годы. [Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность исполняемого кода.][42] В Фортране впервые был реализован ряд важнейших понятий программирования, целью было получение эффективного машинного кода, но было потеряно удобство написания программ. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и кончая пакетами управления спутниками, поэтому Фортран продолжает активно использоваться во многих организациях, а сейчас ведутся работы над очередным стандартом Фортрана.

[Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана - большое количество написанных на нём программ и библиотек подпрограмм.][43]

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

[Современный Фортран (Fortran 95 и Fortran 2003) приобрёл черты, необходимые для эффективного программирования, для новых вычислительных архитектур; позволяет применять современные технологии программирования, в частности, обобщённое и модульное программирование, ООП, сохраняя, при этом, преемственность с более ранними версиями.][44] Одной из наиболее главных концепций развития современного Фортрана - средства поддержки параллельности и векторные операции.

[К его основным достоинствам относится наличие огромного числа математических библиотек, поддержка работы с целыми, вещественными и комплексными числами высокой точности, встроенных средств обработки массивов.][45]

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

б) язык Бейсик (Basic).

[Бейсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code - универсальный код символических инструкций для начинающих) - семейство высокоуровневых языков программирования.][46]

Был разработан в 1964 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.

[Язык создавался как инструмент, с помощью которого студенты-непрограммисты могли самостоятельно создавать компьютерные программы для решения своих задач.][47] Бейсик получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров. На сегодняшний день претерпел существенные изменения, значительно уйдя от характерной для первых версий простоты, граничащей с примитивизмом, и превратившись в достаточно ординарный язык высокого уровня с типичным набором возможностей. Применяется как самостоятельный язык для разработки прикладных программ, в основном работающих под управлением ОС Windows различных версий. Бейсик широко распространён в качестве встроенного языка прикладных программных систем различного назначения и в качестве языка для программируемых калькуляторов.

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

При проектировании языка использовались следующие восемь принципов. [Новый язык должен был:

  1. быть простым в использовании для начинающих;
  2. быть языком программирования общего назначения;
  3. предоставлять возможность расширения функциональности, доступную опытным программистам;
  4. быть интерактивным;
  5. предоставлять ясные сообщения об ошибках;
  6. быстро работать на небольших программах;
  7. не требовать понимания работы аппаратного обеспечения;
  8. защищать пользователя от операционной системы.][49]

Язык был основан частично на Фортране II и на Алголе 60, с добавлениями, позволяющими ему быть удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. [Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов.][50]

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

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

в) язык Си (С).

[C (рус. Си) - компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка Би.][51] Был разработан для реализации операционной системы UNIX, но, в последствии, был перенесён на множество других платформ. [Согласно дизайну языка Си, его конструкции близко сопоставляются типичным машинным инструкциям, благодаря чему он нашёл применение в проектах, для которых был свойственен язык ассемблера, в том числе как в операционных системах, так и в различном прикладном ПО для множества устройств — от суперкомпьютеров до встраиваемых систем.][52] Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective-C.

[К 1973 году язык Си стал достаточно силён, и большая часть ядра UNIX, первоначально написанная на ассемблере PDP-11/20, была переписана на Си. Это было одно из самых первых ядер операционных систем, написанное на языке, отличном от ассемблера; более ранними были лишь системы Multics (написана на ПЛ/1) и TRIPOS (написана на BCPL).][53]

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

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

г) язык С++.

[C++ -компилируемый, статически типизированный язык программирования общего назначения.][54]

Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование. [Язык имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы, ввод-вывод, регулярные выражения, поддержку многопоточности и другие возможности.][55] C++ сочетает свойства как высокоуровневых и низкоуровневых языков. В сравнении с языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных современных языков программирования. У него широкая область применения, которая включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Широко применим для коммерческого использования. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

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

Разрабатывая C с классами, его автор Страуструп написал программу cfront- транслятор, перерабатывающий исходный код C с классами в исходный код простого C. Это позволило работать над новым языком и использовать его на практике, применяя уже имеющуюся в UNIX инфраструктуру для разработки на C. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп и его засыпали вопросами, что уже не мог лично поддерживать его. [К 1983 году в язык были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Получившийся язык уже перестал быть просто дополненной версией классического C и был переименован из C с классами в «C++». ] [56]Его первый коммерческий выпуск состоялся в октябре 1985 года.

До начала официальной стандартизации язык развивался в основном силами Страуструпа в ответ на запросы программистского сообщества. Функцию стандартных описаний языка выполняли написанные Страуструпом печатные работы по C++ (описание языка, справочное руководство и так далее). Лишь в 1998 году был ратифицирован международный стандарт языка C++: ISO/IEC 14882:1998 «Standard for the C++ Programming Language»; после принятия технических исправлений к стандарту в 2003 году - следующая версия этого стандарта - ISO/IEC 14882:2003.

д) язык Паскаль (Pascal).

[Паска́ль (англ. Pascal) - один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.][57]

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

Самая первая версия была создана в 1968 году профессором кафедры вычислительной техники Швейцарского федерального института технологии Никласом Виртом. [Основной целью, при создании нового языка, является его простота, с сохранением всех достоинств уже имеющихся языков высокого уровня программирования.][58]

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

В отличие от языка С (С++) в при использовании Паскаль сведены к минимуму возможные синтаксические неоднозначности, синтаксис языка является понятным и доступным.

Рассмотрим особенности языков другого класса. Основным достоинством проблемно-ориентированных языков программирования является минимизация трудозатрат программиста при решении задач принадлежащих некоторому четко выделяемому классу. К проблемно-ориентированным относят следующие языки программирования:

а) язык Лисп.

[Лисп (LISP, от англ. LISt Processing language - «язык обработки списков»; современное написание: Lisp) - семейство языков программирования, программы и данные в которых представляются системами линейных списков символов.][60] Создатель Лиспа Джон Маккарти занимался исследованиями в области искусственного интеллекта (ИИ) и созданный им язык по сию пору является одним из основных средств моделирования искуственного интеллекта.

Традиционный Лисп имеет динамическую систему типов. [Язык является функциональным, но начиная уже с ранних версий обладает также чертами императивности, к тому же, имея полноценные средства символьной обработки, позволяет реализовать объектно-ориентированность; примером такой реализации является платформа CLOS.][61]

Является языком системного программирования для так называемых лисп-машин, производившихся в 1980-е годы, например, фирмой Symbolics.

Автором Лиспа является Джон Маккарти, работавший в Массачусетском технологическом институте (MIT) в должности профессора по связи. Вместе с Марвином Мински он занимался работами по искусственному интеллекту.

[Основой для Лиспа послужил ранний язык IPL, разработанный Ньюэллом, Шоу и Саймоном. IPL был языком обработки списков и предназначался для реализации проекта «Логик-теоретик» - системы искусственного интеллекта, предназначенной для автоматического вывода теорем математической логики.][62]

[Первоначально Маккарти сформулировал списочный формализм для описания данных (S-выражения) и основанный на нём же механизм описания лямбда-выражений, что позволило записывать программы в виде наборов функций, представленных в списочной форме.][63]

Считается одним из старейших высокоуровневых языков программирования. Часто применяется при разработке экспертных систем и систем аналитических вычислений. Современные версии этого языка активно применяются при разработке новейших web-технологий. [Также модификации данного языка используются в качестве встроенных языков программирования в САПР. Примером может послужить AutoLISP - язык для разработки надстроек в продуктах компании AutoDesk.][64]

б) язык Пролог.

[Пролог (англ. Prolog) - язык и система логического программирования, основанные на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.][65]

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

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

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

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

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

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

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

а) Delphi (Lazarus некоммерческая - версия для ОС семейства Linux) - основана на Object Pascal;

б) C++, С# (~ C);

в) Visual Basic (~ Basic);

г) Visual Fortran (~ Fortran);

д) Prolog++ (~ Prolog).

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

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

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

  1. процедурно-ориентированные;
  2. проблемно-ориентированные;
  3. объектно-ориентированные.][68]

Процедурно-ориентированные языки программирования относятся к машинно-независимым. Они являются основными языками описания алгоритмов и имеются в математическом обеспечении по существу всех современных вычислительных машин. Операционная система EG ЭВМ позволяет использовать при программировании такие языки, как Алгол, Фортран, Кобол и ПЛ / 1, относящиеся к этой группе. [Эти языки программирования могут лишь косвенно отражать содержание будущей реализации, используя специфические синтаксические конструкции для описания порядка преобразований. ][69]

Пользователь применяет процедурно-ориентированные языки программирования ( КОБОЛ, ФОРТРАН, ПЛ-1) или специализированные языки конкретных банков данных. Непосредственный доступ к данным при обслуживании и использовании банков данных производится с помощью операторов командного языка, включаемых в прикладные программы. Языки программирования, включающие операторы командного языка, называются включающими языками. Ввиду того, что с банком данных взаимодействуют различные пользователи, выделяются физический, логический, системно-логический уровни представления данных.  

  1. Кобол процедурно-ориентированный язык программирования экономических задач, которые обычно включают обработку файлов большого объема.  
  2. [ФОРТРАН является процедурно-ориентированным языком программирования, в наибольшей степени приспособленным для решения математических и других задач, связанных с численными расчетами научного и прикладного характера.][70] Это язык программирования, предназначенный для записи алгоритмов решения научно-технических задач, в основном вычислительного характера, о чем свидетельствует его название. Слово ФОРТРАН является русским аналогом английского названия FORTRAN, образованного сокращением слов FORmula TRANslator, означающих переводчик формул, причем имеется в виду перевод с обычного математического языка на язык машинных команд. Фактически область применения языка гораздо шире: он используется для описания алгоритмов решения информационно-логических, экономических и других задач.  
  3. ПАСКАЛЬ [ Pascal ] Процедурно-ориентированный язык программирования высокого уровня, предназначенный для решения вычислительных и информационно-логических задач. Первоначально ориентировался на обучение программированию. Используется и как язык системного программирования. Версия языка Паскаль-плюс предоставляет возможности для параллельного программирования.  
  4. Program Applique a la Selection et la Compilation Automatique de la Litterature ] процедурно-ориентированный язык программирования высокого уровня, созданный в конце 1960 - х гг. Никлаусом Виртом, первоначально для обучения программированию в университетах. Назван в честь французского математика XVII века Блеза Паскаля. Существует ряд версий языка ( например, ЕТН Pascal, USD Pascal, Turbo Pascal) и систем программирования на этом языке для разных типов ЭВМ.  

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

[Язык не может существовать как нечто независимое от системы. Наоборот, он является органической частью системы, причем основные концепции его должны быть заложены в систему.][71] Используемые в настоящее время процедурно-ориентированные языки программирования, такие, как Алгол, Фортран, ПЛ / 1 и др., синтаксически однородные. Можно сказать, что они являются языками-оболочками, порожденными некоторым языком-ядром. Их основные отличия обусловлены ограничениями лексики и синтаксиса. Однако основные понятия, как, например, оператор, данные, выражение, имеют неизменный смысл.

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

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

Проблемно-ориентированных языков очень много, например:

Фортран, Алгол – языки, созданные для решения математических задач;

Simula , Слэнг - для моделирования;

Лисп, Снобол – для работы со списочными структурами.

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

[Модификация языка Фортран , появившиеся в 1958 году, получила название Фортран II и содержала понятие подпрограммы и общих переменных для обеспечения связи между сегментами.][73]

К 1962 году относится появление языка, известного под именем Фортран IV. И появлению в 1966 году двух стандартов – языка Фортран и базисного (основной) Фортран (Basic FORTRAN ). Эти языки приблизительно соответствуют модификациям IV и II , однако базисный Фортран является подмножеством Фортрана, в то время, как Фортран II таковым для Фортрана IV не является. Фортран заложен в основу Basic – диалогового языка, очень популярного для решения небольших задач, превосходного языка для обучения навыкам использования алгоритмических языков в практике программирования.

Алгол (англ. Algol от англ. algorithmic-алгоритмический и англ. language - язык) - название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ.

Создан комитетом по языку высокого уровня IFIP в 1958-1960 годах (Алгол 58, Алгол 60). Был кардинально переработан в 1964-1968 годах (Алгол 68). Один из первых языков высокого уровня. Больше имел применение в Европе, в том числе в СССР, в качестве как языка практического программирования, так и академического языка (языка публикации алгоритмов в научных работах). Оказал заметное влияние на все разработанные позднее императивные языки программирования - в том числе на язык Pascal.

Обычно названием Алгол (без уточнения версии) именуют Алгол 60, в то время как Алгол 68 рассматривается как самостоятельный язык.

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

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

[Существование множества различных диалектов Лисп а привело к созданию в начале 80-х гг. CommonLISP Комитета, который должен был выбрать наиболее подходящий диалект Лисп а и предложить его в качестве основного. Этот диалект, выбранный Комитетом в 1985г., получил название CommonLISP .][75] В дальнейшем он был принят в университетах США, а также многими разработчиками систем искусственного интеллекта, в качестве основного диалекта языка Лисп .

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

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

Профессор Массачусетского технологического института Дж. Самман заметил, что математическая ясность и предельная четкость Лисп а – это еще не все. Главное – Лисп позволяет сформулировать и запомнить «идиомы», столь характерные для проектов по искусственному интеллекту.

Снобол - язык программирования высокого уровня, разработанный в 1962-1967 гг. преимущественно для обработки текстовых данных.

Основной целью языка Снобол являлось показать принцип (возможность его полноценного существования), что всё есть строка. Внешне язык выглядит в так называемом «старом стиле»: современные идеи процедур в нём сложно узнать, однако мощь его ничуть не уступает LISP по работе в среде «искусственного интеллекта».

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

[Язык, который является языком написания компиляторов, в котором основной принцип, что всё есть строка и имеющий такой «некрасивый» синтаксис не мог естественным путём не «переродиться» в совершенно другой, внешне даже не похожий: Icon. Первоначально он был одной лишь надстройкой над Снобол4, но вскоре стал самостоятельным языком программирования.][77]

Разработка началась в 1962 г. Ральфом Грисвольдом, Иваном Полонским и Дэвидом Фарбером, сотрудниками лаборатории AT&T Bell Labs. Целью было создание языка обработки строк для работы с формулами и анализа графиков.

В 1950 г. Ингве (Yngve) из MIT разработал язык COMIT для обработки естественных языков на основе правил НФБ, однако группа из Bell Labs сочла COMIT слишком ограниченным для своих целей.

Изначально язык назывался SCL7 (Symbolic Computation Language 7), затем его название сменилось на SEXI (String Expression Interpreter), которое по понятным причинам было осуждено в 60-е гг., и, наконец, он стал называться SNOBOL (StriNg Oriented symBOlic Language) - искусственно созданный акроним, лишенный интуитивно понятного смысла. Было разработано несколько версий языка Снобол - SNOBOL, SNOBOL2, SNOBOL3 и SNOBOL4. Последний пользовался успехом в 70-е гг.

[Объектно-ориентированный язык программирования (ОО-язык) - язык, построенный на принципах объектно-ориентированного программирования.][78]

В его основе концепции объектно-ориентированного программирования лежит понятие объекта - некой сущности, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия).

Например, объект человек может иметь поля имя, фамилия и методы есть и спать. Поэтому в программе можем использовать операторы Человек.Имя:="Иван" и Человек.Есть(пища).

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

  • [Наследование. Создание нового класса объектов путём добавления новых элементов (методов). Некоторые ОО языки позволяют выполнять множественное наследование, то есть объединять в одном классе возможности нескольких других классов. ][79]
  • Инкапсуляция. Сокрытие деталей реализации, которое позволяет вносить изменения в части программы, не влияя на другие её части, что существенно упрощает сопровождение и изменение ПО.
  • [Полиморфизм. При полиморфизме некоторые части (методы) родительского класса заменяются новыми, реализующими специфические для данного потомка действия. ][80]Таким образом, интерфейс классов остаётся прежним, а реализация методов с одинаковым названием и набором параметров различается. В ООП обычно применяется полиморфизм подтипов (называемый при этом просто «полиморфизмом»), нередко в форме позднего связывания.

Неполный список объектно-ориентированных языков программирования:

  • ActionScript (3.0)
  • Ada
  • C#
  • C++ 
  • Cyclone
  • D
  • Delphi 
  • Dylan 
  • Eiffel
  • F#
  • Io
  • Java 
  • JavaScript 
  • JScript .NET
  • Object Pascal
  • Objective-C 
  • Perl
  • PHP PowerBuilder
  • Python 
  • Ruby 
  • Scala
  • Simula
  • Smalltalk 
  • Swift 
  • Vala 
  • VB.NET
  • Visual DataFlex
  • Xbase++
  • X++

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

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

Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка намного опередили свое время. Достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Concurrent Pascal и др.

[Язык Smalltalk был разработан командой Xerox Palo Alto Research Center Learning Research Group как программная часть Dynabook - фантастического проекта Алана Кея.][81] В основу были положены идеи Simula.. Smalltalk является одновременно и языком программирования, и средой разработки программ. Это чисто объектно-ориентированный язык, в yнем абсолютно все рассматривается как объекты; даже целые числа - это классы. Вслед за Simula, Smalltalk является важнейшим объектно-ориентированным языком, он заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.

[Известны пять выпусков языка Smalltalk, обозначаемых по году их появления: Smalltalk-72, -74. -76, -78, -80. Реализации 1972 и 1974 годов заложили основу языка, в частности идею передачи сообщений и полиморфизм, хотя механизм наследования еще не появился.][82] Позднее полноправное гражданство получили классы; этим достигла завершения точка зрения, что все состоит из объектов. Smalltalk-80 был перенесен на многие компьютерные платформы.

В основу языка положены две простые идеи:

- все является объектами;

- объекты взаимодействуют, обмениваясь сообщениями.

[C# (произносится «си шарп») — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework и впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.][83]

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. [Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.][84]

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

C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены многие языки программирования.

В 1983 году по заказу Министерства Обороны США был создан язык Ada. Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который поддерживает предыдущую версию, добавляя в нее объекно-ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения на транспорте. Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис.

Непосредственными предшественниками Ada являются Pascal и его производные, включая Euclid, Lis, Mesa, Modula и Sue. Были использованы некоторые концепции ALGOL-68, Simula, CLU и Alphard.

[Разработчики Ada прежде всего беспокоились о:

- надежности и эксплуатационных качествах программ;

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

- эффективности.][85]

Visual Basic .NET (VB.NET) — это объектно-ориентированный язык программирования, его можно рассматривать как очередной виток эволюции Visual Basic (VB), реализованный на платформе Microsoft.
[В отличие от «классического» VB, VB.NET — полностью объектно-ориентированный язык программирования, поддерживающий полиморфизм, наследование и другие ключевые возможности ООП.][86] 
VB.NET не имеет обратной совместимости с VB6.
Важнейшими изменениями в VB.NET являются: 

  • поддержка концепций объектно-ориентированного программирования; 
    компиляция в байт-код (intermediate language, IL), исполняемый с помощью виртуальной машины common language runtime (CLR); 
  • использование всего набора объектных библиотек, входящих в .NET Framework, включающих мощные средства по работе с формами (Windows Forms), базами данных (ADO.NET), графикой (GDI+), средствами обеспечения безопасности, веб-страницами (ASP.NET) и т. п.; 
  • появление жёсткой проверки типов (Option Strict); 
  • поддержка свободной многопоточности; 
  • поддержка структурной обработки исключений (structurized exception handling, SEH). 

[С переходом на платформу NET, изменилась сама парадигма программирования (и это наиболее важное изменение).][87]

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

Заключение

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

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

  1. процедурно-ориентированные;
  2. проблемно-ориентированные;
  3. объектно-ориентированные.

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

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

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

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

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

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

1. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21. Дата обращения 04.04.2017.

2. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html. Дата обращения 12.04.2017.

3. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm. Дата обращения 12.04.2017.

4. Язык ассемблера [Электронный ресурс] https://ru.wikipedia.org/wiki. Дата обращения 18.04.2017.

5. http://yourlib.net/content/view/12692/150/[Электронный ресурс]. Дата обращения 09.05.2017.

6. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]. Дата обращения 09.05.2017.

7. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие. Дата обращения 10.06.2017.

8. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: Колосс, 2005.-272 с.

9. https://xreferat.com/33/3655-2-yazyki-programmirovaniya.html- Языки программирования. Дата обращения 10.06.2017.

10.http://knowledge.allbest.ru/programming/2c0b65625b2bc69a5d43b88521306d37. _0.html- Языки программирования высокого уровня. Дата обращения 11.06.2017.

11. http://works.doklad.ru/view/oaILO2CnjV0/all.html- Языки программирования, их классификация и развитие. Дата обращения 11.06.2017.

12. http://studopedia.ru/18_30657_klassifikatsiya-yazikov-programmirovaniya-visokogo-urovnya.html- Классификация языков программирования высокого уровня. Дата обращения 11.06.2017.

13. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. — 768 с.: ил.

14. Малышев Р.А. Локальные вычислительные сети: Учебное пособие/ РГАТА. – Рыбинск, 2005. – 83 с.

15. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000. —511 с.: ил.

16. Семакин И.А., Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. – 105с.

17. Симонович С.В.Информатика. Базовый курс/Симонович С.В. и др. — СПб.: издательство "Питер", 2000. — 640 с.: ил.

18. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 198 с.

19. Самоучитель Visual Basic 2005. Д. А. Шевякова, А. М. Степанов, Р. Г. Карпов., 250 с.

  1. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21

  2. Эволюция языков программирования [Электронный ресурс]http://langprog.far.ru/historylangprog.html

  3. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:22

  4. Эволюция языков программирования [Электронный ресурс]http://langprog.far.ru/historylangprog.html

  5. Эволюция языков программирования [Электронный ресурс]http://langprog.far.ru/historylangprog.html

  6. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:22

  7. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21

  8. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  9. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21

  10. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  11. http://yourlib.net/content/view/12692/150/[Электронный ресурс]

  12. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:28

  13. https://ru.wikipedia.org/wiki [Электронный ресурс]

  14. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21

  15. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  16. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  17. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:21

  18. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  19. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  20. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:25

  21. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  22. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  23. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  24. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  25. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:25

  26. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  27. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  28. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  29. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: Колосc, 2005. стр. 112.

  30. Самоучитель Visual Basic 2005. Д. А. Шевякова, А. М. Степанов, Р. Г. Карпов. стр 134.

  31. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  32. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  33. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  34. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  35. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  36. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс]

  37. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm

  38. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:25

  39. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  40. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие

  41. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:28

  42. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997.стр.545.

  43. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  44. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. стр. 455.

  45. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:28

  46. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319/page:28

  47. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  48. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. стр. 462

  49. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  50. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  51. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  52. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  53. Эволюция языков программирования [Электронный ресурс]http://langprog.far.ru/historylangprog.html

  54. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  55. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  56. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  57. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. стр. 480.

  58. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  59. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, стр 145.

  60. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  61. Макарова Н.В. Информатика /под ред. Проф. Н.В. Макаровой. — М.: Финансы и статистика, 1997. стр. 493/

  62. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  63. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  64. Уровни языков программирования [Электронный ресурс] http://bourabai.ru/alg/a13.htm/

  65. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  66. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  67. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html..

  68. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  69. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html..

  70. Островский В.А. Информатика: учеб. для вузов. М.: Высшая школа, 2000. —511 с.: ил.

  71. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  72. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  73. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  74. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  75. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  76. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  77. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  78. Эволюция языков программирования [Электронный ресурс]http://langprog.far.ru/historylangprog.html

  79. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005. стр.144.

  80. Языки программирования [Электронный ресурс] http://www.studfiles.ru/preview/5535319

  81. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005. стр.153.

  82. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html.

  83. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html.

  84. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  85. Эволюция языков программирования [Электронный ресурс] http://langprog.far.ru/historylangprog.html.

  86. http://life-prog.ru/view_shpargalki.php?id=2- Классификация языков программирования высокого уровня/[Электронный ресурс].

  87. http://www.5byte.ru/referat/0002.php- Языки программирования, их классификация и развитие