Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf
Добавлен: 28.03.2023
Просмотров: 151
Скачиваний: 4
Введение
По мере усиления зависимости общества от вычислительных систем надежность и гибкость последних приобретает все большее значение. Последствиями этой зависимости являются растущие требования к качеству программного обеспечения, возможностям его быстрой разработки, масштабируемости, способности к расширению и совместимости с современными аппаратными средствами. Современный уровень развития компьютерных технологий предъявляет повышенные требования к квалификации специалистов всех отраслей, в том числе к уровню владения информационными технологиями. Поскольку деятельность современного производства и бизнеса в целом тесно связано со своевременностью получения информации, избыточностью и точностью этой информации, а также способностью эффективно ее использовать. Для свободной ориентации в информационных потоках современный специалист любого профиля должен уметь получать, обрабатывать и использовать информацию, прежде всего, с помощью компьютерной техники, сетей и других новейших средств связи, в том числе и уметь, обращаться с языками программирования. Используемый в конкретном проекте язык программирования в значительной степени определяет скорость разработки и реализации, простоту сопровождения, возможность переноса, создаваемого в рамках этого проекта программного обеспечения.
В ответ на возрастание роли программного обеспечения и требований к нему, специалистами были разработаны различные языки программирования, обеспечивающие повышение эффективности, мобильности, надежности и упрощение сопровождения, создаваемого с их помощью программного обеспечения. Появление большого числа современных языков программирования существенно усложнило выбор того или иного языка программирования для решения конкретной задачи или набора задач. И хотя появилось достаточно большое число работ, посвященных сравнению языков программирования и их оценки с точки зрения совместимости, производительности и функциональности, в этих работах практически не было уделено внимание вопросу выбора языка программирования исходя из требований к разрабатываемому продукту.
В этой курсовой работе изложена техника создания методологии сравнения языков программирования и сред разработки. Данная работа построена на базе перечня вопросов, лежащих в основе сравнения и оценки языков программирования. Этот перечень вопросов был сформирован, исходя из посылки его последующего применения для сравнения и оценки современных языков программирования, для примера использованы языки Бейсик, Си, Паскаль. С каждым из включенных в этот перечень вопросов ассоциирован ряд конкретных подразделов, ответы на которые необходимы для формирования характеристики некоторого языка программирования. Кроме того, каждый из включенных в этот перечень вопросов сопровождается дополнительной информацией, представляющей собой критерии, которые могут быть использованы для оценки языка программирования на основе уже сформированной его характеристики.
1. Языки программирования
Язык программирования — это система обозначений, служащая для точного описания программ или алгоритмов для вычислительной техники. Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.
Можно сформулировать ряд требований к языкам программирования и классифицировать языки по их особенностям.
Базовые требования, предъявляемые к языкам программирования:
наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;
единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;
гибкость - возможность относительно удобного, несложного описания распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;
модульность - возможность описания сложных алгоритмов в виде совокупности простых модулей, которые могут быть составлены отдельно и использованы в различных сложных алгоритмах;
однозначность - недвусмысленность записи любого алгоритма. Отсутствие ее может привести к неверным ответам при решении задач [2].
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
1.1. История развития языков программирования
Программа – алгоритм, записанный на языке программирования. Программа – последовательность операторов языка. Языки программирования – искусственные языки, строго формализованные; существует правила записи операторов языка – синтаксис языка.
1. Машинный язык (40-50 годы XX в.).
Программы на машинном языке – очень длинные последовательности единиц и нулей (машинный код), являлись машинно-зависимыми, т.е. для каждой вычислительной системы необходимо составлять свою программу.
2. Ассемблер (начало 50-ых годов XX в.).
Вместо 1 и 0 используются операторы (MOV, ADD, SUB и т.д.), которые похожи на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код использовался компилятор (спец. программа – переводчик в машинный код).
3. Первые языки программирования высокого уровня.
С середины 50-ых гг. XX в. начали создавать первые языки программирования высокого уровня. Эти языки были Машино-независимыми (не привязаны к определенному типу вычислительной техники). Но для каждого языка были разработаны собственные компиляторы.
Примеры таких языков: FORTRAN (FORmulaTRANslator; 1954) предназначен для научных и технических расчетов; COBOL (1959) был предназначен в основном для коммерческих приложений (обрабатывал большие объемы нечисловых данных) – CommonBusiness-OrientedLanguage); язык BASIC (Beginner’sAllPurposeInstuctionCode – универсальный язык символьных инструкций для начинающих) (1964 г.)
4. Алгоритмические языки программирования.
С начала 80-ых г. XX в. начали создаваться языки программирования, которые позволили перейти к структурному программированию (использование операторов ветвления, выбора, цикла и практически отказ от частого использования операторов перехода (goto). К этим языкам относятся: язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля; 1970); язык Си, позволяющий быстро и эффективно создавать программный код (1971)
5. Языки объектно-ориентированного программирования
(90-ые г. XX в.). В основу этих языков положены программные объекты, которые объединяют данные и методы их обработки. В этих языках сохранялся алгоритмический стиль программирования. Для них были разработаны интегрированные среды программирования, позволяющие визуально конструировать графический интерфейс приложений:
язык С++ (1983) - продолжение алгоритмического языка Си;
язык ObjectPascal (1989) был создан на основе языка Pascal. После создания среды программирования – Delphi (1995);
язык VisualBasic(1991) был создан корпорацией Microsoft на основе языка Qbasic (1975) для разработки приложений с графическим интерфейсом в среде ОС Windows.
6. Языки программирования для компьютерных сетей.
В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными ОС (Windows, Linux, MacOS и др.) могли выполняться одни и те же программы. Исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной:
язык Java - объектно-ориентированный язык был разработан фирмой SunMicrosystems для создания сетевого программного обеспечения (1995);
язык JavaScript - язык сценариев Web-страниц (компания Netscape). (1995)
7. Языки программирования на платформе .NET.
Интегрированная среда программирования VisualStudio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:
На языке Visual Basic .Net (на основе Visual Basic) - 2003 г.;
на языке VisualC# (С-шарп) – на основе языков С++ и J – 2003 г.;
на языке VisualJ# (J-шарп) – на основе Java и JavaScript – 2003 г.
Интерпретаторы и компиляторы
Для того, чтобы процессор имел возможность выполнить программу, программа и данные должны быть загружены в оперативную память. Необходимо, чтобы в ОП была размещена программа - транслятор, автоматически переводящий с языка программирования в машинные коды. Трансляторы бывают двух типов: интерпретаторы и компиляторы. Интерпретатор – программа, которая обеспечивает последовательный перевод операторов программы с одновременным их выполнением. Достоинством интерпретатора является удобство отладки (поиск ошибок), недостаток – сравнительно малая скорость выполнения. Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполняемом (бинарном) файле (обычно с расширением .exe, для семейства операционных систем Windows).
Системы объектно-ориентированного программирования содержат программу-транслятор и позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готового приложения – режим компилятора [6].
1.2. Классификация языков программирования
Уровень языка программирования определяет близость языка к естественному, человеческому языку, чем выше уровень, тем ближе. По этому критерию можно выделить следующие типы языков программирования:
· машинные;
· машинно-ориентированные (ассемблеры);
· машинно-независимые (языки высокого уровня).
Машинные и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных. Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. В данном случае “низкий уровень” не значит “плохой”. Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. [2]
При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций. Но процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять и развивать.
Поэтому в случае, когда нужно иметь эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).
Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде. [2]
Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком, похожими на слова естественного языка) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант, использовать в программе комментарии и др.
С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям аппаратной платформы. С другой стороны, при этом требуется очень хорошо понимать устройство компьютерной техники, затрудняется отладка больших приложений, а окончательная программа не может быть перенесена на компьютер с другим типом (архитектурой) процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, модулей стыковки с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В некоторых областях, например в компьютерной графике, на языках низкого уровня пишутся библиотеки, эффективно реализующие алгоритмы обработки изображений и трехмерной графики, требующие интенсивных вычислений.
Таким образом, программы, написанные на языке ассемблера, требуют значительно меньшего объема памяти и времени выполнения. Знание программистом языка ассемблера и машинного кода дает ему понимание архитектуры вычислительного комплекса. Несмотря на то, что большинство специалистов в области программного обеспечения разрабатывают программы на языках высокого уровня, наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера.