Файл: Обзор языков программирования высокого уровня (языки и парадигмы программирования).pdf

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

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

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

Добавлен: 24.04.2023

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

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

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

Рис.2. Пример программы с процедурой

Основные понятия процедурного программирования:

  • процедура;
  • функция.

Производные понятия:

  • вызов;
  • возврат;
  • аргументы;
  • перегрузка;
  • рекурсия.

Языки, поддерживающие данную парадигму:

Как основную: C, C++, Pascal, Object Pascal.

Как вспомогательную: C#, Java, Python, Ruby, JavaScript.[14]

1.5. Модульное программирование

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

Набор связанных процедур вместе с данными, которые они обрабатывают, называют модулем.[13]

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

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

Модуль – это отдельная именованная сущность программы, которая объединяет в себе другие программные единицы, близкие по функциональности.

Например, файл List.mod включающий в себя класс List и функции для работы с ним – модуль.

Папка Geometry, содержащая модули Shape, Rectangle и Triangle – тоже модуль, хоть и некоторые языки разделяют понятие модуля и пакета (в таких языках пакет – набор модулей и/или набор других пакетов).

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

Основные понятия модульного программирования:

  • модуль;
  • импортирование.

Порожденные понятия:

  • пакет;
  • инкапсуляция.

Языки, поддерживающие данную парадигму:

Как основную: Pascal, Haskell, Python.

Как вспомогательную: Java, C#.

Поддерживают частично: C, C++.

В некоторых языках для модулей введены отдельные абстракции, в других же для реализации модулей можно использовать заголовочные файлы (в C и C++), пространства имен, статические классы или динамически подключаемые библиотеки. [8,14]

1.6. Объектно-ориентированное программирование


В теории программирования объектно-ориентированное программирование определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию с наследованием свойств. Взаимодействие объектов в такой системе осуществляется путем передачи сообщений между объектами.[6]

В основу объектно-ориентированное программирование заложены следующие принципы:

Абстрагирование — это процесс выделения абстракций в предметной области задачи. Абстракция – совокупность существенных характеристик некоторого объекта, которые отличают его от других объектов и таким образом четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. [4]

Иерархичность есть ранжированная или упорядоченная система абстракций.

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

Реализация позднего связывания в языке программирования позволяет создавать переменные – указатели на объекты, принадлежащие разным классам (так называемые полиморфные объекты).

Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять несколько операций.

Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего программный объект и/или в пространстве, перемещаясь из одного адресного пространства, в котором он был задан в другое. [7]

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

Языки объектно-ориентированного программирования поддерживаются этой парадигмой с помощью классов, методов, объектов, передаваемые сообщений.[18]

Языки, поддерживающие парадигму объектно-ориентированного программирования:

Как основную: Smalltalk, Eiffel.

Гибридные языки: CLOS, Dylan, OCaml, Python, Ruby, Objective-C.

Как вспомогательную: Симула, C++, Visual Basic, Delphi, Модула, Модула-2, Java, C#, PHP.

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


2.1. Язык программирования С#

С# - объектно-ориентированный язык программирования. Разработан в 1998-2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java.

Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов, делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

C# является объектно-ориентированным языком, но поддерживает также и компонентно-ориентированное программирование. Разработка современных приложений все больше тяготеет к созданию программных компонентов в форме автономных и самоописательных пакетов, реализующих отдельные функциональные возможности. Важная особенность таких компонентов – это модель программирования на основе свойств, методов и событий. Каждый компонент имеет атрибуты, предоставляющие декларативные сведения о компоненте, а также встроенные элементы документации. C# предоставляет языковые конструкции, непосредственно поддерживающие такую концепцию работы. Благодаря этому C# отлично подходит для создания и применения программных компонентов [16].

Вот лишь несколько функций языка C#, обеспечивающих надежность и устойчивость приложений:

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

