Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ. ( Процедурные языки программирования ).pdf
Добавлен: 31.03.2023
Просмотров: 95
Скачиваний: 2
СОДЕРЖАНИЕ
1. Классификация языков программирования
2. Процедурные языки программирования
3. Машинно-зависимые языки программирования
4. Машинно-независимые языки программирования
5. Непроцедурные языки программирования
6. Объектно-ориентированные языки программирования
7. Декларативные языки программирования
8. Переменные и типы данных в языках программирования
9. Статическая типизация. Язык С#
10. Динамическая типизация в языках программирования и структуры данных
11. Области видимости переменных
12. Критерии выбора языка и среды разработки программного обеспечения
- Объем занимаемой оперативной памяти.
Данное требование появляется, когда программа разрабатывается для встраиваемых систем, мобильных платформ, микроконтроллеров и так далее. В данных случаях, чем меньше памяти расходует программа на данном языке – тем лучше. К таким языкам, опять же, относятся ассемблер, С/С++, Objective-C и другие. Список языков подобен списку пункта 1, так как чем меньше функциональных блоков в схеме исполнения, тем меньше занимается и памяти компьютера. Если данное требование некритично, то можно использовать «истинно высокоуровневые языки».
- Скорость разработки программы.
Данное требование возникает тогда, когда начальник говорит «программа нужна не позже, чем вчера!» или еще какая срочность. Тогда выбор падает на высокоуровневые языки с максимально человеколюбивым синтаксисом. Это, например, Java, Flash и подобные. На данных языках время разработки может существенно сокращаться из-за обилия сторонних библиотек, максимально «очеловеченного» синтаксиса, и подобных вещей. Скорость выполнения программ, написанных на данных языках страдает, причем порой весьма ощутимо. Схема выполнения на примере Java:
Программа в виде байт-кода -> виртуальная машина-анализатор -> системные библиотеки -> драйвера -> железо.
Самым медленно работающим блоком в данной схеме является анализатор – он должен байт-код программы транслировать «на лету» в машинный код, при этом потратив много времени на точное определение инструкции. Поэтому быстрая разработка зачастую означает медленное выполнение.
- Ориентированность на компьютер или человека
С кем будет работать программа в первую очередь? С человеком, или с компьютером? В пером случае программа должна обладать мощной графической частью, отвечающей требованиям дизайна и юзабилити. Разработка графической части зачастую требует достаточно много времени, т.к. отличается немалой сложностью. Здесь сложность возникает в том, что вывод графики – это немало математики, а значит присутствует требовательность к скорости исполнения, а из-за сложности разработки присутствует необходимость в высокоуровневом языке. В данном случае, на мой взгляд, очень хорошо подходит С++/C# с их одновременной и высокоуровневостью, и скоростью выполнения программ на них. Однако, если ГИП не очень сложный, но красивый, возможно использование Java и Flash, на которых создание красивых интерфейс гораздо проще, нежели на С++ и, тем более, С. Если программа ориентирована в первую очередь на «скрытую работу» с минимумом взаимодействия с пользователем, тогда выбор должен ложиться в сторону быстрых языков (ASM, C)
- Кроссплатформенность.
Кроссплатформенность – возможность работы программы на различных платформах, в различных ОС с минимальными изменениями. В этой сфере можно выделить такие языки: Java, C#,Flash,C++ с различными библиотеками и другие, менее используемые, языки.
Java создавался с тем условием, что программы на данном языке должны работать на любой платформе, где есть JVM – Java Virtual Machine. Программы на Java вообще не требуют никаких изменений – после компиляции получается .jar файл, который будет работать и на Windows, и на Mac OS, и на Linux и еще немало где. Аналогичная ситуация и с Flash, только список платформ гораздо менее обширный. С С++ дело обстоит труднее. На чистом С++ написать кроссплатформенную программу довольно трудно, у кода возникает обширная избыточность, теряется достоинство в скорости выполнения. Облегчают задачу кроссплатформенные библиотеки, например, Qt, которые позволяют добиться принципа «один код на все платформы», однако на каждую платформу нужно программу собирать отдельно (при этом разными компиляторами).
В этот раздел так же можно включить интерпретируемые, скриптовые языки – для их работы нужно наличие интерпретатора языка в системе. Данные языки очень удобны в плане разработки, но достаточно медлительны. Схема их работы напоминает схему работы Java/Flash, только анализатор стал еще медленнее – полумашинный байт код анализировать «на лету» гораздо проще, чем человеческий код. Так же, это влечет к большему потреблению памяти.
- Скорость внесения изменений, скорость тестирования
Проект стремительно развивается, в него постоянно вносятся изменения, порой немало? Тогда выбор должен падать на высокоуровневые языки, где любой функциональный блок можно быстро переписать. Для подтверждения – я думаю, гораздо проще дебажить тот же С++, чем ассемблер. А еще проще Java. Но тут очень много тонкостей, которые таятся даже не сколько в языке, сколько в разработчике с его стилем программирования и компиляторах. Тем не менее, язык вносит свою долю в это дело, так или иначе упрощая/осложняя работу программиста.
Заключение
Языки программирования значительно выросли с момента своего зарождения и претерпели огромное количество изменений в процессе своего существования, разделившись на обширные группы и классы, которым свойственны определенные характеристики и возможности.
В ходе проделанной работы была рассмотрена модель классификации языков программирования по различным критериям. Выснилось, что в своём большинстве языки программирования можно разделить на:
- процедурные;
- непроцедурные.
Среди данных двух категорий языки также разбиваются на несколько крупных классов:
- машинно-зависимые;
- машинно-независисмые;
- декларативные;
- объектно-ориентированные.
Были рассмотрены некоторые представители данных языков, в частности:
- C#;
- Java;
- Assembler;
- Fortran;
- C;
- JavaScript;
- C++.
Помимо этого, большое внимание было уделено представлению данных в некторых языках программирования: типах данных и переменных. Освещение данного вопроса также является крайне важным при рассмотрении классификации языков программирования. Стоит отметить, что существует несколько основных классификаций переменных к которым относятся разбиение на простые и сложные переменные, глобальные и локальные, статические и динамические. Среди данных типов и видов особенно выделяются такие структуры, как стек, очередь и куча, которые являются очень важными типами переменных и имеют большое значение в программировании, символизируя определенный этап становления языков программирования.
Не менее важным является и вопрос выбора языка программирования и среды разработки. Это по праву можно считать одним из определяющих моментов, который повлияет на жизненный цикл программного обеспечения, трудозатраты и надёжность, сложность разработки и финансовую составляющую. Была приведена сводная информация по соответствию различных языков программирования решаемым задачам и сформулированы основные критерии, которые определяют выбор языка программирования и среды разработки.
Список используемых источников
1.Казанский А.А. Объектно-ориентированное программирование на языке Microsoft Visual С# в среде разработки Microsoft Visual Studio 2008 и .NET Framework. 4.3 [Электронный ресурс]: учебное пособие и практикум/ Казанский А.А.— Электрон. текстовые данные.— М.: Московский государственный строительный университет, ЭБС АСВ, 2011.— 180 c.— Режим доступа: http://www.iprbookshop.ru/19258.html.— ЭБС «IPRbooks»
2.Васильев В.Н. Основы программирования на языке C+ [Электронный ресурс]: учебное пособие/ Васильев В.Н.— Электрон. текстовые данные.— Волгоград: Волгоградский институт бизнеса, Вузовское образование, 2010.— 72 c.— Режим доступа: http://www.iprbookshop.ru/11341.html.— ЭБС «IPRbooks»
3.Кирнос В.Н. Введение в вычислительную технику. Основы организации ЭВМ и программирование на Ассемблере [Электронный ресурс]: учебное пособие/ Кирнос В.Н.— Электрон. текстовые данные.— Томск: Томский государственный университет систем управления и радиоэлектроники, Эль Контент, 2011.— 172 c.— Режим доступа: http://www.iprbookshop.ru/13921.html.— ЭБС «IPRbooks»