Файл: Современные языки программирования (Теоретические основы языков программирования).pdf
Добавлен: 28.03.2023
Просмотров: 150
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Теоретические основы языков программирования
1.2 История развития языков программирования
1.3 Современное состояние языков программирования
Глава 2. Практическое исследование языков программирования
2.1 Примеры программ на разных языках программирования
2.2 Сравнение программ, написанных на различных языках программирования
К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
Языки высокого уровня делятся на:
- процедурные (алгоритмические) (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов; для решения задачи процедурные языки требуют в той или иной форме явно записать процедуру ее решения;
- логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;
- объектно-ориентированные (ObjectPascal, С++,C#, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
Современный программист должен иметь хорошее представление об объектно-ориентированном программировании. Так как данная концепция является одной из самых востребованных и эффективных.
Для создания программ для мобильных устройств и программ, работающих на разных типах устройств, используются платформо-независимые языки. Самым известным представителем данного класса языков является Java. Независимость от операционной системы и вида устройства осуществляется за счет того, что программа выполняется на виртуальной машине Java.Такая виртуальная машина должна быть установлена на компьютере пользователя. Такая универсальность является несомненным плюсом, однако программы на Javaчасто работают значительно медленнее, чем на других языках.
Одним из самых популярных языков программирования в данный момент является С#. Язык позволяет быстро решать задачи разработки сложных приложений, веб-разработки, программ с мощной 3Dграфикой. При этом программы оказываются высокопроизводительными.
Одним из самых популярных современных языков программирования является JavaScript.Этот язык является скриптовым (или языком сценариев), то есть, как правило, используется для описания действий, которые необходимо выполнить системе или некоторым объектам, созданными сторонними средствами программирования или просто программными средствами. Популярность данного языка осуществляется его применением для веб-разработки. JavaScript позволяет создавать сценарии, которые обрабатываются прямо в браузере. На сегодняшний день большинство сайтов во Всемирной Паутине используют данный язык.
Pythonпредставляет собой интерпретируемый язык, синтаксис которого устроен так, чтобы создание программ требовало от программиста как можно меньше усилий. Код на данном языке выглядит компактно и понятно[2,4]. Язык появился еще в 1991 году, однако особую популярность получил в последние годы. Этот язык широко используется разработчиками компании Google.Его создатель Гвидо Ван Россум даже получает деньги от компании. Язык может быть использован в качестве языка для создания веб-приложений (как правило, для серверной части). Особой популярностью для создания веб-приложений на основе Pythonявляется фреймворк Django[3].
Наряду с Python одним из наиболее простых в освоении является язык Ruby. Язык ориентирован на разработку веб-приложений, является интерпретируемым языком с динамической типизацией. Наиболее известным фреймворком для веб-разработки на основе Ruby является RubyonRails.
PHP — это один из наиболее широко используемых языков для написания сценариев, выполняемых на сервере. Язык первоначально (в 1994 году) представлял набор скриптов для учета посетителей личной веб-страницы. В дальнейшем появлялись новые версии языка программирования, в которых происходило существенное расширение возможностей его использования программистом.
В третьей версии языка программированияPHPбыл заложен его современный облик, поддерживающий многие современные концепции, в частности поддерживает возможность расширять ядро с помощью дополнительных модулей.
В 1999 году вышел. PHP 4.0. Он имел улучшенную производительность сложных приложений, предлагались более безопасные способы ввода пользовательской информации
В 2004 году была выпущена пятая версия языка. В ней была существенно увеличена производительность интерпретатора. Объектно-ориентированная модель была полностью переработана и стала похожа на ООП модель, используемую в Java. В частности, появились конструкторы и деструкторы, разделение методов на открытые, закрытые и защищенные методы.
В 1986 году был разработан С++, который является одним из самых распространенных языков в мире. Язык является компилируемым статически типизируемым языком программирования общего назначения. Главным отличием языка С++ от его предка, языка С, является реализация ООП [6]. Кроме того, С++ поддерживает такие концепции как процедурное программирование и обобщенное программирования.
Язык имеет большую стандартную библиотеку, в которую включено большое количество функций и алгоритмов, позволяющих разрабатывать программы для самых различных сфер применения гораздо быстрее и проще. Кроме того, язык сочетает в себе свойства высокоуровневых и низкоуровневых языков программирования, что объясняет его популярность при написании операционных систем, драйверов устройств и другого системного ПО. Наряду с этим на данном языке программирования успешно разрабатываются компьютерные игры и высокопроизводительных программы, веб-серверы.
Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции.
Ruby — один из самых молодых языков программирования. Его создатель Юкихиро Мацумото (также известный под псевдонимом Matz), профессиональный японский программист.
Ruby— это мощный и динамический объектно-ориентированный язык с открытым исходниками. Главная особенность Ruby — эффективность разработки программ, простота и понятность его синтаксиса и структуры.
Язык Rubyобладает динамической типизацией. Его программы обрабатываются интерпретатором, который является свободно распространяемым кросс-платформенным программным продуктом. Это позволяет использовать данный язык на разных операционных системах, как начинающим программистам, так и компаниям, занимающимся разработкой сложных программных продуктов.
Наибольшее внимание в языке уделено частности обыденным задачам (обработка текстов, администрирование). Для этих целей язык является очень хорошим.
Очень известное и широко используемое применение языка для веб-разработки — это использование фреймворка Ruby On Rails, который позволяет создавать веб-приложения различной степени сложности. Характерными чертами данного фреймворка является:
- Используется механизм повторного использования, позволяющий пользователю не дублировать исходный код
- Используется соглашение о том, что скорее всего будет реализовано в приложении (то есть явная конфигурация спецификации приложения необходима только в нестандартных случаях).
Глава 2. Практическое исследование языков программирования
2.1 Примеры программ на разных языках программирования
В начале рассмотрим решение некоторых распространенных задач с помощью языков программирования Pascal и С++.
В качестве иллюстрации рассмотрим решение следующей задачи на языке C++: программа реализует вычисление квадрата большего из двух действительных чисел[6].
Листинг программы.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); //Русскийязыквконсоли
floatx,y;
cout<< "Программа вычисляет квадрат большего числа\nВведите два числа" <<endl;
cin>>x>>y;
if (x>=y){cout<<x*x;} else {cout<<y*y;}
return 0;
}
В данной задаче происходит выбор наибольшего числа с помощью условного оператора.
Далее, рассмотрим решение такой типичной задачи.
Вводится точка с координатами X,Y. Определить, принадлежит введенная точка фигуре или нет. Фигуры изображены на рисунке 3.
Рисунок 3. Условие задачи в графическом виде
Для решения задачи будем использовать язык Pascal.
varx,y,a:real;
begin
write('Введите координаты точки через пробел');
readln(x,y);
if (y>=8-8*x) and (y>=-2.5*x+5) and (y>=x-2) and (y<=-0.25*x+8) and (sqr(x-5.5)+sqr(y-2.5)>=sqr(2.5)) then
writeln ('Точка входит в область') else
writeln('Точка не входит в область');
end.
Результат.
Вводим 2 ; 3 Выводится: Точка входит в область
Вводим 5 ;2 Выводится: Точка не входит в область'
В начале продемонстрируем решение простой задачи с помощью цикла на языке С++. Пускай программа реализует вычисление первых n четных чисел.
Листинг программы:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian"); //Русскийязыквконсоли
cout<<"Введите n"<<endl;
int n;
cin>>n;
int s=0;
for (int i=0; i<n;i++)
{int k=2*i; s=s+k;}
cout<<s;
return 0;
}
Результат работы программы:
Если вводим 3, программа выдает 6 (то есть 0+2+4).
В данном примере используется цикл с параметром, так как пользователь вводит число четных чисел.
Одним из важных направлений использования структурного программирования является решение задач численными методами. Пусть, например, нам нужно решить сложное нелинейное уравнение [6].
на отрезке [1;3]
Один из самых известных методов решения данной задачи называется методом Ньютона.
Метод Ньютона (метод касательных) состоит в том, что приближенным значением корня считается точка пересечения касательной к кривой f (x) и оси 0X.
Рабочая формула метода
позволяет найти последовательность x0, x1, x2, …, xn, сходящуюся к точному значению корня ξ уравнения (1.1). Критерием окончания вычислительного процесса является выполнение условия:
|x n+1 - x n| < ε (2)
Была разработана программа на языке Pascal в среде разработки PascalABC.Net.
Листингпрограммы:
usescrt;
varx,a,b,e: real;
function f1(z: real): real; {Основнаяфункция}
begin
f1:= 3*sqr(ln(z))+6*ln(z)-5;
end;
function f2(z:real): real; {Производная от основной функции}
begin
f2:=6*(ln(z))/z+6/z;
end;
begin
Clrscr;
a:=1;b:=3;
e:=0.00001;
clrscr;
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x)/f2(x))>e do
begin
x:=x-f1(x)/f2(x);
end;
Writeln (' В интервале от ',a:0:0,' до ',b:0:0,' с погрешностью ',e:0:5);
Writeln ('x=',x:0:5,' f(x)=',f1(x):0:5);
end.
Программа выдает результаты, представленные на рисунке 4.
Рисунок 4. Результаты решения уравнения методом Ньютона
2.2 Сравнение программ, написанных на различных языках программирования
Далее, рассмотрим примеры создания различных программ в языках Pythonи Pascal.
Рассмотрим решение одной и той же задачи, вычисление значения функции
на этих языках программирования.
Это простая линейная программа. С помощью Python данная программа может быть представлена в следующем виде[3]:
import math
x=float(input("Введитечисло "))
print(“y =", math.sqrt(x)/math.cos(x))
Для сравнения запишем данный алгоритм на языке Pascal.
var a:real;
begin
write('Введитечисло ');
readln(a);
write('y = ',sqrt(a+5)/cos(a));
end.
Как видно из приведенного примера, код программы на языке Pythonсостоит из трех строк, а код на языке Pascalиз 5.
Таким образом, во многих случаях, код программы на Python содержит меньше строк, чем код на Pascal.
Линейные алгоритмы позволяют выполнять преобразование данных по заданным формулам, содержащих связанные параметры без проведения аналитических преобразований (упрощения формулы).
Рассмотрим решение следующей задачи на языке Pascal.
Пускай необходимо вычислить
при
Блок-cхема
Рисунок 5.Блок-схема линейной программы программы на Pascal