В C# существует единая система типов. Все типы C#, включая типы-примитивы, такие как int и double, наследуют от одного корневого типа object. Таким образом, все типы используют общий набор операций, и значения любого типа можно хранить, передавать и обрабатывать схожим образом. Кроме того, C# поддерживает пользовательские ссылочные типы и типы значений, позволяя как динамически выделять память для объектов, так и хранить упрощенные структуры в стеке.

Чтобы обеспечить совместимость программ и библиотек C# при дальнейшем развитии, при разработке C# много внимания было уделено управлению версиями. Многие языки программирования обходят вниманием этот вопрос, и в результате программы на этих языках ломаются чаще, чем хотелось бы, при выходе новых версий зависимых библиотек. Вопросы управления версиями существенно повлияли на такие аспекты разработки C#, как раздельные модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса.


Плюсы C#:

  • поддержка компанией Microsoft. В отличии от Java, которой не пошел на пользу переход в собственность Oracle, C# хорошо развивается благодаря усилиям Microsoft;
  • в последнее время много совершенствуется. Так как C# был создан позже, чем Java и другие языки, он требовал больших доработок. Также это касается популяризации и бесплатности - было обещано открыть исходный код, а инструменты (Visual Studio, Xamarin) стали бесплатными для частных лиц и небольших компаний;
  • много синтаксического сахара - конструкций, которые созданы для облегчения написания и понимания кода (особенно если это код другого программиста) и не играют роли при компиляции;
  • средний порог вхождения. Синтаксис похожий на C, С++ или Java облегчает переход для других программистов. Для новичков это также один из самых перспективных языков для изучения;
  • Xamarin. Благодаря покупке Xamarin на C# теперь можно писать под Android и iOS;
  • добавлено функциональное программирование (F#);
  • большое сообщество программистов;
  • много вакансий на должность C# программиста в любом регионе [21].

Минусы C#:

  • Данный язык ориентирован, в основном, только на .NET (на Windows платформу);
  • бесплатность только для небольших компании, студентов, учащихся и программистов-одиночек. Для больших команд разработчиков покупка лицензий обойдется недешево.

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

Python — это свободный интерпретируемый объектно-ориентированный расширяемый встраиваемый язык программирования очень высокого уровня.

– свободный означает, что все исходные тексты интерпретатора и библиотек доступны для любого использования;

– интерпретируемый, потому что использует «позднее связывание»;

– объектно-ориентированный, так как поддерживается классическая ОО модель, включая множественное наследование;

– расширяемый - имеет строго определенные API для создания модулей, типов и классов на C или C++;

– встраиваемый - имеет API для встраивания интерпретатора в другие программы;

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

Python универсальный язык программирования, который широко используют во всем мире для различных целей — базы данных и обработка текстов, встраивание интерпретатора в игры, программирование GUI и быстрое создание прототипов (RAD).


Также Python используется для программирования Web приложений: серверных (CGI), клиентских (роботы), Web-серверов и серверов приложений. Python обладает широкой стандартной библиотекой, и еще более широким набором модулей, написанных различными разработчиками. Python и приложения, написанные на нем, используют самые известные и крупные фирмы — IBM, Yahoo!, Google.com, Hewlett Packard, Infoseek, NASA, Red Hat, CBS MarketWatch, Microsoft [20].

К основным преимуществам языка программирования Python можно отнести:

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

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

Ruby - язык программирования, разработанный в Японии Юкихиро Мацумото. Ruby существует уже почти 20 лет и активно развивается, при поддержке сообщества программистов и его поклонников.

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

Ruby придерживается концепции языка Smalltalk, когда любые типы данных считаются объектами, а значит для них можно задавать методы и переменные объекта. В этом его выгодное отличие от таких языков, как, С++.

Также стоит отметить гибкость языка. Например, вы можете переопределить операцию сложения и использовать обозначения, которые более удобны для вас. Например, определить, что сложение чисел будет работать при вводе слова plus (1 plus 2), а не символа (1+2). То, есть не вы подстраиваетесь под язык, а, наоборот, он подстраивается под вас