Файл: Общие сведения стандартов языков программирования и история их развития.pdf

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

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

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

Добавлен: 15.05.2023

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

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

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

Введение

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

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

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

Объектом исследования послужили языки программирования и история развития языков программирования.

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

Цели исследования:

1. Просмотреть общее сведения и уровни языков программирования.

2. Изучить историю развития языков программирования.

3. Сделать обзор сходства и отличия языков программирования.

Задачи исследования:

1. Ознакомления с языками программирования.

2. Рассмотрение истории развития языков программирования.

3. Проведение анализа сходства и отличия языков программирования.

В первой главе рассматриваются общие сведения стандартов языков программирования и история их развития.

Во второй главе рассматривается анализ сходства и отличия языков программирования.

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

Глава 1. Общие сведения стандартов языков программирования и история их развития

1.1.Общие сведения стандартов языков программирования

Электронно-вычислительная машина непосредственно выполняет про­граммы на машинном языке программирования данной ЭВМ. При этом про­грамма представляет собой набор отдельных команд для компьютера. Эти команды являются достаточно простыми (например, сложение, умножение, сравнение или пересылка отдельных данных и др.). Каждая команда содержит в себе сведения о том, какая операция должна быть выполнена (код опера­ции), с какими операндами (адреса данных или непосредственно сами дан­ные) выполняются вычисления и куда (адрес) должен быть помещен резуль­тат.


Машинные языки были первыми языками программирования. Програм­мирование на них затруднительно ввиду того, что, во-первых, эти языки раз­личны для каждого типа ЭВМ, во-вторых, являются трудоемкими для боль­шинства пользователей по причине необходимости знания особенностей конкретной ЭВМ и большого количества реализуемых ею операций (ко­манд). Человеку свойственно формулировать и решать задачи в выражениях более общего характера, чем команды ЭВМ. Поэтому с развитием програм­мирования появились языки, ориентированные на более высокий уровень аб­стракции при описании решаемой на ЭВМ задачи.

Язык программирования - это формальная знаковая система, предназна­ченная для записи программ (строится в соответствии с той или иной ба­зовой моделью вычислений, т.е. совокупностью стратегий, методов, подхо­дов и понятий, определяющих стиль программирования). Программа обычно представляет собой некоторый алгоритм записанный в форме, понятной для исполнителя (компьютера). Язык программирования определяет набор лек­сических, синтаксических и семантических правил, используемых при со­ставлении компьютерной программы. Он позволяет программисту точно оп­ределить на какие события будет реагировать компьютер, как будут хра­ниться и передаваться данные, а также какие именно действия следует вы­полнять над этими данными при различных обстоятельствах (условиях). Лек­сика (словарный запас) является центральной частью языка, именующей, формирующей и передающей знания об объектах реальной действительно­сти. Синтаксис – сторона языка программирования, которая описывает структуру программ как наборов символов. Семантика в программировании – это система правил, определяющих поведение отдельных языковых конст­рукций (определяет смысловое значение предложений алгоритмического языка).

Создатели языков по-разному толкуют понятие «язык программирова­ния». К наиболее распространенным утверждениям, признаваемым большин­ством разработчиков, относятся следующие. Язык программирования пред­назначен для написания компьютерных программ, применяемых для пере­дачи компьютеру инструкций по выполнению того или иного вычислитель­ного процесса и организации управления отдельными устройствам. Язык программирования – это способ передачи команд, приказов, четкого руково­дства к действию. Язык программирования использует специальные конст­рукции для определения и манипулирования структурами данных и управле­ния процессом вычислений. В отличие от естественных языков, язык про­граммирования имеет ограниченный запас слов (операторов) и строгие пра­вила их написания, а правила синтаксиса и семантики, как и для любого формального языка, однозначно и четко сформулированы.


