Файл: Обзор языков программирования высокого уровня (Операторы перехода).pdf
Добавлен: 04.04.2023
Просмотров: 58
Скачиваний: 1
СОДЕРЖАНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1.1. Исторические этапы развития языков программирования
1.2. Классификация языков программирования
ГЛАВА 2. СОВРЕМЕННОЕ СОСТОЯНИЕ И ПЕРСПЕКТИВЫ РАЗВИТИЯ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
2.1. Возможности современных языков программирования
ГЛАВА 3. ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
ВВЕДЕНИЕ
Первые, достаточно примитивные языки программирования возникли сравнительно недавно. Бурное развитие и совершенствование компьютерной техники и технологий в конце XX – начале XXI века способствовало, в том числе, и развитию языков программирования. Сейчас их насчитывается тысячи. Знание основ алгоритмизации и программирования является неотъемлемой частью компьютерной образованности в современном обществе.
Язык программирования – это формальная знаковая система, предназначенная для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительно- го процесса и организации управления отдельными устройствами. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением. Алгоритмический язык – это формальный язык, используемый для записи, реализации и изучения алгоритмов. В отличие от большинства языков программирования, алгоритмический язык не привязан к архитектуре компьютера, не содержит деталей, связанных с устройством машины. Таким образом, всякий язык программирования является алгоритмическим языком, но не всякий алгоритмический язык пригоден для использования в качестве языка программирования.
Объектом исследования в курсовой работе являются современные возможности создания программ.
Предмет исследования – современные языки программирования.
Целью исследования в курсовой работе является углубленное изучение существующих языков программирования и перспектив их развития.
Для достижения поставленной цели сформулированы следующие задачи:
- изучить теоретические основы развития языков программирования;
- дать классификацию языков программирования;
- охарактеризовать возможности современных языков высокого уровня;
- рассмотреть перспективы развития языков высокого уровня.
Методологической основой исследования являются учебная и методическая литература по программированию, статьи в периодической печати и Интернет-ресурсы.
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
1.1. Исторические этапы развития языков программирования
Еще полвека назад трудно было представить, каких возможностей можно добиться при помощи совершенствования аппаратных средств, сред разработки пользовательских приложений и поддерживаемых этими средами языков программирования высокого уровня. Чтобы понять, как совершенствовать технологию решения прикладных задач с помощью современных вычислительных устройств необходимо не только знать современные потребности объективного мира, но и способы повышения функциональности языков программирования. Последний компонент является прекрасным объектом для изучения и исследования студентами, обучающимися по информационным направлениям подготовки.
История развития языков программирования высокого уровня довольно обширна и весьма разнообразна, ее начало принято относить к середине прошлого века – моменту создания первого языка программирования высокого уровня «Фортран» [5, с. 32]. Именно с появлением языков программирования высокого уровня компьютеры начали реализовывать весь свой потенциал. Языки программирования высокого уровня помогли сделать программы более понятными и читаемыми, позволили обрабатывать очень длинные запросы, ввод программного кода стал интуитивнее для пользователя.
C ростом потребностей в расчетах появились новые задачи для компьютеров, вследствие чего, языки программирования стали быстро модифицироваться. Программы стали сложнее, были попытки создать универсальный язык программирования, например такой, как ПЛ/1. В то время это оказало лишь обратное действие на пользователей прикладного программного обеспечения. Ввиду громоздкости управляющих конструкций языка и сложности для понимания концепции вычислительной модели, язык, не смотря на то, что изучался в вузах и использовался для инженерных расчетов, так и не получил широкого распространения. Вывод был очевиден: тяжело реализовать сложную конструкцию с простым интерфейсом, ориентированную «на все».
Кроме того, эволюционируя, языки программирования получали все больше математических функций: рекурсия, массивы, использование локальных переменных. В связи с этим были заложены основные языки программирования, базой которых мы пользуемся до сих пор, а именно: COBOLPascal, C. Параллельно развивались логические языки, такие как, Prolog (1972), но в силу своих функциональных особенностей они использовались редко и не для инженерно-технических расчетов.
Следующая веха развития программирования – появление процедур и функций в структурном программировании, что позволило объединить разнородные данные и сделать программы автономными и управляемыми. На этом этапе развития языков программирования было выявлено: когда программа достигает определенной длины, то она уже не может обрабатывать правильно сложные запросы. Примером языка, в котором проявился этот недостаток, является язык программирования высокого уровня «Simula - 67».
Развитие структурирования привело к появлению классовых структур, где программы разбиваются на классы – структуры данных, содержащие в себе переменные и функции, которые работают с этим переменными. Такой подход послужил к объектно-ориентированному программированию, которое содержало в себе такие концепты, как полиморфизм, инкапсуляция и наследование. Примерами могут служить языки Java, Oberon, C++ . Это и есть апогей развития языков программирования, данные языки относятся к прошлому столетию, но актуальность их не потеряна и в настоящее время. Эти языки можно совершенствовать и брать за основу их концепции, чтобы попробовать достичь каких-либо преимуществ во вновь создаваемых инструментах написания программного кода. Надо отметить, что первые версии языков с незначительной доработкой являются базовыми при начальном обучении технологии программирования бакалавров.
Языки создаются и эволюционируют постоянно. Их влияние нельзя недооценивать на обработку современных научно-технических расчетов, на моделирование сложных процессов и систем в различных прикладных областях экономической деятельности человечества. [5, с. 41].
1.2. Классификация языков программирования
Прежде всего, языки программирования нужно классифицировать по уровням. Разные авторы разбивают языки либо на три уровня (машинные, машинно-ориентированные и машинно-независимые языки), либо на два уровня (языки программирования низкого уровня, языки программирования высокого уровня). [13]
В случае деления языков программирования на три уровня, низшим уровнем будет являться машинный код – набор команд, выполняемых конкретным процессором и разработанных специально для него. Обычно является последовательностью шестнадцатеричных символов. Вывод строки «Hello, World!» для процессора архитектуры x86 выглядит так: BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21.
Средним уровнем будут являться машинно-ориентированные языки, то есть языки, призванные управлять непосредственно командами процессора, но более доступным для человеческого восприятия языком. Примером являются языки ассемблера. Язык ассемблера, по сути, представляет каждую команду машинного кода с помощью удобных для восприятия человеком символических команд – мнемокодов. Как правило, язык ассемблера использует особенности конкретного семейства процессоров.
Высшим же уровнем будут считаться машинно-независимые языки. Они разработаны для удобства восприятия, быстроты понимания и работы с ними. Характерная черта этих языков программирования – абстракция, то есть введение смысловых конструкций, кратко описывающих данные и операции над ними, описания которых в машинно-ориентированных языках очень длинны и сложны для понимания. Также они были призваны обеспечить платформенную независимость сути алгоритмов. С их появлением зависимость от платформы перекладывается на трансляторы, «переводящие» текст, написанный на языке высокого уровня, в элементарные машинные команды. Примерами языков программирования высокого уровня являются C++, C#, PHP, Perl, Java и многие другие [16].
В современной классификации языков программирования по уровням всё чаще используют деление на два уровня: языки высокого и низкого уровней. Языками низкого уровня считаются языки, близкие к машинному коду и ориентированные на конкретные команды процессора, то есть машинно-ориентированные языки, а языками высокого уровня в современной классификации считаются машинно-независимые языки, разработанные для удобства использования. Таким образом, на данный момент авторы чаще не учитывают машинный код в своих классификациях. Это может быть связано с тем, что в настоящее время машинный код может понадобиться специалистам узкого профиля, например, системного программирования, защиты информации или программирования устройств напрямую. Прикладному же программисту иметь представление о машинном коде может быть необходимо для понимания того, как его программа хранится и выполняется, и в некоторых случаях для отладки и оптимизации своих программ.
Следующая классификация, которую необходимо рассмотреть, - классификация языков программирования по поколениям. Общепринято делить языки на пять поколений, но разные авторы опять же по-своему разделяют поколения. Некоторые варианты классификации перекликаются с классификацией по уровням, некоторые указывают, что языков программирования пятого поколения пока не существует.
Подавляющее большинство авторов называет языками программирования первого поколения машинные коды, то есть языки низкого уровня, языками второго поколения – языки ассемблера, уже рассмотренные нами, и, соответственно, языками третьего поколения – языки высокого уровня. Эта классификация по эволюционному признаку вполне логична: понятно, что языки низкого уровня появлялись на заре программирования, а языки среднего и высокого уровней разрабатывались и улучшались в связи с растущими возможностями компьютерных технологий. А вот с классификацией языков четвёртого и пятого поколений ситуация не так проста. К языкам программирования четвёртого поколения чаще всего относят языки объектно-ориентированные, декларативные (непроцедурные) и визуальные. Но эти языки с уверенностью можно отнести и к языкам третьего поколения. Также очень часто сюда относят языки запросов, например, SQL, который, по своей сути, вовсе не является языком программирования. Вообще, часто можно прочитать о том, что языки программирования четвёртого поколения – это языки, встроенные в определённую программную оболочку и используемые для узкоспециализированных задач, например, для создания баз данных и управления ими (встроенные языки систем управления базами данных) [14].
Таким образом, языки программирования четвёртого поколения – логичное развитие языков третьего поколения, упрощающее работу программистов ввиду того, что в основе своей эти языки встроены в собственную программную оболочку с функциями, помогающими разработчикам. Также к языкам четвёртого поколения нужно отнести языки параллельного программирования, ориентированные на создание программных средств многопроцессорной архитектуры.
Языки пятого поколения, теоретически, должны ещё больше упростить и ускорить работу программистов: целью этих языков является переложить значительную часть работы с человека на компьютер. Чаще всего сюда относят языки экспертных систем, баз знаний. В настоящее время, действительно, нет решений, которые могут выдавать полноценный продукт, получая при этом лишь задачу. Некоторые авторы говорят о системе MathCAD, она действительна заметно облегчает работу пользователей, беря на себя огромную долю вычислительной работы. Но всё же, на данный момент нет чёткого определения, по каким критериям определить языки пятого поколения. Одно ясно: с их использованием компьютер должен будет решить поставленную задачу без необходимости пользователю вручную реализовывать алгоритм.