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

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

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

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

Добавлен: 30.03.2023

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

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

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

Достоинства:

  • Переносимость. Программы, написанные на языке Java, после однократной трансляции в байт-код могут быть исполнены на любой платформе, для которой реализована виртуальная Java-машина. Наиболее эффективно возможности реального компьютера может использовать только программа, написанная с использованием «родного» машинного кода.
  • Безопасность. Функционирование программы полностью определяется (и ограничивается) виртуальной Java-машиной. Отсутствуют указатели и другие механизмы для непосредственной работы с физической памятью и прочим аппаратным обеспечением компьютера. Дополнительные ограничения снижают возможность написания эффективно работающих Java-программ.
  • Надежность. В языке Java отсутствуют механизмы, потенциально приводящие к ошибкам: арифметика указателей, неявное преобразование типов с потерей точности и т.п. Присутствует строгий контроль типов, обязательный контроль исключительных ситуаций. Многие логические ошибки обнаруживаются на этапе компиляции. Наличие дополнительных проверок снижает эффективность выполнения Java-программ.

Недостатки языка:

  • Язык не полностью объектно-ориентирован: Язык не имеет таких свойств полностью объектно-ориентированного языка, как индивидуальные переменные, множественное наследование и.т.д.
  • Соответствие корпоративным требованиям: Язык довольно популярен в мире программ с открытым кодом и технически превосходит многие коммерческие аналоги. Однако ему не хватает некоторых важных, с точки зрения корпоративной среды-особенностей. Это означает, что если мы захотим использовать PHP в корпорации, то это либо вообще не удастся сделать, либо потребуется значительно больше дополнительных программных средств, чем при использовании Java или C++.

2.4 Python

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

Достоинства языка

  • Кросплатформенность. Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах.
  • Расширяемость языка. Это означает, что имеется возможность совершенствования языка всеми заинтересованными программистами. Интерпретатор написан на С и исходный код доступен для любых манипуляций.
  • Большое количество подключаемых к программе модулей, обеспечивающих различные дополнительные возможности. В качестве примера можно привести следующие модули:

Numerical Python - расширенные математические возможности, такие как манипуляции с целыми векторами и матрицами;

Tkinter - построение приложений с использованием графического пользовательского интерфейса (GUI) на основе широко распространенного на X-Windows Tk-интерфейса;

Недостатки языка.

  • Наверное единственным недостатком, является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью.

2.5 Swift

Swift — это скомпилированный язык программирования для приложений iOS, macOS, watchOS, tvOS и Linux.

Первой особенностью синтаксиса языка Swift является его принадлежность к группе C-подобных языков программирования. Разработчики, которые уже знакомы с C-подобными языками, найдут в Swift много знакомых конструкций. Блоки кода все также разделяются парой фигурных скобок, а циклы, условия и функции содержат знакомые нам ключевые слова if, else, for, return.[7]

Достоинства

  • Производительность. Как заявляет Apple, Swift в 2,5 раза быстрее Objective-C и в 8 раз быстрее, чем Python 2.7.
  • Лаконичный синтаксис. Если брать за критерий количество строк кода, которые нужно написать для решения задачи, то Swift идёт в первой десятке по минимализму.
  • Видимый результат. Для Swift есть специальный инструмент Playground — своего рода интерактивная песочница, где программист сразу видит результаты работы программы. Иногда это в несколько раз увеличивает скорость разработки и помогает быстро разобраться с проблемным участком кода.
  • Функционально совместимый. Благодаря интеграции с библиотекой исполнения программ Objective-C (Objective-C Runtime Library) можно писать программы на Swift, C, Objective-C, и C++ одновременно.

Недостатки

  • Ограниченный кадровый потенциал. Swift новичок среди языков, в связи с этим талантливых разработчиков пока не так много. Но этот недостаток легко превратить в достоинство тем, кто хочет стать Swift разработчиком. Потребность в них только увеличивается, а конкуренция все еще не большая.
  • Малое количество библиотек. В Swift все еще довольно мало встроенных функций, которые бы работали одинаково хорошо во всех версиях. Большинство библиотек и фреймворков разработаны для более ранних версий языка и совершенно бесполезны в новых.
  • Нестабильность. Многие разработчики жалуются на одну и ту же проблему. Из-за изменений, представленных в новой версии языка, Swift ведет себя очень нестабильно. Это значит, что если разработчик хочет перейти на новую версию языка — ему нужно будет переписать код. Правда, эта проблема была частично решена с помощью Swift Migration Tool в XCode, что сделало миграцию на 4-ю версию языка довольно простой задачей.

2.6 Object Pascal

Object Pascal является расширением языка Паскаль, который был разработан в Apple Computer. Он относится к относится к ветви объектно-ориентированным языка программирования.

Когда речь заходит об обсуждение сильных и слабых сторон Object Pascal, стоит говорить не столько о самом языке, сколько о Delphi – главном представителю «семейства», ввиду его востребованности и освоенности программистами. Итак, поверхностно взглянем на его характеристики:

