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

Автор: Пользователь скрыл имя, 21 Сентября 2011 в 20:52, реферат

Описание работы

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

Содержание

Введение

Глава 1. "Языки программирования"

Глава 2. "Системы программирования как неотъемлемая часть ЭВМ"

Глава 3. "Способы реализации языков программирования"

Глава 4. "Классификация систем и языков программирования"

Глава 5. "Стандартизация языков программирования"

Глава 6. "Развитие языков программирования"

Заключение

Список использованных источников и литературы

Краткий словарь терминов

Приложение

Работа содержит 1 файл

Реферат.docx

— 86.80 Кб (Скачать)

Байт-код -- это промежуточный подход, при котором программа преобразуется в промежуточный двоичный вид, интерпретируемый некой «виртуальной машиной» во время исполнения.

Компилятор  создаёт законченный результат - программу в машинных кодах. Затем  эта программа выполняется. Откомпилированный  вариант исходной программы можно  сохранить на диске. Для повторного выполнения исходной программы компилятор уже не нужен. Достаточно загрузить  с диска в память компьютера откомпилированный  в предыдущий раз вариант и  выполнить его.

Существует  другой способ сочетания процессов  трансляции и выполнения программы. Он называется интерпретацией. Суть процесса интерпретации состоит в следующем. Вначале переводится в машинные коды, а затем выполняется первая строка программы. Когда выполнение первой строки окончено, начинается перевод второй строки, которая затем выполняется и так далее. Управляет этим процессом программа-интерпретатор.

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

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

Иногда один и тот же язык может использовать и компилятор, и интерпретатор. К  числу таких языков относится, например, Бейсик. Как правило, программы-компиляторы  и интерпретаторы называются так  же, как и языки, для перевода с  которых они предназначены. Слова  Паскаль, Ада, Си могут относиться как  к названиям языков, так и к  названиям соответствующих программ.

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

С помощью  интерпретатора, наоборот, допустимо  в любой момент остановить программу, исследовать содержимое памяти, организовать диалог с пользователем, выполнить  сколь угодно сложные преобразования и при этом постоянно контролировать состояние окружающей программно - аппаратной среды, благодаря чему достигается высокая надёжность работы.

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

Причиной  вновь вспыхнувшего интереса к компиляторам стало появление быстрых и  сложных 64-разрядных микропроцессоров, типичным представителем которых можно  считать Intel Itanium. Ответственность за увеличение производительности, на которое потенциально способны будущие 64-разрядные процессоры, ложится на компиляторы нового поколения.

Корпорация  подает новый язык как логическое продолжение Си и C++ для Web-приложений. Ключевыми модулями станут Common Language Runtime для C# и специальный компилятор, который преобразует текст, написанный на традиционных языках Кобол, Perl, Фортран или других, в промежуточный язык, который будет работать на новой платформе Microsoft .Net. Может появиться новое поколение компиляторов, позволяющих увеличить производительность до уровня, позволяющего убедить профессионалов в необходимости использовать 64-разрядные аппаратные архитектуры. (См. приложение№1). 

Глава 4. «Классификация языков программирования»

Машинно-ориентированные  языки 

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

Машинно-ориентированные  языки по степени автоматического  программирования подразделяются на классы.

Машинный  язык. Отдельный компьютер имеет свой определенный Машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/ и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из них сообщается информация о местонахождении операндов и типе выполняемой операции.

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

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

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

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

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

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

Глава 5 "Стандартизация языков программирования" 

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

Типы  данных

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

Структуры данных.

Системы типов  в языках высокого уровня позволяют  определять сложные, составные типы, так называемые структуры данных. Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее  определённых составных типов. Основные структуры данных (списки, очереди, хеш-таблицы, двоичные деревья и  пары) часто представлены особыми  синтаксическими конструкциями  в языках высокого уровня. Такие  данные структурируются автоматически.

Семантика языков программирования

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

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

Используемые  символы

Современные языки программирования рассчитаны на использование ASCII, то есть доступность  всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF). Ранние языки, возникшие в эпоху 6-битных символов, использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' : .

Заметным исключением является язык APL, в котором используется очень много специальных символов. Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В CCCP существовали языки, где все ключевые слова писались русскими буквами, но большую популярность подобные языки не завоевали (исключение составляет Встроенный язык программирования 1С:Предприятие).

Расширение  набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена  одних переменных записаны русскими буквами, других - арабскими, а третьих -китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode. 

Глава 6. «Развитие систем и языков программирования»

Ассемблер 

Информация о работе Системы и языки программирования