Файл: Классификация языков программирования высокого уровня.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 36

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

В настоящий момент наиболее активно использؚуются и развиваются следؚующие среды программирования [3, с. 28]:

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

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

в) Visual Basic (~ Basic);

г) Visual Fortran (~ Fortran);

д) Prolog++ (~ Prolog).

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

2. Теоретические аспекты использования процедур и функций в языке Паскаль

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

Составляя программу, в особенности достаточно большую, даже не задумываясь, автор разбивает ее на отдельные блоки, выполняющие ту или иную функцию. Соединяя их (компонуя), в конечном итоге, добиваются решения поставленной задачи. Такие блоки программы не обязательно носят завершенный вид. Они называются ⎯ процедурами [10, с.43]. В отличие от процедур, функции имеют завершенный вид [7, с.128].

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

Форма записи процедуры: PROCEDURE имя ;

После объявления процедуры идет, как и в программе, объявление переменных процедуры и между Begin ⎯ End ; записывается ее программа (порядок выполнения операторов). Программы, с применением процедур, имеет следующую структуру:

Program имя программы ;

Label .... ; Определение меток, констант,

Const ..... ; массивов и других переменных

: программы

Var ..... ;

Procedure имя ; Определение процедур и функций

Var ...... ; пользователя

Begin

:

End ;

Procedure имя ;

Var ...... ;


Begin

:

End ;

:

Procedure имя ;

Var ...... ;

Begin

:

:

End ;

BEGIN Основная программа, в которой

: процедуры и функции могут вызы-

: ваться сколь угодно раз

:

END.

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

Подпрограмма-функция предназначена для вычисления какого-либо параметра [10, с. 236]. Результат ее работы возвращается в виде значения этой функции и может использоваться в выражениях. У этой подпрограммы два основных отличия от процедуры.

Первое отличие – в заголовке [7, с. 147]: через двоеточие указывается тип возвращаемого параметра. Второе отличие заключается в том, что в теле функции хотя бы один раз имени функции должно быть присвоено значение. Для вызова функции следует в выражении, где используется ее значение, указать имя функции.

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

uses crt;var a,b:byte;function max(a,b:byte):byte; {a,b – формальные параметры функции}begin {начало функции} if a>b then max:=a else max:=b;

end; {конец функции}

{ основная программа}

begin

clrscr;

readln(a,b);

write(max(a,b)); {фактические параметры a,b передаются функции max}

readkey

end.

С применением процедур и функций возникает вопрос использования переменных. Понятие места работы этих переменных можно пояснить на простом примере [10, с,58]. Имеется некоторый внутригородской транспорт и междугородний. Естественно, что внутригородской не работает на маршрутах между городами. Т.е., его применение ограничено (локализовано). Это является прямой аналогией работы переменной внутри процедуры (работа транспорта внутри города) ⎯ такие переменные называются локальными переменными. Но, междугородний транспорт может перемещаться как между городами, так и внутри любого города переменная работает не только между процедурами, но и внутри каждой из них. Подобные переменные называются ⎯ глобальными переменными [10, с.69].

Если программа содержит много процедур и переменных, то может возникнуть ситуация, когда глобальные и локальные идентификаторы имеют одинаковые имена. Для компилятора это не имеет никакого значения. Дело в том, что при такой ситуации [18, с.20], с входом в процедуру, запоминается значение глобальной переменной, а при выходе из нее ⎯ возвращается первоначальное значение. Из этого следует, что Паскаль дает возможность нескольким программистам писать одну программу, не заботясь об опасности перепутать идентификаторы [7,с. 19].


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

USES имя модуля (модулей - через запятые) ;

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

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

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

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

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

Ниже приведена простая программа использования модулей:

Program Pascal ;

Uses Crt, Graph ;

Var D,M : Integer ;

Key : Char ;

BEGIN

D := Detect ;

InitGraph(D, M, '') ;

SetTextStyle(0,0,10) ;

SetColor(4) ;

OutTextXY(80,150,'Turbo') ;

OutTextXY(60,250,'Pascal') ;

Key:=ReadKey;

CloseGraph;

END.

Результатом работы этой программы является ⎯ написание по центру экрана дисплея, на темном фоне, красными буквами: Turbo Pascal.

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


Рассмотренные нами теоретические сведения будут применены для реализации практической части курсовой работы.

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

Тезисно сформулируем основные проблемы и перспективы языков программирования:

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

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

Некоторые выводы о распространении новых языков можно сделать на основе языка Java [12, с.147].

  • Продвижение языка Java происходило за счет мощной рекламы, а не из-за достоинств самого языка.
  • На широкое распространение в наше время могут претендовать только те языки, которые поддержаны крупными фирмами, а не те, которые являются лучшими.
  • Время распространения и становления языка программирования (для получивших известность языков) составляет в среднем от 3 до 10 лет. В случае Java язык получил широкое распространение за один год.

В третьих, в условиях застоя в развитии языков программирования есть смысл тщательно проанализировать все полезные накопленные за это время идеи. Существуют попытки создания единой семантики современных языков программирования, в каком-то смысле опять приводящие к идее "универсального" языка [5, с.127].

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

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

Общий, несколько обнадеживающий итог звучит так. Ряд известных фирм и компаний (например, Microsoft, Sun Microsystems и т. п.) постепенно приходит к идеям, заложенным несколько десятков лет назад командой под руководством Никлауса Вирта.

Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков возможно увядают, вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.


Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.

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

Пять языков программирования, о которых пойдёт речь, весьма новы (не исключено, что о каком-то вы услышите впервые), и они явно имеют отличные шансы пробиться во второй эшелон в ближайшие 2-3 года. Может быть, когда-нибудь один из этих языков сможет потеснить и языки первого эшелона.

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

Elm набирает популярность в сообществе JavaScript, в первую очередь среди тех, кто предпочитает функциональное программирование, которое находится на подъеме. Как и TypeScript или Dart, Elm транспилируется в JavaScript.

Rust является языком системного программирования, предназначенным в основном для ниш, где применяют С и С++. Поэтому удивительно видеть, что популярность этого языка быстрее растёт среди веб-разработчиков. Этот факт становится более осмысленным, когда вы выясняете, что язык был создан в Mozilla, которая хотела дать лучший вариант веб-разработчикам, которые вынуждены писать низкоуровневый код, и при этом более производительный, чем PHP, Ruby, Python или JavaScript. Rust был также признан лучшим в номинации ”сама любимая технология” по результатам опроса разработчиков, проведённом StackOverflow в 2016 году (это означает, что большинство пользователей хотели бы продолжать использовать этот язык).

Kotlin существует уже около пяти лет, но только в этом году он достиг production-ready версии 1.0. Несмотря на то, что он ещё не достиг популярности Scala, Groovy или Clojure — три самых популярных и зрелых (не считая Java) языков под JVM — он выделяется из множества других JVM-языков и, кажется, готов занять свое место среди лидеров этой группы. Язык возник в JetBrains (создатель популярной IntelliJ IDEA IDE). Так что он продуман с упором на производительность труда разработчиков.