Файл: «Современные языки программирования»(Введение в языки программирования ).pdf
Добавлен: 01.05.2023
Просмотров: 185
Скачиваний: 3
1.3.3 Фундаментальная парадигма
Фундаментальная парадигма (functional paradigm) рассматривает процесс разработки программы как соединение «черных ящиков», каждый из которых получает входные данные и порождает выходные данные так, чтобы создать необходимую зависимость между ними.[9] Математики называют данные «ящики» функциями, из-за чего подход имеет название функциональный. Примитивы функционального языка программирования являются элементарными функциями, при помощи которых есть возможность построить более сложные функции, необходимые для решения определенной задачи. В таком случае, разработчик, придерживающийся функциональной парадигмы, создает ПО, совмещая элементарные функции в систему, суть которой порождать необходимый результат. Дословно, процесс программирования сводится к построению простых функций из более сложных.
1.3.4 Объектно-ориентированная парадигма
Объектно-ориентированная парадигма (object-oriented paradigm) и соответствующее ей объектно-ориентированное программирование (ООП) представляют собой другой подход к процессу разработки программного обеспечения.[10] Данные – это «объекты», а не как пассивные единицы в императивной парадигме. В императивной парадигме список рассматривается набором данных, Программа, которая пытается получить доступ к списку, обязана содержать алгоритм, выполняющий необходимые действия. В таком случае, список является пассивным, т.е. он обслуживается управляющей программой, а не сам себя. Но при объектно-ориентированном подходе список рассматривается как объект, который состоит из самого списка и программ для манипуляций. Таким образом, программе, которая пытается получить доступ к списку, не должна включать в себе алгоритмы для выполнения данных задач. Вместо этого она использует методы объекта. Т.е. объект имеет возможность попросить отсортировать себя, а не программа сортирует его, как это было императивной парадигме.
Преимущества объектно-ориентированного программирования заключаются в модульной структуре программы, которая является естественным следствием объектно-ориентированной философии.[11] Каждый объект является отдельной, строго определенной единицей. Объект можно использовать каждый раз, когда он потребуется. Объектно-ориентированная парадигма предоставляет среду для программиста ПО с помощью стандартных библиотек определений, из которых можно создать новое программное обеспечение компонентов.
В конце концов, стоит заметить, что методы объекта, являются небольшими императивными программными единицами. Таким образом, большое количество объектно-ориентированных языков программирования обладают свойствами императивных языков. К примеру, популярный объект-ориентированный язык C++ был создан с помощью добавления к императивному языку C объектно-ориентированных возможностей.[12] Об этих и других языках мы поговорим в следующем разделе, а также рассмотрим их значимость в современном мире программирования и программном обеспечении уже в следующей главе.
1.4 Краткий обзор популярных языков современного программирования
1.4.1 Язык программирования C
Язык С был изобретен и реализован в 1970-х годах Деннисом Ритчи. Этот язык появился в результате эволюции языка BCPL. BCPL разработан Мартином Ричардсом под влиянием другого языка В, автор которого Кен Томпсон.
Долгое время стандартом языка С была версия для UNIX системы. Впервые её описание было в книге Брайана Кернигана и Денниса Ритчи The С Programming Language в 1978 году. В 1983 году, летом был создан комитет Американского института национальных стандартов (ANSI), суть которого была разработать стандарт языка С. Работа комитета растянулась на шесть долгих лет.
После чего стандарт ANSI C был одобрен в декабре 1989 года и стал распространяться в начале 1990-го. Данный стандарт был помимо этого одобрен Организацией международных стандартов (ISO), получив название ANSI/ISO Standard С. В 1995 году одобрена Первая поправка, суть которой, добавление нескольких новых библиотечных функций. В 1989 году стандарт языка С вместе с Первой поправкой стали базовым документом для стандарта языка C++, в котором было выделено подмножество С. Версию языка С, определенную стандартом 1989 года, обычно называют С89.[13]
После 1989 года в центре внимания разработчиков стал язык C++. Формирование данного языка в течение 1990-х годов закончилось одобрением стандарта в конце 1998 года. Между тем работа над языком С продолжалась, не создавая чрезмерного шума. Из-за чего в 1999 году появился новый стандарт языка С под названием С99. Стандарт С99 сберег фактически все свойства стандарта С89, не изменив основных нюансов языка. Язык С стандарта С99, практически совпадает с языком, соответствующим стандарту С89. Комитет по разработке стандарта С99 сосредоточился на двух вопросах: включении в язык нескольких математических библиотек и развитии некоторых специфических и весьма сложных свойств, например, массивов переменной длины и квалификатора указателей restrict. В стандарт С99 вошли также некоторые свойства, позаимствованные из языка C++, например, однострочные комментарии. Поскольку разработка стандарта языка C++ завершилась до создания стандарта С99, ни одно из новшеств языка С не вошло в стандарт C++
C – язык сравнительно "низкого уровня". Ничего уничижительного в этом определении нет; это всего лишь значит, что язык C работает с теми же объектами, что и большинство компьютерных систем, а именно с символами, числами и адресами.[14]
C не является "строго типизированным" языком, но в процессе его развития контроль за типами был усилен. В соответствии стандарту необходимо явное объявление или явное указание преобразования, что уже является неотъемлемой частью хороших компиляторов. Компилятор имеет возможность предупреждать об ошибках в типах и автоматически не исполняет преобразования данных несовместимых типов.
Как и у любых языков, у C есть свои недостатки: некоторые операции имеют нелогичный приоритет; некоторые синтаксические конструкции можно было бы организовать и получше. И тем не менее язык C доказал свою высочайшую эффективность и выразительность для самого широкого круга приложений.[15]
#include <stdio.h>
int main(void)
{
printf("Hello, World!\n");
getchar();
return 0;
}
Листинг 1. Вывод строки "Hello, World!" на языке программирования C
1.4.2 Язык программирования C++
Изначально язык C++ представлял собой расширение языка С. Впервые он был разработан в 1979 году Бьярном Страуструпом (Bjame Stroustrup), сотрудником компании Bell Laboratories в г. Мюррей-Хилл (штат Нью-Джерси) Сначала язык назывался “C с классами”, однако в 1983 году его название было изменено на C++.[16]
Хотя язык С был одним из любимых и широко известным среди профессиональных языков программирования, его возможностей уже не хватало для решения основной проблемы: возрастающей сложности программ. Из года в год программы становились все более крупными и сложными. Никто не спорит, язык С – потрясающий язык программирования, хотя его способности, как не прискорбно, ограничены. Как только размер программы начинает колебаться в пределах от 25000 до 100000 строк кода, она становится настолько сложной, что возможности языка С не позволяют работать с ней, как с единым целым. Одной из целей языка C++ было преодоление этой преграды. Язык C++ предоставил программистам превосходно одолевать более крупные и сложные программы.
Многие усовершенствования, внесенные в язык С, касались лишь поддержки ООП (Краткое описание этой парадигмы программирования содержится в разделе «Парадигмы программирования»). Страуструп заявляет, что некоторые объектно-ориентированные свойства языка C++ унаследованы у Simula 67. Из-за чего выясняется, что язык C++ обладает достоинствами двух мощных методов программирования.
После рождения языка C++ его модификация проходила трижды, каждый раз приобретая все новые свойства. Первый пересмотр его основ состоялся в 1985 году, второй раз он подвергался ревизии в 1990 году. Несколько лет назад началась работа над созданием стандарта языка C++. Для этого была сформирована объединенная комиссия двух организаций по стандартизации: ANSI и ISO.[17] Первый черновой вариант стандарта был обнародован 25 января 1994 года. В этом документе комитет ANSI/ISO C++ пытался придерживаться идей, сформулированных Страуструпом, добавив к ним новые возможности. И всё же в целом стандарт лишь констатировал состояние языка C++, сложившееся в тот момент.
Далее после опубликования первого варианта стандарта произошло событие, которое оказало огромное влияние на развитие языка C++: Александр Степанов разработал стандартную библиотеку шаблонов STL (Standard Template Library). Данная библиотека представляет собой набор обобщенных процедур, которые можно применять для обработки данных. Библиотека STL – не только мощный и элегантный, но и очень крупный механизм. Из-за чего члены комитета единогласно проголосовали за включение библиотеки STL в стандарт языка C++. Это сильно расширило изначальные рамки языка C++, но кроме этого, приостановило процесс стандартизации.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
Листинг 2. Вывод строки "Hello, World!" на языке программирования C++
1.4.3 Язык программирования C#
C# – современный, объектно-ориентированный, типобезопасный язык программирования. C# входит в семейство языков C, из-за чего не составляет труда его освоить, имея опыт на C, C++ или Java. Он соответствует международному стандарту Европейской ассоциации производителей компьютеров (ECMA) – стандарт ECMA-334, а также стандарту ISO и Международной электротехнической комиссии (International Electrotechnical Commission, IEC) – стандарт ISO/IEC 23270. Компилятор Microsoft C# для .NET Framework согласуется с обоими этими стандартами.[18]
В арсенале C# имеется возможность обеспечения поддержки компонентно-ориентированного программирования. Структура современного программного обеспечения основывается на независимых модулях, содержащих свое описание. Компоненты являются частью модели программирования, которые основываются на методах, свойствах, а также событиях, имеющие атрибуты, обеспечивающие возможность самодокументироваться. C# имеет языковые конструкции, которые поддерживают эти концепции, что делает язык более естественным для создания и использования компонентов ПО.
using System;
namespace HelloWorld
{
class Hello
{
static void Main()
{
Console.WriteLine("Hello, World!");
Console.ReadKey();
}
}
}
Листинг 3. Вывод строки "Hello, World!" на языке программирования C#
1.4.4 Язык программирования Java
Причинами, которые являлись побудителями к созданию совершенно нового языка программирования, служили совершенствование искусства программирования и изменения в вычислительной среде. Java не является таким исключением из этого направления. Опираясь на богатое наследие С и С++, этот язык программирования расширен и дополнен средствами, отражающими текущее положение дел в программировании. Отвечая потребностям интерактивной среды, Java имеет возможность предоставлять средства, которые упрощают создание прикладных программ с распределенной архитектурой.
Язык Java был задуман в 1991 году сотрудниками компании Sun Microsystems Джеймсом Гослинrом, Патриком Нотоном, Крисом Уортом, Эдом Фрэнком и Майком Шериданом.[19] Его изначальное название – Oak, но в 1995 году, по решению маркетологов, его переименовали в Java. В первое время сами разработчики языка не ставили перед собой задач разработки интернет-приложений. Главной их целью было создание платформенно-независимого языка, при помощи которого можно было бы создавать встраиваемое программное обеспечение для разной бытовой аппаратуры с микропроцессорным управлением, таких как тостеров, микроволновых печей и пультов ДУ. Обычно, в устройствах подобного типа применялись микропроцессорные контроллеры различной архитектуры, а исполняемый код, был ориентирован на определенные архитектуры процессоров. Таким примером может служить язык С++.
Несмотря на то что программу, написанную на С++, можно выполнить на процессоре практически любого типа, сделать это можно, лишь скомпилировав ее в исполняемый код команд конкретного процессора. Создание компиляторов – длительный и трудоемкий процесс, поэтому в поисках оптимального решения Гослинr и другие члены рабочей группы остановились на межплатформенном языке, для которого компилятор генерировал бы код, способный выполняться на разных процессорах в различных вычислительных средах. В конце концов их усилия увенчались созданием языка, известного теперь как Java.
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Листинг 4. Вывод строки "Hello, World!" на языке программирования Java
1.4.5 Язык программирования Python