Файл: Классификация языков программирования (Сущность и классификация языков программирования).pdf

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

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

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

Добавлен: 30.03.2023

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

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

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

7) JavaScript

Хотя JavaScript похож на Java, но все же является отдельным языком. Чаще всего используется в качестве встраиваемого языка: приложения получают доступ к веб-страницам с его помощью. Он более легок в применении и дается даже тем, кто мало знаком с программированием. Доля его использования ежегодно растет[40].

8) SQL

Этот язык программирования является системой, с помощью которой можно удобно управлять базами данных. Первые разработки были начаты еще в 1970-х годов, но первый вариант SQL был представлен в 1986 году. В современном мире SQL довольно популярен в качестве удобного языка для улучшения, управления и создания баз данных.

9) Go (Golang)

В 2007 году компания Google занялась разработкой собственного языка программирования, с помощью которого бы можно было решать реальные проблемы. Созданием языка занимались Роб Пайк и Кен Томпсон, которые уже в 2009 году представили Go. Для компании Google он является заменой популярных языков Си и Си ++. Он не стал прорывом, но зато используется для создания серьезных проектов[41].

10) Swift

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

11) Pascal

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

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


 

2. Критерии выбора среды и языка разработки программ


2.1. Критерии выбора среды программирования

Средой программирования называ­ют программный комплекс, который включает специализированный тексто­вый редактор, встроенные компилятор, компоновщик, отладчик, справочную систему и другие программы, использование которых упрощает процесс на­писания и отладки программ[43].

Рисунок 4 - Компоненты среды программирования[44]

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

1) Редактор – это средство для создания и изменения исходных файлов, которые содержат написанную на языке программирования программу.

Условно редакторы делятся на два типа.

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

Примеры таких редакторов:

  • Emacs (один из самых мощных по возможностям многоцелевой, свободный редактор);
  • jEdit (свободный редактор на Java);
  • Kate (мощный расширяемый свободный текстовый редактор с подсветкой синтаксиса для массы языков программирования и разметки);
  • Notepad (входит в состав Microsoft Windows);
  • Vim (один из самых мощных по возможностям редактор для программистов);
  • EditPlus (текстовый редактор для Windows, предназначенный для программирования и веб-разработки) и др[46].

Второй тип редакторов имеет расширенные функции форматирования текста, внедрения в него графики и формул, таблиц и объектов. Такие редакторы часто называют текстовыми процессорами и предназначены они для создания текстовых документов. К таким текстовым процессорам можно отнести Microsoft Word, WordPad и др.

2) Компилятор – транслирует символы из исходного файла в объектный модуль, который содержит команды в машинном коде для конкретного компьютера.

3) Компоновщик или редактор связей – собирает объектные файлы отдельных компонентов программы и разрешает внешние ссылки от одного компонента к другому, формируя исполняемый файл[47].

4) Загрузчик – копирует исполняемый файл с диска в память и инициализирует компьютер перед выполнением программы.

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


6) Средства тестирования – автоматизирует процесс тестирования программ, создавая и выполняя тесты и анализируя результаты тестирования.

7) Интерпретатор – выполняет исходный код программы в отличие от компилятора, переводящего исходный файл в объектный.

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

Наиболее часто используемыми являются визуальные среды Delphi, C++ Builder фирмы Borland (Inprise Corporation), Visual C++, Visual Basic фирмы Microsoft, Visual Ada фирмы IBM и др[48].

Между основными визуальными средами этих фирм Delphi, C++ Builder и Visual C++ имеется существенное различие: визуальные среды фирмы Microsoft обеспечивают более низкий уровень программирования «под Windows». Это является их достоинством и недостатком. Достоинством - так как уменьшается вероятность возникновения «нестандартной» ситуации, т. е. ситуации, не предусмотренной разработчиками библиотеки компо­нентов, а недостатком - так как это существенно загружает программиста «рутинной» работой, от которой избавлен программист, работающий с Delphi или C++ Builder. Много нареканий вызывает также интерфейс Visual C++, также ориентированный на «низкоуровневое» программирование[49].

Основными критериями выбора среды программирования являются:

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

Рисунок 5 - Критерии выбора среды программирования[51]

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

2.2. Критерии выбора языка программирования


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

Рисунок 6 - Критерии выбора языка программирования[53]

Некоторые из критериев это:

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

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

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

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

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

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

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


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

Руководители отрасли задали интересный вопрос: какой язык является хорошим для автоматизации моей отрасли? Этот вопрос исходит от базовой необходимости стандартизации, таким образом, компаниям приходится тратить меньше ресурсов и финансовых средств для поддержания программного обеспечения в течение определенного периода времени[57].

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

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

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

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

Многие из этих требований, предъявляемых к хорошему языку , противоречивы. Если мы хотим развивать хороший язык, который имеет много абстракций высокого уровня, процесс перевода будет генерировать много избыточных инструкций низкого уровня из-за обобщенных механизмов, используемых в переводчиках. Точно так же, если мы делаем язык ближе к языкам сборки, тогда портативность и, следовательно, обслуживание программного обеспечения страдает, так как языки сборки различаются для разных архитектур[59].

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