Преимущества:

  • Понятный синтаксис;
  • Доступные IDE;
  • Минимальные затраты времени на освоение IDE и создание прикладных приложений.

Недостатки:

  • Малое количество библиотек по сравнению с С/С++/Object C;
  • Недостаточная гибкость из-за того, что язык создавался не с нуля, а по сути, эволюционировал от Pascal;
  • Слабая поддержка, как со стороны разработчиков IDE, так и самого языка;
  • Ограничение функциональности.

3 Сравнительный анализ языков программирования высокого уровня

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

Рисунок 1 - Диаграмма популярности языков программирования

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

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

Условные обозначения в таблицах.

+ Указанная возможность присутствует

− Указанная возможность отсутствует

+/− Возможность поддерживается не полностью

−/+ Возможность поддерживается очень ограниченно

? Нет данных

N/A Постановка вопроса не применима к языку

Таблица 1 - Возможность использования парадигм

Язык / Парадигма

Императивная

Объектно-ориентированная

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

Рефлексивная

Обобщённое программирование

Логическая

Декларативная

Распределенная

Active Oberon

+

+

Ada

+

+

+

+

C

+

−/+

+/−

+

+/−

C++

+

+

−/+

−/+

−/+

+/−

C#

+

+

+/−

−/+

+

−/+

−/+

D

+

+

+/−

−/+

+

−/+

+/−

Eiffel

+

+

+/−

?

+/−

?

+

Erlang

+

+

+

+

+

Prolog

?

?

+

+

+

F#

+

+

+

−/+

+

+

Go

+

+/−

+/−

+

Groovy

+

+

+

+

+

+

−/+

Java

+

+

−/+

−/+

+

+

JavaScript

+

+

+/−

+

+

+/−

Haskell

+

+

+

+/−

+

+

Common Lisp

+

+

+/−

+

+

+/−

+

+/−

Modula-3

+

+

+

+

−/+

Nemerle

+

+

+

−/+

+

+/−

+

Perl

+

+

+

+/−

+

−/+

PHP

+

+

+/−

+

+

+

Python

+

+

+

+

+

+

−/+

Ruby

+

+

+

+

+

+

−/+

Rust

+

−/+

+

−/+

+

+

Scala

+

+

+

−/+

+

?

+

?

Smalltalk

+

+

+

+

+

+/−

+/−

+/−

Tcl

+

+

+

+

?

VB.NET

+

+

+/−

−/+

+

+/−

Delphi

+

+

−/+

−/+

+

OCaml

+

+

+

+

+

PureBasic

+

−/+

+/−

?

−/+

?

+/−


Таблица 2 - Поддерживаемая трансляция

Open-source компилятор (интерпретатор)

Возможность компиляции

Bootstrapping

Многопоточная компиляция

Интерпретатор командной строки

Условная компиляция

Active Oberon

+

+

+

+

+

+

Ada

+

+

+

+

+/−

+/−

C

+

+

+

+

−/+

+

C++

+

+

+

+

+/−

+

C#

+

+

+

+

+

D

+

+

+

+

+/−

+

Eiffel

+

+

+

?

?

?

Erlang

+

−/+

+

+

+

+

F#

+

+

+

+

+

+

Go

+

+

+

+

+/−

Groovy

+

+

+

+

+

?

Java

+

+

+

+

−/+

JavaScript

+

+

+

?

+

−/+

Haskell

+

+

+

+

+

+

Common Lisp

+

+

+

+

+

+

Modula-3

+

+

+

Nemerle

+

+

+

+

+

Perl

+

+

?

?

+

+

PHP

+

+

N/A

?

+

+

Python

+

+

+

N/A

+

N/A

Ruby

+

+

+

N/A

+

N/A

Rust

+

+

+

+

+

Scala

+

+

+

+

?

Smalltalk

+

+

+

+

+

Tcl

+

N/A

N/A

+

N/A

VB.NET

+

+

?

+

+

+

Delphi

+

+

+

?

+/−

+

Ocaml

+

+

+

+

+

N/A

PureBasic

+

+

+

+


Таблица 3 - Возможности управления памятью

Создание объектов на стеке

Неуправляемые указатели

Ручное управление памятью

Сборка мусора

Active Oberon

+

+

+/−

+

Ada

+

+

+

−/+

C

+

+

+

C++

+

+

+

−/+

C#

+

+

+

+

D

+

+

+

+

Eiffel

−/+

+

Erlang

?

+

F#

+

+

Go

?

?

?

+

Groovy

+

Java

+

JavaScript

+

Haskell

+/−

+

Common Lisp

+/−

+

Modula-3

+

+

+

Nemerle

+

+

+

+

Perl

+

PHP

+

Python

+

Ruby

+

Rust

+

+

+

+/−

Scala

?

+

Smalltalk

?

+

+

+

Tcl

+

VB.NET

+

Delphi

−/+

+

+

OCaml

?

+

PureBasic

+

+

+