Языки программирования, ориентированные на команды процессора и учитывающие его особенности, называют языками низкого уровня. Термино­логия «низкий уровень» означает близость операторов языка к машинному коду. Наиболее используемый и популярный язык низкого уровня - ассемб­лер. Каждый оператор этого языка представляет в виде мнемокодов команду микропроцессора (что позволяет запоминать команды не в виде последова­тельности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка – обычно английских). Для каждого типа микропроцес­сора создаётся свой ассемблер, поддерживающий все его команды. При по­мощи языков низкого уровня создаются компактные и быстродействующие программы, так как программист получает доступ ко всем возможностям процессора (однако, при этом необходимо хорошо понимать устройство компьютера, а написанная программа не может быть использована на ком­пьютере с процессором другого типа). Такие языки программирования при­меняются для написания небольших системных приложений, драйверов уст­ройств, модулей стыков с нестандартным оборудованием, когда важны ком­пактность, быстродействие, прямой доступ к аппаратным ресурсам.

Языки программирования, которые имитируют естественные и обла­дают укрупненными командами, удобными для использования программи­стом, называют языками высокого уровня. Основная черта таких языков - это абстракция (введение смысловых конструкций, кратко описывающих такие структуры данных и операции над ними, которые воспроизвести на низко­уровневом языке программирования весьма затруднительно). Особенности конкретных компьютерных архитектур в них не учитываются, поэтому ис­ходные тексты программ легко переносимы на другие платформы, имеющие трансляторы этого языка. Короче говоря, высокоуровневые языки стремятся не только облегчить решение сложных задач программирования (программы на языках высокого уровня с помощью понятных и мощных команд писать значительно проще, а число ошибок, допускаемых в процессе программиро­вания, намного меньше), но и упростить портирование (переносимость) про­граммного обеспечения. Использование разнообразных трансляторов и ин­терпретаторов обеспечивает связь программ, написанных при помощи язы­ков высокого уровня, с различными операционными системами и оборудова­нием. Однако, «оторванность» высокоуровневых языков от аппаратной реа­лизации компьютера помимо плюсов имеет и минусы. В частности, она не позволяет создавать простые и точные инструкции к использованию обору­дования. Следствием этого становится нормой добавление поддержки совре­менных профессиональных высокоуровневых языков программирования языком низкого уровня (языком ассемблера).


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

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

Как правило, скомпилированные программы выполняются быстрее и не требуют для этого (своего выполнения) дополнительных программ, так как уже переведены на машинный язык. Вместе с тем при каждом изменении текста программы требуется ее перекомпиляция, что создает определенные трудности. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняе­мый файл для машины другого типа, требуется новая компиляция. Интерпре­тируемые языки обладают некоторыми специфическими возможностями (не­посредственно исполняют текст без предварительного перевода), поэтому программы на них можно запускать сразу же после изменения. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных условий. Однако интер­претируемые программы выполняются заметно медленнее, чем компилируе­мые и, кроме того, они не могут выполняться без дополнительной про­граммы-интерпретатора.


Разделение на компилируемые и интерпретируемые языки является не­сколько условным. Так, для любого традиционно компилируемого языка (на­пример, Pascal) можно написать интерпретатор, а для любого интерпрети­руемого языка можно создать компилятор (например, Lisp – изначально ин­терпретируемый, может компилироваться без каких бы то ни было огра­ничений). В реальных системах программирования (например, Java) смешаны технологии компиляции и интерпретации. В процессе отладки такие про­граммы можно выполнять по шагам (трассировать), а результирующий код не обязательно будет машинным. Он может быть, например, аппаратно-неза­висимым промежуточным кодом абстрактного процессора, который в даль­нейшем будет транслироваться в различных компьютерных архитектурах с помощью интерпретатора или компилятора в соответствующий машинный код. Этот подход позволяет использовать плюсы как интерпретаторов, так и компиляторов.

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

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

Программа представляет собой набор объектов, имею­щих состояние и поведение. Объекты взаимодействуют посредством сооб­щений. Устойчивость и управляемость системы обеспечивается за счёт чёт­кого разделения ответственности объектов, однозначного определения ин­терфейсов взаимодействия между объектами и полной изолированности внутренней структуры объекта от внешней среды.

Основными (ключевыми) понятиями (принципами) в ОПП являются:

- инкапсуляция – объединение данных и свойственных им процедур обра­ботки в одном объекте, детальная реализация которых остается скрытой для пользователей (принцип, согласно которому любой класс должен рас­сматриваться как «черный ящик», т.е. пользователь класса должен ви­деть и использовать только интерфейсную часть класса и не вникать в его внутреннюю реализацию).

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