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

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

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

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

Добавлен: 27.04.2023

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

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

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

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

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

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

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

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

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


    1. Низкоуровневые и высокоуровневые языки.

Машинный код и языки ассемблера принято относить к языкам низкого уровня, так как программирование на них производится либо непосредственно в машинных кодах используемого реального или виртуального процессора, либо близко к этому [4].

Языки программирования, имеющие достаточный уровень абстракции - оперируют сложными структурами данных и способные выполнять над ними комплексные операции (что в машинном коде повлекло бы длинные и сложные цепочки кода), относят к языкам высокого уровня. Примеры таких языков - C, Pascal, Python, Java и т.д. [3].

    1. Трансляторы: компиляторы, интерпретаторы и гибриды.

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

Программа для перевода кода с языка программирования в машинный код называется транслятором. На данный момент выделяется три типа трансляторов: компиляторы, интерпретаторы и гибриды.

  1. Компиляторы один раз производят перевод всего кода в машинный код, результатом чего служит исполняемый модуль (например, EXE-файл для ОС Windows).
  2. Интерпретаторы производят анализ и сразу выполняют программу покомандно, по мере поступления ее исходного кода на вход интерпретатора [1].

Схематично сравнительная работа компилятора и интерпретатора представлена на рис.3.

Рисунок 3. Схема работы компилятора и интерпретатора.

Рассмотрим достоинства и недостатки обоих вариантов в табл. 1.

Таблица 1. Плюсы и минусы работы компилятора и интерпретатора.

Характеристика

Компилятор

Интерпретатор

1

Быстродействие

(+) обеспечивает максимальную производительность

(-) дополнительный слой замедляет выполнение программы и может требовать больше ресурсов

2

Переносимость

(-) исполняемый файл привязан к платформе компиляции

(+) программа может быть легко перенесена на другую платформу, для которой меняется интерпретатор

  1. Гибриды стараются совместить плюсы компиляторов и интерпретаторов. Самыми известными примерами являются язык Java и платформа .NET Framework. [1].

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


    1. Типизация.

Языки высокого уровня производят работу не с битами и байтами, а с наиболее абстрактными структурами данных - типами, потому принято считать их типизированными [4].

Существует, в свою очередь, несколько видов типизации [3]:

  1. Явная / неявная

- явная – языки, при работе с которыми тип новых переменных, функций и их аргументов нужно задавать явно, например, это языки C++, Pascal, C#;

- неявная – языки перекладывают задачу типизации на компилятор / интерпретатор, примерами можно назвать PHP, Python, JavaScript [2].

2) Статическая / динамическая

- статическая – конечные типы переменных и функций устанавливаются на этапе компиляции, примеры таких языков – C, Java, C#;

- динамическая – все типы определяются в процессе выполнения программы, примерами таких языков являются Python, JavaScript.

3) Сильная / слабая

- сильная (или строгая) – не дает возможности смешивания в выражениях разных типов и не выполняет автоматические неявные преобразования, примеры таких языков: Java, Python;

- слабая (или нестрогая) – большое количество неявных преобразований производится автоматически, даже в случае если может произойти потеря точности или преобразование неоднозначно, это такие языки, как C, JavaScript, VisualBasic, PHP.

Кроме того, различные виды типизации могут пересекаться, например, язык С имеет явную, статическую, слабую типизацию. Язык Python - неявную, динамическую, сильную [3].

    1. Парадигмы программирования.

За весь период развития языки программирования разрабатывались под влиянием идей, определяющих возможности языка и стиль создания программ. Главную идею какого-либо сложного понятия принято называть парадигмой программирования [4].

Существует четыре парадигмы программирования:

  • Императивная, или процедурная
  • Функциональная
  • Логическая
  • Объектно-ориентированная.

Язык программирования способен поддерживать как одну, так и несколько парадигм, и называться может, соответственно, императивный, логический и т.д. [2].

  1. Императивная, или процедурная, является наиболее распространенной парадигмой.

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

Выполнение команды при этом состоит в последовательном выполнении заданных команд.


  1. Функциональная.

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

Выполнение функциональной команды состоит в последовательном вычислении значений функциональных вызовов.

  1. Логическая.

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

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

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

Объект включает в себя определенные данные (состояние, свойства объекта) и операции над ними (методы), характеризующие поведение объекта. Классы представляют шаблоны объектов со схожим поведением и структурой. Как правило, описание классов представляет собой иерархическую структуру [4].

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

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

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

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

Развитие индустрии информационных технологий непрерывно набирает обороты, разрабатывая все больше актуальных технологий, охватывающих все отрасли веб-строительства [3].


Рассмотрим современные и наиболее распространенные языки программирования и подходящий для них хостинг.

Например, несколько лет назад популярным был язык Perl, в настоящее время его опередил PHP. Также разработчиками удачно применяются актуальные по сей день Ruby, Java, Python. Для более успешной работоспособности данных технологий используется подходящий хостинг, способный поддерживать существующие языки. Однако не все хостинг-провайдеры имеют возможность предоставить услуги размещения сайтов для определенных технологий [5].

Серверы баз данных тоже не имеют единого программного решения. Так, к примеру, помимо известного MySQL, могут применяться и иные базы данных – PostgreSQL, Firebird, SQLite [1].

    1. PHP.

Рассмотрим известный всем язык PHP, отлично подходящий для создания веб-приложений работы с данными. Также он подходит для разработки систем управления контентом, например, WordPress. Язык состоит из множества функций, и с выходом каждой новой версии данные функции расширяются, на данный момент уже доступна версия PHP-7. При помощи данной технологии разрабатываются и небольшие, и огромные проекты в Сети, создаются скрипты для сайтов – чаты, тесты, формы обратной связи, гостевые книги и др.

Достаточно широкое применение данного языка обусловило его популярность среди веб-разработчиков. Наиболее популярной в сфере хостинг-технологий считается связка с хостингом MySQL [6], особенностями которой можно назвать следующие:

  • База данных MySQL предоставляет все технологии и методы управления базами, где хранится информация. Главными преимуществами MySQL являются удобство использования и систематическое хранение данных, что значительно упрощает поиск.
  • Возможность выбора версии языка. Многие хостинг-провайдеры поддерживают как старые, так и новые версии PHP.
  • Такой хостинг станет отличным решением сложных коммерческих сайтов, таких как интернет-магазины, учитывая, что стоимость его будет достаточно приемлемой [2].
  • Существует тенденция к применению PHP-фреймворков, упрощающих создание веб-приложений – Zend Framework, CakePHP, Symphony. Если они установлены в хостинге, это будет значительным плюсом.
  • Все же идеальной альтернативы на настоящий момент в такой связке нет, и, несмотря на то, что провайдеры предлагают и иные варианты, как PostgreSQL, SQLite и т.д., функционирующие по схожему принципу, они ограничивают клиента в использовании определенных функций, что оказывает влияние на работу сайтов [4].
    1. Perl.