Файл: Классификация языков программирования (Сущность и классификация языков программирования).pdf
Добавлен: 30.03.2023
Просмотров: 382
Скачиваний: 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].
Если программа тесно связана с инструкциями на уровне сборки, то изменять архитектуру порта каждый раз будет сложно. Технологии продолжают меняться все более быстрыми темпами, что требует адаптации программных решений с минимальной задержкой и минимальным количеством инвестиций. Таким образом, новые языки требуют ухода от низких языковых конструкций ради портативности, модифицируемости и сопровождения программного обеспечения.