Поколения языков программирования
Поколения языков программирования связаны с поколениями ЭВМ, что вполне естественно, поскольку в той или иной мере отражают быстродействие, эффективность и возможности, которые предоставляются аппаратной платформой. Первое поколение языков программирования датируется началом 1950-х гг. Это низкоуровневые языки – язык машинных команд и язык ассемблера. Основная отличи- тельная особенность: они ориентированы на конкретный компьютер. Второе поколение – конец 1950-х–начало 1960-х гг. Разработан символьный ас- семблер, в котором появилось понятие переменной. Основная отличительная особен- ность: ориентирование на абстрактный компьютер с такой же системой команд. Третье поколение – 1960-е гг. по настоящее время. Универсальные языки про- граммирования высокого уровня. Их характеристики: относительная простота; незави- симость от конкретного компьютера; возможность использования мощных синтаксиче- ских конструкций. Простота языка позволяет писать небольшие программы и людям, которые не являются профессиональными программистами. Основная отличительная особенность языков третьего поколения: ориентирование на алгоритм (алгоритмиче- ские языки). Четвертое поколение – с начала 1970-х г.г. до сегодняшнего времени. Это про- блемно-ориентированные языки, оперирующие конкретными понятиями узкой области. Как правило, в них встраивают мощные операторы, позволяющие одной строкой опи- сывать функции, для реализации которых на универсальных языках потребовались бы сотни или даже тысячи строк исходного кода. Сюда же относятся языки запросов, язы- ки описания данных, языки разметки и т.д., которые, строго говоря, языками програм-
мирования как таковыми не являются, но при этом ориентированы на решение специ- фичных задач. Основная отличительная особенность языка четвертого поколения: при- ближение к человеческой речи (декларативные языки).
80. Компиляторы и интерпретаторы. С помощью языка программирования создается не готовая программа, а только ее текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в машинный код и использовать отдельно от ис- ходного текста, либо сразу выполнять команды языка, указанные в тексте программы. первая задача выполняется компилятором, вторая – интерпретатором. Интерпретатор моделирует виртуальную вычислительную машину, для которой базовыми инструкциями служат не элементарные команды процессора, а операторы языка программирования. В процессе выполнения программы он считывает очередную команду программы, анализирует ее структуру и сразу исполняет. После того, как те- кущая команда успешно выполнена, интерпретатор переходит к следующей и т.д. При этом если одна и та же команда выполняется в программе многократно, интерпретатор будет выполнять ее так, как будто встретил впервые. Вследствие этого программы, в которых требуется осуществить большой объём вычислений, выполняются медленно. Кроме того, для выполнения программы на компьютере должен иметься сам интерпре- татор. Компиляторы полностью обрабатывают исходный код программы. Они просмат- ривают его в поиске синтаксических ошибок, производят определенный смысловой анализ, а затем автоматически переводят (транслируют) на машинный язык. Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повы- сить быстродействие программы (например, с помощью инструкций, ориентированных на конкретный процессор, путём исключения ненужных команд, промежуточных вы-
числений и т.д.). В результате приложение получается законченным и эффективным. Такая программа работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, а также может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код, при этом наличие компилятора или интерпретатора на них не требуется. Недостаток компилятора – трудоёмкость трансляции языков программирования, ориентированных на обработку данных сложных структур, часто заранее неизвестной или динамически меняющейся во время работы программы. Тогда в машинный код приходиться вставлять множество дополнительных проверок, анализировать наличие ресурсов операционной системы, динамически их захватывать и освобождать, форми- ровать и обрабатывать в памяти компьютера сложные объекты, что на уровне жестко заданных машинных инструкций осуществить довольно трудно, а для задачи почти не- возможно. С помощью интерпретатора, наоборот, допустимо в любой момент остановить программу, исследовать содержимое памяти, организовать диалог с пользователем, вы- полнить сколь угодно сложные преобразования и при этом постоянно контролировать состояние окружающей программно-аппаратной среды, благодаря чему достигается высокая надёжность работы. Интерпретатор при выполнении каждого оператора про- веряет множество характеристик операционной системы и при необходимости макси- мально подробно информирует разработчика о возникающих проблемах. Кроме того, интерпретатор очень удобен для использования в качестве инструмента изучения про- граммирования, так как позволяет понять принципы работы любого отдельного опера- тора языка. В реальных системах программирования перемешаны технологии и компиляции, и интерпретации. В процессе отладки программа может выполняться по шагам, а ре- зультирующий код не обязательно будет машинным – он даже может быть исходным кодом, написанном на другом языке программирования (это существенно упрощает процесс трансляции, но требует компилятора для конкретного языка), или промежу- точным машинно-независимым кодом абстрактного процессора, который в различных
машинных архитектурах будет выполняться с помощью интерпретатора или компили- роваться в соответствующий машинный код.
81. Технология программирования. Технология программирования – это система методов, способов и приемов обра- ботки и выдачи информации. Она позволяет в определенной мере учесть появляющие- ся при разработке программы трудности и преодолеть их. Язык программирования формируется на основе определенного алфавита и стро- гих правил построения предложений (синтаксиса). В алфавит языка могут входить бук- вы, цифры, математические символы, а также операторы. Для небольших задач написание программ как правило не является сколько- нибудь трудной проблемой. Однако в случае, когда разработка программы ведется не- сколько лет, осуществляется группой программистов, и программа выполняет не одну примитивную, а множество сложнейших задач, необходимо следовать определенной технологии программирования.
82. Процедурное программирование. Процедурное (императивное) программирование напрямую основывается на ар- хитектуре ЭВМ, предложенной фон Нейманом в 1940-х годах. Программа на проце- дурном языке программирования состоит из последовательности операторов (инструк- ций), задающих процедуру решения задачи. Основным является оператор присваива- ния, он служит для изменения содержимого областей памяти. Содержимое памяти мо- жет обновляться операторами программы, это является фундаментальным моментом в императивном программировании. Выполнение программы сводится к последовательному выполнению операторов с целью преобразования исходного состояния памяти, то есть значений исходных дан- ных, в заключительное, то есть в результаты. Таким образом, с точки зрения програм- миста имеются программа и память, причем первая последовательно обновляет содер- жимое последней. Процедурный язык программирования предоставляет возможность программисту определять каждый шаг в процессе решения задачи. Особенность таких языков про- граммирования состоит в том, что задачи разбиваются на шаги и решаются шаг за шагом. Используя процедурный язык, программист определяет языковые конструкции для выполнения последовательности алгоритмических шагов.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|